{"version":3,"file":"bundle.js","sources":["webpack:///webpack/bootstrap fd641f8c2c70c1df4f2f","webpack:///./node_modules/react/index.js","webpack:///./node_modules/ag-grid/dist/lib/context/context.js","webpack:///./node_modules/prop-types/index.js","webpack:///./node_modules/babel-runtime/helpers/classCallCheck.js","webpack:///./node_modules/babel-runtime/helpers/possibleConstructorReturn.js","webpack:///./node_modules/babel-runtime/helpers/inherits.js","webpack:///./node_modules/babel-runtime/helpers/extends.js","webpack:///./node_modules/ag-grid/dist/lib/utils.js","webpack:///./node_modules/babel-runtime/helpers/objectWithoutProperties.js","webpack:///./node_modules/ag-grid/dist/lib/gridOptionsWrapper.js","webpack:///./node_modules/classnames/index.js","webpack:///./node_modules/react-bootstrap/es/utils/bootstrapUtils.js","webpack:///./node_modules/ag-grid/dist/lib/columnController/columnController.js","webpack:///./node_modules/ag-grid/dist/lib/eventService.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/ag-grid/dist/lib/events.js","webpack:///./node_modules/ag-grid/dist/lib/gridApi.js","webpack:///./node_modules/warning/browser.js","webpack:///./node_modules/prop-types-extra/lib/elementType.js","webpack:///./node_modules/ag-grid/dist/lib/constants.js","webpack:///./node_modules/ag-grid/dist/lib/widgets/component.js","webpack:///./node_modules/ag-grid/dist/lib/entities/column.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./node_modules/react-bootstrap/es/utils/createChainedFunction.js","webpack:///./node_modules/invariant/browser.js","webpack:///./node_modules/ag-grid/dist/lib/logger.js","webpack:///./node_modules/ag-grid/dist/lib/gridPanel/gridPanel.js","webpack:///./node_modules/react-dom/index.js","webpack:///./node_modules/react-bootstrap/es/utils/StyleConfig.js","webpack:///./node_modules/react-bootstrap/es/utils/ValidComponentChildren.js","webpack:///./node_modules/ag-grid/dist/lib/widgets/componentAnnotations.js","webpack:///./node_modules/axios/lib/utils.js","webpack:///./node_modules/ag-grid/dist/lib/context/beanStub.js","webpack:///./node_modules/ag-grid/dist/lib/selectionController.js","webpack:///./node_modules/ag-grid/dist/lib/entities/rowNode.js","webpack:///./node_modules/ag-grid/dist/lib/valueService/valueService.js","webpack:///./node_modules/react-router-dom/es/index.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_core.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks.js","webpack:///./node_modules/react-bootstrap/es/SafeAnchor.js","webpack:///./node_modules/auth0-js/src/helper/object.js","webpack:///./node_modules/ag-grid/dist/lib/valueService/expressionService.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/rowRenderer.js","webpack:///./node_modules/ag-grid/dist/lib/filter/filterManager.js","webpack:///./node_modules/auth0-js/src/helper/window.js","webpack:///./node_modules/ag-grid/dist/lib/components/framework/componentRecipes.js","webpack:///./node_modules/fbjs/lib/emptyFunction.js","webpack:///./node_modules/react-redux/es/index.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_export.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_global.js","webpack:///./node_modules/dom-helpers/util/inDOM.js","webpack:///./node_modules/ag-grid/dist/lib/entities/gridCell.js","webpack:///./node_modules/ag-grid/dist/lib/focusedCellController.js","webpack:///./node_modules/ag-grid/dist/lib/components/framework/componentResolver.js","webpack:///./node_modules/ag-grid/dist/lib/dragAndDrop/dragAndDropService.js","webpack:///./node_modules/fbjs/lib/invariant.js","webpack:///src/hoc/Aux/Aux.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-dp.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_has.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-iobject.js","webpack:///src/Auth/Auth.js","webpack:///./node_modules/url-join/lib/url-join.js","webpack:///./node_modules/auth0-js/src/helper/assert.js","webpack:///./node_modules/ag-grid/dist/lib/entities/columnGroup.js","webpack:///./node_modules/ag-grid/dist/lib/rowModels/paginationProxy.js","webpack:///./node_modules/ag-grid/dist/lib/rowModels/pinnedRowModel.js","webpack:///./node_modules/ag-grid/dist/lib/sortController.js","webpack:///./node_modules/object-assign/index.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_hide.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_an-object.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_descriptors.js","webpack:///./node_modules/babel-runtime/core-js/object/values.js","webpack:///./node_modules/dom-helpers/ownerDocument.js","webpack:///./node_modules/dom-helpers/query/contains.js","webpack:///./node_modules/react-overlays/lib/utils/ownerDocument.js","webpack:///./node_modules/axios/index.js","webpack:///./node_modules/ag-grid/dist/lib/columnController/columnUtils.js","webpack:///./node_modules/ag-grid/dist/lib/entities/originalColumnGroup.js","webpack:///./node_modules/ag-grid/dist/lib/valueService/valueCache.js","webpack:///./node_modules/ag-grid/dist/lib/gridPanel/scrollVisibleService.js","webpack:///./node_modules/ag-grid/dist/lib/widgets/popupService.js","webpack:///./node_modules/history/PathUtils.js","webpack:///./node_modules/history/es/PathUtils.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_is-object.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_fails.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_property-desc.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-keys.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-pie.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_iterators.js","webpack:///./node_modules/react-bootstrap/es/Button.js","webpack:///./node_modules/uncontrollable/index.js","webpack:///./node_modules/auth0-js/src/helper/response-handler.js","webpack:///src/store/actions/actionTypes.js","webpack:///src/hoc/layouts/Blank.js","webpack:///./node_modules/ag-grid/main.js","webpack:///./node_modules/ag-grid/dist/lib/gridPanel/mouseEventService.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/cellComp.js","webpack:///./node_modules/ag-grid/dist/lib/misc/animationFrameService.js","webpack:///./node_modules/ag-grid/dist/lib/gridCore.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/beans.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/valueFormatterService.js","webpack:///./node_modules/fbjs/lib/emptyObject.js","webpack:///./node_modules/fbjs/lib/warning.js","webpack:///./node_modules/history/es/LocationUtils.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_uid.js","webpack:///./node_modules/prop-types-extra/lib/utils/createChainableTypeChecker.js","webpack:///./node_modules/prop-types-extra/lib/all.js","webpack:///./node_modules/dom-helpers/style/index.js","webpack:///./node_modules/dom-helpers/events/on.js","webpack:///./node_modules/react-bootstrap/es/Dropdown.js","webpack:///./node_modules/prop-types-extra/lib/isRequiredForA11y.js","webpack:///./node_modules/react-bootstrap/es/utils/splitComponentProps.js","webpack:///./node_modules/react-bootstrap/es/Fade.js","webpack:///./node_modules/react-bootstrap/es/Media.js","webpack:///./node_modules/prop-types-extra/lib/componentOrElement.js","webpack:///./node_modules/dom-helpers/query/isWindow.js","webpack:///./node_modules/react-overlays/lib/utils/getContainer.js","webpack:///server/config.js","webpack:///./node_modules/qs/lib/index.js","webpack:///./node_modules/auth0-js/src/helper/warn.js","webpack:///./node_modules/ag-grid/dist/lib/columnController/balancedColumnTreeBuilder.js","webpack:///./node_modules/ag-grid/dist/lib/csvCreator.js","webpack:///./node_modules/ag-grid/dist/lib/columnController/displayedGroupCreator.js","webpack:///./node_modules/ag-grid/dist/lib/dragAndDrop/dragService.js","webpack:///./node_modules/ag-grid/dist/lib/alignedGridsService.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/rowComp.js","webpack:///./node_modules/ag-grid/dist/lib/widgets/touchListener.js","webpack:///./node_modules/ag-grid/dist/lib/filter/baseFilter.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/features/setLeftFeature.js","webpack:///./node_modules/ag-grid/dist/lib/templateService.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/cellEditorFactory.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/cellRendererFactory.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/cellRendererService.js","webpack:///./node_modules/ag-grid/dist/lib/components/framework/agComponentUtils.js","webpack:///./node_modules/ag-grid/dist/lib/headerRendering/headerRenderer.js","webpack:///./node_modules/ag-grid/dist/lib/environment.js","webpack:///./node_modules/ag-grid/dist/lib/headerRendering/horizontalDragService.js","webpack:///./node_modules/ag-grid/dist/lib/widgets/agCheckbox.js","webpack:///./node_modules/ag-grid/dist/lib/rowModels/cache/rowNodeBlock.js","webpack:///./node_modules/prop-types/checkPropTypes.js","webpack:///./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./node_modules/fbjs/lib/ExecutionEnvironment.js","webpack:///./node_modules/history/LocationUtils.js","webpack:///./node_modules/history/createTransitionManager.js","webpack:///./node_modules/react-router-dom/es/Router.js","webpack:///./node_modules/react-router/es/Router.js","webpack:///./node_modules/react-router/es/matchPath.js","webpack:///./node_modules/history/es/createTransitionManager.js","webpack:///./node_modules/react-redux/es/utils/warning.js","webpack:///./node_modules/lodash-es/isPlainObject.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_ctx.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-primitive.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_cof.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_defined.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-integer.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_shared-key.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_shared.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_enum-bug-keys.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gops.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-object.js","webpack:///./node_modules/babel-runtime/helpers/typeof.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_library.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-create.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_set-to-string-tag.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks-ext.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks-define.js","webpack:///./node_modules/react-bootstrap/es/CloseButton.js","webpack:///./node_modules/react-bootstrap/es/ButtonGroup.js","webpack:///./node_modules/react-bootstrap/es/Glyphicon.js","webpack:///./node_modules/react-bootstrap/es/Collapse.js","webpack:///./node_modules/keycode/index.js","webpack:///./node_modules/dom-helpers/events/off.js","webpack:///./node_modules/react-bootstrap/es/TabContainer.js","webpack:///./node_modules/react-bootstrap/es/TabContent.js","webpack:///./node_modules/axios/lib/defaults.js","webpack:///./node_modules/auth0-js/src/helper/request-builder.js","webpack:///./node_modules/auth0-js/src/version.js","webpack:///./node_modules/auth0-js/src/web-auth/cross-origin-authentication.js","webpack:///src/Auth/auth_variables.js","webpack:///src/components/common/UI/Input/Input.js","webpack:///src/store/actions/index.js","webpack:///./node_modules/jwt-decode/lib/index.js","webpack:///./src/assets/loading.svg","webpack:///./src/assets/img/GLP_Web.gif","webpack:///./node_modules/ag-grid/dist/lib/components/componentUtil.js","webpack:///./node_modules/ag-grid/dist/lib/gridSerializer.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/autoWidthCalculator.js","webpack:///./node_modules/ag-grid/dist/lib/layout/borderLayout.js","webpack:///./node_modules/ag-grid/dist/lib/entities/gridRow.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/checkboxSelectionComponent.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/cellEditors/popupEditorWrapper.js","webpack:///./node_modules/ag-grid/dist/lib/components/framework/componentProvider.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/cellEditors/textCellEditor.js","webpack:///./node_modules/ag-grid/dist/lib/filter/dateFilter.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/columnAnimationService.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/cellRenderers/animateSlideCellRenderer.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/cellRenderers/animateShowChangeCellRenderer.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/cellRenderers/groupCellRenderer.js","webpack:///./node_modules/ag-grid/dist/lib/styling/stylingService.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/columnHoverService.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/cellEditors/selectCellEditor.js","webpack:///./node_modules/ag-grid/dist/lib/components/framework/componentMetadataProvider.js","webpack:///./node_modules/ag-grid/dist/lib/cellNavigationService.js","webpack:///./node_modules/ag-grid/dist/lib/headerRendering/cssClassApplier.js","webpack:///./node_modules/ag-grid/dist/lib/columnController/groupInstanceIdCreator.js","webpack:///./node_modules/ag-grid/dist/lib/downloader.js","webpack:///./node_modules/ag-grid/dist/lib/grid.js","webpack:///./node_modules/ag-grid/dist/lib/rowModels/cache/rowNodeCache.js","webpack:///./node_modules/ag-grid/dist/lib/rowModels/inMemory/inMemoryNodeManager.js","webpack:///./node_modules/ag-grid/dist/lib/rowModels/inMemory/changedPath.js","webpack:///./node_modules/fbjs/lib/EventListener.js","webpack:///./node_modules/fbjs/lib/shallowEqual.js","webpack:///./node_modules/fbjs/lib/containsNode.js","webpack:///./node_modules/fbjs/lib/focusNode.js","webpack:///./node_modules/fbjs/lib/getActiveElement.js","webpack:///./node_modules/history/createBrowserHistory.js","webpack:///./node_modules/resolve-pathname/index.js","webpack:///./node_modules/value-equal/index.js","webpack:///./node_modules/history/DOMUtils.js","webpack:///./node_modules/react-router-dom/es/Link.js","webpack:///./node_modules/react-router-dom/es/Route.js","webpack:///./node_modules/react-router/es/Route.js","webpack:///./node_modules/history/es/DOMUtils.js","webpack:///./node_modules/hoist-non-react-statics/index.js","webpack:///./node_modules/react-redux/es/utils/PropTypes.js","webpack:///./node_modules/react-redux/es/components/connectAdvanced.js","webpack:///./node_modules/redux/es/index.js","webpack:///./node_modules/redux/es/createStore.js","webpack:///./node_modules/lodash-es/_Symbol.js","webpack:///./node_modules/redux/es/utils/warning.js","webpack:///./node_modules/redux/es/compose.js","webpack:///./node_modules/react-redux/es/connect/wrapMapToProps.js","webpack:///./node_modules/react-redux/es/utils/verifyPlainObject.js","webpack:///src/components/Layouts/Layout.js","webpack:///src/components/common/Progress.js","webpack:///./node_modules/react-bootstrap/es/index.js","webpack:///./node_modules/babel-runtime/core-js/object/assign.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_ie8-dom-define.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_dom-create.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-keys-internal.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_iobject.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-length.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.string.iterator.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_iter-define.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_redefine.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gopn.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gopd.js","webpack:///./node_modules/react-bootstrap/es/PanelGroup.js","webpack:///./node_modules/babel-runtime/core-js/object/entries.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-to-array.js","webpack:///./node_modules/react-bootstrap/es/BreadcrumbItem.js","webpack:///./node_modules/react-bootstrap/es/CarouselItem.js","webpack:///./node_modules/react-bootstrap/es/utils/capitalize.js","webpack:///./node_modules/dom-helpers/util/camelizeStyle.js","webpack:///./node_modules/dom-helpers/transition/properties.js","webpack:///./node_modules/react-overlays/lib/Transition.js","webpack:///./node_modules/dom-helpers/activeElement.js","webpack:///./node_modules/react-overlays/lib/RootCloseWrapper.js","webpack:///./node_modules/react-overlays/lib/utils/addEventListener.js","webpack:///./node_modules/react-bootstrap/es/DropdownToggle.js","webpack:///./node_modules/react-bootstrap/es/Grid.js","webpack:///./node_modules/react-bootstrap/es/ListGroupItem.js","webpack:///./node_modules/dom-helpers/util/scrollbarSize.js","webpack:///./node_modules/dom-helpers/class/hasClass.js","webpack:///./node_modules/react-overlays/lib/utils/isOverflowing.js","webpack:///./node_modules/react-overlays/lib/Portal.js","webpack:///./node_modules/react-bootstrap/es/ModalBody.js","webpack:///./node_modules/react-bootstrap/es/ModalFooter.js","webpack:///./node_modules/react-bootstrap/es/ModalHeader.js","webpack:///./node_modules/react-bootstrap/es/ModalTitle.js","webpack:///./node_modules/react-bootstrap/es/Nav.js","webpack:///./node_modules/react-bootstrap/es/NavbarBrand.js","webpack:///./node_modules/react-bootstrap/es/NavItem.js","webpack:///./node_modules/react-bootstrap/es/Overlay.js","webpack:///./node_modules/dom-helpers/query/offset.js","webpack:///./node_modules/dom-helpers/query/scrollTop.js","webpack:///./node_modules/react-bootstrap/es/PagerItem.js","webpack:///./node_modules/react-bootstrap/es/PaginationButton.js","webpack:///./node_modules/react-bootstrap/es/TabPane.js","webpack:///./node_modules/react-bootstrap/es/ToggleButton.js","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/axios/lib/core/createError.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/axios/lib/cancel/Cancel.js","webpack:///src/history.js","webpack:///./node_modules/auth0-js/src/authentication/index.js","webpack:///./node_modules/superagent/lib/client.js","webpack:///./node_modules/superagent/lib/is-object.js","webpack:///./node_modules/auth0-js/src/helper/base64_url.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/qs/lib/utils.js","webpack:///./node_modules/qs/lib/formats.js","webpack:///./node_modules/auth0-js/src/helper/ssodata.js","webpack:///./node_modules/auth0-js/src/helper/storage.js","webpack:///./node_modules/auth0-js/src/helper/error.js","webpack:///./node_modules/idtoken-verifier/src/helpers/base64.js","webpack:///./node_modules/auth0-js/src/web-auth/transaction-manager.js","webpack:///./node_modules/auth0-js/src/web-auth/web-message-handler.js","webpack:///./node_modules/auth0-js/src/helper/iframe-handler.js","webpack:///src/store/utils/setAuthToken.js","webpack:///src/components/common/validationRules.js","webpack:///./node_modules/ag-grid-react/lib/agGridReact.js","webpack:///./node_modules/ag-grid/dist/lib/gridPanel/navigationService.js","webpack:///./node_modules/ag-grid/dist/lib/components/framework/namedComponentResolver.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/cellEditors/popupTextCellEditor.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/cellEditors/popupSelectCellEditor.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/cellEditors/largeTextCellEditor.js","webpack:///./node_modules/ag-grid/dist/lib/filter/textFilter.js","webpack:///./node_modules/ag-grid/dist/lib/filter/numberFilter.js","webpack:///./node_modules/ag-grid/dist/lib/headerRendering/headerContainer.js","webpack:///./node_modules/ag-grid/dist/lib/headerRendering/headerRowComp.js","webpack:///./node_modules/ag-grid/dist/lib/headerRendering/header/headerWrapperComp.js","webpack:///./node_modules/ag-grid/dist/lib/headerRendering/bodyDropTarget.js","webpack:///./node_modules/ag-grid/dist/lib/headerRendering/moveColumnController.js","webpack:///./node_modules/ag-grid/dist/lib/headerRendering/bodyDropPivotTarget.js","webpack:///./node_modules/ag-grid/dist/lib/columnController/autoGroupColService.js","webpack:///./node_modules/ag-grid/dist/lib/rowModels/inMemory/immutableService.js","webpack:///./node_modules/ag-grid/dist/lib/columnController/columnKeyCreator.js","webpack:///./node_modules/ag-grid/dist/lib/headerRendering/standardMenu.js","webpack:///./node_modules/ag-grid/dist/lib/rowModels/inMemory/filterStage.js","webpack:///./node_modules/ag-grid/dist/lib/rowNodes/filterService.js","webpack:///./node_modules/ag-grid/dist/lib/rowModels/inMemory/sortStage.js","webpack:///./node_modules/ag-grid/dist/lib/rowNodes/sortService.js","webpack:///./node_modules/ag-grid/dist/lib/rowModels/inMemory/flattenStage.js","webpack:///./node_modules/ag-grid/dist/lib/rowModels/infinite/infiniteRowModel.js","webpack:///./node_modules/ag-grid/dist/lib/rowModels/cache/rowNodeBlockLoader.js","webpack:///./node_modules/ag-grid/dist/lib/rowModels/inMemory/inMemoryRowModel.js","webpack:///./node_modules/ag-grid/dist/lib/baseFrameworkFactory.js","webpack:///./node_modules/ag-grid/dist/lib/xmlFactory.js","webpack:///./node_modules/ag-grid-react/lib/agGridColumn.js","webpack:///src/store/utility.js","webpack:///./node_modules/intl-messageformat/index.js","webpack:///./node_modules/intl-messageformat/lib/utils.js","webpack:///src/index.js","webpack:///./node_modules/react/cjs/react.production.min.js","webpack:///./node_modules/react/cjs/react.development.js","webpack:///./node_modules/react-dom/cjs/react-dom.production.min.js","webpack:///./node_modules/fbjs/lib/isTextNode.js","webpack:///./node_modules/fbjs/lib/isNode.js","webpack:///./node_modules/react-dom/cjs/react-dom.development.js","webpack:///./node_modules/fbjs/lib/hyphenateStyleName.js","webpack:///./node_modules/fbjs/lib/hyphenate.js","webpack:///./node_modules/fbjs/lib/camelizeStyleName.js","webpack:///./node_modules/fbjs/lib/camelize.js","webpack:///./node_modules/fbjs/lib/performanceNow.js","webpack:///./node_modules/fbjs/lib/performance.js","webpack:///./node_modules/prop-types/factoryWithTypeCheckers.js","webpack:///./node_modules/prop-types/factoryWithThrowingShims.js","webpack:///./node_modules/react-router-dom/es/BrowserRouter.js","webpack:///./node_modules/react-router-dom/es/HashRouter.js","webpack:///./node_modules/history/createHashHistory.js","webpack:///./node_modules/react-router-dom/es/MemoryRouter.js","webpack:///./node_modules/react-router/es/MemoryRouter.js","webpack:///./node_modules/history/createMemoryHistory.js","webpack:///./node_modules/react-router-dom/es/NavLink.js","webpack:///./node_modules/react-router/node_modules/path-to-regexp/index.js","webpack:///./node_modules/react-router/node_modules/isarray/index.js","webpack:///./node_modules/react-router-dom/es/Prompt.js","webpack:///./node_modules/react-router/es/Prompt.js","webpack:///./node_modules/react-router-dom/es/Redirect.js","webpack:///./node_modules/react-router/es/Redirect.js","webpack:///./node_modules/history/es/index.js","webpack:///./node_modules/history/es/createBrowserHistory.js","webpack:///./node_modules/history/es/createHashHistory.js","webpack:///./node_modules/history/es/createMemoryHistory.js","webpack:///./node_modules/react-router-dom/es/StaticRouter.js","webpack:///./node_modules/react-router/es/StaticRouter.js","webpack:///./node_modules/react-router-dom/es/Switch.js","webpack:///./node_modules/react-router/es/Switch.js","webpack:///./node_modules/react-router-dom/es/matchPath.js","webpack:///./node_modules/react-router-dom/es/withRouter.js","webpack:///./node_modules/react-router/es/withRouter.js","webpack:///./node_modules/react-redux/es/components/Provider.js","webpack:///./node_modules/react-redux/es/utils/Subscription.js","webpack:///./node_modules/react-redux/es/connect/connect.js","webpack:///./node_modules/react-redux/es/utils/shallowEqual.js","webpack:///./node_modules/react-redux/es/connect/mapDispatchToProps.js","webpack:///./node_modules/lodash-es/_baseGetTag.js","webpack:///./node_modules/lodash-es/_root.js","webpack:///./node_modules/lodash-es/_freeGlobal.js","webpack:///./node_modules/lodash-es/_getRawTag.js","webpack:///./node_modules/lodash-es/_objectToString.js","webpack:///./node_modules/lodash-es/_getPrototype.js","webpack:///./node_modules/lodash-es/_overArg.js","webpack:///./node_modules/lodash-es/isObjectLike.js","webpack:///./node_modules/symbol-observable/index.js","webpack:///./node_modules/symbol-observable/lib/index.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/symbol-observable/lib/ponyfill.js","webpack:///./node_modules/redux/es/combineReducers.js","webpack:///./node_modules/redux/es/bindActionCreators.js","webpack:///./node_modules/redux/es/applyMiddleware.js","webpack:///./node_modules/react-redux/es/connect/mapStateToProps.js","webpack:///./node_modules/react-redux/es/connect/mergeProps.js","webpack:///./node_modules/react-redux/es/connect/selectorFactory.js","webpack:///./node_modules/react-redux/es/connect/verifySubselectors.js","webpack:///./node_modules/redux-thunk/lib/index.js","webpack:///./node_modules/ag-grid/dist/styles/ag-grid.css","webpack:///./node_modules/ag-grid/dist/styles/theme-fresh.css","webpack:///./src/index.css","webpack:///src/App.js","webpack:///src/components/Home/Home.js","webpack:///src/components/Navigation/Navigation.js","webpack:///./src/components/Navigation/Navigation.css","webpack:///src/vendor/pace/pace.js","webpack:///src/components/common/TopHeader.js","webpack:///./node_modules/react-bootstrap/es/Accordion.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/fn/object/assign.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.object.assign.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_a-function.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-assign.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_array-includes.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-absolute-index.js","webpack:///./node_modules/babel-runtime/core-js/symbol/iterator.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/fn/symbol/iterator.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_string-at.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_iter-create.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-dps.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_html.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gpo.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/web.dom.iterable.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.array.iterator.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_add-to-unscopables.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_iter-step.js","webpack:///./node_modules/babel-runtime/core-js/symbol.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/fn/symbol/index.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.symbol.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_meta.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_enum-keys.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_is-array.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gopn-ext.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es7.symbol.async-iterator.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es7.symbol.observable.js","webpack:///./node_modules/babel-runtime/core-js/object/set-prototype-of.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/fn/object/set-prototype-of.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.object.set-prototype-of.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_set-proto.js","webpack:///./node_modules/babel-runtime/core-js/object/create.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/fn/object/create.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.object.create.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/fn/object/entries.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es7.object.entries.js","webpack:///./node_modules/react-bootstrap/es/Alert.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/fn/object/values.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es7.object.values.js","webpack:///./node_modules/react-bootstrap/es/Badge.js","webpack:///./node_modules/react-bootstrap/es/Breadcrumb.js","webpack:///./node_modules/react-bootstrap/es/ButtonToolbar.js","webpack:///./node_modules/react-bootstrap/es/Carousel.js","webpack:///./node_modules/react-bootstrap/es/CarouselCaption.js","webpack:///./node_modules/react-bootstrap/es/utils/TransitionEvents.js","webpack:///./node_modules/react-bootstrap/es/Checkbox.js","webpack:///./node_modules/react-bootstrap/es/Clearfix.js","webpack:///./node_modules/react-bootstrap/es/ControlLabel.js","webpack:///./node_modules/react-bootstrap/es/Col.js","webpack:///./node_modules/dom-helpers/util/camelize.js","webpack:///./node_modules/dom-helpers/util/hyphenateStyle.js","webpack:///./node_modules/dom-helpers/util/hyphenate.js","webpack:///./node_modules/dom-helpers/style/getComputedStyle.js","webpack:///./node_modules/dom-helpers/style/removeStyle.js","webpack:///./node_modules/dom-helpers/transition/isTransform.js","webpack:///./node_modules/uncontrollable/createUncontrollable.js","webpack:///./node_modules/uncontrollable/utils.js","webpack:///./node_modules/react-bootstrap/es/DropdownMenu.js","webpack:///./node_modules/babel-runtime/core-js/array/from.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/fn/array/from.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.array.from.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_iter-call.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_is-array-iter.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_create-property.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/core.get-iterator-method.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_classof.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_iter-detect.js","webpack:///./node_modules/react-bootstrap/es/utils/PropTypes.js","webpack:///./node_modules/react-bootstrap/es/DropdownButton.js","webpack:///./node_modules/react-bootstrap/es/Form.js","webpack:///./node_modules/react-bootstrap/es/FormControl.js","webpack:///./node_modules/react-bootstrap/es/FormControlFeedback.js","webpack:///./node_modules/react-bootstrap/es/FormControlStatic.js","webpack:///./node_modules/react-bootstrap/es/FormGroup.js","webpack:///./node_modules/react-bootstrap/es/HelpBlock.js","webpack:///./node_modules/react-bootstrap/es/Image.js","webpack:///./node_modules/react-bootstrap/es/InputGroup.js","webpack:///./node_modules/react-bootstrap/es/InputGroupAddon.js","webpack:///./node_modules/react-bootstrap/es/InputGroupButton.js","webpack:///./node_modules/react-bootstrap/es/Jumbotron.js","webpack:///./node_modules/react-bootstrap/es/Label.js","webpack:///./node_modules/react-bootstrap/es/ListGroup.js","webpack:///./node_modules/react-bootstrap/es/MediaBody.js","webpack:///./node_modules/react-bootstrap/es/MediaHeading.js","webpack:///./node_modules/react-bootstrap/es/MediaLeft.js","webpack:///./node_modules/react-bootstrap/es/MediaList.js","webpack:///./node_modules/react-bootstrap/es/MediaListItem.js","webpack:///./node_modules/react-bootstrap/es/MediaRight.js","webpack:///./node_modules/react-bootstrap/es/MenuItem.js","webpack:///./node_modules/react-bootstrap/es/Modal.js","webpack:///./node_modules/dom-helpers/events/index.js","webpack:///./node_modules/dom-helpers/events/filter.js","webpack:///./node_modules/dom-helpers/query/querySelectorAll.js","webpack:///./node_modules/dom-helpers/events/listen.js","webpack:///./node_modules/react-overlays/lib/Modal.js","webpack:///./node_modules/prop-types-extra/lib/deprecated.js","webpack:///./node_modules/react-overlays/lib/ModalManager.js","webpack:///./node_modules/dom-helpers/class/index.js","webpack:///./node_modules/dom-helpers/class/addClass.js","webpack:///./node_modules/dom-helpers/class/removeClass.js","webpack:///./node_modules/react-overlays/lib/utils/manageAriaHidden.js","webpack:///./node_modules/react-overlays/lib/LegacyPortal.js","webpack:///./node_modules/react-overlays/lib/RefHolder.js","webpack:///./node_modules/react-overlays/lib/utils/addFocusListener.js","webpack:///./node_modules/react-bootstrap/es/ModalDialog.js","webpack:///./node_modules/react-bootstrap/es/Navbar.js","webpack:///./node_modules/react-bootstrap/es/NavbarCollapse.js","webpack:///./node_modules/react-bootstrap/es/NavbarHeader.js","webpack:///./node_modules/react-bootstrap/es/NavbarToggle.js","webpack:///./node_modules/react-bootstrap/es/NavDropdown.js","webpack:///./node_modules/react-overlays/lib/Overlay.js","webpack:///./node_modules/react-overlays/lib/Position.js","webpack:///./node_modules/react-overlays/lib/utils/calculatePosition.js","webpack:///./node_modules/dom-helpers/query/position.js","webpack:///./node_modules/dom-helpers/query/offsetParent.js","webpack:///./node_modules/dom-helpers/query/scrollLeft.js","webpack:///./node_modules/react-bootstrap/es/OverlayTrigger.js","webpack:///./node_modules/react-bootstrap/es/PageHeader.js","webpack:///./node_modules/react-bootstrap/es/PageItem.js","webpack:///./node_modules/react-bootstrap/es/utils/deprecationWarning.js","webpack:///./node_modules/react-bootstrap/es/Pager.js","webpack:///./node_modules/react-bootstrap/es/Pagination.js","webpack:///./node_modules/react-bootstrap/es/Panel.js","webpack:///./node_modules/react-bootstrap/es/Popover.js","webpack:///./node_modules/react-bootstrap/es/ProgressBar.js","webpack:///./node_modules/react-bootstrap/es/Radio.js","webpack:///./node_modules/react-bootstrap/es/ResponsiveEmbed.js","webpack:///./node_modules/react-bootstrap/es/Row.js","webpack:///./node_modules/react-bootstrap/es/SplitButton.js","webpack:///./node_modules/react-bootstrap/es/SplitToggle.js","webpack:///./node_modules/react-bootstrap/es/Tab.js","webpack:///./node_modules/react-bootstrap/es/Table.js","webpack:///./node_modules/react-bootstrap/es/Tabs.js","webpack:///./node_modules/react-bootstrap/es/Thumbnail.js","webpack:///./node_modules/react-bootstrap/es/ToggleButtonGroup.js","webpack:///./node_modules/react-bootstrap/es/Tooltip.js","webpack:///./node_modules/react-bootstrap/es/Well.js","webpack:///./node_modules/react-bootstrap/es/utils/index.js","webpack:///src/components/CategoryDropdown/CategoryDropdown.js","webpack:///./node_modules/axios/lib/axios.js","webpack:///./node_modules/is-buffer/index.js","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./node_modules/axios/lib/core/enhanceError.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/axios/lib/helpers/btoa.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/axios/lib/helpers/spread.js","webpack:///src/components/Layouts/Helpers.js","webpack:///./node_modules/auth0-js/src/index.js","webpack:///./node_modules/component-emitter/index.js","webpack:///./node_modules/superagent/lib/request-base.js","webpack:///./node_modules/superagent/lib/response-base.js","webpack:///./node_modules/superagent/lib/utils.js","webpack:///./node_modules/superagent/lib/agent-base.js","webpack:///./node_modules/qs/lib/stringify.js","webpack:///./node_modules/qs/lib/parse.js","webpack:///./node_modules/auth0-js/src/helper/object-assign.js","webpack:///./node_modules/auth0-js/src/helper/storage/handler.js","webpack:///./node_modules/auth0-js/src/helper/storage/dummy.js","webpack:///./node_modules/auth0-js/src/helper/storage/cookie.js","webpack:///./node_modules/auth0-js/src/helper/cookies.js","webpack:///./node_modules/auth0-js/src/helper/parameters-whitelist.js","webpack:///./node_modules/auth0-js/src/authentication/passwordless-authentication.js","webpack:///./node_modules/auth0-js/src/authentication/db-connection.js","webpack:///./node_modules/auth0-js/src/management/index.js","webpack:///./node_modules/auth0-js/src/web-auth/index.js","webpack:///./node_modules/idtoken-verifier/src/index.js","webpack:///./node_modules/idtoken-verifier/src/helpers/rsa-verifier.js","webpack:///./node_modules/jsbn/index.js","webpack:///./node_modules/crypto-js/sha256.js","webpack:///./node_modules/crypto-js/core.js","webpack:///./node_modules/idtoken-verifier/src/helpers/jwks.js","webpack:///./node_modules/idtoken-verifier/src/helpers/error.js","webpack:///./node_modules/idtoken-verifier/src/helpers/dummy-cache.js","webpack:///./node_modules/auth0-js/src/helper/plugins.js","webpack:///./node_modules/auth0-js/src/helper/random.js","webpack:///./node_modules/auth0-js/src/web-auth/redirect.js","webpack:///./node_modules/auth0-js/src/web-auth/popup.js","webpack:///./node_modules/auth0-js/src/helper/url.js","webpack:///./node_modules/auth0-js/src/helper/popup-handler.js","webpack:///./node_modules/winchan/winchan.js","webpack:///./node_modules/auth0-js/src/web-auth/silent-authentication-handler.js","webpack:///./src/components/Layouts/Layout.css","webpack:///src/containers/GroceryList/GroceryList.js","webpack:///./src/components/common/UI/Input/Input.css","webpack:///src/components/GroceryList/GroceryListHeader/GroceryListHeader.js","webpack:///src/components/GroceryList/GroceryListBody/GroceryListBody.js","webpack:///./src/components/GroceryList/GroceryListBody/GroceryListBody.css","webpack:///src/components/GroceryList/GroceryListItem/GroceryListItem.js","webpack:///./src/components/GroceryList/GroceryListItem/GroceryListItem.css","webpack:///src/components/Common/UI/Modal/Modal.js","webpack:///./src/components/Common/UI/Modal/Modal.css","webpack:///src/components/Common/UI/Backdrop/Backdrop.js","webpack:///./src/components/Common/UI/Backdrop/Backdrop.css","webpack:///./src/components/Home/Home.css","webpack:///src/store/actions/auth.js","webpack:///./node_modules/jwt-decode/lib/base64_url_decode.js","webpack:///./node_modules/jwt-decode/lib/atob.js","webpack:///src/store/actions/walmartCategory.js","webpack:///./node_modules/cors/lib/index.js","webpack:///./node_modules/vary/index.js","webpack:///src/components/Friends/Friends.js","webpack:///src/components/Landing/Landing.js","webpack:///./src/components/Landing/Landing.css","webpack:///./src/assets/img/laptop.gif","webpack:///./src/assets/img/perspective.png","webpack:///./src/assets/img/dashboard.png","webpack:///./src/assets/img/avatar3.jpg","webpack:///./src/assets/img/avatar1.jpg","webpack:///./src/assets/img/avatar2.jpg","webpack:///src/components/Register/Register.js","webpack:///src/containers/Login/Login.js","webpack:///src/Callback/CbLogin.js","webpack:///src/containers/Admin/Admin_WalmartCategories.js","webpack:///./node_modules/ag-grid-react/main.js","webpack:///./node_modules/ag-grid-react/lib/reactFrameworkComponentWrapper.js","webpack:///./node_modules/ag-grid/dist/lib/eventKeys.js","webpack:///./node_modules/ag-grid/dist/lib/propertyKeys.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/rowContainerComponent.js","webpack:///./node_modules/ag-grid/dist/lib/misc/linkedList.js","webpack:///./node_modules/ag-grid/dist/lib/rowModels/pagination/paginationComp.js","webpack:///./node_modules/ag-grid/dist/lib/headerRendering/header/headerComp.js","webpack:///./node_modules/ag-grid/dist/lib/headerRendering/headerGroup/headerGroupComp.js","webpack:///./node_modules/ag-grid/dist/lib/filter/floatingFilter.js","webpack:///./node_modules/ag-grid/dist/lib/filter/floatingFilterWrapper.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/overlays/overlayWrapperComponent.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/overlays/loadingOverlayComponent.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/overlays/noRowsOverlayComponent.js","webpack:///./node_modules/ag-grid/dist/lib/headerRendering/header/selectAllFeature.js","webpack:///./node_modules/ag-grid/dist/lib/headerRendering/headerGroup/headerGroupWrapperComp.js","webpack:///./node_modules/ag-grid/dist/lib/entities/defaultColumnTypes.js","webpack:///./node_modules/ag-grid/dist/lib/components/colDefUtil.js","webpack:///./node_modules/ag-grid/dist/lib/components/agGridNg1.js","webpack:///./node_modules/ag-grid/dist/lib/rowModels/infinite/infiniteCache.js","webpack:///./node_modules/ag-grid/dist/lib/rowModels/infinite/infiniteBlock.js","webpack:///./node_modules/ag-grid/dist/lib/rowNodes/rowNodeFactory.js","webpack:///./node_modules/ag-grid/dist/lib/valueService/changeDetectionService.js","webpack:///./node_modules/ag-grid/dist/lib/components/agGridWebComponent.js","webpack:///./node_modules/ag-grid/dist/lib/layout/tabbedLayout.js","webpack:///./node_modules/ag-grid/dist/lib/layout/verticalStack.js","webpack:///./node_modules/ag-grid/dist/lib/misc/simpleHttpRequest.js","webpack:///./node_modules/ag-grid/dist/lib/functions.js","webpack:///./node_modules/ag-grid/dist/lib/components/framework/frameworkComponentWrapper.js","webpack:///./node_modules/ag-grid-react/lib/agReactComponent.js","webpack:///./node_modules/react-dom-factories/index.js","webpack:///src/registerServiceWorker.js","webpack:///src/store/reducers/categoryReducer.js","webpack:///src/store/reducers/auth.js","webpack:///./node_modules/react-intl/lib/index.es.js","webpack:///../locale-data/index.js (ignored)","webpack:///./node_modules/intl-messageformat/lib/main.js","webpack:///./node_modules/intl-messageformat/lib/core.js","webpack:///./node_modules/intl-messageformat/lib/es5.js","webpack:///./node_modules/intl-messageformat/lib/compiler.js","webpack:///./node_modules/intl-messageformat-parser/index.js","webpack:///./node_modules/intl-messageformat-parser/lib/parser.js","webpack:///./node_modules/intl-messageformat/lib/en.js","webpack:///./lib/locales (ignored)","webpack:///./node_modules/intl-relativeformat/index.js","webpack:///./node_modules/intl-relativeformat/lib/main.js","webpack:///./node_modules/intl-relativeformat/lib/core.js","webpack:///./node_modules/intl-relativeformat/lib/diff.js","webpack:///./node_modules/intl-relativeformat/lib/es5.js","webpack:///./node_modules/intl-relativeformat/lib/en.js","webpack:///./lib/locales (ignored)?6dac","webpack:///./node_modules/intl-format-cache/index.js","webpack:///./node_modules/intl-format-cache/lib/memoizer.js","webpack:///./node_modules/intl-format-cache/lib/es5.js","webpack:///./node_modules/metismenu/dist/metisMenu.js","webpack:///./node_modules/bootstrap/dist/js/npm.js","webpack:///./node_modules/bootstrap/js/transition.js","webpack:///./node_modules/bootstrap/js/alert.js","webpack:///./node_modules/bootstrap/js/button.js","webpack:///./node_modules/bootstrap/js/carousel.js","webpack:///./node_modules/bootstrap/js/collapse.js","webpack:///./node_modules/bootstrap/js/dropdown.js","webpack:///./node_modules/bootstrap/js/modal.js","webpack:///./node_modules/bootstrap/js/tooltip.js","webpack:///./node_modules/bootstrap/js/popover.js","webpack:///./node_modules/bootstrap/js/scrollspy.js","webpack:///./node_modules/bootstrap/js/tab.js","webpack:///./node_modules/bootstrap/js/affix.js","webpack:///./node_modules/bootstrap/dist/css/bootstrap.css","webpack:///./node_modules/font-awesome/css/font-awesome.css","webpack:///./node_modules/animate.css/animate.min.css","webpack:///src/store/reducers/walmartCategory.js"],"sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 335);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap fd641f8c2c70c1df4f2f","'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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react/index.js\n// module id = 0\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar Context = (function () {\n    function Context(params, logger) {\n        this.beans = {};\n        this.componentsMappedByName = {};\n        this.destroyed = false;\n        if (!params || !params.beans) {\n            return;\n        }\n        this.contextParams = params;\n        this.logger = logger;\n        this.logger.log('>> creating ag-Application Context');\n        this.setupComponents();\n        this.createBeans();\n        var beans = utils_1.Utils.mapObject(this.beans, function (beanEntry) { return beanEntry.beanInstance; });\n        this.wireBeans(beans);\n        this.logger.log('>> ag-Application Context ready - component is alive');\n    }\n    Context.prototype.setupComponents = function () {\n        var _this = this;\n        if (this.contextParams.components) {\n            this.contextParams.components.forEach(function (componentMeta) { return _this.addComponent(componentMeta); });\n        }\n    };\n    Context.prototype.addComponent = function (componentMeta) {\n        // get name of the class as a string\n        // let className = _.getNameOfClass(ComponentClass);\n        // insert a dash after every capital letter\n        // let classEscaped = className.replace(/([A-Z])/g, \"-$1\").toLowerCase();\n        var classEscaped = componentMeta.componentName.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n        // put all to upper case\n        var classUpperCase = classEscaped.toUpperCase();\n        // finally store\n        this.componentsMappedByName[classUpperCase] = componentMeta.theClass;\n    };\n    Context.prototype.createComponent = function (element) {\n        var key = element.nodeName;\n        if (this.componentsMappedByName && this.componentsMappedByName[key]) {\n            var newComponent = new this.componentsMappedByName[key];\n            this.wireBean(newComponent);\n            this.copyAttributesFromNode(element, newComponent.getGui());\n            newComponent.attributesSet();\n            return newComponent;\n        }\n        else {\n            return null;\n        }\n    };\n    Context.prototype.copyAttributesFromNode = function (fromNode, toNode) {\n        if (fromNode.attributes) {\n            var count = fromNode.attributes.length;\n            for (var i = 0; i < count; i++) {\n                var attr = fromNode.attributes[i];\n                toNode.setAttribute(attr.name, attr.value);\n            }\n        }\n    };\n    Context.prototype.wireBean = function (bean) {\n        if (!bean)\n            throw Error(\"Can't wire to bean since it is null\");\n        this.wireBeans([bean]);\n    };\n    Context.prototype.wireBeans = function (beans) {\n        this.autoWireBeans(beans);\n        this.methodWireBeans(beans);\n        this.preConstruct(beans);\n        this.postConstruct(beans);\n    };\n    Context.prototype.createBeans = function () {\n        var _this = this;\n        // register all normal beans\n        this.contextParams.beans.forEach(this.createBeanEntry.bind(this));\n        // register override beans, these will overwrite beans above of same name\n        if (this.contextParams.overrideBeans) {\n            this.contextParams.overrideBeans.forEach(this.createBeanEntry.bind(this));\n        }\n        // instantiate all beans - overridden beans will be left out\n        utils_1.Utils.iterateObject(this.beans, function (key, beanEntry) {\n            var constructorParamsMeta;\n            if (beanEntry.bean.__agBeanMetaData\n                && beanEntry.bean.__agBeanMetaData.autowireMethods\n                && beanEntry.bean.__agBeanMetaData.autowireMethods.agConstructor) {\n                constructorParamsMeta = beanEntry.bean.__agBeanMetaData.autowireMethods.agConstructor;\n            }\n            var constructorParams = _this.getBeansForParameters(constructorParamsMeta, beanEntry.bean.name);\n            var newInstance = applyToConstructor(beanEntry.bean, constructorParams);\n            beanEntry.beanInstance = newInstance;\n            _this.logger.log('bean ' + _this.getBeanName(newInstance) + ' created');\n        });\n    };\n    Context.prototype.createBeanEntry = function (Bean) {\n        var metaData = Bean.__agBeanMetaData;\n        if (!metaData) {\n            var beanName = void 0;\n            if (Bean.prototype.constructor) {\n                beanName = Bean.prototype.constructor.name;\n            }\n            else {\n                beanName = '' + Bean;\n            }\n            console.error('context item ' + beanName + ' is not a bean');\n            return;\n        }\n        var beanEntry = {\n            bean: Bean,\n            beanInstance: null,\n            beanName: metaData.beanName\n        };\n        this.beans[metaData.beanName] = beanEntry;\n    };\n    Context.prototype.autoWireBeans = function (beans) {\n        var _this = this;\n        beans.forEach(function (bean) { return _this.autoWireBean(bean); });\n    };\n    Context.prototype.methodWireBeans = function (beans) {\n        var _this = this;\n        beans.forEach(function (bean) {\n            if (!bean)\n                throw Error(\"Can't wire to bean since it is null\");\n            return _this.methodWireBean(bean);\n        });\n    };\n    Context.prototype.autoWireBean = function (bean) {\n        var _this = this;\n        var currentBean = bean;\n        var _loop_1 = function () {\n            var currentConstructor = currentBean.constructor;\n            if (currentConstructor.__agBeanMetaData\n                && currentConstructor.__agBeanMetaData.agClassAttributes) {\n                var attributes = currentConstructor.__agBeanMetaData.agClassAttributes;\n                if (!attributes) {\n                    return { value: void 0 };\n                }\n                var beanName_1 = this_1.getBeanName(currentConstructor);\n                attributes.forEach(function (attribute) {\n                    var otherBean = _this.lookupBeanInstance(beanName_1, attribute.beanName, attribute.optional);\n                    bean[attribute.attributeName] = otherBean;\n                });\n            }\n            currentBean = Object.getPrototypeOf(currentBean) ? Object.getPrototypeOf(currentBean) : null;\n        };\n        var this_1 = this;\n        while (currentBean != null) {\n            var state_1 = _loop_1();\n            if (typeof state_1 === \"object\")\n                return state_1.value;\n        }\n    };\n    Context.prototype.getBeanName = function (constructor) {\n        if (constructor.__agBeanMetaData && constructor.__agBeanMetaData.beanName) {\n            return constructor.__agBeanMetaData.beanName;\n        }\n        var constructorString = constructor.toString();\n        var beanName = constructorString.substring(9, constructorString.indexOf('('));\n        return beanName;\n    };\n    Context.prototype.methodWireBean = function (bean) {\n        var _this = this;\n        var autowiredMethods;\n        if (bean.constructor.__agBeanMetaData && bean.constructor.__agBeanMetaData.autowireMethods) {\n            autowiredMethods = bean.constructor.__agBeanMetaData.autowireMethods;\n        }\n        utils_1.Utils.iterateObject(autowiredMethods, function (methodName, wireParams) {\n            // skip constructor, as this is dealt with elsewhere\n            if (methodName === 'agConstructor') {\n                return;\n            }\n            var beanName = _this.getBeanName(bean.constructor);\n            var initParams = _this.getBeansForParameters(wireParams, beanName);\n            bean[methodName].apply(bean, initParams);\n        });\n    };\n    Context.prototype.getBeansForParameters = function (parameters, beanName) {\n        var _this = this;\n        var beansList = [];\n        if (parameters) {\n            utils_1.Utils.iterateObject(parameters, function (paramIndex, otherBeanName) {\n                var otherBean = _this.lookupBeanInstance(beanName, otherBeanName);\n                beansList[Number(paramIndex)] = otherBean;\n            });\n        }\n        return beansList;\n    };\n    Context.prototype.lookupBeanInstance = function (wiringBean, beanName, optional) {\n        if (optional === void 0) { optional = false; }\n        if (beanName === 'context') {\n            return this;\n        }\n        else if (this.contextParams.seed && this.contextParams.seed.hasOwnProperty(beanName)) {\n            return this.contextParams.seed[beanName];\n        }\n        else {\n            var beanEntry = this.beans[beanName];\n            if (beanEntry) {\n                return beanEntry.beanInstance;\n            }\n            if (!optional) {\n                console.error('ag-Grid: unable to find bean reference ' + beanName + ' while initialising ' + wiringBean);\n            }\n            return null;\n        }\n    };\n    Context.prototype.postConstruct = function (beans) {\n        beans.forEach(function (bean) {\n            // try calling init methods\n            if (bean.constructor.__agBeanMetaData && bean.constructor.__agBeanMetaData.postConstructMethods) {\n                bean.constructor.__agBeanMetaData && bean.constructor.__agBeanMetaData.postConstructMethods.forEach(function (methodName) { return bean[methodName](); });\n            }\n        });\n    };\n    Context.prototype.preConstruct = function (beans) {\n        beans.forEach(function (bean) {\n            // try calling init methods\n            if (bean.constructor.__agBeanMetaData && bean.constructor.__agBeanMetaData.preConstructMethods) {\n                bean.constructor.__agBeanMetaData.preConstructMethods.forEach(function (methodName) { return bean[methodName](); });\n            }\n        });\n    };\n    Context.prototype.getBean = function (name) {\n        return this.lookupBeanInstance('getBean', name, true);\n    };\n    Context.prototype.destroy = function () {\n        // should only be able to destroy once\n        if (this.destroyed) {\n            return;\n        }\n        this.logger.log('>> Shutting down ag-Application Context');\n        // try calling destroy methods\n        utils_1.Utils.iterateObject(this.beans, function (key, beanEntry) {\n            var bean = beanEntry.beanInstance;\n            if (bean.constructor.__agBeanMetaData && bean.constructor.__agBeanMetaData.preDestroyMethods) {\n                bean.constructor.__agBeanMetaData.preDestroyMethods.forEach(function (methodName) { return bean[methodName](); });\n            }\n        });\n        this.destroyed = true;\n        this.logger.log('>> ag-Application Context shut down - component is dead');\n    };\n    return Context;\n}());\nexports.Context = Context;\n// taken from: http://stackoverflow.com/questions/3362471/how-can-i-call-a-javascript-constructor-using-call-or-apply\n// allows calling 'apply' on a constructor\nfunction applyToConstructor(constructor, argArray) {\n    var args = [null].concat(argArray);\n    var factoryFunction = constructor.bind.apply(constructor, args);\n    return new factoryFunction();\n}\nfunction PreConstruct(target, methodName, descriptor) {\n    var props = getOrCreateProps(target.constructor);\n    if (!props.postConstructMethods) {\n        props.preConstructMethods = [];\n    }\n    props.preConstructMethods.push(methodName);\n}\nexports.PreConstruct = PreConstruct;\nfunction PostConstruct(target, methodName, descriptor) {\n    var props = getOrCreateProps(target.constructor);\n    if (!props.postConstructMethods) {\n        props.postConstructMethods = [];\n    }\n    props.postConstructMethods.push(methodName);\n}\nexports.PostConstruct = PostConstruct;\nfunction PreDestroy(target, methodName, descriptor) {\n    var props = getOrCreateProps(target.constructor);\n    if (!props.preDestroyMethods) {\n        props.preDestroyMethods = [];\n    }\n    props.preDestroyMethods.push(methodName);\n}\nexports.PreDestroy = PreDestroy;\nfunction Bean(beanName) {\n    return function (classConstructor) {\n        var props = getOrCreateProps(classConstructor);\n        props.beanName = beanName;\n    };\n}\nexports.Bean = Bean;\nfunction Autowired(name) {\n    return function (target, propertyKey, descriptor) {\n        autowiredFunc(target, name, false, target, propertyKey, null);\n    };\n}\nexports.Autowired = Autowired;\nfunction Optional(name) {\n    return function (target, propertyKey, descriptor) {\n        autowiredFunc(target, name, true, target, propertyKey, null);\n    };\n}\nexports.Optional = Optional;\nfunction autowiredFunc(target, name, optional, classPrototype, methodOrAttributeName, index) {\n    if (name === null) {\n        console.error('ag-Grid: Autowired name should not be null');\n        return;\n    }\n    if (typeof index === 'number') {\n        console.error('ag-Grid: Autowired should be on an attribute');\n        return;\n    }\n    // it's an attribute on the class\n    var props = getOrCreateProps(target.constructor);\n    if (!props.agClassAttributes) {\n        props.agClassAttributes = [];\n    }\n    props.agClassAttributes.push({\n        attributeName: methodOrAttributeName,\n        beanName: name,\n        optional: optional\n    });\n}\nfunction Qualifier(name) {\n    return function (classPrototype, methodOrAttributeName, index) {\n        var constructor = (typeof classPrototype == 'function') ? classPrototype : classPrototype.constructor;\n        var props;\n        if (typeof index === 'number') {\n            // it's a parameter on a method\n            var methodName = void 0;\n            if (methodOrAttributeName) {\n                props = getOrCreateProps(constructor);\n                methodName = methodOrAttributeName;\n            }\n            else {\n                props = getOrCreateProps(constructor);\n                methodName = 'agConstructor';\n            }\n            if (!props.autowireMethods) {\n                props.autowireMethods = {};\n            }\n            if (!props.autowireMethods[methodName]) {\n                props.autowireMethods[methodName] = {};\n            }\n            props.autowireMethods[methodName][index] = name;\n        }\n    };\n}\nexports.Qualifier = Qualifier;\nfunction getOrCreateProps(target) {\n    if (!target.hasOwnProperty('__agBeanMetaData')) {\n        target.__agBeanMetaData = {};\n    }\n    return target.__agBeanMetaData;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/context/context.js\n// module id = 1\n// module chunks = 0","/**\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 REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n    Symbol.for &&\n    Symbol.for('react.element')) ||\n    0xeac7;\n\n  var isValidElement = function(object) {\n    return typeof object === 'object' &&\n      object !== null &&\n      object.$$typeof === REACT_ELEMENT_TYPE;\n  };\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')(isValidElement, 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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/index.js\n// module id = 2\n// module chunks = 0","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/helpers/classCallCheck.js\n// module id = 3\n// module chunks = 0","\"use strict\";\n\nexports.__esModule = true;\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && ((typeof call === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(call)) === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\n// module id = 4\n// module chunks = 0","\"use strict\";\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = require(\"../core-js/object/set-prototype-of\");\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = require(\"../core-js/object/create\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(superClass)));\n  }\n\n  subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/helpers/inherits.js\n// module id = 5\n// module chunks = 0","\"use strict\";\n\nexports.__esModule = true;\n\nvar _assign = require(\"../core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _assign2.default || 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\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/helpers/extends.js\n// module id = 6\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar constants_1 = require(\"./constants\");\nvar FUNCTION_STRIP_COMMENTS = /((\\/\\/.*$)|(\\/\\*[\\s\\S]*?\\*\\/))/mg;\nvar FUNCTION_ARGUMENT_NAMES = /([^\\s,]+)/g;\nvar AG_GRID_STOP_PROPAGATION = '__ag_Grid_Stop_Propagation';\n// util class, only used when debugging, for printing time to console\nvar Timer = (function () {\n    function Timer() {\n        this.timestamp = new Date().getTime();\n    }\n    Timer.prototype.print = function (msg) {\n        var duration = (new Date().getTime()) - this.timestamp;\n        console.log(msg + \" = \" + duration);\n        this.timestamp = new Date().getTime();\n    };\n    return Timer;\n}());\nexports.Timer = Timer;\n/** HTML Escapes. */\nvar HTML_ESCAPES = {\n    '&': '&amp;',\n    '<': '&lt;',\n    '>': '&gt;',\n    '\"': '&quot;',\n    \"'\": '&#39;'\n};\nvar reUnescapedHtml = /[&<>\"']/g;\nvar Utils = (function () {\n    function Utils() {\n    }\n    // if the key was passed before, then doesn't execute the func\n    Utils.doOnce = function (func, key) {\n        if (this.doOnceFlags[key]) {\n            return;\n        }\n        func();\n        this.doOnceFlags[key] = true;\n    };\n    // returns true if the event is close to the original event by X pixels either vertically or horizontally.\n    // we only start dragging after X pixels so this allows us to know if we should start dragging yet.\n    Utils.areEventsNear = function (e1, e2, pixelCount) {\n        // by default, we wait 4 pixels before starting the drag\n        if (pixelCount === 0) {\n            return false;\n        }\n        var diffX = Math.abs(e1.clientX - e2.clientX);\n        var diffY = Math.abs(e1.clientY - e2.clientY);\n        return Math.max(diffX, diffY) <= pixelCount;\n    };\n    Utils.shallowCompare = function (arr1, arr2) {\n        // if both are missing, then they are the same\n        if (this.missing(arr1) && this.missing(arr2)) {\n            return true;\n        }\n        // if one is present, but other is missing, then then are different\n        if (this.missing(arr1) || this.missing(arr2)) {\n            return false;\n        }\n        if (arr1.length !== arr2.length) {\n            return false;\n        }\n        for (var i = 0; i < arr1.length; i++) {\n            if (arr1[i] !== arr2[i]) {\n                return false;\n            }\n        }\n        return true;\n    };\n    Utils.getNameOfClass = function (TheClass) {\n        var funcNameRegex = /function (.{1,})\\(/;\n        var funcAsString = TheClass.toString();\n        var results = (funcNameRegex).exec(funcAsString);\n        return (results && results.length > 1) ? results[1] : \"\";\n    };\n    Utils.values = function (object) {\n        var result = [];\n        this.iterateObject(object, function (key, value) {\n            result.push(value);\n        });\n        return result;\n    };\n    Utils.getValueUsingField = function (data, field, fieldContainsDots) {\n        if (!field || !data) {\n            return;\n        }\n        // if no '.', then it's not a deep value\n        if (!fieldContainsDots) {\n            return data[field];\n        }\n        else {\n            // otherwise it is a deep value, so need to dig for it\n            var fields = field.split('.');\n            var currentObject = data;\n            for (var i = 0; i < fields.length; i++) {\n                currentObject = currentObject[fields[i]];\n                if (this.missing(currentObject)) {\n                    return null;\n                }\n            }\n            return currentObject;\n        }\n    };\n    Utils.getScrollLeft = function (element, rtl) {\n        var scrollLeft = element.scrollLeft;\n        if (rtl) {\n            // Absolute value - for FF that reports RTL scrolls in negative numbers\n            scrollLeft = Math.abs(scrollLeft);\n            // Get Chrome and Safari to return the same value as well\n            if (this.isBrowserSafari() || this.isBrowserChrome()) {\n                scrollLeft = element.scrollWidth - element.clientWidth - scrollLeft;\n            }\n        }\n        return scrollLeft;\n    };\n    Utils.cleanNumber = function (value) {\n        if (typeof value === 'string') {\n            value = parseInt(value);\n        }\n        if (typeof value === 'number') {\n            value = Math.floor(value);\n        }\n        else {\n            value = null;\n        }\n        return value;\n    };\n    Utils.setScrollLeft = function (element, value, rtl) {\n        if (rtl) {\n            // Chrome and Safari when doing RTL have the END position of the scroll as zero, not the start\n            if (this.isBrowserSafari() || this.isBrowserChrome()) {\n                value = element.scrollWidth - element.clientWidth - value;\n            }\n            // Firefox uses negative numbers when doing RTL scrolling\n            if (this.isBrowserFirefox()) {\n                value *= -1;\n            }\n        }\n        element.scrollLeft = value;\n    };\n    Utils.iterateObject = function (object, callback) {\n        if (this.missing(object)) {\n            return;\n        }\n        var keys = Object.keys(object);\n        for (var i = 0; i < keys.length; i++) {\n            var key = keys[i];\n            var value = object[key];\n            callback(key, value);\n        }\n    };\n    Utils.cloneObject = function (object) {\n        var copy = {};\n        var keys = Object.keys(object);\n        for (var i = 0; i < keys.length; i++) {\n            var key = keys[i];\n            var value = object[key];\n            copy[key] = value;\n        }\n        return copy;\n    };\n    Utils.map = function (array, callback) {\n        var result = [];\n        for (var i = 0; i < array.length; i++) {\n            var item = array[i];\n            var mappedItem = callback(item);\n            result.push(mappedItem);\n        }\n        return result;\n    };\n    Utils.mapObject = function (object, callback) {\n        var result = [];\n        Utils.iterateObject(object, function (key, value) {\n            result.push(callback(value));\n        });\n        return result;\n    };\n    Utils.forEach = function (array, callback) {\n        if (!array) {\n            return;\n        }\n        for (var i = 0; i < array.length; i++) {\n            var value = array[i];\n            callback(value, i);\n        }\n    };\n    Utils.filter = function (array, callback) {\n        var result = [];\n        array.forEach(function (item) {\n            if (callback(item)) {\n                result.push(item);\n            }\n        });\n        return result;\n    };\n    Utils.getAllKeysInObjects = function (objects) {\n        var allValues = {};\n        objects.forEach(function (obj) {\n            if (obj) {\n                Object.keys(obj).forEach(function (key) { return allValues[key] = null; });\n            }\n        });\n        return Object.keys(allValues);\n    };\n    Utils.mergeDeep = function (dest, source) {\n        if (this.exists(source)) {\n            this.iterateObject(source, function (key, newValue) {\n                var oldValue = dest[key];\n                if (oldValue === newValue) {\n                    return;\n                }\n                if (typeof oldValue === 'object' && typeof newValue === 'object') {\n                    Utils.mergeDeep(oldValue, newValue);\n                }\n                else {\n                    dest[key] = newValue;\n                }\n            });\n        }\n    };\n    Utils.assign = function (object) {\n        var _this = this;\n        var sources = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            sources[_i - 1] = arguments[_i];\n        }\n        sources.forEach(function (source) {\n            if (_this.exists(source)) {\n                _this.iterateObject(source, function (key, value) {\n                    object[key] = value;\n                });\n            }\n        });\n        return object;\n    };\n    Utils.parseYyyyMmDdToDate = function (yyyyMmDd, separator) {\n        try {\n            if (!yyyyMmDd)\n                return null;\n            if (yyyyMmDd.indexOf(separator) === -1)\n                return null;\n            var fields = yyyyMmDd.split(separator);\n            if (fields.length != 3)\n                return null;\n            return new Date(Number(fields[0]), Number(fields[1]) - 1, Number(fields[2]));\n        }\n        catch (e) {\n            return null;\n        }\n    };\n    Utils.serializeDateToYyyyMmDd = function (date, separator) {\n        if (!date)\n            return null;\n        return date.getFullYear() + separator + Utils.pad(date.getMonth() + 1, 2) + separator + Utils.pad(date.getDate(), 2);\n    };\n    Utils.pad = function (num, totalStringSize) {\n        var asString = num + \"\";\n        while (asString.length < totalStringSize)\n            asString = \"0\" + asString;\n        return asString;\n    };\n    Utils.pushAll = function (target, source) {\n        if (this.missing(source) || this.missing(target)) {\n            return;\n        }\n        source.forEach(function (func) { return target.push(func); });\n    };\n    Utils.createArrayOfNumbers = function (first, last) {\n        var result = [];\n        for (var i = first; i <= last; i++) {\n            result.push(i);\n        }\n        return result;\n    };\n    Utils.getFunctionParameters = function (func) {\n        var fnStr = func.toString().replace(FUNCTION_STRIP_COMMENTS, '');\n        var result = fnStr.slice(fnStr.indexOf('(') + 1, fnStr.indexOf(')')).match(FUNCTION_ARGUMENT_NAMES);\n        if (result === null) {\n            return [];\n        }\n        else {\n            return result;\n        }\n    };\n    Utils.find = function (collection, predicate, value) {\n        if (collection === null || collection === undefined) {\n            return null;\n        }\n        if (!Array.isArray(collection)) {\n            var objToArray = this.values(collection);\n            return this.find(objToArray, predicate, value);\n        }\n        var collectionAsArray = collection;\n        var firstMatchingItem;\n        for (var i = 0; i < collectionAsArray.length; i++) {\n            var item = collectionAsArray[i];\n            if (typeof predicate === 'string') {\n                if (item[predicate] === value) {\n                    firstMatchingItem = item;\n                    break;\n                }\n            }\n            else {\n                var callback = predicate;\n                if (callback(item)) {\n                    firstMatchingItem = item;\n                    break;\n                }\n            }\n        }\n        return firstMatchingItem;\n    };\n    Utils.toStrings = function (array) {\n        return this.map(array, function (item) {\n            if (item === undefined || item === null || !item.toString) {\n                return null;\n            }\n            else {\n                return item.toString();\n            }\n        });\n    };\n    Utils.iterateArray = function (array, callback) {\n        for (var index = 0; index < array.length; index++) {\n            var value = array[index];\n            callback(value, index);\n        }\n    };\n    //Returns true if it is a DOM node\n    //taken from: http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object\n    Utils.isNode = function (o) {\n        return (typeof Node === \"function\" ? o instanceof Node :\n            o && typeof o === \"object\" && typeof o.nodeType === \"number\" && typeof o.nodeName === \"string\");\n    };\n    //Returns true if it is a DOM element\n    //taken from: http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object\n    Utils.isElement = function (o) {\n        return (typeof HTMLElement === \"function\" ? o instanceof HTMLElement :\n            o && typeof o === \"object\" && o !== null && o.nodeType === 1 && typeof o.nodeName === \"string\");\n    };\n    Utils.isNodeOrElement = function (o) {\n        return this.isNode(o) || this.isElement(o);\n    };\n    Utils.isEventFromPrintableCharacter = function (event) {\n        var pressedChar = String.fromCharCode(event.charCode);\n        // newline is an exception, as it counts as a printable character, but we don't\n        // want to start editing when it is pressed. without this check, if user is in chrome\n        // and editing a cell, and they press ctrl+enter, the cell stops editing, and then\n        // starts editing again with a blank value (two 'key down' events are fired). to\n        // test this, remove the line below, edit a cell in chrome and hit ctrl+enter while editing.\n        // https://ag-grid.atlassian.net/browse/AG-605\n        if (this.isKeyPressed(event, constants_1.Constants.KEY_NEW_LINE)) {\n            return false;\n        }\n        if (exports._.exists(event.key)) {\n            // modern browser will implement key, so we return if key is length 1, eg if it is 'a' for the\n            // a key, or '2' for the '2' key. non-printable characters have names, eg 'Enter' or 'Backspace'.\n            return event.key.length === 1;\n        }\n        else {\n            // otherwise, for older browsers, we test against a list of characters, which doesn't include\n            // accents for non-English, but don't care much, as most users are on modern browsers\n            return Utils.PRINTABLE_CHARACTERS.indexOf(pressedChar) >= 0;\n        }\n    };\n    //adds all type of change listeners to an element, intended to be a text field\n    Utils.addChangeListener = function (element, listener) {\n        element.addEventListener(\"changed\", listener);\n        element.addEventListener(\"paste\", listener);\n        element.addEventListener(\"input\", listener);\n        // IE doesn't fire changed for special keys (eg delete, backspace), so need to\n        // listen for this further ones\n        element.addEventListener(\"keydown\", listener);\n        element.addEventListener(\"keyup\", listener);\n    };\n    //if value is undefined, null or blank, returns null, otherwise returns the value\n    Utils.makeNull = function (value) {\n        if (value === null || value === undefined || value === \"\") {\n            return null;\n        }\n        else {\n            return value;\n        }\n    };\n    Utils.missing = function (value) {\n        return !this.exists(value);\n    };\n    Utils.missingOrEmpty = function (value) {\n        return this.missing(value) || value.length === 0;\n    };\n    Utils.missingOrEmptyObject = function (value) {\n        return this.missing(value) || Object.keys(value).length === 0;\n    };\n    Utils.exists = function (value) {\n        if (value === null || value === undefined || value === '') {\n            return false;\n        }\n        else {\n            return true;\n        }\n    };\n    Utils.firstExistingValue = function () {\n        var values = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            values[_i] = arguments[_i];\n        }\n        for (var i = 0; i < values.length; i++) {\n            var value = values[i];\n            if (exports._.exists(value))\n                return value;\n        }\n        return null;\n    };\n    Utils.anyExists = function (values) {\n        if (values) {\n            for (var i = 0; i < values.length; i++) {\n                if (this.exists(values[i])) {\n                    return true;\n                }\n            }\n        }\n        return false;\n    };\n    Utils.existsAndNotEmpty = function (value) {\n        return this.exists(value) && value.length > 0;\n    };\n    Utils.removeAllChildren = function (node) {\n        if (node) {\n            while (node.hasChildNodes()) {\n                node.removeChild(node.lastChild);\n            }\n        }\n    };\n    Utils.removeElement = function (parent, cssSelector) {\n        this.removeFromParent(parent.querySelector(cssSelector));\n    };\n    Utils.removeFromParent = function (node) {\n        if (node && node.parentNode) {\n            node.parentNode.removeChild(node);\n        }\n    };\n    Utils.isVisible = function (element) {\n        return (element.offsetParent !== null);\n    };\n    /**\n     * loads the template and returns it as an element. makes up for no simple way in\n     * the dom api to load html directly, eg we cannot do this: document.createElement(template)\n     */\n    Utils.loadTemplate = function (template) {\n        var tempDiv = document.createElement(\"div\");\n        tempDiv.innerHTML = template;\n        return tempDiv.firstChild;\n    };\n    Utils.appendHtml = function (eContainer, htmlTemplate) {\n        if (eContainer.lastChild) {\n            // https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdjacentHTML\n            // we put the items at the start, so new items appear underneath old items,\n            // so when expanding/collapsing groups, the new rows don't go on top of the\n            // rows below that are moving our of the way\n            eContainer.insertAdjacentHTML('afterbegin', htmlTemplate);\n        }\n        else {\n            eContainer.innerHTML = htmlTemplate;\n        }\n    };\n    Utils.addOrRemoveCssClass = function (element, className, addOrRemove) {\n        if (addOrRemove) {\n            this.addCssClass(element, className);\n        }\n        else {\n            this.removeCssClass(element, className);\n        }\n    };\n    Utils.callIfPresent = function (func) {\n        if (func) {\n            func();\n        }\n    };\n    Utils.addCssClass = function (element, className) {\n        var _this = this;\n        if (!className || className.length === 0) {\n            return;\n        }\n        if (className.indexOf(' ') >= 0) {\n            className.split(' ').forEach(function (value) { return _this.addCssClass(element, value); });\n            return;\n        }\n        if (element.classList) {\n            element.classList.add(className);\n        }\n        else {\n            if (element.className && element.className.length > 0) {\n                var cssClasses = element.className.split(' ');\n                if (cssClasses.indexOf(className) < 0) {\n                    cssClasses.push(className);\n                    element.className = cssClasses.join(' ');\n                }\n            }\n            else {\n                element.className = className;\n            }\n        }\n    };\n    Utils.containsClass = function (element, className) {\n        if (element.classList) {\n            // for modern browsers\n            return element.classList.contains(className);\n        }\n        else if (element.className) {\n            // for older browsers, check against the string of class names\n            // if only one class, can check for exact match\n            var onlyClass = element.className === className;\n            // if many classes, check for class name, we have to pad with ' ' to stop other\n            // class names that are a substring of this class\n            var contains = element.className.indexOf(' ' + className + ' ') >= 0;\n            // the padding above then breaks when it's the first or last class names\n            var startsWithClass = element.className.indexOf(className + ' ') === 0;\n            var endsWithClass = element.className.lastIndexOf(' ' + className) === (element.className.length - className.length - 1);\n            return onlyClass || contains || startsWithClass || endsWithClass;\n        }\n        else {\n            // if item is not a node\n            return false;\n        }\n    };\n    Utils.getElementAttribute = function (element, attributeName) {\n        if (element.attributes) {\n            if (element.attributes[attributeName]) {\n                var attribute = element.attributes[attributeName];\n                return attribute.value;\n            }\n            else {\n                return null;\n            }\n        }\n        else {\n            return null;\n        }\n    };\n    Utils.offsetHeight = function (element) {\n        return element && element.clientHeight ? element.clientHeight : 0;\n    };\n    Utils.offsetWidth = function (element) {\n        return element && element.clientWidth ? element.clientWidth : 0;\n    };\n    Utils.sortNumberArray = function (numberArray) {\n        numberArray.sort(function (a, b) { return a - b; });\n    };\n    Utils.removeCssClass = function (element, className) {\n        if (element.classList) {\n            element.classList.remove(className);\n        }\n        else {\n            if (element.className && element.className.length > 0) {\n                var cssClasses = element.className.split(' ');\n                if (cssClasses.indexOf(className) >= 0) {\n                    // remove all instances of the item, not just the first, in case it's in more than once\n                    while (cssClasses.indexOf(className) >= 0) {\n                        cssClasses.splice(cssClasses.indexOf(className), 1);\n                    }\n                    element.className = cssClasses.join(' ');\n                }\n            }\n        }\n    };\n    Utils.removeRepeatsFromArray = function (array, object) {\n        if (!array) {\n            return;\n        }\n        for (var index = array.length - 2; index >= 0; index--) {\n            var thisOneMatches = array[index] === object;\n            var nextOneMatches = array[index + 1] === object;\n            if (thisOneMatches && nextOneMatches) {\n                array.splice(index + 1, 1);\n            }\n        }\n    };\n    Utils.removeFromArray = function (array, object) {\n        if (array.indexOf(object) >= 0) {\n            array.splice(array.indexOf(object), 1);\n        }\n    };\n    Utils.removeAllFromArray = function (array, toRemove) {\n        toRemove.forEach(function (item) {\n            if (array.indexOf(item) >= 0) {\n                array.splice(array.indexOf(item), 1);\n            }\n        });\n    };\n    Utils.insertIntoArray = function (array, object, toIndex) {\n        array.splice(toIndex, 0, object);\n    };\n    Utils.insertArrayIntoArray = function (dest, src, toIndex) {\n        if (this.missing(dest) || this.missing(src)) {\n            return;\n        }\n        // put items in backwards, otherwise inserted items end up in reverse order\n        for (var i = src.length - 1; i >= 0; i--) {\n            var item = src[i];\n            this.insertIntoArray(dest, item, toIndex);\n        }\n    };\n    Utils.moveInArray = function (array, objectsToMove, toIndex) {\n        var _this = this;\n        // first take out it items from the array\n        objectsToMove.forEach(function (obj) {\n            _this.removeFromArray(array, obj);\n        });\n        // now add the objects, in same order as provided to us, that means we start at the end\n        // as the objects will be pushed to the right as they are inserted\n        objectsToMove.slice().reverse().forEach(function (obj) {\n            _this.insertIntoArray(array, obj, toIndex);\n        });\n    };\n    Utils.defaultComparator = function (valueA, valueB, accentedCompare) {\n        if (accentedCompare === void 0) { accentedCompare = false; }\n        var valueAMissing = valueA === null || valueA === undefined;\n        var valueBMissing = valueB === null || valueB === undefined;\n        // this is for aggregations sum and avg, where the result can be a number that is wrapped.\n        // if we didn't do this, then the toString() value would be used, which would result in\n        // the strings getting used instead of the numbers.\n        if (valueA && valueA.toNumber) {\n            valueA = valueA.toNumber();\n        }\n        if (valueB && valueB.toNumber) {\n            valueB = valueB.toNumber();\n        }\n        if (valueAMissing && valueBMissing) {\n            return 0;\n        }\n        if (valueAMissing) {\n            return -1;\n        }\n        if (valueBMissing) {\n            return 1;\n        }\n        if (typeof valueA === \"string\") {\n            if (!accentedCompare) {\n                return doQuickCompare(valueA, valueB);\n            }\n            else {\n                try {\n                    // using local compare also allows chinese comparisons\n                    return valueA.localeCompare(valueB);\n                }\n                catch (e) {\n                    // if something wrong with localeCompare, eg not supported\n                    // by browser, then just continue with the quick one\n                    return doQuickCompare(valueA, valueB);\n                }\n            }\n        }\n        if (valueA < valueB) {\n            return -1;\n        }\n        else if (valueA > valueB) {\n            return 1;\n        }\n        else {\n            return 0;\n        }\n        function doQuickCompare(a, b) {\n            return (a > b ? 1 : (a < b ? -1 : 0));\n        }\n    };\n    Utils.compareArrays = function (array1, array2) {\n        if (this.missing(array1) && this.missing(array2)) {\n            return true;\n        }\n        if (this.missing(array1) || this.missing(array2)) {\n            return false;\n        }\n        if (array1.length !== array2.length) {\n            return false;\n        }\n        for (var i = 0; i < array1.length; i++) {\n            if (array1[i] !== array2[i]) {\n                return false;\n            }\n        }\n        return true;\n    };\n    Utils.ensureDomOrder = function (eContainer, eChild, eChildBefore) {\n        // if already in right order, do nothing\n        if (eChildBefore && eChildBefore.nextSibling === eChild) {\n            return;\n        }\n        if (eChildBefore) {\n            if (eChildBefore.nextSibling) {\n                // insert between the eRowBefore and the row after it\n                eContainer.insertBefore(eChild, eChildBefore.nextSibling);\n            }\n            else {\n                // if nextSibling is missing, means other row is at end, so just append new row at the end\n                eContainer.appendChild(eChild);\n            }\n        }\n        else {\n            // otherwise put at start\n            if (eContainer.firstChild) {\n                // insert it at the first location\n                eContainer.insertBefore(eChild, eContainer.firstChild);\n            }\n        }\n    };\n    Utils.insertWithDomOrder = function (eContainer, eChild, eChildBefore) {\n        if (eChildBefore) {\n            if (eChildBefore.nextSibling) {\n                // insert between the eRowBefore and the row after it\n                eContainer.insertBefore(eChild, eChildBefore.nextSibling);\n            }\n            else {\n                // if nextSibling is missing, means other row is at end, so just append new row at the end\n                eContainer.appendChild(eChild);\n            }\n        }\n        else {\n            if (eContainer.firstChild) {\n                // insert it at the first location\n                eContainer.insertBefore(eChild, eContainer.firstChild);\n            }\n            else {\n                // otherwise eContainer is empty, so just append it\n                eContainer.appendChild(eChild);\n            }\n        }\n    };\n    Utils.insertTemplateWithDomOrder = function (eContainer, htmlTemplate, eChildBefore) {\n        var res;\n        if (eChildBefore) {\n            // if previous element exists, just slot in after the previous element\n            eChildBefore.insertAdjacentHTML('afterend', htmlTemplate);\n            res = eChildBefore.nextSibling;\n        }\n        else {\n            if (eContainer.firstChild) {\n                // insert it at the first location\n                eContainer.insertAdjacentHTML('afterbegin', htmlTemplate);\n            }\n            else {\n                // otherwise eContainer is empty, so just append it\n                eContainer.innerHTML = htmlTemplate;\n            }\n            res = eContainer.firstChild;\n        }\n        return res;\n    };\n    Utils.toStringOrNull = function (value) {\n        if (this.exists(value) && value.toString) {\n            return value.toString();\n        }\n        else {\n            return null;\n        }\n    };\n    Utils.formatWidth = function (width) {\n        if (typeof width === \"number\") {\n            return width + \"px\";\n        }\n        else {\n            return width;\n        }\n    };\n    Utils.formatNumberTwoDecimalPlacesAndCommas = function (value) {\n        if (typeof value !== 'number') {\n            return '';\n        }\n        // took this from: http://blog.tompawlak.org/number-currency-formatting-javascript\n        return (Math.round(value * 100) / 100).toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, \"$1,\");\n    };\n    // the native method number.toLocaleString(undefined, {minimumFractionDigits: 0}) puts in decimal places in IE,\n    // so we use this method instead\n    Utils.formatNumberCommas = function (value) {\n        if (typeof value !== 'number') {\n            return '';\n        }\n        // took this from: http://blog.tompawlak.org/number-currency-formatting-javascript\n        return value.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, \"$1,\");\n    };\n    Utils.prependDC = function (parent, documentFragment) {\n        if (this.exists(parent.firstChild)) {\n            parent.insertBefore(documentFragment, parent.firstChild);\n        }\n        else {\n            parent.appendChild(documentFragment);\n        }\n    };\n    /**\n     * If icon provided, use this (either a string, or a function callback).\n     * if not, then use the default icon from the theme\n     */\n    Utils.createIcon = function (iconName, gridOptionsWrapper, column) {\n        var iconContents = this.createIconNoSpan(iconName, gridOptionsWrapper, column);\n        if (iconContents.className.indexOf('ag-icon') > -1) {\n            return iconContents;\n        }\n        else {\n            var eResult = document.createElement('span');\n            eResult.appendChild(iconContents);\n            return eResult;\n        }\n    };\n    Utils.createIconNoSpan = function (iconName, gridOptionsWrapper, column) {\n        var userProvidedIcon;\n        // check col for icon first\n        if (column && column.getColDef().icons) {\n            userProvidedIcon = column.getColDef().icons[iconName];\n        }\n        // it not in col, try grid options\n        if (!userProvidedIcon && gridOptionsWrapper.getIcons()) {\n            userProvidedIcon = gridOptionsWrapper.getIcons()[iconName];\n        }\n        // now if user provided, use it\n        if (userProvidedIcon) {\n            var rendererResult = void 0;\n            if (typeof userProvidedIcon === 'function') {\n                rendererResult = userProvidedIcon();\n            }\n            else if (typeof userProvidedIcon === 'string') {\n                rendererResult = userProvidedIcon;\n            }\n            else {\n                throw 'icon from grid options needs to be a string or a function';\n            }\n            if (typeof rendererResult === 'string') {\n                return this.loadTemplate(rendererResult);\n            }\n            else if (this.isNodeOrElement(rendererResult)) {\n                return rendererResult;\n            }\n            else {\n                throw 'iconRenderer should return back a string or a dom object';\n            }\n        }\n        else {\n            var span = document.createElement('span');\n            var cssClass = this.iconNameClassMap[iconName];\n            if (!cssClass) {\n                throw new Error(iconName + \" did not find class\");\n            }\n            span.setAttribute(\"class\", \"ag-icon ag-icon-\" + cssClass);\n            return span;\n        }\n    };\n    Utils.addStylesToElement = function (eElement, styles) {\n        var _this = this;\n        if (!styles) {\n            return;\n        }\n        Object.keys(styles).forEach(function (key) {\n            var keyCamelCase = _this.hyphenToCamelCase(key);\n            eElement.style[keyCamelCase] = styles[key];\n        });\n    };\n    Utils.isHorizontalScrollShowing = function (element) {\n        return element.clientWidth < element.scrollWidth;\n    };\n    Utils.isVerticalScrollShowing = function (element) {\n        return element.clientHeight < element.scrollHeight;\n    };\n    Utils.getScrollbarWidth = function () {\n        var outer = document.createElement(\"div\");\n        outer.style.visibility = \"hidden\";\n        outer.style.width = \"100px\";\n        outer.style.msOverflowStyle = \"scrollbar\"; // needed for WinJS apps\n        document.body.appendChild(outer);\n        var widthNoScroll = outer.offsetWidth;\n        // force scrollbars\n        outer.style.overflow = \"scroll\";\n        // add innerdiv\n        var inner = document.createElement(\"div\");\n        inner.style.width = \"100%\";\n        outer.appendChild(inner);\n        var widthWithScroll = inner.offsetWidth;\n        // remove divs\n        outer.parentNode.removeChild(outer);\n        return widthNoScroll - widthWithScroll;\n    };\n    Utils.isKeyPressed = function (event, keyToCheck) {\n        var pressedKey = event.which || event.keyCode;\n        return pressedKey === keyToCheck;\n    };\n    Utils.setVisible = function (element, visible) {\n        this.addOrRemoveCssClass(element, 'ag-hidden', !visible);\n    };\n    Utils.setHidden = function (element, hidden) {\n        this.addOrRemoveCssClass(element, 'ag-visibility-hidden', hidden);\n    };\n    Utils.isBrowserIE = function () {\n        if (this.isIE === undefined) {\n            this.isIE = false || !!document.documentMode; // At least IE6\n        }\n        return this.isIE;\n    };\n    Utils.isBrowserEdge = function () {\n        if (this.isEdge === undefined) {\n            this.isEdge = !this.isBrowserIE() && !!window.StyleMedia;\n        }\n        return this.isEdge;\n    };\n    Utils.isBrowserSafari = function () {\n        if (this.isSafari === undefined) {\n            var anyWindow = window;\n            // taken from https://github.com/ag-grid/ag-grid/issues/550\n            this.isSafari = Object.prototype.toString.call(anyWindow.HTMLElement).indexOf('Constructor') > 0\n                || (function (p) {\n                    return p.toString() === \"[object SafariRemoteNotification]\";\n                })(!anyWindow.safari || anyWindow.safari.pushNotification);\n        }\n        return this.isSafari;\n    };\n    Utils.isBrowserChrome = function () {\n        if (this.isChrome === undefined) {\n            var anyWindow = window;\n            this.isChrome = !!anyWindow.chrome && !!anyWindow.chrome.webstore;\n        }\n        return this.isChrome;\n    };\n    Utils.isBrowserFirefox = function () {\n        if (this.isFirefox === undefined) {\n            var anyWindow = window;\n            this.isFirefox = typeof anyWindow.InstallTrigger !== 'undefined';\n        }\n        return this.isFirefox;\n    };\n    Utils.isUserAgentIPad = function () {\n        if (this.isIPad === undefined) {\n            // taken from https://davidwalsh.name/detect-ipad\n            this.isIPad = navigator.userAgent.match(/iPad/i) != null;\n        }\n        return this.isIPad;\n    };\n    // srcElement is only available in IE. In all other browsers it is target\n    // http://stackoverflow.com/questions/5301643/how-can-i-make-event-srcelement-work-in-firefox-and-what-does-it-mean\n    Utils.getTarget = function (event) {\n        var eventNoType = event;\n        return eventNoType.target || eventNoType.srcElement;\n    };\n    Utils.isElementInEventPath = function (element, event) {\n        if (!event || !element) {\n            return false;\n        }\n        var path = exports._.getEventPath(event);\n        return path.indexOf(element) >= 0;\n    };\n    Utils.createEventPath = function (event) {\n        var res = [];\n        var pointer = exports._.getTarget(event);\n        while (pointer) {\n            res.push(pointer);\n            pointer = pointer.parentElement;\n        }\n        return res;\n    };\n    // firefox doesn't have event.path set, or any alternative to it, so we hack\n    // it in. this is needed as it's to late to work out the path when the item is\n    // removed from the dom\n    Utils.addAgGridEventPath = function (event) {\n        event.__agGridEventPath = this.getEventPath(event);\n    };\n    Utils.getEventPath = function (event) {\n        // https://stackoverflow.com/questions/39245488/event-path-undefined-with-firefox-and-vue-js\n        // https://developer.mozilla.org/en-US/docs/Web/API/Event\n        var eventNoType = event;\n        if (event.deepPath) {\n            // IE supports deep path\n            return event.deepPath();\n        }\n        else if (eventNoType.path) {\n            // Chrome supports path\n            return eventNoType.path;\n        }\n        else if (eventNoType.composedPath) {\n            // Firefox supports composePath\n            return eventNoType.composedPath();\n        }\n        else if (eventNoType.__agGridEventPath) {\n            // Firefox supports composePath\n            return eventNoType.__agGridEventPath;\n        }\n        else {\n            // and finally, if none of the above worked,\n            // we create the path ourselves\n            return this.createEventPath(event);\n        }\n    };\n    Utils.forEachSnapshotFirst = function (list, callback) {\n        if (list) {\n            var arrayCopy = list.slice(0);\n            arrayCopy.forEach(callback);\n        }\n    };\n    // taken from: http://stackoverflow.com/questions/1038727/how-to-get-browser-width-using-javascript-code\n    Utils.getBodyWidth = function () {\n        if (document.body) {\n            return document.body.clientWidth;\n        }\n        if (window.innerHeight) {\n            return window.innerWidth;\n        }\n        if (document.documentElement && document.documentElement.clientWidth) {\n            return document.documentElement.clientWidth;\n        }\n        return -1;\n    };\n    // taken from: http://stackoverflow.com/questions/1038727/how-to-get-browser-width-using-javascript-code\n    Utils.getBodyHeight = function () {\n        if (document.body) {\n            return document.body.clientHeight;\n        }\n        if (window.innerHeight) {\n            return window.innerHeight;\n        }\n        if (document.documentElement && document.documentElement.clientHeight) {\n            return document.documentElement.clientHeight;\n        }\n        return -1;\n    };\n    Utils.setCheckboxState = function (eCheckbox, state) {\n        if (typeof state === 'boolean') {\n            eCheckbox.checked = state;\n            eCheckbox.indeterminate = false;\n        }\n        else {\n            // isNodeSelected returns back undefined if it's a group and the children\n            // are a mix of selected and unselected\n            eCheckbox.indeterminate = true;\n        }\n    };\n    Utils.traverseNodesWithKey = function (nodes, callback) {\n        var keyParts = [];\n        recursiveSearchNodes(nodes);\n        function recursiveSearchNodes(nodes) {\n            nodes.forEach(function (node) {\n                if (node.group) {\n                    keyParts.push(node.key);\n                    var key = keyParts.join('|');\n                    callback(node, key);\n                    recursiveSearchNodes(node.childrenAfterGroup);\n                    keyParts.pop();\n                }\n            });\n        }\n    };\n    // from https://gist.github.com/youssman/745578062609e8acac9f\n    Utils.camelCaseToHyphen = function (str) {\n        if (str === null || str === undefined) {\n            return null;\n        }\n        return str.replace(/([A-Z])/g, function (g) { return '-' + g[0].toLowerCase(); });\n    };\n    // from https://stackoverflow.com/questions/6660977/convert-hyphens-to-camel-case-camelcase\n    Utils.hyphenToCamelCase = function (str) {\n        if (str === null || str === undefined) {\n            return null;\n        }\n        return str.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); });\n    };\n    // pas in an object eg: {color: 'black', top: '25px'} and it returns \"color: black; top: 25px;\" for html\n    Utils.cssStyleObjectToMarkup = function (stylesToUse) {\n        var _this = this;\n        if (!stylesToUse) {\n            return '';\n        }\n        var resParts = [];\n        this.iterateObject(stylesToUse, function (styleKey, styleValue) {\n            var styleKeyDashed = _this.camelCaseToHyphen(styleKey);\n            resParts.push(styleKeyDashed + \": \" + styleValue + \";\");\n        });\n        return resParts.join(' ');\n    };\n    /**\n     * From http://stackoverflow.com/questions/9716468/is-there-any-function-like-isnumeric-in-javascript-to-validate-numbers\n     */\n    Utils.isNumeric = function (value) {\n        if (value === '')\n            return false;\n        return !isNaN(parseFloat(value)) && isFinite(value);\n    };\n    Utils.escape = function (toEscape) {\n        if (toEscape === null || toEscape === undefined || !toEscape.replace) {\n            return toEscape;\n        }\n        return toEscape.replace(reUnescapedHtml, function (chr) { return HTML_ESCAPES[chr]; });\n    };\n    // Taken from here: https://github.com/facebook/fixed-data-table/blob/master/src/vendor_upstream/dom/normalizeWheel.js\n    /**\n     * Mouse wheel (and 2-finger trackpad) support on the web sucks.  It is\n     * complicated, thus this doc is long and (hopefully) detailed enough to answer\n     * your questions.\n     *\n     * If you need to react to the mouse wheel in a predictable way, this code is\n     * like your bestest friend. * hugs *\n     *\n     * As of today, there are 4 DOM event types you can listen to:\n     *\n     *   'wheel'                -- Chrome(31+), FF(17+), IE(9+)\n     *   'mousewheel'           -- Chrome, IE(6+), Opera, Safari\n     *   'MozMousePixelScroll'  -- FF(3.5 only!) (2010-2013) -- don't bother!\n     *   'DOMMouseScroll'       -- FF(0.9.7+) since 2003\n     *\n     * So what to do?  The is the best:\n     *\n     *   normalizeWheel.getEventType();\n     *\n     * In your event callback, use this code to get sane interpretation of the\n     * deltas.  This code will return an object with properties:\n     *\n     *   spinX   -- normalized spin speed (use for zoom) - x plane\n     *   spinY   -- \" - y plane\n     *   pixelX  -- normalized distance (to pixels) - x plane\n     *   pixelY  -- \" - y plane\n     *\n     * Wheel values are provided by the browser assuming you are using the wheel to\n     * scroll a web page by a number of lines or pixels (or pages).  Values can vary\n     * significantly on different platforms and browsers, forgetting that you can\n     * scroll at different speeds.  Some devices (like trackpads) emit more events\n     * at smaller increments with fine granularity, and some emit massive jumps with\n     * linear speed or acceleration.\n     *\n     * This code does its best to normalize the deltas for you:\n     *\n     *   - spin is trying to normalize how far the wheel was spun (or trackpad\n     *     dragged).  This is super useful for zoom support where you want to\n     *     throw away the chunky scroll steps on the PC and make those equal to\n     *     the slow and smooth tiny steps on the Mac. Key data: This code tries to\n     *     resolve a single slow step on a wheel to 1.\n     *\n     *   - pixel is normalizing the desired scroll delta in pixel units.  You'll\n     *     get the crazy differences between browsers, but at least it'll be in\n     *     pixels!\n     *\n     *   - positive value indicates scrolling DOWN/RIGHT, negative UP/LEFT.  This\n     *     should translate to positive value zooming IN, negative zooming OUT.\n     *     This matches the newer 'wheel' event.\n     *\n     * Why are there spinX, spinY (or pixels)?\n     *\n     *   - spinX is a 2-finger side drag on the trackpad, and a shift + wheel turn\n     *     with a mouse.  It results in side-scrolling in the browser by default.\n     *\n     *   - spinY is what you expect -- it's the classic axis of a mouse wheel.\n     *\n     *   - I dropped spinZ/pixelZ.  It is supported by the DOM 3 'wheel' event and\n     *     probably is by browsers in conjunction with fancy 3D controllers .. but\n     *     you know.\n     *\n     * Implementation info:\n     *\n     * Examples of 'wheel' event if you scroll slowly (down) by one step with an\n     * average mouse:\n     *\n     *   OS X + Chrome  (mouse)     -    4   pixel delta  (wheelDelta -120)\n     *   OS X + Safari  (mouse)     -  N/A   pixel delta  (wheelDelta  -12)\n     *   OS X + Firefox (mouse)     -    0.1 line  delta  (wheelDelta  N/A)\n     *   Win8 + Chrome  (mouse)     -  100   pixel delta  (wheelDelta -120)\n     *   Win8 + Firefox (mouse)     -    3   line  delta  (wheelDelta -120)\n     *\n     * On the trackpad:\n     *\n     *   OS X + Chrome  (trackpad)  -    2   pixel delta  (wheelDelta   -6)\n     *   OS X + Firefox (trackpad)  -    1   pixel delta  (wheelDelta  N/A)\n     *\n     * On other/older browsers.. it's more complicated as there can be multiple and\n     * also missing delta values.\n     *\n     * The 'wheel' event is more standard:\n     *\n     * http://www.w3.org/TR/DOM-Level-3-Events/#events-wheelevents\n     *\n     * The basics is that it includes a unit, deltaMode (pixels, lines, pages), and\n     * deltaX, deltaY and deltaZ.  Some browsers provide other values to maintain\n     * backward compatibility with older events.  Those other values help us\n     * better normalize spin speed.  Example of what the browsers provide:\n     *\n     *                          | event.wheelDelta | event.detail\n     *        ------------------+------------------+--------------\n     *          Safari v5/OS X  |       -120       |       0\n     *          Safari v5/Win7  |       -120       |       0\n     *         Chrome v17/OS X  |       -120       |       0\n     *         Chrome v17/Win7  |       -120       |       0\n     *                IE9/Win7  |       -120       |   undefined\n     *         Firefox v4/OS X  |     undefined    |       1\n     *         Firefox v4/Win7  |     undefined    |       3\n     *\n     */\n    Utils.normalizeWheel = function (event) {\n        var PIXEL_STEP = 10;\n        var LINE_HEIGHT = 40;\n        var PAGE_HEIGHT = 800;\n        // spinX, spinY\n        var sX = 0;\n        var sY = 0;\n        // pixelX, pixelY\n        var pX = 0;\n        var pY = 0;\n        // Legacy\n        if ('detail' in event) {\n            sY = event.detail;\n        }\n        if ('wheelDelta' in event) {\n            sY = -event.wheelDelta / 120;\n        }\n        if ('wheelDeltaY' in event) {\n            sY = -event.wheelDeltaY / 120;\n        }\n        if ('wheelDeltaX' in event) {\n            sX = -event.wheelDeltaX / 120;\n        }\n        // side scrolling on FF with DOMMouseScroll\n        if ('axis' in event && event.axis === event.HORIZONTAL_AXIS) {\n            sX = sY;\n            sY = 0;\n        }\n        pX = sX * PIXEL_STEP;\n        pY = sY * PIXEL_STEP;\n        if ('deltaY' in event) {\n            pY = event.deltaY;\n        }\n        if ('deltaX' in event) {\n            pX = event.deltaX;\n        }\n        if ((pX || pY) && event.deltaMode) {\n            if (event.deltaMode == 1) {\n                pX *= LINE_HEIGHT;\n                pY *= LINE_HEIGHT;\n            }\n            else {\n                pX *= PAGE_HEIGHT;\n                pY *= PAGE_HEIGHT;\n            }\n        }\n        // Fall-back if spin cannot be determined\n        if (pX && !sX) {\n            sX = (pX < 1) ? -1 : 1;\n        }\n        if (pY && !sY) {\n            sY = (pY < 1) ? -1 : 1;\n        }\n        return {\n            spinX: sX,\n            spinY: sY,\n            pixelX: pX,\n            pixelY: pY\n        };\n    };\n    /**\n     * https://stackoverflow.com/questions/24004791/can-someone-explain-the-debounce-function-in-javascript\n     */\n    Utils.debounce = function (func, wait, immediate) {\n        if (immediate === void 0) { immediate = false; }\n        // 'private' variable for instance\n        // The returned function will be able to reference this due to closure.\n        // Each call to the returned function will share this common timer.\n        var timeout;\n        // Calling debounce returns a new anonymous function\n        return function () {\n            // reference the context and args for the setTimeout function\n            var context = this, args = arguments;\n            // Should the function be called now? If immediate is true\n            //   and not already in a timeout then the answer is: Yes\n            var callNow = immediate && !timeout;\n            // This is the basic debounce behaviour where you can call this\n            //   function several times, but it will only execute once\n            //   [before or after imposing a delay].\n            //   Each time the returned function is called, the timer starts over.\n            clearTimeout(timeout);\n            // Set the new timeout\n            timeout = setTimeout(function () {\n                // Inside the timeout function, clear the timeout variable\n                // which will let the next execution run when in 'immediate' mode\n                timeout = null;\n                // Check if the function already ran with the immediate flag\n                if (!immediate) {\n                    // Call the original function with apply\n                    // apply lets you define the 'this' object as well as the arguments\n                    //    (both captured before setTimeout)\n                    func.apply(context, args);\n                }\n            }, wait);\n            // Immediate mode and no wait timer? Execute the function..\n            if (callNow)\n                func.apply(context, args);\n        };\n    };\n    ;\n    // a user once raised an issue - they said that when you opened a popup (eg context menu)\n    // and then clicked on a selection checkbox, the popup wasn't closed. this is because the\n    // popup listens for clicks on the body, however ag-grid WAS stopping propagation on the\n    // checkbox clicks (so the rows didn't pick them up as row selection selection clicks).\n    // to get around this, we have a pattern to stop propagation for the purposes of ag-Grid,\n    // but we still let the event pass back to teh body.\n    Utils.stopPropagationForAgGrid = function (event) {\n        event[AG_GRID_STOP_PROPAGATION] = true;\n    };\n    Utils.isStopPropagationForAgGrid = function (event) {\n        return event[AG_GRID_STOP_PROPAGATION] === true;\n    };\n    Utils.executeInAWhile = function (funcs) {\n        this.executeAfter(funcs, 400);\n    };\n    Utils.executeNextVMTurn = function (funcs) {\n        this.executeAfter(funcs, 0);\n    };\n    Utils.executeAfter = function (funcs, millis) {\n        if (funcs.length > 0) {\n            setTimeout(function () {\n                funcs.forEach(function (func) { return func(); });\n            }, millis);\n        }\n    };\n    Utils.referenceCompare = function (left, right) {\n        if (left == null && right == null)\n            return true;\n        if (left == null && right)\n            return false;\n        if (left && right == null)\n            return false;\n        return left === right;\n    };\n    Utils.get = function (source, expression, defaultValue) {\n        if (source == null)\n            return defaultValue;\n        if (expression.indexOf('.') > -1) {\n            var fields = expression.split('.');\n            var thisKey = fields[0];\n            var nextValue = source[thisKey];\n            if (nextValue != null) {\n                return Utils.get(nextValue, fields.slice(1, fields.length).join('.'), defaultValue);\n            }\n            else {\n                return defaultValue;\n            }\n        }\n        else {\n            var nextValue = source[expression];\n            return nextValue != null ? nextValue : defaultValue;\n        }\n    };\n    Utils.addSafePassiveEventListener = function (eElement, event, listener) {\n        eElement.addEventListener(event, listener, (Utils.passiveEvents.indexOf(event) > -1 ? { passive: true } : undefined));\n    };\n    Utils.camelCaseToHumanText = function (camelCase) {\n        if (camelCase == null)\n            return null;\n        // Who needs to learn how to code when you have stack overflow!\n        // from: https://stackoverflow.com/questions/15369566/putting-space-in-camel-case-string-using-regular-expression\n        var rex = /([A-Z])([A-Z])([a-z])|([a-z])([A-Z])/g;\n        var words = camelCase.replace(rex, '$1$4 $2$3$5').replace('.', ' ').split(' ');\n        return words.map(function (word) { return word.substring(0, 1).toUpperCase() + ((word.length > 1) ? word.substring(1, word.length) : ''); }).join(' ');\n    };\n    // displays a message to the browser. this is useful in iPad, where you can't easily see the console.\n    // so the javascript code can use this to give feedback. this is NOT intended to be called in production.\n    // it is intended the ag-Grid developer calls this to troubleshoot, but then takes out the calls before\n    // checking in.\n    Utils.message = function (msg) {\n        var eMessage = document.createElement('div');\n        eMessage.innerHTML = msg;\n        var eBox = document.querySelector('#__ag__message');\n        if (!eBox) {\n            var template = \"<div id=\\\"__ag__message\\\" style=\\\"display: inline-block; position: absolute; top: 0px; left: 0px; color: white; background-color: black; z-index: 20; padding: 2px; border: 1px solid darkred; height: 200px; overflow-y: auto;\\\"></div>\";\n            eBox = this.loadTemplate(template);\n            if (document.body) {\n                document.body.appendChild(eBox);\n            }\n        }\n        eBox.appendChild(eMessage);\n    };\n    // gets called by: a) InMemoryRowNodeManager and b) GroupStage to do sorting.\n    // when in InMemoryRowNodeManager we always have indexes (as this sorts the items the\n    // user provided) but when in GroupStage, the nodes can contain filler nodes that\n    // don't have order id's\n    Utils.sortRowNodesByOrder = function (rowNodes, rowNodeOrder) {\n        if (!rowNodes) {\n            return;\n        }\n        rowNodes.sort(function (nodeA, nodeB) {\n            var positionA = rowNodeOrder[nodeA.id];\n            var positionB = rowNodeOrder[nodeB.id];\n            var aHasIndex = positionA !== undefined;\n            var bHasIndex = positionB !== undefined;\n            var bothNodesAreUserNodes = aHasIndex && bHasIndex;\n            var bothNodesAreFillerNodes = !aHasIndex && !bHasIndex;\n            if (bothNodesAreUserNodes) {\n                // when comparing two nodes the user has provided, they always\n                // have indexes\n                return positionA - positionB;\n            }\n            else if (bothNodesAreFillerNodes) {\n                // when comparing two filler nodes, we have no index to compare them\n                // against, however we want this sorting to be deterministic, so that\n                // the rows don't jump around as the user does delta updates. so we\n                // want the same sort result. so we use the id - which doesn't make sense\n                // from a sorting point of view, but does give consistent behaviour between\n                // calls. otherwise groups jump around as delta updates are done.\n                return nodeA.id > nodeB.id ? 1 : -1;\n            }\n            else if (aHasIndex) {\n                return 1;\n            }\n            else {\n                return -1;\n            }\n        });\n    };\n    Utils.PRINTABLE_CHARACTERS = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890!\"£$%^&*()_+-=[];\\'#,./\\\\|<>?:@~{}';\n    Utils.doOnceFlags = {};\n    // static prepend(parent: HTMLElement, child: HTMLElement): void {\n    //     if (this.exists(parent.firstChild)) {\n    //         parent.insertBefore(child, parent.firstChild);\n    //     } else {\n    //         parent.appendChild(child);\n    //     }\n    // }\n    Utils.iconNameClassMap = {\n        'columnMovePin': 'pin',\n        'columnMoveAdd': 'plus',\n        'columnMoveHide': 'eye-slash',\n        'columnMoveMove': 'arrows',\n        'columnMoveLeft': 'left',\n        'columnMoveRight': 'right',\n        'columnMoveGroup': 'group',\n        'columnMoveValue': 'aggregation',\n        'columnMovePivot': 'pivot',\n        'dropNotAllowed': 'not-allowed',\n        'groupContracted': 'expanded',\n        'groupExpanded': 'contracted',\n        'checkboxChecked': 'checkbox-checked',\n        'checkboxUnchecked': 'checkbox-unchecked',\n        'checkboxIndeterminate': 'checkbox-indeterminate',\n        'checkboxCheckedReadOnly': 'checkbox-checked-readonly',\n        'checkboxUncheckedReadOnly': 'checkbox-unchecked-readonly',\n        'checkboxIndeterminateReadOnly': 'checkbox-indeterminate-readonly',\n        'groupLoading': 'loading',\n        'menu': 'menu',\n        'filter': 'filter',\n        'columns': 'columns',\n        'menuPin': 'pin',\n        'menuValue': 'aggregation',\n        'menuAddRowGroup': 'group',\n        'menuRemoveRowGroup': 'group',\n        'clipboardCopy': 'copy',\n        'clipboardCut': 'cut',\n        'clipboardPaste': 'paste',\n        'pivotPanel': 'pivot',\n        'rowGroupPanel': 'group',\n        'valuePanel': 'aggregation',\n        'columnGroupOpened': 'expanded',\n        'columnGroupClosed': 'contracted',\n        'columnSelectClosed': 'tree-closed',\n        'columnSelectOpen': 'tree-open',\n        // from deprecated header, remove at some point\n        'sortAscending': 'asc',\n        'sortDescending': 'desc',\n        'sortUnSort': 'none'\n    };\n    Utils.passiveEvents = ['touchstart', 'touchend', 'touchmove', 'touchcancel'];\n    return Utils;\n}());\nexports.Utils = Utils;\nvar NumberSequence = (function () {\n    function NumberSequence(initValue, step) {\n        if (initValue === void 0) { initValue = 0; }\n        if (step === void 0) { step = 1; }\n        this.nextValue = initValue;\n        this.step = step;\n    }\n    NumberSequence.prototype.next = function () {\n        var valToReturn = this.nextValue;\n        this.nextValue += this.step;\n        return valToReturn;\n    };\n    NumberSequence.prototype.peek = function () {\n        return this.nextValue;\n    };\n    NumberSequence.prototype.skip = function (count) {\n        this.nextValue += count;\n    };\n    return NumberSequence;\n}());\nexports.NumberSequence = NumberSequence;\nexports._ = Utils;\nvar PromiseStatus;\n(function (PromiseStatus) {\n    PromiseStatus[PromiseStatus[\"IN_PROGRESS\"] = 0] = \"IN_PROGRESS\";\n    PromiseStatus[PromiseStatus[\"RESOLVED\"] = 1] = \"RESOLVED\";\n})(PromiseStatus = exports.PromiseStatus || (exports.PromiseStatus = {}));\nvar Promise = (function () {\n    function Promise(callback) {\n        this.status = PromiseStatus.IN_PROGRESS;\n        this.resolution = null;\n        this.listOfWaiters = [];\n        callback(this.onDone.bind(this), this.onReject.bind(this));\n    }\n    Promise.all = function (toCombine) {\n        return new Promise(function (resolve) {\n            var combinedValues = [];\n            var remainingToResolve = toCombine.length;\n            toCombine.forEach(function (source, index) {\n                source.then(function (sourceResolved) {\n                    remainingToResolve--;\n                    combinedValues[index] = sourceResolved;\n                    if (remainingToResolve == 0) {\n                        resolve(combinedValues);\n                    }\n                });\n                combinedValues.push(null);\n            });\n        });\n    };\n    Promise.resolve = function (value) {\n        return new Promise(function (resolve) { return resolve(value); });\n    };\n    Promise.external = function () {\n        var capture;\n        var promise = new Promise(function (resolve) {\n            capture = resolve;\n        });\n        return {\n            promise: promise,\n            resolve: function (value) {\n                capture(value);\n            }\n        };\n    };\n    Promise.prototype.then = function (func) {\n        if (this.status === PromiseStatus.IN_PROGRESS) {\n            this.listOfWaiters.push(func);\n        }\n        else {\n            func(this.resolution);\n        }\n    };\n    Promise.prototype.map = function (adapter) {\n        var _this = this;\n        return new Promise(function (resolve) {\n            _this.then(function (unmapped) {\n                resolve(adapter(unmapped));\n            });\n        });\n    };\n    Promise.prototype.resolveNow = function (ifNotResolvedValue, ifResolved) {\n        if (this.status == PromiseStatus.IN_PROGRESS)\n            return ifNotResolvedValue;\n        return ifResolved(this.resolution);\n    };\n    Promise.prototype.onDone = function (value) {\n        this.status = PromiseStatus.RESOLVED;\n        this.resolution = value;\n        this.listOfWaiters.forEach(function (waiter) { return waiter(value); });\n    };\n    Promise.prototype.onReject = function (params) {\n        console.warn('TBI');\n    };\n    return Promise;\n}());\nexports.Promise = Promise;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/utils.js\n// module id = 7\n// module chunks = 0","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (obj, keys) {\n  var target = {};\n\n  for (var i in obj) {\n    if (keys.indexOf(i) >= 0) continue;\n    if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n    target[i] = obj[i];\n  }\n\n  return target;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/helpers/objectWithoutProperties.js\n// module id = 8\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar eventService_1 = require(\"./eventService\");\nvar constants_1 = require(\"./constants\");\nvar componentUtil_1 = require(\"./components/componentUtil\");\nvar gridApi_1 = require(\"./gridApi\");\nvar context_1 = require(\"./context/context\");\nvar columnController_1 = require(\"./columnController/columnController\");\nvar utils_1 = require(\"./utils\");\nvar environment_1 = require(\"./environment\");\nvar DEFAULT_ROW_HEIGHT = 25;\nvar DEFAULT_DETAIL_ROW_HEIGHT = 300;\nvar DEFAULT_VIEWPORT_ROW_MODEL_PAGE_SIZE = 5;\nvar DEFAULT_VIEWPORT_ROW_MODEL_BUFFER_SIZE = 5;\nvar legacyThemes = [\n    'ag-fresh',\n    'ag-bootstrap',\n    'ag-blue',\n    'ag-dark',\n    'ag-material'\n];\nfunction isTrue(value) {\n    return value === true || value === 'true';\n}\nfunction zeroOrGreater(value, defaultValue) {\n    if (value >= 0) {\n        return value;\n    }\n    else {\n        // zero gets returned if number is missing or the wrong type\n        return defaultValue;\n    }\n}\nfunction oneOrGreater(value, defaultValue) {\n    if (value > 0) {\n        return value;\n    }\n    else {\n        // zero gets returned if number is missing or the wrong type\n        return defaultValue;\n    }\n}\nvar GridOptionsWrapper = (function () {\n    function GridOptionsWrapper() {\n        this.propertyEventService = new eventService_1.EventService();\n        this.domDataKey = '__AG_' + Math.random().toString();\n    }\n    GridOptionsWrapper_1 = GridOptionsWrapper;\n    GridOptionsWrapper.prototype.agWire = function (gridApi, columnApi) {\n        this.gridOptions.api = gridApi;\n        this.gridOptions.columnApi = columnApi;\n        this.checkForDeprecated();\n    };\n    GridOptionsWrapper.prototype.destroy = function () {\n        // need to remove these, as we don't own the lifecycle of the gridOptions, we need to\n        // remove the references in case the user keeps the grid options, we want the rest\n        // of the grid to be picked up by the garbage collector\n        this.gridOptions.api = null;\n        this.gridOptions.columnApi = null;\n    };\n    GridOptionsWrapper.prototype.init = function () {\n        var async = this.useAsyncEvents();\n        this.eventService.addGlobalListener(this.globalEventHandler.bind(this), async);\n        if (this.isGroupSelectsChildren() && this.isSuppressParentsInRowNodes()) {\n            console.warn('ag-Grid: groupSelectsChildren does not work wth suppressParentsInRowNodes, this selection method needs the part in rowNode to work');\n        }\n        if (this.isGroupSelectsChildren()) {\n            if (!this.isRowSelectionMulti()) {\n                console.warn(\"ag-Grid: rowSelection must be 'multiple' for groupSelectsChildren to make sense\");\n            }\n            if (this.isRowModelEnterprise()) {\n                console.warn('ag-Grid: group selects children is NOT support for Enterprise Row Model. ' +\n                    'This is because the rows are lazy loaded, so selecting a group is not possible as' +\n                    'the grid has no way of knowing what the children are.');\n            }\n        }\n        if (this.isGroupRemoveSingleChildren() && this.isGroupHideOpenParents()) {\n            console.warn('ag-Grid: groupRemoveSingleChildren and groupHideOpenParents do not work with each other, you need to pick one. And don\\'t ask us how to us these together on our support forum either you will get the same answer!');\n        }\n    };\n    // returns the dom data, or undefined if not found\n    GridOptionsWrapper.prototype.getDomData = function (element, key) {\n        var domData = element[this.domDataKey];\n        if (domData) {\n            return domData[key];\n        }\n        else {\n            return undefined;\n        }\n    };\n    GridOptionsWrapper.prototype.setDomData = function (element, key, value) {\n        var domData = element[this.domDataKey];\n        if (utils_1.Utils.missing(domData)) {\n            domData = {};\n            element[this.domDataKey] = domData;\n        }\n        domData[key] = value;\n    };\n    GridOptionsWrapper.prototype.isEnterprise = function () { return this.enterprise; };\n    GridOptionsWrapper.prototype.isRowSelection = function () { return this.gridOptions.rowSelection === \"single\" || this.gridOptions.rowSelection === \"multiple\"; };\n    GridOptionsWrapper.prototype.isRowDeselection = function () { return isTrue(this.gridOptions.rowDeselection); };\n    GridOptionsWrapper.prototype.isRowSelectionMulti = function () { return this.gridOptions.rowSelection === 'multiple'; };\n    GridOptionsWrapper.prototype.getContext = function () { return this.gridOptions.context; };\n    GridOptionsWrapper.prototype.isPivotMode = function () { return isTrue(this.gridOptions.pivotMode); };\n    GridOptionsWrapper.prototype.isPivotTotals = function () { return isTrue(this.gridOptions.pivotTotals); };\n    GridOptionsWrapper.prototype.isRowModelInfinite = function () { return this.gridOptions.rowModelType === constants_1.Constants.ROW_MODEL_TYPE_INFINITE; };\n    GridOptionsWrapper.prototype.isRowModelViewport = function () { return this.gridOptions.rowModelType === constants_1.Constants.ROW_MODEL_TYPE_VIEWPORT; };\n    GridOptionsWrapper.prototype.isRowModelEnterprise = function () { return this.gridOptions.rowModelType === constants_1.Constants.ROW_MODEL_TYPE_ENTERPRISE; };\n    GridOptionsWrapper.prototype.isRowModelDefault = function () {\n        return utils_1.Utils.missing(this.gridOptions.rowModelType) ||\n            this.gridOptions.rowModelType === constants_1.Constants.ROW_MODEL_TYPE_IN_MEMORY ||\n            this.gridOptions.rowModelType === constants_1.Constants.DEPRECATED_ROW_MODEL_TYPE_NORMAL;\n    };\n    GridOptionsWrapper.prototype.isFullRowEdit = function () { return this.gridOptions.editType === 'fullRow'; };\n    GridOptionsWrapper.prototype.isSuppressFocusAfterRefresh = function () { return isTrue(this.gridOptions.suppressFocusAfterRefresh); };\n    GridOptionsWrapper.prototype.isShowToolPanel = function () { return isTrue(this.gridOptions.showToolPanel); };\n    GridOptionsWrapper.prototype.isToolPanelSuppressValues = function () { return isTrue(this.gridOptions.toolPanelSuppressValues); };\n    GridOptionsWrapper.prototype.isToolPanelSuppressPivots = function () {\n        // we don't allow pivots when doing tree data\n        return isTrue(this.gridOptions.toolPanelSuppressPivots) || this.isTreeData();\n    };\n    GridOptionsWrapper.prototype.isToolPanelSuppressRowGroups = function () {\n        // we don't allow row grouping when doing tree data\n        return isTrue(this.gridOptions.toolPanelSuppressRowGroups) || this.isTreeData();\n    };\n    GridOptionsWrapper.prototype.isToolPanelSuppressPivotMode = function () {\n        return isTrue(this.gridOptions.toolPanelSuppressPivotMode) || this.isTreeData();\n    };\n    GridOptionsWrapper.prototype.isSuppressTouch = function () { return isTrue(this.gridOptions.suppressTouch); };\n    GridOptionsWrapper.prototype.useAsyncEvents = function () { return !isTrue(this.gridOptions.suppressAsyncEvents); };\n    GridOptionsWrapper.prototype.isEnableCellChangeFlash = function () { return isTrue(this.gridOptions.enableCellChangeFlash); };\n    GridOptionsWrapper.prototype.isGroupSelectsChildren = function () {\n        var result = isTrue(this.gridOptions.groupSelectsChildren);\n        if (result && this.isTreeData()) {\n            console.warn('ag-Grid: groupSelectsChildren does not work with tree data');\n            return false;\n        }\n        else {\n            return result;\n        }\n    };\n    GridOptionsWrapper.prototype.isGroupSelectsFiltered = function () { return isTrue(this.gridOptions.groupSelectsFiltered); };\n    GridOptionsWrapper.prototype.isGroupHideOpenParents = function () { return isTrue(this.gridOptions.groupHideOpenParents); };\n    // if we are doing hideOpenParents, then we always have groupMultiAutoColumn, otherwise hideOpenParents would not work\n    GridOptionsWrapper.prototype.isGroupMultiAutoColumn = function () { return isTrue(this.gridOptions.groupMultiAutoColumn) || isTrue(this.gridOptions.groupHideOpenParents); };\n    GridOptionsWrapper.prototype.isGroupRemoveSingleChildren = function () { return isTrue(this.gridOptions.groupRemoveSingleChildren); };\n    GridOptionsWrapper.prototype.isGroupRemoveLowestSingleChildren = function () { return isTrue(this.gridOptions.groupRemoveLowestSingleChildren); };\n    GridOptionsWrapper.prototype.isGroupIncludeFooter = function () { return isTrue(this.gridOptions.groupIncludeFooter); };\n    GridOptionsWrapper.prototype.isGroupSuppressBlankHeader = function () { return isTrue(this.gridOptions.groupSuppressBlankHeader); };\n    GridOptionsWrapper.prototype.isSuppressRowClickSelection = function () { return isTrue(this.gridOptions.suppressRowClickSelection); };\n    GridOptionsWrapper.prototype.isSuppressCellSelection = function () { return isTrue(this.gridOptions.suppressCellSelection); };\n    GridOptionsWrapper.prototype.isSuppressMultiSort = function () { return isTrue(this.gridOptions.suppressMultiSort); };\n    GridOptionsWrapper.prototype.isGroupSuppressAutoColumn = function () { return isTrue(this.gridOptions.groupSuppressAutoColumn); };\n    GridOptionsWrapper.prototype.isSuppressDragLeaveHidesColumns = function () { return isTrue(this.gridOptions.suppressDragLeaveHidesColumns); };\n    GridOptionsWrapper.prototype.isSuppressScrollOnNewData = function () { return isTrue(this.gridOptions.suppressScrollOnNewData); };\n    GridOptionsWrapper.prototype.isForPrint = function () { return this.gridOptions.domLayout === 'forPrint'; };\n    GridOptionsWrapper.prototype.isAutoHeight = function () { return this.gridOptions.domLayout === 'autoHeight'; };\n    GridOptionsWrapper.prototype.isSuppressHorizontalScroll = function () { return isTrue(this.gridOptions.suppressHorizontalScroll); };\n    GridOptionsWrapper.prototype.isSuppressLoadingOverlay = function () { return isTrue(this.gridOptions.suppressLoadingOverlay); };\n    GridOptionsWrapper.prototype.isSuppressNoRowsOverlay = function () { return isTrue(this.gridOptions.suppressNoRowsOverlay); };\n    GridOptionsWrapper.prototype.isSuppressFieldDotNotation = function () { return isTrue(this.gridOptions.suppressFieldDotNotation); };\n    GridOptionsWrapper.prototype.getPinnedTopRowData = function () { return this.gridOptions.pinnedTopRowData; };\n    GridOptionsWrapper.prototype.getPinnedBottomRowData = function () { return this.gridOptions.pinnedBottomRowData; };\n    GridOptionsWrapper.prototype.isFunctionsPassive = function () { return isTrue(this.gridOptions.functionsPassive); };\n    GridOptionsWrapper.prototype.isSuppressTabbing = function () { return isTrue(this.gridOptions.suppressTabbing); };\n    GridOptionsWrapper.prototype.isSuppressChangeDetection = function () { return isTrue(this.gridOptions.suppressChangeDetection); };\n    GridOptionsWrapper.prototype.isSuppressAnimationFrame = function () { return isTrue(this.gridOptions.suppressAnimationFrame); };\n    GridOptionsWrapper.prototype.getQuickFilterText = function () { return this.gridOptions.quickFilterText; };\n    GridOptionsWrapper.prototype.isCacheQuickFilter = function () { return isTrue(this.gridOptions.cacheQuickFilter); };\n    GridOptionsWrapper.prototype.isUnSortIcon = function () { return isTrue(this.gridOptions.unSortIcon); };\n    GridOptionsWrapper.prototype.isSuppressMenuHide = function () { return isTrue(this.gridOptions.suppressMenuHide); };\n    GridOptionsWrapper.prototype.getRowStyle = function () { return this.gridOptions.rowStyle; };\n    GridOptionsWrapper.prototype.getRowClass = function () { return this.gridOptions.rowClass; };\n    GridOptionsWrapper.prototype.getRowStyleFunc = function () { return this.gridOptions.getRowStyle; };\n    GridOptionsWrapper.prototype.getRowClassFunc = function () { return this.gridOptions.getRowClass; };\n    GridOptionsWrapper.prototype.rowClassRules = function () { return this.gridOptions.rowClassRules; };\n    GridOptionsWrapper.prototype.getPostProcessPopupFunc = function () { return this.gridOptions.postProcessPopup; };\n    GridOptionsWrapper.prototype.getDoesDataFlowerFunc = function () { return this.gridOptions.doesDataFlower; };\n    GridOptionsWrapper.prototype.getPaginationNumberFormatterFunc = function () { return this.gridOptions.paginationNumberFormatter; };\n    GridOptionsWrapper.prototype.getChildCountFunc = function () { return this.gridOptions.getChildCount; };\n    GridOptionsWrapper.prototype.getIsFullWidthCellFunc = function () { return this.gridOptions.isFullWidthCell; };\n    GridOptionsWrapper.prototype.getFullWidthCellRendererParams = function () { return this.gridOptions.fullWidthCellRendererParams; };\n    GridOptionsWrapper.prototype.isEmbedFullWidthRows = function () {\n        // if autoHeight, we always embed fullWidth rows, otherwise we let the user decide\n        return this.isAutoHeight() || isTrue(this.gridOptions.embedFullWidthRows);\n    };\n    GridOptionsWrapper.prototype.getBusinessKeyForNodeFunc = function () { return this.gridOptions.getBusinessKeyForNode; };\n    GridOptionsWrapper.prototype.getApi = function () { return this.gridOptions.api; };\n    GridOptionsWrapper.prototype.getColumnApi = function () { return this.gridOptions.columnApi; };\n    GridOptionsWrapper.prototype.isDeltaRowDataMode = function () { return isTrue(this.gridOptions.deltaRowDataMode); };\n    GridOptionsWrapper.prototype.isEnsureDomOrder = function () { return isTrue(this.gridOptions.ensureDomOrder); };\n    GridOptionsWrapper.prototype.isEnableColResize = function () { return isTrue(this.gridOptions.enableColResize); };\n    GridOptionsWrapper.prototype.isSingleClickEdit = function () { return isTrue(this.gridOptions.singleClickEdit); };\n    GridOptionsWrapper.prototype.isSuppressClickEdit = function () { return isTrue(this.gridOptions.suppressClickEdit); };\n    GridOptionsWrapper.prototype.isStopEditingWhenGridLosesFocus = function () { return isTrue(this.gridOptions.stopEditingWhenGridLosesFocus); };\n    GridOptionsWrapper.prototype.getGroupDefaultExpanded = function () { return this.gridOptions.groupDefaultExpanded; };\n    GridOptionsWrapper.prototype.getMaxConcurrentDatasourceRequests = function () { return this.gridOptions.maxConcurrentDatasourceRequests; };\n    GridOptionsWrapper.prototype.getMaxBlocksInCache = function () { return this.gridOptions.maxBlocksInCache; };\n    GridOptionsWrapper.prototype.getCacheOverflowSize = function () { return this.gridOptions.cacheOverflowSize; };\n    GridOptionsWrapper.prototype.getPaginationPageSize = function () { return this.gridOptions.paginationPageSize; };\n    GridOptionsWrapper.prototype.getCacheBlockSize = function () { return this.gridOptions.cacheBlockSize; };\n    GridOptionsWrapper.prototype.getInfiniteInitialRowCount = function () { return this.gridOptions.infiniteInitialRowCount; };\n    GridOptionsWrapper.prototype.isPurgeClosedRowNodes = function () { return isTrue(this.gridOptions.purgeClosedRowNodes); };\n    GridOptionsWrapper.prototype.isSuppressPaginationPanel = function () { return isTrue(this.gridOptions.suppressPaginationPanel); };\n    GridOptionsWrapper.prototype.getRowData = function () { return this.gridOptions.rowData; };\n    GridOptionsWrapper.prototype.isGroupUseEntireRow = function () { return isTrue(this.gridOptions.groupUseEntireRow); };\n    GridOptionsWrapper.prototype.isEnableRtl = function () { return isTrue(this.gridOptions.enableRtl); };\n    GridOptionsWrapper.prototype.getAutoGroupColumnDef = function () { return this.gridOptions.autoGroupColumnDef; };\n    GridOptionsWrapper.prototype.isGroupSuppressRow = function () { return isTrue(this.gridOptions.groupSuppressRow); };\n    GridOptionsWrapper.prototype.getRowGroupPanelShow = function () { return this.gridOptions.rowGroupPanelShow; };\n    GridOptionsWrapper.prototype.getPivotPanelShow = function () { return this.gridOptions.pivotPanelShow; };\n    GridOptionsWrapper.prototype.isAngularCompileRows = function () { return isTrue(this.gridOptions.angularCompileRows); };\n    GridOptionsWrapper.prototype.isAngularCompileFilters = function () { return isTrue(this.gridOptions.angularCompileFilters); };\n    GridOptionsWrapper.prototype.isAngularCompileHeaders = function () { return isTrue(this.gridOptions.angularCompileHeaders); };\n    GridOptionsWrapper.prototype.isDebug = function () { return isTrue(this.gridOptions.debug); };\n    GridOptionsWrapper.prototype.getColumnDefs = function () { return this.gridOptions.columnDefs; };\n    GridOptionsWrapper.prototype.getColumnTypes = function () { return this.gridOptions.columnTypes; };\n    GridOptionsWrapper.prototype.getDatasource = function () { return this.gridOptions.datasource; };\n    GridOptionsWrapper.prototype.getViewportDatasource = function () { return this.gridOptions.viewportDatasource; };\n    GridOptionsWrapper.prototype.getEnterpriseDatasource = function () { return this.gridOptions.enterpriseDatasource; };\n    GridOptionsWrapper.prototype.isEnableSorting = function () { return isTrue(this.gridOptions.enableSorting) || isTrue(this.gridOptions.enableServerSideSorting); };\n    GridOptionsWrapper.prototype.isAccentedSort = function () { return isTrue(this.gridOptions.accentedSort); };\n    GridOptionsWrapper.prototype.isEnableCellExpressions = function () { return isTrue(this.gridOptions.enableCellExpressions); };\n    GridOptionsWrapper.prototype.isEnableGroupEdit = function () { return isTrue(this.gridOptions.enableGroupEdit); };\n    GridOptionsWrapper.prototype.isSuppressMiddleClickScrolls = function () { return isTrue(this.gridOptions.suppressMiddleClickScrolls); };\n    GridOptionsWrapper.prototype.isSuppressPreventDefaultOnMouseWheel = function () { return isTrue(this.gridOptions.suppressPreventDefaultOnMouseWheel); };\n    GridOptionsWrapper.prototype.isSuppressColumnVirtualisation = function () { return isTrue(this.gridOptions.suppressColumnVirtualisation); };\n    GridOptionsWrapper.prototype.isSuppressContextMenu = function () { return isTrue(this.gridOptions.suppressContextMenu); };\n    GridOptionsWrapper.prototype.isAllowContextMenuWithControlKey = function () { return isTrue(this.gridOptions.allowContextMenuWithControlKey); };\n    GridOptionsWrapper.prototype.isSuppressCopyRowsToClipboard = function () { return isTrue(this.gridOptions.suppressCopyRowsToClipboard); };\n    GridOptionsWrapper.prototype.isEnableFilter = function () { return isTrue(this.gridOptions.enableFilter) || isTrue(this.gridOptions.enableServerSideFilter); };\n    GridOptionsWrapper.prototype.isPagination = function () { return isTrue(this.gridOptions.pagination); };\n    // these are deprecated, should remove them when we take out server side pagination\n    GridOptionsWrapper.prototype.isEnableServerSideFilter = function () { return this.gridOptions.enableServerSideFilter; };\n    GridOptionsWrapper.prototype.isEnableServerSideSorting = function () { return isTrue(this.gridOptions.enableServerSideSorting); };\n    GridOptionsWrapper.prototype.isSuppressMovableColumns = function () { return isTrue(this.gridOptions.suppressMovableColumns); };\n    GridOptionsWrapper.prototype.isAnimateRows = function () {\n        // never allow animating if enforcing the row order\n        if (this.isEnsureDomOrder()) {\n            return false;\n        }\n        return isTrue(this.gridOptions.animateRows);\n    };\n    GridOptionsWrapper.prototype.isSuppressColumnMoveAnimation = function () { return isTrue(this.gridOptions.suppressColumnMoveAnimation); };\n    GridOptionsWrapper.prototype.isSuppressAggFuncInHeader = function () { return isTrue(this.gridOptions.suppressAggFuncInHeader); };\n    GridOptionsWrapper.prototype.isSuppressAggAtRootLevel = function () { return isTrue(this.gridOptions.suppressAggAtRootLevel); };\n    GridOptionsWrapper.prototype.isEnableRangeSelection = function () { return isTrue(this.gridOptions.enableRangeSelection); };\n    GridOptionsWrapper.prototype.isPaginationAutoPageSize = function () { return isTrue(this.gridOptions.paginationAutoPageSize); };\n    GridOptionsWrapper.prototype.isRememberGroupStateWhenNewData = function () { return isTrue(this.gridOptions.rememberGroupStateWhenNewData); };\n    GridOptionsWrapper.prototype.getIcons = function () { return this.gridOptions.icons; };\n    GridOptionsWrapper.prototype.getAggFuncs = function () { return this.gridOptions.aggFuncs; };\n    GridOptionsWrapper.prototype.getSortingOrder = function () { return this.gridOptions.sortingOrder; };\n    GridOptionsWrapper.prototype.getAlignedGrids = function () { return this.gridOptions.alignedGrids; };\n    GridOptionsWrapper.prototype.isMasterDetail = function () {\n        var _this = this;\n        var usingMasterDetail = isTrue(this.gridOptions.masterDetail);\n        utils_1.Utils.doOnce(function () {\n            if (usingMasterDetail && !_this.enterprise) {\n                console.warn('ag-grid: Master Detail is an Enterprise feature of ag-Grid.');\n            }\n        }, 'MasterDetailEnterpriseCheck');\n        return usingMasterDetail && this.enterprise;\n    };\n    GridOptionsWrapper.prototype.getIsRowMasterFunc = function () { return this.gridOptions.isRowMaster; };\n    GridOptionsWrapper.prototype.getGroupRowRendererParams = function () { return this.gridOptions.groupRowRendererParams; };\n    GridOptionsWrapper.prototype.getOverlayLoadingTemplate = function () { return this.gridOptions.overlayLoadingTemplate; };\n    GridOptionsWrapper.prototype.getOverlayNoRowsTemplate = function () { return this.gridOptions.overlayNoRowsTemplate; };\n    GridOptionsWrapper.prototype.isSuppressAutoSize = function () { return isTrue(this.gridOptions.suppressAutoSize); };\n    GridOptionsWrapper.prototype.isSuppressParentsInRowNodes = function () { return isTrue(this.gridOptions.suppressParentsInRowNodes); };\n    GridOptionsWrapper.prototype.isEnableStatusBar = function () { return isTrue(this.gridOptions.enableStatusBar); };\n    GridOptionsWrapper.prototype.isAlwaysShowStatusBar = function () { return isTrue(this.gridOptions.alwaysShowStatusBar); };\n    GridOptionsWrapper.prototype.isFunctionsReadOnly = function () { return isTrue(this.gridOptions.functionsReadOnly); };\n    GridOptionsWrapper.prototype.isFloatingFilter = function () { return this.gridOptions.floatingFilter; };\n    // public isFloatingFilter(): boolean { return true; }\n    GridOptionsWrapper.prototype.getDefaultColDef = function () { return this.gridOptions.defaultColDef; };\n    GridOptionsWrapper.prototype.getDefaultColGroupDef = function () { return this.gridOptions.defaultColGroupDef; };\n    GridOptionsWrapper.prototype.getDefaultExportParams = function () { return this.gridOptions.defaultExportParams; };\n    GridOptionsWrapper.prototype.isSuppressCsvExport = function () { return isTrue(this.gridOptions.suppressCsvExport); };\n    GridOptionsWrapper.prototype.isSuppressExcelExport = function () { return isTrue(this.gridOptions.suppressExcelExport); };\n    GridOptionsWrapper.prototype.getNodeChildDetailsFunc = function () { return this.gridOptions.getNodeChildDetails; };\n    GridOptionsWrapper.prototype.getDataPathFunc = function () { return this.gridOptions.getDataPath; };\n    // public getIsGroupFunc(): ((dataItem: any) => boolean) { return this.gridOptions.isGroup }\n    GridOptionsWrapper.prototype.getGroupRowAggNodesFunc = function () { return this.gridOptions.groupRowAggNodes; };\n    GridOptionsWrapper.prototype.getContextMenuItemsFunc = function () { return this.gridOptions.getContextMenuItems; };\n    GridOptionsWrapper.prototype.getMainMenuItemsFunc = function () { return this.gridOptions.getMainMenuItems; };\n    GridOptionsWrapper.prototype.getRowNodeIdFunc = function () { return this.gridOptions.getRowNodeId; };\n    GridOptionsWrapper.prototype.getNavigateToNextCellFunc = function () { return this.gridOptions.navigateToNextCell; };\n    GridOptionsWrapper.prototype.getTabToNextCellFunc = function () { return this.gridOptions.tabToNextCell; };\n    GridOptionsWrapper.prototype.isTreeData = function () { return isTrue(this.gridOptions.treeData); };\n    GridOptionsWrapper.prototype.isValueCache = function () { return isTrue(this.gridOptions.valueCache); };\n    GridOptionsWrapper.prototype.isValueCacheNeverExpires = function () { return isTrue(this.gridOptions.valueCacheNeverExpires); };\n    GridOptionsWrapper.prototype.isAggregateOnlyChangedColumns = function () { return isTrue(this.gridOptions.aggregateOnlyChangedColumns); };\n    GridOptionsWrapper.prototype.getProcessSecondaryColDefFunc = function () { return this.gridOptions.processSecondaryColDef; };\n    GridOptionsWrapper.prototype.getProcessSecondaryColGroupDefFunc = function () { return this.gridOptions.processSecondaryColGroupDef; };\n    GridOptionsWrapper.prototype.getSendToClipboardFunc = function () { return this.gridOptions.sendToClipboard; };\n    GridOptionsWrapper.prototype.getProcessRowPostCreateFunc = function () { return this.gridOptions.processRowPostCreate; };\n    GridOptionsWrapper.prototype.getProcessCellForClipboardFunc = function () { return this.gridOptions.processCellForClipboard; };\n    GridOptionsWrapper.prototype.getProcessCellFromClipboardFunc = function () { return this.gridOptions.processCellFromClipboard; };\n    GridOptionsWrapper.prototype.getViewportRowModelPageSize = function () { return oneOrGreater(this.gridOptions.viewportRowModelPageSize, DEFAULT_VIEWPORT_ROW_MODEL_PAGE_SIZE); };\n    GridOptionsWrapper.prototype.getViewportRowModelBufferSize = function () { return zeroOrGreater(this.gridOptions.viewportRowModelBufferSize, DEFAULT_VIEWPORT_ROW_MODEL_BUFFER_SIZE); };\n    // public getCellRenderers(): {[key: string]: {new(): ICellRenderer} | ICellRendererFunc} { return this.gridOptions.cellRenderers; }\n    // public getCellEditors(): {[key: string]: {new(): ICellEditor}} { return this.gridOptions.cellEditors; }\n    GridOptionsWrapper.prototype.getClipboardDeliminator = function () {\n        return utils_1.Utils.exists(this.gridOptions.clipboardDeliminator) ? this.gridOptions.clipboardDeliminator : '\\t';\n    };\n    GridOptionsWrapper.prototype.setProperty = function (key, value) {\n        var gridOptionsNoType = this.gridOptions;\n        var previousValue = gridOptionsNoType[key];\n        if (previousValue !== value) {\n            gridOptionsNoType[key] = value;\n            var event_1 = {\n                type: key,\n                currentValue: value,\n                previousValue: previousValue\n            };\n            this.propertyEventService.dispatchEvent(event_1);\n        }\n    };\n    GridOptionsWrapper.prototype.addEventListener = function (key, listener) {\n        this.propertyEventService.addEventListener(key, listener);\n    };\n    GridOptionsWrapper.prototype.removeEventListener = function (key, listener) {\n        this.propertyEventService.removeEventListener(key, listener);\n    };\n    GridOptionsWrapper.prototype.getAutoSizePadding = function () {\n        return this.gridOptions.autoSizePadding > 0 ? this.gridOptions.autoSizePadding : 0;\n    };\n    // properties\n    GridOptionsWrapper.prototype.getHeaderHeight = function () {\n        if (typeof this.gridOptions.headerHeight === 'number') {\n            return this.gridOptions.headerHeight;\n        }\n        else {\n            return this.specialForNewMaterial(25, 'headerHeight');\n        }\n    };\n    GridOptionsWrapper.prototype.getFloatingFiltersHeight = function () {\n        if (typeof this.gridOptions.floatingFiltersHeight === 'number') {\n            return this.gridOptions.floatingFiltersHeight;\n        }\n        else {\n            return this.specialForNewMaterial(25, 'headerHeight');\n        }\n    };\n    GridOptionsWrapper.prototype.getGroupHeaderHeight = function () {\n        if (typeof this.gridOptions.groupHeaderHeight === 'number') {\n            return this.gridOptions.groupHeaderHeight;\n        }\n        else {\n            return this.getHeaderHeight();\n        }\n    };\n    GridOptionsWrapper.prototype.getPivotHeaderHeight = function () {\n        if (typeof this.gridOptions.pivotHeaderHeight === 'number') {\n            return this.gridOptions.pivotHeaderHeight;\n        }\n        else {\n            return this.getHeaderHeight();\n        }\n    };\n    GridOptionsWrapper.prototype.getPivotGroupHeaderHeight = function () {\n        if (typeof this.gridOptions.pivotGroupHeaderHeight === 'number') {\n            return this.gridOptions.pivotGroupHeaderHeight;\n        }\n        else {\n            return this.getGroupHeaderHeight();\n        }\n    };\n    GridOptionsWrapper.prototype.isExternalFilterPresent = function () {\n        if (typeof this.gridOptions.isExternalFilterPresent === 'function') {\n            return this.gridOptions.isExternalFilterPresent();\n        }\n        else {\n            return false;\n        }\n    };\n    GridOptionsWrapper.prototype.doesExternalFilterPass = function (node) {\n        if (typeof this.gridOptions.doesExternalFilterPass === 'function') {\n            return this.gridOptions.doesExternalFilterPass(node);\n        }\n        else {\n            return false;\n        }\n    };\n    GridOptionsWrapper.prototype.getDocument = function () {\n        // if user is providing document, we use the users one,\n        // otherwise we use the document on the global namespace.\n        var result;\n        if (utils_1.Utils.exists(this.gridOptions.getDocument)) {\n            result = this.gridOptions.getDocument();\n        }\n        if (utils_1.Utils.exists(result)) {\n            return result;\n        }\n        else {\n            return document;\n        }\n    };\n    GridOptionsWrapper.prototype.getLayoutInterval = function () {\n        if (typeof this.gridOptions.layoutInterval === 'number') {\n            return this.gridOptions.layoutInterval;\n        }\n        else {\n            return constants_1.Constants.LAYOUT_INTERVAL;\n        }\n    };\n    GridOptionsWrapper.prototype.getMinColWidth = function () {\n        if (this.gridOptions.minColWidth > GridOptionsWrapper_1.MIN_COL_WIDTH) {\n            return this.gridOptions.minColWidth;\n        }\n        else {\n            return GridOptionsWrapper_1.MIN_COL_WIDTH;\n        }\n    };\n    GridOptionsWrapper.prototype.getMaxColWidth = function () {\n        if (this.gridOptions.maxColWidth > GridOptionsWrapper_1.MIN_COL_WIDTH) {\n            return this.gridOptions.maxColWidth;\n        }\n        else {\n            return null;\n        }\n    };\n    GridOptionsWrapper.prototype.getColWidth = function () {\n        if (typeof this.gridOptions.colWidth !== 'number' || this.gridOptions.colWidth < GridOptionsWrapper_1.MIN_COL_WIDTH) {\n            return 200;\n        }\n        else {\n            return this.gridOptions.colWidth;\n        }\n    };\n    GridOptionsWrapper.prototype.getRowBuffer = function () {\n        if (typeof this.gridOptions.rowBuffer === 'number') {\n            if (this.gridOptions.rowBuffer < 0) {\n                console.warn('ag-Grid: rowBuffer should not be negative');\n            }\n            return this.gridOptions.rowBuffer;\n        }\n        else {\n            return constants_1.Constants.ROW_BUFFER_SIZE;\n        }\n    };\n    // the user might be using some non-standard scrollbar, eg a scrollbar that has zero\n    // width and overlays (like the Safari scrollbar, but presented in Chrome). so we\n    // allow the user to provide the scroll width before we work it out.\n    GridOptionsWrapper.prototype.getScrollbarWidth = function () {\n        var scrollbarWidth = this.gridOptions.scrollbarWidth;\n        if (typeof scrollbarWidth !== 'number' || scrollbarWidth < 0) {\n            scrollbarWidth = utils_1.Utils.getScrollbarWidth();\n        }\n        return scrollbarWidth;\n    };\n    GridOptionsWrapper.prototype.checkForDeprecated = function () {\n        // casting to generic object, so typescript compiles even though\n        // we are looking for attributes that don't exist\n        var options = this.gridOptions;\n        if (options.suppressUnSort) {\n            console.warn('ag-grid: as of v1.12.4 suppressUnSort is not used. Please use sortingOrder instead.');\n        }\n        if (options.suppressDescSort) {\n            console.warn('ag-grid: as of v1.12.4 suppressDescSort is not used. Please use sortingOrder instead.');\n        }\n        if (options.groupAggFields) {\n            console.warn('ag-grid: as of v3 groupAggFields is not used. Please add appropriate agg fields to your columns.');\n        }\n        if (options.groupHidePivotColumns) {\n            console.warn('ag-grid: as of v3 groupHidePivotColumns is not used as pivot columns are now called rowGroup columns. Please refer to the documentation');\n        }\n        if (options.groupKeys) {\n            console.warn('ag-grid: as of v3 groupKeys is not used. You need to set rowGroupIndex on the columns to group. Please refer to the documentation');\n        }\n        if (typeof options.groupDefaultExpanded === 'boolean') {\n            console.warn('ag-grid: groupDefaultExpanded can no longer be boolean. for groupDefaultExpanded=true, use groupDefaultExpanded=9999 instead, to expand all the groups');\n        }\n        if (options.onRowDeselected || options.rowDeselected) {\n            console.warn('ag-grid: since version 3.4 event rowDeselected no longer exists, please check the docs');\n        }\n        if (options.rowsAlreadyGrouped) {\n            console.warn('ag-grid: since version 3.4 rowsAlreadyGrouped no longer exists, please use getNodeChildDetails() instead');\n        }\n        if (options.groupAggFunction) {\n            console.warn('ag-grid: since version 4.3.x groupAggFunction is now called groupRowAggNodes');\n        }\n        if (options.checkboxSelection) {\n            console.warn('ag-grid: since version 8.0.x checkboxSelection is not supported as a grid option. ' +\n                'If you want this on all columns, use defaultColDef instead and set it there');\n        }\n        if (options.paginationInitialRowCount) {\n            console.warn('ag-grid: since version 9.0.x paginationInitialRowCount is now called infiniteInitialRowCount');\n        }\n        if (options.infinitePageSize) {\n            console.warn('ag-grid: since version 9.0.x infinitePageSize is now called cacheBlockSize');\n        }\n        if (options.infiniteBlockSize) {\n            console.warn('ag-grid: since version 10.0.x infiniteBlockSize is now called cacheBlockSize');\n        }\n        if (options.maxPagesInCache) {\n            console.warn('ag-grid: since version 10.0.x maxPagesInCache is now called maxBlocksInCache');\n        }\n        if (options.paginationOverflowSize) {\n            console.warn('ag-grid: since version 10.0.x paginationOverflowSize is now called cacheOverflowSize');\n        }\n        if (options.forPrint) {\n            console.warn('ag-grid: since version 10.1.x, use property domLayout=\"forPrint\" instead of forPrint=true');\n        }\n        if (options.suppressMenuFilterPanel) {\n            console.warn(\"ag-grid: since version 11.0.x, use property colDef.menuTabs=['generalMenuTab','columnsMenuTab'] instead of suppressMenuFilterPanel=true\");\n        }\n        if (options.suppressMenuMainPanel) {\n            console.warn(\"ag-grid: since version 11.0.x, use property colDef.menuTabs=['filterMenuTab','columnsMenuTab'] instead of suppressMenuMainPanel=true\");\n        }\n        if (options.suppressMenuColumnPanel) {\n            console.warn(\"ag-grid: since version 11.0.x, use property colDef.menuTabs=['generalMenuTab','filterMenuTab'] instead of suppressMenuColumnPanel=true\");\n        }\n        if (options.suppressUseColIdForGroups) {\n            console.warn(\"ag-grid: since version 11.0.x, this is not in use anymore. You should be able to remove it from your definition\");\n        }\n        if (options.groupColumnDef) {\n            console.warn(\"ag-grid: since version 11.0.x, groupColumnDef has been renamed, this property is now called autoGroupColumnDef. Please change your configuration accordingly\");\n        }\n        if (options.slaveGrids) {\n            console.warn(\"ag-grid: since version 12.x, slaveGrids has been renamed, this property is now called alignedGrids. Please change your configuration accordingly\");\n        }\n        if (options.floatingTopRowData) {\n            console.warn(\"ag-grid: since version 12.x, floatingTopRowData is now called pinnedTopRowData\");\n        }\n        if (options.floatingBottomRowData) {\n            console.warn(\"ag-grid: since version 12.x, floatingBottomRowData is now called pinnedBottomRowData\");\n        }\n        if (options.paginationStartPage) {\n            console.warn(\"ag-grid: since version 12.x, paginationStartPage is gone, please call api.paginationGoToPage(\" + options.paginationStartPage + \") instead.\");\n        }\n        if (options.getHeaderCellTemplate) {\n            console.warn(\"ag-grid: since version 15.x, getHeaderCellTemplate is gone, please check the header documentation on how to set header templates.\");\n        }\n        if (options.headerCellTemplate) {\n            console.warn(\"ag-grid: since version 15.x, headerCellTemplate is gone, please check the header documentation on how to set header templates.\");\n        }\n        if (options.headerCellRenderer) {\n            console.warn(\"ag-grid: since version 15.x, headerCellRenderer is gone, please check the header documentation on how to set header templates.\");\n        }\n    };\n    GridOptionsWrapper.prototype.getLocaleTextFunc = function () {\n        if (this.gridOptions.localeTextFunc) {\n            return this.gridOptions.localeTextFunc;\n        }\n        var that = this;\n        return function (key, defaultValue) {\n            var localeText = that.gridOptions.localeText;\n            if (localeText && localeText[key]) {\n                return localeText[key];\n            }\n            else {\n                return defaultValue;\n            }\n        };\n    };\n    // responsible for calling the onXXX functions on gridOptions\n    GridOptionsWrapper.prototype.globalEventHandler = function (eventName, event) {\n        var callbackMethodName = componentUtil_1.ComponentUtil.getCallbackForEvent(eventName);\n        if (typeof this.gridOptions[callbackMethodName] === 'function') {\n            this.gridOptions[callbackMethodName](event);\n        }\n    };\n    // we don't allow dynamic row height for virtual paging\n    GridOptionsWrapper.prototype.getRowHeightAsNumber = function () {\n        var rowHeight = this.gridOptions.rowHeight;\n        if (utils_1.Utils.missing(rowHeight)) {\n            return this.getDefaultRowHeight();\n        }\n        else if (this.isNumeric(this.gridOptions.rowHeight)) {\n            return this.gridOptions.rowHeight;\n        }\n        else {\n            console.warn('ag-Grid row height must be a number if not using standard row model');\n            return this.getDefaultRowHeight();\n        }\n    };\n    GridOptionsWrapper.prototype.getRowHeightForNode = function (rowNode) {\n        // check the function first, in case use set both function and\n        // number, when using virtual pagination then function can be\n        // used for pinned rows and the number for the body rows.\n        if (typeof this.gridOptions.getRowHeight === 'function') {\n            var params = {\n                node: rowNode,\n                data: rowNode.data,\n                api: this.gridOptions.api,\n                context: this.gridOptions.context\n            };\n            return this.gridOptions.getRowHeight(params);\n        }\n        else if (rowNode.detail && this.isMasterDetail()) {\n            if (this.isNumeric(this.gridOptions.detailRowHeight)) {\n                return this.gridOptions.detailRowHeight;\n            }\n            else {\n                return DEFAULT_DETAIL_ROW_HEIGHT;\n            }\n        }\n        else if (this.isNumeric(this.gridOptions.rowHeight)) {\n            return this.gridOptions.rowHeight;\n        }\n        else {\n            return this.getDefaultRowHeight();\n        }\n    };\n    GridOptionsWrapper.prototype.isDynamicRowHeight = function () {\n        return typeof this.gridOptions.getRowHeight === 'function';\n    };\n    GridOptionsWrapper.prototype.getVirtualItemHeight = function () {\n        return this.specialForNewMaterial(20, 'virtualItemHeight');\n    };\n    GridOptionsWrapper.prototype.isNumeric = function (value) {\n        return !isNaN(value) && typeof value === 'number';\n    };\n    // Material data table has strict guidelines about whitespace, and these values are different than the ones \n    // ag-grid uses by default. We override the default ones for the sake of making it better out of the box\n    GridOptionsWrapper.prototype.specialForNewMaterial = function (defaultValue, sassVariableName) {\n        var theme = this.environment.getTheme();\n        if (theme.indexOf('ag-theme') === 0) {\n            return this.environment.getSassVariable(theme, sassVariableName);\n        }\n        else {\n            return defaultValue;\n        }\n    };\n    GridOptionsWrapper.prototype.getDefaultRowHeight = function () {\n        return this.specialForNewMaterial(DEFAULT_ROW_HEIGHT, 'rowHeight');\n    };\n    GridOptionsWrapper.MIN_COL_WIDTH = 10;\n    GridOptionsWrapper.PROP_HEADER_HEIGHT = 'headerHeight';\n    GridOptionsWrapper.PROP_GROUP_REMOVE_SINGLE_CHILDREN = 'groupRemoveSingleChildren';\n    GridOptionsWrapper.PROP_GROUP_REMOVE_LOWEST_SINGLE_CHILDREN = 'groupRemoveLowestSingleChildren';\n    GridOptionsWrapper.PROP_PIVOT_HEADER_HEIGHT = 'pivotHeaderHeight';\n    GridOptionsWrapper.PROP_GROUP_HEADER_HEIGHT = 'groupHeaderHeight';\n    GridOptionsWrapper.PROP_PIVOT_GROUP_HEADER_HEIGHT = 'pivotGroupHeaderHeight';\n    GridOptionsWrapper.PROP_FLOATING_FILTERS_HEIGHT = 'floatingFiltersHeight';\n    __decorate([\n        context_1.Autowired('gridOptions'),\n        __metadata(\"design:type\", Object)\n    ], GridOptionsWrapper.prototype, \"gridOptions\", void 0);\n    __decorate([\n        context_1.Autowired('columnController'),\n        __metadata(\"design:type\", columnController_1.ColumnController)\n    ], GridOptionsWrapper.prototype, \"columnController\", void 0);\n    __decorate([\n        context_1.Autowired('eventService'),\n        __metadata(\"design:type\", eventService_1.EventService)\n    ], GridOptionsWrapper.prototype, \"eventService\", void 0);\n    __decorate([\n        context_1.Autowired('enterprise'),\n        __metadata(\"design:type\", Boolean)\n    ], GridOptionsWrapper.prototype, \"enterprise\", void 0);\n    __decorate([\n        context_1.Autowired('frameworkFactory'),\n        __metadata(\"design:type\", Object)\n    ], GridOptionsWrapper.prototype, \"frameworkFactory\", void 0);\n    __decorate([\n        context_1.Autowired('gridApi'),\n        __metadata(\"design:type\", gridApi_1.GridApi)\n    ], GridOptionsWrapper.prototype, \"gridApi\", void 0);\n    __decorate([\n        context_1.Autowired('columnApi'),\n        __metadata(\"design:type\", columnController_1.ColumnApi)\n    ], GridOptionsWrapper.prototype, \"columnApi\", void 0);\n    __decorate([\n        context_1.Autowired('environment'),\n        __metadata(\"design:type\", environment_1.Environment)\n    ], GridOptionsWrapper.prototype, \"environment\", void 0);\n    __decorate([\n        __param(0, context_1.Qualifier('gridApi')), __param(1, context_1.Qualifier('columnApi')),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [gridApi_1.GridApi, columnController_1.ColumnApi]),\n        __metadata(\"design:returntype\", void 0)\n    ], GridOptionsWrapper.prototype, \"agWire\", null);\n    __decorate([\n        context_1.PreDestroy,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], GridOptionsWrapper.prototype, \"destroy\", null);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], GridOptionsWrapper.prototype, \"init\", null);\n    GridOptionsWrapper = GridOptionsWrapper_1 = __decorate([\n        context_1.Bean('gridOptionsWrapper')\n    ], GridOptionsWrapper);\n    return GridOptionsWrapper;\n    var GridOptionsWrapper_1;\n}());\nexports.GridOptionsWrapper = GridOptionsWrapper;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/gridOptionsWrapper.js\n// module id = 9\n// module chunks = 0","/*!\n  Copyright (c) 2016 Jed Watson.\n  Licensed under the MIT License (MIT), see\n  http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tclasses.push(classNames.apply(null, arg));\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/classnames/index.js\n// module id = 10\n// module chunks = 0","import _Object$entries from 'babel-runtime/core-js/object/entries';\nimport _extends from 'babel-runtime/helpers/extends';\n// TODO: The publicly exposed parts of this should be in lib/BootstrapUtils.\n\nimport invariant from 'invariant';\nimport PropTypes from 'prop-types';\n\nimport { SIZE_MAP } from './StyleConfig';\n\nfunction curry(fn) {\n  return function () {\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    var last = args[args.length - 1];\n    if (typeof last === 'function') {\n      return fn.apply(undefined, args);\n    }\n    return function (Component) {\n      return fn.apply(undefined, args.concat([Component]));\n    };\n  };\n}\n\nexport function prefix(props, variant) {\n  !(props.bsClass != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'A `bsClass` prop is required for this component') : invariant(false) : void 0;\n  return props.bsClass + (variant ? '-' + variant : '');\n}\n\nexport var bsClass = curry(function (defaultClass, Component) {\n  var propTypes = Component.propTypes || (Component.propTypes = {});\n  var defaultProps = Component.defaultProps || (Component.defaultProps = {});\n\n  propTypes.bsClass = PropTypes.string;\n  defaultProps.bsClass = defaultClass;\n\n  return Component;\n});\n\nexport var bsStyles = curry(function (styles, defaultStyle, Component) {\n  if (typeof defaultStyle !== 'string') {\n    Component = defaultStyle;\n    defaultStyle = undefined;\n  }\n\n  var existing = Component.STYLES || [];\n  var propTypes = Component.propTypes || {};\n\n  styles.forEach(function (style) {\n    if (existing.indexOf(style) === -1) {\n      existing.push(style);\n    }\n  });\n\n  var propType = PropTypes.oneOf(existing);\n\n  // expose the values on the propType function for documentation\n  Component.STYLES = existing;\n  propType._values = existing;\n\n  Component.propTypes = _extends({}, propTypes, {\n    bsStyle: propType\n  });\n\n  if (defaultStyle !== undefined) {\n    var defaultProps = Component.defaultProps || (Component.defaultProps = {});\n    defaultProps.bsStyle = defaultStyle;\n  }\n\n  return Component;\n});\n\nexport var bsSizes = curry(function (sizes, defaultSize, Component) {\n  if (typeof defaultSize !== 'string') {\n    Component = defaultSize;\n    defaultSize = undefined;\n  }\n\n  var existing = Component.SIZES || [];\n  var propTypes = Component.propTypes || {};\n\n  sizes.forEach(function (size) {\n    if (existing.indexOf(size) === -1) {\n      existing.push(size);\n    }\n  });\n\n  var values = [];\n  existing.forEach(function (size) {\n    var mappedSize = SIZE_MAP[size];\n    if (mappedSize && mappedSize !== size) {\n      values.push(mappedSize);\n    }\n\n    values.push(size);\n  });\n\n  var propType = PropTypes.oneOf(values);\n  propType._values = values;\n\n  // expose the values on the propType function for documentation\n  Component.SIZES = existing;\n\n  Component.propTypes = _extends({}, propTypes, {\n    bsSize: propType\n  });\n\n  if (defaultSize !== undefined) {\n    if (!Component.defaultProps) {\n      Component.defaultProps = {};\n    }\n    Component.defaultProps.bsSize = defaultSize;\n  }\n\n  return Component;\n});\n\nexport function getClassSet(props) {\n  var _classes;\n\n  var classes = (_classes = {}, _classes[prefix(props)] = true, _classes);\n\n  if (props.bsSize) {\n    var bsSize = SIZE_MAP[props.bsSize] || props.bsSize;\n    classes[prefix(props, bsSize)] = true;\n  }\n\n  if (props.bsStyle) {\n    classes[prefix(props, props.bsStyle)] = true;\n  }\n\n  return classes;\n}\n\nfunction getBsProps(props) {\n  return {\n    bsClass: props.bsClass,\n    bsSize: props.bsSize,\n    bsStyle: props.bsStyle,\n    bsRole: props.bsRole\n  };\n}\n\nfunction isBsProp(propName) {\n  return propName === 'bsClass' || propName === 'bsSize' || propName === 'bsStyle' || propName === 'bsRole';\n}\n\nexport function splitBsProps(props) {\n  var elementProps = {};\n  _Object$entries(props).forEach(function (_ref) {\n    var propName = _ref[0],\n        propValue = _ref[1];\n\n    if (!isBsProp(propName)) {\n      elementProps[propName] = propValue;\n    }\n  });\n\n  return [getBsProps(props), elementProps];\n}\n\nexport function splitBsPropsAndOmit(props, omittedPropNames) {\n  var isOmittedProp = {};\n  omittedPropNames.forEach(function (propName) {\n    isOmittedProp[propName] = true;\n  });\n\n  var elementProps = {};\n  _Object$entries(props).forEach(function (_ref2) {\n    var propName = _ref2[0],\n        propValue = _ref2[1];\n\n    if (!isBsProp(propName) && !isOmittedProp[propName]) {\n      elementProps[propName] = propValue;\n    }\n  });\n\n  return [getBsProps(props), elementProps];\n}\n\n/**\n * Add a style variant to a Component. Mutates the propTypes of the component\n * in order to validate the new variant.\n */\nexport function addStyle(Component) {\n  for (var _len2 = arguments.length, styleVariant = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n    styleVariant[_key2 - 1] = arguments[_key2];\n  }\n\n  bsStyles(styleVariant, Component);\n}\n\nexport var _curry = curry;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/utils/bootstrapUtils.js\n// module id = 11\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar columnGroup_1 = require(\"../entities/columnGroup\");\nvar column_1 = require(\"../entities/column\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar expressionService_1 = require(\"../valueService/expressionService\");\nvar balancedColumnTreeBuilder_1 = require(\"./balancedColumnTreeBuilder\");\nvar displayedGroupCreator_1 = require(\"./displayedGroupCreator\");\nvar autoWidthCalculator_1 = require(\"../rendering/autoWidthCalculator\");\nvar eventService_1 = require(\"../eventService\");\nvar columnUtils_1 = require(\"./columnUtils\");\nvar logger_1 = require(\"../logger\");\nvar events_1 = require(\"../events\");\nvar originalColumnGroup_1 = require(\"../entities/originalColumnGroup\");\nvar groupInstanceIdCreator_1 = require(\"./groupInstanceIdCreator\");\nvar context_1 = require(\"../context/context\");\nvar gridPanel_1 = require(\"../gridPanel/gridPanel\");\nvar columnAnimationService_1 = require(\"../rendering/columnAnimationService\");\nvar autoGroupColService_1 = require(\"./autoGroupColService\");\nvar valueCache_1 = require(\"../valueService/valueCache\");\nvar gridApi_1 = require(\"../gridApi\");\nvar ColumnApi = (function () {\n    function ColumnApi() {\n    }\n    ColumnApi.prototype.sizeColumnsToFit = function (gridWidth) { this._columnController.sizeColumnsToFit(gridWidth); };\n    ColumnApi.prototype.setColumnGroupOpened = function (group, newValue) { this._columnController.setColumnGroupOpened(group, newValue); };\n    ColumnApi.prototype.getColumnGroup = function (name, instanceId) { return this._columnController.getColumnGroup(name, instanceId); };\n    ColumnApi.prototype.getOriginalColumnGroup = function (name) { return this._columnController.getOriginalColumnGroup(name); };\n    ColumnApi.prototype.getDisplayNameForColumn = function (column, location) { return this._columnController.getDisplayNameForColumn(column, location); };\n    ColumnApi.prototype.getDisplayNameForColumnGroup = function (columnGroup, location) { return this._columnController.getDisplayNameForColumnGroup(columnGroup, location); };\n    ColumnApi.prototype.getColumn = function (key) { return this._columnController.getPrimaryColumn(key); };\n    ColumnApi.prototype.setColumnState = function (columnState) { return this._columnController.setColumnState(columnState); };\n    ColumnApi.prototype.getColumnState = function () { return this._columnController.getColumnState(); };\n    ColumnApi.prototype.resetColumnState = function () { this._columnController.resetColumnState(); };\n    ColumnApi.prototype.getColumnGroupState = function () { return this._columnController.getColumnGroupState(); };\n    ColumnApi.prototype.setColumnGroupState = function (stateItems) { this._columnController.setColumnGroupState(stateItems); };\n    ColumnApi.prototype.resetColumnGroupState = function () { this._columnController.resetColumnGroupState(); };\n    ColumnApi.prototype.isPinning = function () { return this._columnController.isPinningLeft() || this._columnController.isPinningRight(); };\n    ColumnApi.prototype.isPinningLeft = function () { return this._columnController.isPinningLeft(); };\n    ColumnApi.prototype.isPinningRight = function () { return this._columnController.isPinningRight(); };\n    ColumnApi.prototype.getDisplayedColAfter = function (col) { return this._columnController.getDisplayedColAfter(col); };\n    ColumnApi.prototype.getDisplayedColBefore = function (col) { return this._columnController.getDisplayedColBefore(col); };\n    ColumnApi.prototype.setColumnVisible = function (key, visible) { this._columnController.setColumnVisible(key, visible); };\n    ColumnApi.prototype.setColumnsVisible = function (keys, visible) { this._columnController.setColumnsVisible(keys, visible); };\n    ColumnApi.prototype.setColumnPinned = function (key, pinned) { this._columnController.setColumnPinned(key, pinned); };\n    ColumnApi.prototype.setColumnsPinned = function (keys, pinned) { this._columnController.setColumnsPinned(keys, pinned); };\n    ColumnApi.prototype.getAllColumns = function () { return this._columnController.getAllPrimaryColumns(); };\n    ColumnApi.prototype.getAllGridColumns = function () { return this._columnController.getAllGridColumns(); };\n    ColumnApi.prototype.getDisplayedLeftColumns = function () { return this._columnController.getDisplayedLeftColumns(); };\n    ColumnApi.prototype.getDisplayedCenterColumns = function () { return this._columnController.getDisplayedCenterColumns(); };\n    ColumnApi.prototype.getDisplayedRightColumns = function () { return this._columnController.getDisplayedRightColumns(); };\n    ColumnApi.prototype.getAllDisplayedColumns = function () { return this._columnController.getAllDisplayedColumns(); };\n    ColumnApi.prototype.getAllDisplayedVirtualColumns = function () { return this._columnController.getAllDisplayedVirtualColumns(); };\n    ColumnApi.prototype.moveColumn = function (key, toIndex) {\n        if (typeof key === 'number') {\n            // moveColumn used to take indexes, so this is advising user who hasn't moved to new method name\n            console.log('ag-Grid: you are using moveColumn(fromIndex, toIndex) - moveColumn takes a column key and a destination index, not two indexes, to move with indexes use moveColumnByIndex(from,to) instead');\n            this._columnController.moveColumnByIndex(key, toIndex);\n        }\n        else {\n            this._columnController.moveColumn(key, toIndex);\n        }\n    };\n    ColumnApi.prototype.moveColumnByIndex = function (fromIndex, toIndex) { this._columnController.moveColumnByIndex(fromIndex, toIndex); };\n    ColumnApi.prototype.moveColumns = function (columnsToMoveKeys, toIndex) { this._columnController.moveColumns(columnsToMoveKeys, toIndex); };\n    ColumnApi.prototype.moveRowGroupColumn = function (fromIndex, toIndex) { this._columnController.moveRowGroupColumn(fromIndex, toIndex); };\n    ColumnApi.prototype.setColumnAggFunc = function (column, aggFunc) { this._columnController.setColumnAggFunc(column, aggFunc); };\n    ColumnApi.prototype.setColumnWidth = function (key, newWidth, finished) {\n        if (finished === void 0) { finished = true; }\n        this._columnController.setColumnWidth(key, newWidth, finished);\n    };\n    ColumnApi.prototype.setPivotMode = function (pivotMode) { this._columnController.setPivotMode(pivotMode); };\n    ColumnApi.prototype.isPivotMode = function () { return this._columnController.isPivotMode(); };\n    ColumnApi.prototype.getSecondaryPivotColumn = function (pivotKeys, valueColKey) { return this._columnController.getSecondaryPivotColumn(pivotKeys, valueColKey); };\n    ColumnApi.prototype.setValueColumns = function (colKeys) { this._columnController.setValueColumns(colKeys); };\n    ColumnApi.prototype.getValueColumns = function () { return this._columnController.getValueColumns(); };\n    ColumnApi.prototype.removeValueColumn = function (colKey) { this._columnController.removeValueColumn(colKey); };\n    ColumnApi.prototype.removeValueColumns = function (colKeys) { this._columnController.removeValueColumns(colKeys); };\n    ColumnApi.prototype.addValueColumn = function (colKey) { this._columnController.addValueColumn(colKey); };\n    ColumnApi.prototype.addValueColumns = function (colKeys) { this._columnController.addValueColumns(colKeys); };\n    ColumnApi.prototype.setRowGroupColumns = function (colKeys) { this._columnController.setRowGroupColumns(colKeys); };\n    ColumnApi.prototype.removeRowGroupColumn = function (colKey) { this._columnController.removeRowGroupColumn(colKey); };\n    ColumnApi.prototype.removeRowGroupColumns = function (colKeys) { this._columnController.removeRowGroupColumns(colKeys); };\n    ColumnApi.prototype.addRowGroupColumn = function (colKey) { this._columnController.addRowGroupColumn(colKey); };\n    ColumnApi.prototype.addRowGroupColumns = function (colKeys) { this._columnController.addRowGroupColumns(colKeys); };\n    ColumnApi.prototype.getRowGroupColumns = function () { return this._columnController.getRowGroupColumns(); };\n    ColumnApi.prototype.setPivotColumns = function (colKeys) { this._columnController.setPivotColumns(colKeys); };\n    ColumnApi.prototype.removePivotColumn = function (colKey) { this._columnController.removePivotColumn(colKey); };\n    ColumnApi.prototype.removePivotColumns = function (colKeys) { this._columnController.removePivotColumns(colKeys); };\n    ColumnApi.prototype.addPivotColumn = function (colKey) { this._columnController.addPivotColumn(colKey); };\n    ColumnApi.prototype.addPivotColumns = function (colKeys) { this._columnController.addPivotColumns(colKeys); };\n    ColumnApi.prototype.getPivotColumns = function () { return this._columnController.getPivotColumns(); };\n    ColumnApi.prototype.getLeftDisplayedColumnGroups = function () { return this._columnController.getLeftDisplayedColumnGroups(); };\n    ColumnApi.prototype.getCenterDisplayedColumnGroups = function () { return this._columnController.getCenterDisplayedColumnGroups(); };\n    ColumnApi.prototype.getRightDisplayedColumnGroups = function () { return this._columnController.getRightDisplayedColumnGroups(); };\n    ColumnApi.prototype.getAllDisplayedColumnGroups = function () { return this._columnController.getAllDisplayedColumnGroups(); };\n    ColumnApi.prototype.autoSizeColumn = function (key) { return this._columnController.autoSizeColumn(key); };\n    ColumnApi.prototype.autoSizeColumns = function (keys) { return this._columnController.autoSizeColumns(keys); };\n    ColumnApi.prototype.autoSizeAllColumns = function () { this._columnController.autoSizeAllColumns(); };\n    ColumnApi.prototype.setSecondaryColumns = function (colDefs) { this._columnController.setSecondaryColumns(colDefs); };\n    // below goes through deprecated items, prints message to user, then calls the new version of the same method\n    ColumnApi.prototype.columnGroupOpened = function (group, newValue) {\n        console.error('ag-Grid: columnGroupOpened no longer exists, use setColumnGroupOpened');\n        this.setColumnGroupOpened(group, newValue);\n    };\n    ColumnApi.prototype.hideColumns = function (colIds, hide) {\n        console.error('ag-Grid: hideColumns is deprecated, use setColumnsVisible');\n        this._columnController.setColumnsVisible(colIds, !hide);\n    };\n    ColumnApi.prototype.hideColumn = function (colId, hide) {\n        console.error('ag-Grid: hideColumn is deprecated, use setColumnVisible');\n        this._columnController.setColumnVisible(colId, !hide);\n    };\n    ColumnApi.prototype.setState = function (columnState) {\n        console.error('ag-Grid: setState is deprecated, use setColumnState');\n        return this.setColumnState(columnState);\n    };\n    ColumnApi.prototype.getState = function () {\n        console.error('ag-Grid: getState is deprecated, use getColumnState');\n        return this.getColumnState();\n    };\n    ColumnApi.prototype.resetState = function () {\n        console.error('ag-Grid: resetState is deprecated, use resetColumnState');\n        this.resetColumnState();\n    };\n    ColumnApi.prototype.getAggregationColumns = function () {\n        console.error('ag-Grid: getAggregationColumns is deprecated, use getValueColumns');\n        return this._columnController.getValueColumns();\n    };\n    ColumnApi.prototype.removeAggregationColumn = function (colKey) {\n        console.error('ag-Grid: removeAggregationColumn is deprecated, use removeValueColumn');\n        this._columnController.removeValueColumn(colKey);\n    };\n    ColumnApi.prototype.removeAggregationColumns = function (colKeys) {\n        console.error('ag-Grid: removeAggregationColumns is deprecated, use removeValueColumns');\n        this._columnController.removeValueColumns(colKeys);\n    };\n    ColumnApi.prototype.addAggregationColumn = function (colKey) {\n        console.error('ag-Grid: addAggregationColumn is deprecated, use addValueColumn');\n        this._columnController.addValueColumn(colKey);\n    };\n    ColumnApi.prototype.addAggregationColumns = function (colKeys) {\n        console.error('ag-Grid: addAggregationColumns is deprecated, use addValueColumns');\n        this._columnController.addValueColumns(colKeys);\n    };\n    ColumnApi.prototype.setColumnAggFunction = function (column, aggFunc) {\n        console.error('ag-Grid: setColumnAggFunction is deprecated, use setColumnAggFunc');\n        this._columnController.setColumnAggFunc(column, aggFunc);\n    };\n    ColumnApi.prototype.getDisplayNameForCol = function (column) {\n        console.error('ag-Grid: getDisplayNameForCol is deprecated, use getDisplayNameForColumn');\n        return this.getDisplayNameForColumn(column, null);\n    };\n    __decorate([\n        context_1.Autowired('columnController'),\n        __metadata(\"design:type\", ColumnController)\n    ], ColumnApi.prototype, \"_columnController\", void 0);\n    ColumnApi = __decorate([\n        context_1.Bean('columnApi')\n    ], ColumnApi);\n    return ColumnApi;\n}());\nexports.ColumnApi = ColumnApi;\nvar ColumnController = (function () {\n    function ColumnController() {\n        // header row count, based on user provided columns\n        this.primaryHeaderRowCount = 0;\n        this.secondaryHeaderRowCount = 0;\n        this.secondaryColumnsPresent = false;\n        // header row count, either above, or based on pivoting if we are pivoting\n        this.gridHeaderRowCount = 0;\n        // these are the lists used by the rowRenderer to render nodes. almost the leaf nodes of the above\n        // displayed trees, however it also takes into account if the groups are open or not.\n        this.displayedLeftColumns = [];\n        this.displayedRightColumns = [];\n        this.displayedCenterColumns = [];\n        // all three lists above combined\n        this.allDisplayedColumns = [];\n        // same as above, except trimmed down to only columns within the viewport\n        this.allDisplayedVirtualColumns = [];\n        this.allDisplayedCenterVirtualColumns = [];\n        this.rowGroupColumns = [];\n        this.valueColumns = [];\n        this.pivotColumns = [];\n        this.ready = false;\n        this.autoGroupsNeedBuilding = false;\n        this.pivotMode = false;\n        this.bodyWidth = 0;\n        this.leftWidth = 0;\n        this.rightWidth = 0;\n        this.bodyWidthDirty = true;\n    }\n    ColumnController.prototype.init = function () {\n        var pivotMode = this.gridOptionsWrapper.isPivotMode();\n        if (this.isPivotSettingAllowed(pivotMode)) {\n            this.pivotMode = pivotMode;\n        }\n        this.usingTreeData = this.gridOptionsWrapper.isTreeData();\n    };\n    ColumnController.prototype.setVirtualViewportLeftAndRight = function () {\n        if (this.gridOptionsWrapper.isEnableRtl()) {\n            this.viewportLeft = this.bodyWidth - this.scrollPosition - this.scrollWidth;\n            this.viewportRight = this.bodyWidth - this.scrollPosition;\n        }\n        else {\n            this.viewportLeft = this.scrollPosition;\n            this.viewportRight = this.scrollWidth + this.scrollPosition;\n        }\n    };\n    // used by clipboard service, to know what columns to paste into\n    ColumnController.prototype.getDisplayedColumnsStartingAt = function (column) {\n        var currentColumn = column;\n        var result = [];\n        while (utils_1.Utils.exists(currentColumn)) {\n            result.push(currentColumn);\n            currentColumn = this.getDisplayedColAfter(currentColumn);\n        }\n        return result;\n    };\n    // checks what columns are currently displayed due to column virtualisation. fires an event\n    // if the list of columns has changed.\n    // + setColumnWidth(), setVirtualViewportPosition(), setColumnDefs(), sizeColumnsToFit()\n    ColumnController.prototype.checkDisplayedVirtualColumns = function () {\n        // check displayCenterColumnTree exists first, as it won't exist when grid is initialising\n        if (utils_1.Utils.exists(this.displayedCenterColumns)) {\n            var hashBefore = this.allDisplayedVirtualColumns.map(function (column) { return column.getId(); }).join('#');\n            this.updateVirtualSets();\n            var hashAfter = this.allDisplayedVirtualColumns.map(function (column) { return column.getId(); }).join('#');\n            if (hashBefore !== hashAfter) {\n                var event_1 = {\n                    type: events_1.Events.EVENT_VIRTUAL_COLUMNS_CHANGED,\n                    api: this.gridApi,\n                    columnApi: this.columnApi\n                };\n                this.eventService.dispatchEvent(event_1);\n            }\n        }\n    };\n    ColumnController.prototype.setVirtualViewportPosition = function (scrollWidth, scrollPosition) {\n        if (scrollWidth !== this.scrollWidth || scrollPosition !== this.scrollPosition || this.bodyWidthDirty) {\n            this.scrollWidth = scrollWidth;\n            this.scrollPosition = scrollPosition;\n            // we need to call setVirtualViewportLeftAndRight() at least once after the body width changes,\n            // as the viewport can stay the same, but in RTL, if body width changes, we need to work out the\n            // virtual columns again\n            this.bodyWidthDirty = true;\n            this.setVirtualViewportLeftAndRight();\n            if (this.ready) {\n                this.checkDisplayedVirtualColumns();\n            }\n        }\n    };\n    ColumnController.prototype.isPivotMode = function () {\n        return this.pivotMode;\n    };\n    ColumnController.prototype.isPivotSettingAllowed = function (pivot) {\n        if (pivot) {\n            if (this.gridOptionsWrapper.isTreeData()) {\n                console.warn(\"ag-Grid: Pivot mode not available in conjunction Tree Data i.e. 'gridOptions.treeData: true'\");\n                return false;\n            }\n            else {\n                return true;\n            }\n        }\n        else {\n            return true;\n        }\n    };\n    ColumnController.prototype.setPivotMode = function (pivotMode) {\n        if (pivotMode === this.pivotMode) {\n            return;\n        }\n        if (!this.isPivotSettingAllowed(this.pivotMode)) {\n            return;\n        }\n        this.pivotMode = pivotMode;\n        this.updateDisplayedColumns();\n        var event = {\n            type: events_1.Events.EVENT_COLUMN_PIVOT_MODE_CHANGED,\n            api: this.gridApi,\n            columnApi: this.columnApi\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    ColumnController.prototype.getSecondaryPivotColumn = function (pivotKeys, valueColKey) {\n        if (!this.secondaryColumnsPresent) {\n            return null;\n        }\n        var valueColumnToFind = this.getPrimaryColumn(valueColKey);\n        var foundColumn = null;\n        this.secondaryColumns.forEach(function (column) {\n            var thisPivotKeys = column.getColDef().pivotKeys;\n            var pivotValueColumn = column.getColDef().pivotValueColumn;\n            var pivotKeyMatches = utils_1.Utils.compareArrays(thisPivotKeys, pivotKeys);\n            var pivotValueMatches = pivotValueColumn === valueColumnToFind;\n            if (pivotKeyMatches && pivotValueMatches) {\n                foundColumn = column;\n            }\n        });\n        return foundColumn;\n    };\n    ColumnController.prototype.setBeans = function (loggerFactory) {\n        this.logger = loggerFactory.create('ColumnController');\n    };\n    ColumnController.prototype.setFirstRightAndLastLeftPinned = function () {\n        var lastLeft;\n        var firstRight;\n        if (this.gridOptionsWrapper.isEnableRtl()) {\n            lastLeft = this.displayedLeftColumns ? this.displayedLeftColumns[0] : null;\n            firstRight = this.displayedRightColumns ? this.displayedRightColumns[this.displayedRightColumns.length - 1] : null;\n        }\n        else {\n            lastLeft = this.displayedLeftColumns ? this.displayedLeftColumns[this.displayedLeftColumns.length - 1] : null;\n            firstRight = this.displayedRightColumns ? this.displayedRightColumns[0] : null;\n        }\n        this.gridColumns.forEach(function (column) {\n            column.setLastLeftPinned(column === lastLeft);\n            column.setFirstRightPinned(column === firstRight);\n        });\n    };\n    ColumnController.prototype.autoSizeColumns = function (keys) {\n        // because of column virtualisation, we can only do this function on columns that are\n        // actually rendered, as non-rendered columns (outside the viewport and not rendered\n        // due to column virtualisation) are not present. this can result in all rendered columns\n        // getting narrowed, which in turn introduces more rendered columns on the RHS which\n        // did not get autosized in the original run, leaving the visible grid with columns on\n        // the LHS sized, but RHS no. so we keep looping through teh visible columns until\n        // no more cols are available (rendered) to be resized\n        var _this = this;\n        // keep track of which cols we have resized in here\n        var columnsAutosized = [];\n        // initialise with anything except 0 so that while loop executs at least once\n        var changesThisTimeAround = -1;\n        while (changesThisTimeAround !== 0) {\n            changesThisTimeAround = 0;\n            this.actionOnGridColumns(keys, function (column) {\n                // if already autosized, skip it\n                if (columnsAutosized.indexOf(column) >= 0) {\n                    return;\n                }\n                // get how wide this col should be\n                var preferredWidth = _this.autoWidthCalculator.getPreferredWidthForColumn(column);\n                // preferredWidth = -1 if this col is not on the screen\n                if (preferredWidth > 0) {\n                    var newWidth = _this.normaliseColumnWidth(column, preferredWidth);\n                    column.setActualWidth(newWidth);\n                    columnsAutosized.push(column);\n                    changesThisTimeAround++;\n                }\n                return true;\n            });\n        }\n        if (columnsAutosized.length > 0) {\n            var event_2 = {\n                type: events_1.Events.EVENT_COLUMN_RESIZED,\n                columns: columnsAutosized,\n                column: columnsAutosized.length === 1 ? columnsAutosized[0] : null,\n                finished: true,\n                api: this.gridApi,\n                columnApi: this.columnApi\n            };\n            this.eventService.dispatchEvent(event_2);\n        }\n    };\n    ColumnController.prototype.autoSizeColumn = function (key) {\n        this.autoSizeColumns([key]);\n    };\n    ColumnController.prototype.autoSizeAllColumns = function () {\n        var allDisplayedColumns = this.getAllDisplayedColumns();\n        this.autoSizeColumns(allDisplayedColumns);\n    };\n    ColumnController.prototype.getColumnsFromTree = function (rootColumns) {\n        var result = [];\n        recursiveFindColumns(rootColumns);\n        return result;\n        function recursiveFindColumns(childColumns) {\n            for (var i = 0; i < childColumns.length; i++) {\n                var child = childColumns[i];\n                if (child instanceof column_1.Column) {\n                    result.push(child);\n                }\n                else if (child instanceof originalColumnGroup_1.OriginalColumnGroup) {\n                    recursiveFindColumns(child.getChildren());\n                }\n            }\n        }\n    };\n    ColumnController.prototype.getAllDisplayedColumnGroups = function () {\n        if (this.displayedLeftColumnTree && this.displayedRightColumnTree && this.displayedCentreColumnTree) {\n            return this.displayedLeftColumnTree\n                .concat(this.displayedCentreColumnTree)\n                .concat(this.displayedRightColumnTree);\n        }\n        else {\n            return null;\n        }\n    };\n    // + columnSelectPanel\n    ColumnController.prototype.getPrimaryColumnTree = function () {\n        return this.primaryBalancedTree;\n    };\n    // + gridPanel -> for resizing the body and setting top margin\n    ColumnController.prototype.getHeaderRowCount = function () {\n        return this.gridHeaderRowCount;\n    };\n    // + headerRenderer -> setting pinned body width\n    ColumnController.prototype.getLeftDisplayedColumnGroups = function () {\n        return this.displayedLeftColumnTree;\n    };\n    // + headerRenderer -> setting pinned body width\n    ColumnController.prototype.getRightDisplayedColumnGroups = function () {\n        return this.displayedRightColumnTree;\n    };\n    // + headerRenderer -> setting pinned body width\n    ColumnController.prototype.getCenterDisplayedColumnGroups = function () {\n        return this.displayedCentreColumnTree;\n    };\n    ColumnController.prototype.getDisplayedColumnGroups = function (type) {\n        switch (type) {\n            case column_1.Column.PINNED_LEFT: return this.getLeftDisplayedColumnGroups();\n            case column_1.Column.PINNED_RIGHT: return this.getRightDisplayedColumnGroups();\n            default: return this.getCenterDisplayedColumnGroups();\n        }\n    };\n    // gridPanel -> ensureColumnVisible\n    ColumnController.prototype.isColumnDisplayed = function (column) {\n        return this.getAllDisplayedColumns().indexOf(column) >= 0;\n    };\n    // + csvCreator\n    ColumnController.prototype.getAllDisplayedColumns = function () {\n        return this.allDisplayedColumns;\n    };\n    ColumnController.prototype.getAllDisplayedVirtualColumns = function () {\n        return this.allDisplayedVirtualColumns;\n    };\n    ColumnController.prototype.getDisplayedLeftColumnsForRow = function (rowNode) {\n        if (!this.colSpanActive) {\n            return this.displayedLeftColumns;\n        }\n        else {\n            return this.getDisplayedColumnsForRow(rowNode, this.displayedLeftColumns);\n        }\n    };\n    ColumnController.prototype.getDisplayedRightColumnsForRow = function (rowNode) {\n        if (!this.colSpanActive) {\n            return this.displayedRightColumns;\n        }\n        else {\n            return this.getDisplayedColumnsForRow(rowNode, this.displayedRightColumns);\n        }\n    };\n    ColumnController.prototype.getDisplayedColumnsForRow = function (rowNode, displayedColumns, filterCallback, gapBeforeCallback) {\n        var result = [];\n        var lastConsideredCol = null;\n        for (var i = 0; i < displayedColumns.length; i++) {\n            var col = displayedColumns[i];\n            var colSpan = col.getColSpan(rowNode);\n            if (colSpan > 1) {\n                var colsToRemove = colSpan - 1;\n                i += colsToRemove;\n            }\n            var filterPasses = filterCallback ? filterCallback(col) : true;\n            if (filterPasses) {\n                var gapBeforeColumn = gapBeforeCallback ? gapBeforeCallback(col) : false;\n                var addInPreviousColumn = result.length === 0 && gapBeforeColumn && lastConsideredCol;\n                if (addInPreviousColumn) {\n                    result.push(lastConsideredCol);\n                }\n                result.push(col);\n            }\n            lastConsideredCol = col;\n        }\n        return result;\n    };\n    // + rowRenderer\n    // if we are not column spanning, this just returns back the virtual centre columns,\n    // however if we are column spanning, then different rows can have different virtual\n    // columns, so we have to work out the list for each individual row.\n    ColumnController.prototype.getAllDisplayedCenterVirtualColumnsForRow = function (rowNode) {\n        var _this = this;\n        if (!this.colSpanActive) {\n            return this.allDisplayedCenterVirtualColumns;\n        }\n        var gapBeforeCallback = function (col) { return col.getLeft() > _this.viewportLeft; };\n        return this.getDisplayedColumnsForRow(rowNode, this.displayedCenterColumns, this.isColumnInViewport.bind(this), gapBeforeCallback);\n    };\n    ColumnController.prototype.isColumnInViewport = function (col) {\n        var columnLeft = col.getLeft();\n        var columnRight = col.getLeft() + col.getActualWidth();\n        var columnToMuchLeft = columnLeft < this.viewportLeft && columnRight < this.viewportLeft;\n        var columnToMuchRight = columnLeft > this.viewportRight && columnRight > this.viewportRight;\n        return !columnToMuchLeft && !columnToMuchRight;\n    };\n    // used by:\n    // + angularGrid -> setting pinned body width\n    // todo: this needs to be cached\n    ColumnController.prototype.getPinnedLeftContainerWidth = function () {\n        return this.getWidthOfColsInList(this.displayedLeftColumns);\n    };\n    // todo: this needs to be cached\n    ColumnController.prototype.getPinnedRightContainerWidth = function () {\n        return this.getWidthOfColsInList(this.displayedRightColumns);\n    };\n    ColumnController.prototype.updatePrimaryColumnList = function (keys, masterList, actionIsAdd, columnCallback, eventType) {\n        var _this = this;\n        if (utils_1.Utils.missingOrEmpty(keys)) {\n            return;\n        }\n        var atLeastOne = false;\n        keys.forEach(function (key) {\n            var columnToAdd = _this.getPrimaryColumn(key);\n            if (!columnToAdd) {\n                return;\n            }\n            if (actionIsAdd) {\n                if (masterList.indexOf(columnToAdd) >= 0) {\n                    return;\n                }\n                masterList.push(columnToAdd);\n            }\n            else {\n                if (masterList.indexOf(columnToAdd) < 0) {\n                    return;\n                }\n                utils_1.Utils.removeFromArray(masterList, columnToAdd);\n            }\n            columnCallback(columnToAdd);\n            atLeastOne = true;\n        });\n        if (!atLeastOne) {\n            return;\n        }\n        this.updateDisplayedColumns();\n        var event = {\n            type: eventType,\n            columns: masterList,\n            column: masterList.length === 1 ? masterList[0] : null,\n            api: this.gridApi,\n            columnApi: this.columnApi\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    ColumnController.prototype.setRowGroupColumns = function (colKeys) {\n        this.autoGroupsNeedBuilding = true;\n        this.setPrimaryColumnList(colKeys, this.rowGroupColumns, events_1.Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.setRowGroupActive.bind(this));\n    };\n    ColumnController.prototype.setRowGroupActive = function (active, column) {\n        if (active === column.isRowGroupActive()) {\n            return;\n        }\n        column.setRowGroupActive(active);\n        if (!active) {\n            column.setVisible(true);\n        }\n    };\n    ColumnController.prototype.addRowGroupColumn = function (key) {\n        this.addRowGroupColumns([key]);\n    };\n    ColumnController.prototype.addRowGroupColumns = function (keys) {\n        this.autoGroupsNeedBuilding = true;\n        this.updatePrimaryColumnList(keys, this.rowGroupColumns, true, this.setRowGroupActive.bind(this, true), events_1.Events.EVENT_COLUMN_ROW_GROUP_CHANGED);\n    };\n    ColumnController.prototype.removeRowGroupColumns = function (keys) {\n        this.autoGroupsNeedBuilding = true;\n        this.updatePrimaryColumnList(keys, this.rowGroupColumns, false, this.setRowGroupActive.bind(this, false), events_1.Events.EVENT_COLUMN_ROW_GROUP_CHANGED);\n    };\n    ColumnController.prototype.removeRowGroupColumn = function (key) {\n        this.removeRowGroupColumns([key]);\n    };\n    ColumnController.prototype.addPivotColumns = function (keys) {\n        this.updatePrimaryColumnList(keys, this.pivotColumns, true, function (column) { return column.setPivotActive(true); }, events_1.Events.EVENT_COLUMN_PIVOT_CHANGED);\n    };\n    ColumnController.prototype.setPivotColumns = function (colKeys) {\n        this.setPrimaryColumnList(colKeys, this.pivotColumns, events_1.Events.EVENT_COLUMN_PIVOT_CHANGED, function (added, column) {\n            column.setPivotActive(added);\n        });\n    };\n    ColumnController.prototype.addPivotColumn = function (key) {\n        this.addPivotColumns([key]);\n    };\n    ColumnController.prototype.removePivotColumns = function (keys) {\n        this.updatePrimaryColumnList(keys, this.pivotColumns, false, function (column) { return column.setPivotActive(false); }, events_1.Events.EVENT_COLUMN_PIVOT_CHANGED);\n    };\n    ColumnController.prototype.removePivotColumn = function (key) {\n        this.removePivotColumns([key]);\n    };\n    ColumnController.prototype.setPrimaryColumnList = function (colKeys, masterList, eventName, columnCallback) {\n        var _this = this;\n        masterList.length = 0;\n        if (utils_1.Utils.exists(colKeys)) {\n            colKeys.forEach(function (key) {\n                var column = _this.getPrimaryColumn(key);\n                masterList.push(column);\n            });\n        }\n        this.primaryColumns.forEach(function (column) {\n            var added = masterList.indexOf(column) >= 0;\n            columnCallback(added, column);\n        });\n        this.updateDisplayedColumns();\n        var event = {\n            type: eventName,\n            columns: masterList,\n            column: masterList.length === 1 ? masterList[0] : null,\n            api: this.gridApi,\n            columnApi: this.columnApi\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    ColumnController.prototype.setValueColumns = function (colKeys) {\n        this.setPrimaryColumnList(colKeys, this.valueColumns, events_1.Events.EVENT_COLUMN_VALUE_CHANGED, this.setValueActive.bind(this));\n    };\n    ColumnController.prototype.setValueActive = function (active, column) {\n        if (active === column.isValueActive()) {\n            return;\n        }\n        column.setValueActive(active);\n        if (active && !column.getAggFunc()) {\n            var defaultAggFunc = this.aggFuncService.getDefaultAggFunc(column);\n            column.setAggFunc(defaultAggFunc);\n        }\n    };\n    ColumnController.prototype.addValueColumns = function (keys) {\n        this.updatePrimaryColumnList(keys, this.valueColumns, true, this.setValueActive.bind(this, true), events_1.Events.EVENT_COLUMN_VALUE_CHANGED);\n    };\n    ColumnController.prototype.addValueColumn = function (colKey) {\n        this.addValueColumns([colKey]);\n    };\n    ColumnController.prototype.removeValueColumn = function (colKey) {\n        this.removeValueColumns([colKey]);\n    };\n    ColumnController.prototype.removeValueColumns = function (keys) {\n        this.updatePrimaryColumnList(keys, this.valueColumns, false, this.setValueActive.bind(this, false), events_1.Events.EVENT_COLUMN_VALUE_CHANGED);\n    };\n    // returns the width we can set to this col, taking into consideration min and max widths\n    ColumnController.prototype.normaliseColumnWidth = function (column, newWidth) {\n        if (newWidth < column.getMinWidth()) {\n            newWidth = column.getMinWidth();\n        }\n        if (column.isGreaterThanMax(newWidth)) {\n            newWidth = column.getMaxWidth();\n        }\n        return newWidth;\n    };\n    ColumnController.prototype.getPrimaryOrGridColumn = function (key) {\n        var column = this.getPrimaryColumn(key);\n        if (column) {\n            return column;\n        }\n        else {\n            return this.getGridColumn(key);\n        }\n    };\n    ColumnController.prototype.setColumnWidth = function (key, newWidth, finished) {\n        var column = this.getPrimaryOrGridColumn(key);\n        if (!column) {\n            return;\n        }\n        newWidth = this.normaliseColumnWidth(column, newWidth);\n        var widthChanged = column.getActualWidth() !== newWidth;\n        if (widthChanged) {\n            column.setActualWidth(newWidth);\n            this.setLeftValues();\n        }\n        this.updateBodyWidths();\n        this.checkDisplayedVirtualColumns();\n        // check for change first, to avoid unnecessary firing of events\n        // however we always fire 'finished' events. this is important\n        // when groups are resized, as if the group is changing slowly,\n        // eg 1 pixel at a time, then each change will fire change events\n        // in all the columns in the group, but only one with get the pixel.\n        if (finished || widthChanged) {\n            var event_3 = {\n                type: events_1.Events.EVENT_COLUMN_RESIZED,\n                columns: [column],\n                column: column,\n                finished: finished,\n                api: this.gridApi,\n                columnApi: this.columnApi\n            };\n            this.eventService.dispatchEvent(event_3);\n        }\n    };\n    ColumnController.prototype.setColumnAggFunc = function (column, aggFunc) {\n        column.setAggFunc(aggFunc);\n        var event = {\n            type: events_1.Events.EVENT_COLUMN_VALUE_CHANGED,\n            columns: [column],\n            column: column,\n            api: this.gridApi,\n            columnApi: this.columnApi\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    ColumnController.prototype.moveRowGroupColumn = function (fromIndex, toIndex) {\n        var column = this.rowGroupColumns[fromIndex];\n        this.rowGroupColumns.splice(fromIndex, 1);\n        this.rowGroupColumns.splice(toIndex, 0, column);\n        var event = {\n            type: events_1.Events.EVENT_COLUMN_ROW_GROUP_CHANGED,\n            columns: this.rowGroupColumns,\n            column: this.rowGroupColumns.length === 1 ? this.rowGroupColumns[0] : null,\n            api: this.gridApi,\n            columnApi: this.columnApi\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    ColumnController.prototype.moveColumns = function (columnsToMoveKeys, toIndex) {\n        this.columnAnimationService.start();\n        if (toIndex > this.gridColumns.length - columnsToMoveKeys.length) {\n            console.warn('ag-Grid: tried to insert columns in invalid location, toIndex = ' + toIndex);\n            console.warn('ag-Grid: remember that you should not count the moving columns when calculating the new index');\n            return;\n        }\n        // we want to pull all the columns out first and put them into an ordered list\n        var columnsToMove = this.getGridColumns(columnsToMoveKeys);\n        var failedRules = !this.doesMovePassRules(columnsToMove, toIndex);\n        if (failedRules) {\n            return;\n        }\n        utils_1.Utils.moveInArray(this.gridColumns, columnsToMove, toIndex);\n        this.updateDisplayedColumns();\n        var event = {\n            type: events_1.Events.EVENT_COLUMN_MOVED,\n            columns: columnsToMove,\n            column: columnsToMove.length === 1 ? columnsToMove[0] : null,\n            toIndex: toIndex,\n            api: this.gridApi,\n            columnApi: this.columnApi\n        };\n        this.eventService.dispatchEvent(event);\n        this.columnAnimationService.finish();\n    };\n    ColumnController.prototype.doesMovePassRules = function (columnsToMove, toIndex) {\n        var allColumnsCopy = this.gridColumns.slice();\n        utils_1.Utils.moveInArray(allColumnsCopy, columnsToMove, toIndex);\n        var rulesPass = true;\n        this.columnUtils.depthFirstOriginalTreeSearch(this.gridBalancedTree, function (child) {\n            if (!(child instanceof originalColumnGroup_1.OriginalColumnGroup)) {\n                return;\n            }\n            var columnGroup = child;\n            var marryChildren = columnGroup.getColGroupDef() && columnGroup.getColGroupDef().marryChildren;\n            if (!marryChildren) {\n                return;\n            }\n            var newIndexes = [];\n            columnGroup.getLeafColumns().forEach(function (col) {\n                var newColIndex = allColumnsCopy.indexOf(col);\n                newIndexes.push(newColIndex);\n            });\n            var maxIndex = Math.max.apply(Math, newIndexes);\n            var minIndex = Math.min.apply(Math, newIndexes);\n            // width is how far the first column in this group is away from the last column\n            var spread = maxIndex - minIndex;\n            var maxSpread = columnGroup.getLeafColumns().length - 1;\n            // if the columns\n            if (spread > maxSpread) {\n                rulesPass = false;\n            }\n            // console.log(`maxIndex = ${maxIndex}, minIndex = ${minIndex}, spread = ${spread}, maxSpread = ${maxSpread}, fail = ${spread > (count-1)}`)\n            // console.log(allColumnsCopy.map( col => col.getColDef().field).join(','));\n        });\n        return rulesPass;\n    };\n    ColumnController.prototype.moveColumn = function (key, toIndex) {\n        this.moveColumns([key], toIndex);\n    };\n    ColumnController.prototype.moveColumnByIndex = function (fromIndex, toIndex) {\n        var column = this.gridColumns[fromIndex];\n        this.moveColumn(column, toIndex);\n    };\n    // used by:\n    // + angularGrid -> for setting body width\n    // + rowController -> setting main row widths (when inserting and resizing)\n    // need to cache this\n    ColumnController.prototype.getBodyContainerWidth = function () {\n        return this.bodyWidth;\n    };\n    ColumnController.prototype.getContainerWidth = function (pinned) {\n        switch (pinned) {\n            case column_1.Column.PINNED_LEFT: return this.leftWidth;\n            case column_1.Column.PINNED_RIGHT: return this.rightWidth;\n            default: return this.bodyWidth;\n        }\n    };\n    // after setColumnWidth or updateGroupsAndDisplayedColumns\n    ColumnController.prototype.updateBodyWidths = function () {\n        var newBodyWidth = this.getWidthOfColsInList(this.displayedCenterColumns);\n        var newLeftWidth = this.getWidthOfColsInList(this.displayedLeftColumns);\n        var newRightWidth = this.getWidthOfColsInList(this.displayedRightColumns);\n        // this is used by virtual col calculation, for RTL only, as a change to body width can impact displayed\n        // columns, due to RTL inverting the y coordinates\n        this.bodyWidthDirty = this.bodyWidth !== newBodyWidth;\n        var atLeastOneChanged = this.bodyWidth !== newBodyWidth || this.leftWidth !== newLeftWidth || this.rightWidth !== newRightWidth;\n        if (atLeastOneChanged) {\n            this.bodyWidth = newBodyWidth;\n            this.leftWidth = newLeftWidth;\n            this.rightWidth = newRightWidth;\n            // when this fires, it is picked up by the gridPanel, which ends up in\n            // gridPanel calling setWidthAndScrollPosition(), which in turn calls setVirtualViewportPosition()\n            var event_4 = {\n                type: events_1.Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED,\n                api: this.gridApi,\n                columnApi: this.columnApi\n            };\n            this.eventService.dispatchEvent(event_4);\n        }\n    };\n    // + rowController\n    ColumnController.prototype.getValueColumns = function () {\n        return this.valueColumns ? this.valueColumns : [];\n    };\n    // + rowController\n    ColumnController.prototype.getPivotColumns = function () {\n        return this.pivotColumns ? this.pivotColumns : [];\n    };\n    // + inMemoryRowModel\n    ColumnController.prototype.isPivotActive = function () {\n        return this.pivotColumns && this.pivotColumns.length > 0 && this.pivotMode;\n    };\n    // + toolPanel\n    ColumnController.prototype.getRowGroupColumns = function () {\n        return this.rowGroupColumns ? this.rowGroupColumns : [];\n    };\n    // + rowController -> while inserting rows\n    ColumnController.prototype.getDisplayedCenterColumns = function () {\n        return this.displayedCenterColumns;\n    };\n    // + rowController -> while inserting rows\n    ColumnController.prototype.getDisplayedLeftColumns = function () {\n        return this.displayedLeftColumns;\n    };\n    ColumnController.prototype.getDisplayedRightColumns = function () {\n        return this.displayedRightColumns;\n    };\n    ColumnController.prototype.getDisplayedColumns = function (type) {\n        switch (type) {\n            case column_1.Column.PINNED_LEFT: return this.getDisplayedLeftColumns();\n            case column_1.Column.PINNED_RIGHT: return this.getDisplayedRightColumns();\n            default: return this.getDisplayedCenterColumns();\n        }\n    };\n    // used by:\n    // + inMemoryRowController -> sorting, building quick filter text\n    // + headerRenderer -> sorting (clearing icon)\n    ColumnController.prototype.getAllPrimaryColumns = function () {\n        return this.primaryColumns;\n    };\n    // + moveColumnController\n    ColumnController.prototype.getAllGridColumns = function () {\n        return this.gridColumns;\n    };\n    ColumnController.prototype.isEmpty = function () {\n        return utils_1.Utils.missingOrEmpty(this.gridColumns);\n    };\n    ColumnController.prototype.isRowGroupEmpty = function () {\n        return utils_1.Utils.missingOrEmpty(this.rowGroupColumns);\n    };\n    ColumnController.prototype.setColumnVisible = function (key, visible) {\n        this.setColumnsVisible([key], visible);\n    };\n    ColumnController.prototype.setColumnsVisible = function (keys, visible) {\n        var _this = this;\n        this.columnAnimationService.start();\n        this.actionOnGridColumns(keys, function (column) {\n            column.setVisible(visible);\n            return true;\n        }, function () {\n            var event = {\n                type: events_1.Events.EVENT_COLUMN_VISIBLE,\n                visible: visible,\n                column: null,\n                columns: null,\n                api: _this.gridApi,\n                columnApi: _this.columnApi\n            };\n            return event;\n        });\n        this.columnAnimationService.finish();\n    };\n    ColumnController.prototype.setColumnPinned = function (key, pinned) {\n        this.setColumnsPinned([key], pinned);\n    };\n    ColumnController.prototype.setColumnsPinned = function (keys, pinned) {\n        var _this = this;\n        this.columnAnimationService.start();\n        var actualPinned;\n        if (pinned === true || pinned === column_1.Column.PINNED_LEFT) {\n            actualPinned = column_1.Column.PINNED_LEFT;\n        }\n        else if (pinned === column_1.Column.PINNED_RIGHT) {\n            actualPinned = column_1.Column.PINNED_RIGHT;\n        }\n        else {\n            actualPinned = null;\n        }\n        this.actionOnGridColumns(keys, function (col) {\n            if (col.getPinned() !== actualPinned) {\n                col.setPinned(actualPinned);\n                return true;\n            }\n            else {\n                return false;\n            }\n        }, function () {\n            var event = {\n                type: events_1.Events.EVENT_COLUMN_PINNED,\n                pinned: actualPinned,\n                column: null,\n                columns: null,\n                api: _this.gridApi,\n                columnApi: _this.columnApi\n            };\n            return event;\n        });\n        this.columnAnimationService.finish();\n    };\n    // does an action on a set of columns. provides common functionality for looking up the\n    // columns based on key, getting a list of effected columns, and then updated the event\n    // with either one column (if it was just one col) or a list of columns\n    // used by: autoResize, setVisible, setPinned\n    ColumnController.prototype.actionOnGridColumns = function (// the column keys this action will be on\n        keys, \n        // the action to do - if this returns false, the column was skipped\n        // and won't be included in the event\n        action, \n        // should return back a column event of the right type\n        createEvent) {\n        var _this = this;\n        if (utils_1.Utils.missingOrEmpty(keys)) {\n            return;\n        }\n        var updatedColumns = [];\n        keys.forEach(function (key) {\n            var column = _this.getGridColumn(key);\n            if (!column) {\n                return;\n            }\n            // need to check for false with type (ie !== instead of !=)\n            // as not returning anything (undefined) would also be false\n            var resultOfAction = action(column);\n            if (resultOfAction !== false) {\n                updatedColumns.push(column);\n            }\n        });\n        if (updatedColumns.length === 0) {\n            return;\n        }\n        this.updateDisplayedColumns();\n        if (utils_1.Utils.exists(createEvent)) {\n            var event_5 = createEvent();\n            event_5.columns = updatedColumns;\n            event_5.column = updatedColumns.length === 1 ? updatedColumns[0] : null;\n            this.eventService.dispatchEvent(event_5);\n        }\n    };\n    ColumnController.prototype.getDisplayedColBefore = function (col) {\n        var allDisplayedColumns = this.getAllDisplayedColumns();\n        var oldIndex = allDisplayedColumns.indexOf(col);\n        if (oldIndex > 0) {\n            return allDisplayedColumns[oldIndex - 1];\n        }\n        else {\n            return null;\n        }\n    };\n    // used by:\n    // + rowRenderer -> for navigation\n    ColumnController.prototype.getDisplayedColAfter = function (col) {\n        var allDisplayedColumns = this.getAllDisplayedColumns();\n        var oldIndex = allDisplayedColumns.indexOf(col);\n        if (oldIndex < (allDisplayedColumns.length - 1)) {\n            return allDisplayedColumns[oldIndex + 1];\n        }\n        else {\n            return null;\n        }\n    };\n    ColumnController.prototype.isPinningLeft = function () {\n        return this.displayedLeftColumns.length > 0;\n    };\n    ColumnController.prototype.isPinningRight = function () {\n        return this.displayedRightColumns.length > 0;\n    };\n    ColumnController.prototype.getPrimaryAndSecondaryAndAutoColumns = function () {\n        var result = this.primaryColumns ? this.primaryColumns.slice(0) : [];\n        if (utils_1.Utils.exists(this.groupAutoColumns)) {\n            this.groupAutoColumns.forEach(function (col) { return result.push(col); });\n        }\n        if (this.secondaryColumnsPresent) {\n            this.secondaryColumns.forEach(function (column) { return result.push(column); });\n        }\n        return result;\n    };\n    ColumnController.prototype.createStateItemFromColumn = function (column) {\n        var rowGroupIndex = column.isRowGroupActive() ? this.rowGroupColumns.indexOf(column) : null;\n        var pivotIndex = column.isPivotActive() ? this.pivotColumns.indexOf(column) : null;\n        var aggFunc = column.isValueActive() ? column.getAggFunc() : null;\n        var resultItem = {\n            colId: column.getColId(),\n            hide: !column.isVisible(),\n            aggFunc: aggFunc,\n            width: column.getActualWidth(),\n            pivotIndex: pivotIndex,\n            pinned: column.getPinned(),\n            rowGroupIndex: rowGroupIndex\n        };\n        return resultItem;\n    };\n    ColumnController.prototype.getColumnState = function () {\n        if (utils_1.Utils.missing(this.primaryColumns)) {\n            return [];\n        }\n        var columnStateList = this.primaryColumns.map(this.createStateItemFromColumn.bind(this));\n        if (!this.pivotMode) {\n            this.orderColumnStateList(columnStateList);\n        }\n        return columnStateList;\n    };\n    ColumnController.prototype.orderColumnStateList = function (columnStateList) {\n        var gridColumnIds = this.gridColumns.map(function (column) { return column.getColId(); });\n        columnStateList.sort(function (itemA, itemB) {\n            var posA = gridColumnIds.indexOf(itemA.colId);\n            var posB = gridColumnIds.indexOf(itemB.colId);\n            return posA - posB;\n        });\n    };\n    ColumnController.prototype.resetColumnState = function () {\n        // we can't use 'allColumns' as the order might of messed up, so get the primary ordered list\n        var primaryColumns = this.getColumnsFromTree(this.primaryBalancedTree);\n        var state = [];\n        if (primaryColumns) {\n            primaryColumns.forEach(function (column) {\n                state.push({\n                    colId: column.getColId(),\n                    aggFunc: column.getColDef().aggFunc,\n                    hide: column.getColDef().hide,\n                    pinned: column.getColDef().pinned,\n                    rowGroupIndex: column.getColDef().rowGroupIndex,\n                    pivotIndex: column.getColDef().pivotIndex,\n                    width: column.getColDef().width\n                });\n            });\n        }\n        this.setColumnState(state);\n    };\n    ColumnController.prototype.setColumnState = function (columnState) {\n        var _this = this;\n        if (utils_1.Utils.missingOrEmpty(this.primaryColumns)) {\n            return false;\n        }\n        this.autoGroupsNeedBuilding = true;\n        // at the end below, this list will have all columns we got no state for\n        var columnsWithNoState = this.primaryColumns.slice();\n        this.rowGroupColumns = [];\n        this.valueColumns = [];\n        this.pivotColumns = [];\n        var success = true;\n        var rowGroupIndexes = {};\n        var pivotIndexes = {};\n        if (columnState) {\n            columnState.forEach(function (stateItem) {\n                var column = _this.getPrimaryColumn(stateItem.colId);\n                if (!column) {\n                    console.warn('ag-grid: column ' + stateItem.colId + ' not found');\n                    success = false;\n                }\n                else {\n                    _this.syncColumnWithStateItem(column, stateItem, rowGroupIndexes, pivotIndexes);\n                    utils_1.Utils.removeFromArray(columnsWithNoState, column);\n                }\n            });\n        }\n        // anything left over, we got no data for, so add in the column as non-value, non-rowGroup and hidden\n        columnsWithNoState.forEach(this.syncColumnWithNoState.bind(this));\n        // sort the lists according to the indexes that were provided\n        this.rowGroupColumns.sort(this.sortColumnListUsingIndexes.bind(this, rowGroupIndexes));\n        this.pivotColumns.sort(this.sortColumnListUsingIndexes.bind(this, pivotIndexes));\n        this.copyDownGridColumns();\n        var orderOfColIds = columnState.map(function (stateItem) { return stateItem.colId; });\n        this.gridColumns.sort(function (colA, colB) {\n            var indexA = orderOfColIds.indexOf(colA.getId());\n            var indexB = orderOfColIds.indexOf(colB.getId());\n            return indexA - indexB;\n        });\n        this.updateDisplayedColumns();\n        var event = {\n            type: events_1.Events.EVENT_COLUMN_EVERYTHING_CHANGED,\n            api: this.gridApi,\n            columnApi: this.columnApi\n        };\n        this.eventService.dispatchEvent(event);\n        return success;\n    };\n    ColumnController.prototype.sortColumnListUsingIndexes = function (indexes, colA, colB) {\n        var indexA = indexes[colA.getId()];\n        var indexB = indexes[colB.getId()];\n        return indexA - indexB;\n    };\n    ColumnController.prototype.syncColumnWithNoState = function (column) {\n        column.setVisible(false);\n        column.setAggFunc(null);\n        column.setPinned(null);\n        column.setRowGroupActive(false);\n        column.setPivotActive(false);\n        column.setValueActive(false);\n    };\n    ColumnController.prototype.syncColumnWithStateItem = function (column, stateItem, rowGroupIndexes, pivotIndexes) {\n        // following ensures we are left with boolean true or false, eg converts (null, undefined, 0) all to true\n        column.setVisible(!stateItem.hide);\n        // sets pinned to 'left' or 'right'\n        column.setPinned(stateItem.pinned);\n        // if width provided and valid, use it, otherwise stick with the old width\n        if (stateItem.width >= this.gridOptionsWrapper.getMinColWidth()) {\n            column.setActualWidth(stateItem.width);\n        }\n        if (typeof stateItem.aggFunc === 'string') {\n            column.setAggFunc(stateItem.aggFunc);\n            column.setValueActive(true);\n            this.valueColumns.push(column);\n        }\n        else {\n            if (utils_1.Utils.exists(stateItem.aggFunc)) {\n                console.warn('ag-Grid: stateItem.aggFunc must be a string. if using your own aggregation ' +\n                    'functions, register the functions first before using them in get/set state. This is because it is' +\n                    'intended for the column state to be stored and retrieved as simple JSON.');\n            }\n            column.setAggFunc(null);\n            column.setValueActive(false);\n        }\n        if (typeof stateItem.rowGroupIndex === 'number') {\n            this.rowGroupColumns.push(column);\n            column.setRowGroupActive(true);\n            rowGroupIndexes[column.getId()] = stateItem.rowGroupIndex;\n        }\n        else {\n            column.setRowGroupActive(false);\n        }\n        if (typeof stateItem.pivotIndex === 'number') {\n            this.pivotColumns.push(column);\n            column.setPivotActive(true);\n            pivotIndexes[column.getId()] = stateItem.pivotIndex;\n        }\n        else {\n            column.setPivotActive(false);\n        }\n    };\n    ColumnController.prototype.getGridColumns = function (keys) {\n        return this.getColumns(keys, this.getGridColumn.bind(this));\n    };\n    ColumnController.prototype.getColumns = function (keys, columnLookupCallback) {\n        var foundColumns = [];\n        if (keys) {\n            keys.forEach(function (key) {\n                var column = columnLookupCallback(key);\n                if (column) {\n                    foundColumns.push(column);\n                }\n            });\n        }\n        return foundColumns;\n    };\n    // used by growGroupPanel\n    ColumnController.prototype.getColumnWithValidation = function (key) {\n        var column = this.getPrimaryColumn(key);\n        if (!column) {\n            console.warn('ag-Grid: could not find column ' + column);\n        }\n        return column;\n    };\n    ColumnController.prototype.getPrimaryColumn = function (key) {\n        return this.getColumn(key, this.primaryColumns);\n    };\n    ColumnController.prototype.getGridColumn = function (key) {\n        return this.getColumn(key, this.gridColumns);\n    };\n    ColumnController.prototype.getColumn = function (key, columnList) {\n        if (!key) {\n            return null;\n        }\n        for (var i = 0; i < columnList.length; i++) {\n            if (this.columnsMatch(columnList[i], key)) {\n                return columnList[i];\n            }\n        }\n        return this.getAutoColumn(key);\n    };\n    ColumnController.prototype.getAutoColumn = function (key) {\n        var _this = this;\n        if (!utils_1.Utils.exists(this.groupAutoColumns) || utils_1.Utils.missing(this.groupAutoColumns)) {\n            return null;\n        }\n        return utils_1.Utils.find(this.groupAutoColumns, function (groupCol) {\n            return _this.columnsMatch(groupCol, key);\n        });\n    };\n    ColumnController.prototype.columnsMatch = function (column, key) {\n        var columnMatches = column === key;\n        var colDefMatches = column.getColDef() === key;\n        var idMatches = column.getColId() == key;\n        return columnMatches || colDefMatches || idMatches;\n    };\n    ColumnController.prototype.getDisplayNameForColumn = function (column, location, includeAggFunc) {\n        if (includeAggFunc === void 0) { includeAggFunc = false; }\n        var headerName = this.getHeaderName(column.getColDef(), column, null, location);\n        if (includeAggFunc) {\n            return this.wrapHeaderNameWithAggFunc(column, headerName);\n        }\n        else {\n            return headerName;\n        }\n    };\n    ColumnController.prototype.getDisplayNameForColumnGroup = function (columnGroup, location) {\n        var colGroupDef = columnGroup.getOriginalColumnGroup().getColGroupDef();\n        if (colGroupDef) {\n            return this.getHeaderName(colGroupDef, null, columnGroup, location);\n        }\n        else {\n            return null;\n        }\n    };\n    // location is where the column is going to appear, ie who is calling us\n    ColumnController.prototype.getHeaderName = function (colDef, column, columnGroup, location) {\n        var headerValueGetter = colDef.headerValueGetter;\n        if (headerValueGetter) {\n            var params = {\n                colDef: colDef,\n                column: column,\n                columnGroup: columnGroup,\n                location: location,\n                api: this.gridOptionsWrapper.getApi(),\n                context: this.gridOptionsWrapper.getContext()\n            };\n            if (typeof headerValueGetter === 'function') {\n                // valueGetter is a function, so just call it\n                return headerValueGetter(params);\n            }\n            else if (typeof headerValueGetter === 'string') {\n                // valueGetter is an expression, so execute the expression\n                return this.expressionService.evaluate(headerValueGetter, params);\n            }\n            else {\n                console.warn('ag-grid: headerValueGetter must be a function or a string');\n                return '';\n            }\n        }\n        else if (colDef.headerName != null) {\n            return colDef.headerName;\n        }\n        else if (colDef.field) {\n            return utils_1.Utils.camelCaseToHumanText(colDef.field);\n        }\n        else {\n            return '';\n        }\n    };\n    /*\n        private getHeaderGroupName(columnGroup: ColumnGroup): string {\n            let colGroupDef = columnGroup.getOriginalColumnGroup().getColGroupDef();\n            let headerValueGetter = colGroupDef.headerValueGetter;\n\n            if (headerValueGetter) {\n                let params = {\n                    columnGroup: columnGroup,\n                    colDef: colGroupDef,\n                    api: this.gridOptionsWrapper.getApi(),\n                    context: this.gridOptionsWrapper.getContext()\n                };\n\n                if (typeof headerValueGetter === 'function') {\n                    // valueGetter is a function, so just call it\n                    return headerValueGetter(params);\n                } else if (typeof headerValueGetter === 'string') {\n                    // valueGetter is an expression, so execute the expression\n                    return this.expressionService.evaluate(headerValueGetter, params);\n                } else {\n                    console.warn('ag-grid: headerValueGetter must be a function or a string');\n                    return '';\n                }\n            } else {\n                return colGroupDef.headerName;\n            }\n        }\n    */\n    ColumnController.prototype.wrapHeaderNameWithAggFunc = function (column, headerName) {\n        if (this.gridOptionsWrapper.isSuppressAggFuncInHeader()) {\n            return headerName;\n        }\n        // only columns with aggregation active can have aggregations\n        var pivotValueColumn = column.getColDef().pivotValueColumn;\n        var pivotActiveOnThisColumn = utils_1.Utils.exists(pivotValueColumn);\n        var aggFunc = null;\n        var aggFuncFound;\n        // otherwise we have a measure that is active, and we are doing aggregation on it\n        if (pivotActiveOnThisColumn) {\n            aggFunc = pivotValueColumn.getAggFunc();\n            aggFuncFound = true;\n        }\n        else {\n            var measureActive = column.isValueActive();\n            var aggregationPresent = this.pivotMode || !this.isRowGroupEmpty();\n            if (measureActive && aggregationPresent) {\n                aggFunc = column.getAggFunc();\n                aggFuncFound = true;\n            }\n            else {\n                aggFuncFound = false;\n            }\n        }\n        if (aggFuncFound) {\n            var aggFuncString = (typeof aggFunc === 'string') ? aggFunc : 'func';\n            var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n            var aggFuncStringTranslated = localeTextFunc(aggFuncString, aggFuncString);\n            return aggFuncStringTranslated + \"(\" + headerName + \")\";\n        }\n        else {\n            return headerName;\n        }\n    };\n    // returns the group with matching colId and instanceId. If instanceId is missing,\n    // matches only on the colId.\n    ColumnController.prototype.getColumnGroup = function (colId, instanceId) {\n        if (!colId) {\n            return null;\n        }\n        if (colId instanceof columnGroup_1.ColumnGroup) {\n            return colId;\n        }\n        var allColumnGroups = this.getAllDisplayedColumnGroups();\n        var checkInstanceId = typeof instanceId === 'number';\n        var result = null;\n        this.columnUtils.depthFirstAllColumnTreeSearch(allColumnGroups, function (child) {\n            if (child instanceof columnGroup_1.ColumnGroup) {\n                var columnGroup = child;\n                var matched = void 0;\n                if (checkInstanceId) {\n                    matched = colId === columnGroup.getGroupId() && instanceId === columnGroup.getInstanceId();\n                }\n                else {\n                    matched = colId === columnGroup.getGroupId();\n                }\n                if (matched) {\n                    result = columnGroup;\n                }\n            }\n        });\n        return result;\n    };\n    ColumnController.prototype.setColumnDefs = function (columnDefs) {\n        // always invalidate cache on changing columns, as the column id's for the new columns\n        // could overlap with the old id's, so the cache would return old values for new columns.\n        this.valueCache.expire();\n        // NOTE ==================\n        // we should be destroying the existing columns and groups if they exist, for example, the original column\n        // group adds a listener to the columns, it should be also removing the listeners\n        this.autoGroupsNeedBuilding = true;\n        var balancedTreeResult = this.balancedColumnTreeBuilder.createBalancedColumnGroups(columnDefs, true);\n        this.primaryBalancedTree = balancedTreeResult.balancedTree;\n        this.primaryHeaderRowCount = balancedTreeResult.treeDept + 1;\n        this.primaryColumns = this.getColumnsFromTree(this.primaryBalancedTree);\n        this.extractRowGroupColumns();\n        this.extractPivotColumns();\n        this.createValueColumns();\n        this.copyDownGridColumns();\n        this.updateDisplayedColumns();\n        this.checkDisplayedVirtualColumns();\n        this.ready = true;\n        var eventEverythingChanged = {\n            type: events_1.Events.EVENT_COLUMN_EVERYTHING_CHANGED,\n            api: this.gridApi,\n            columnApi: this.columnApi\n        };\n        this.eventService.dispatchEvent(eventEverythingChanged);\n        var newColumnsLoadedEvent = {\n            type: events_1.Events.EVENT_NEW_COLUMNS_LOADED,\n            api: this.gridApi,\n            columnApi: this.columnApi\n        };\n        this.eventService.dispatchEvent(newColumnsLoadedEvent);\n    };\n    ColumnController.prototype.isReady = function () {\n        return this.ready;\n    };\n    ColumnController.prototype.extractRowGroupColumns = function () {\n        var _this = this;\n        this.rowGroupColumns.forEach(function (column) { return column.setRowGroupActive(false); });\n        this.rowGroupColumns = [];\n        // pull out items with rowGroupIndex\n        this.primaryColumns.forEach(function (column) {\n            if (typeof column.getColDef().rowGroupIndex === 'number') {\n                _this.rowGroupColumns.push(column);\n                column.setRowGroupActive(true);\n            }\n        });\n        // then sort them\n        this.rowGroupColumns.sort(function (colA, colB) {\n            return colA.getColDef().rowGroupIndex - colB.getColDef().rowGroupIndex;\n        });\n        // now just pull out items rowGroup, they will be added at the end\n        // after the indexed ones, but in the order the columns appear\n        this.primaryColumns.forEach(function (column) {\n            if (column.getColDef().rowGroup) {\n                // if user already specified rowGroupIndex then we skip it as this col already included\n                if (_this.rowGroupColumns.indexOf(column) >= 0) {\n                    return;\n                }\n                _this.rowGroupColumns.push(column);\n                column.setRowGroupActive(true);\n            }\n        });\n    };\n    ColumnController.prototype.extractPivotColumns = function () {\n        var _this = this;\n        this.pivotColumns.forEach(function (column) { return column.setPivotActive(false); });\n        this.pivotColumns = [];\n        // pull out items with pivotIndex\n        this.primaryColumns.forEach(function (column) {\n            if (typeof column.getColDef().pivotIndex === 'number') {\n                _this.pivotColumns.push(column);\n                column.setPivotActive(true);\n            }\n        });\n        // then sort them\n        this.pivotColumns.sort(function (colA, colB) {\n            return colA.getColDef().pivotIndex - colB.getColDef().pivotIndex;\n        });\n        // now check the boolean equivalent\n        this.primaryColumns.forEach(function (column) {\n            if (column.getColDef().pivot) {\n                // if user already specified pivotIndex then we skip it as this col already included\n                if (_this.pivotColumns.indexOf(column) >= 0) {\n                    return;\n                }\n                _this.pivotColumns.push(column);\n                column.setPivotActive(true);\n            }\n        });\n    };\n    ColumnController.prototype.resetColumnGroupState = function () {\n        var stateItems = [];\n        this.columnUtils.depthFirstOriginalTreeSearch(this.primaryBalancedTree, function (child) {\n            if (child instanceof originalColumnGroup_1.OriginalColumnGroup) {\n                var groupState = {\n                    groupId: child.getGroupId(),\n                    open: child.getColGroupDef().openByDefault\n                };\n                stateItems.push(groupState);\n            }\n        });\n        this.setColumnGroupState(stateItems);\n    };\n    ColumnController.prototype.getColumnGroupState = function () {\n        var columnGroupState = [];\n        this.columnUtils.depthFirstOriginalTreeSearch(this.gridBalancedTree, function (node) {\n            if (node instanceof originalColumnGroup_1.OriginalColumnGroup) {\n                var originalColumnGroup = node;\n                columnGroupState.push({\n                    groupId: originalColumnGroup.getGroupId(),\n                    open: originalColumnGroup.isExpanded()\n                });\n            }\n        });\n        return columnGroupState;\n    };\n    ColumnController.prototype.setColumnGroupState = function (stateItems) {\n        var _this = this;\n        this.columnAnimationService.start();\n        var impactedGroups = [];\n        stateItems.forEach(function (stateItem) {\n            var groupKey = stateItem.groupId;\n            var newValue = stateItem.open;\n            var originalColumnGroup = _this.getOriginalColumnGroup(groupKey);\n            if (!originalColumnGroup) {\n                return;\n            }\n            if (originalColumnGroup.isExpanded() === newValue) {\n                return;\n            }\n            _this.logger.log('columnGroupOpened(' + originalColumnGroup.getGroupId() + ',' + newValue + ')');\n            originalColumnGroup.setExpanded(newValue);\n            impactedGroups.push(originalColumnGroup);\n        });\n        this.updateGroupsAndDisplayedColumns();\n        impactedGroups.forEach(function (originalColumnGroup) {\n            var event = {\n                type: events_1.Events.EVENT_COLUMN_GROUP_OPENED,\n                columnGroup: originalColumnGroup,\n                api: _this.gridApi,\n                columnApi: _this.columnApi\n            };\n            _this.eventService.dispatchEvent(event);\n        });\n        this.columnAnimationService.finish();\n    };\n    // called by headerRenderer - when a header is opened or closed\n    ColumnController.prototype.setColumnGroupOpened = function (key, newValue) {\n        var keyAsString;\n        if (key instanceof originalColumnGroup_1.OriginalColumnGroup) {\n            keyAsString = key.getId();\n        }\n        else {\n            keyAsString = key;\n        }\n        this.setColumnGroupState([{ groupId: keyAsString, open: newValue }]);\n    };\n    ColumnController.prototype.getOriginalColumnGroup = function (key) {\n        if (key instanceof originalColumnGroup_1.OriginalColumnGroup) {\n            return key;\n        }\n        if (typeof key !== 'string') {\n            console.error('ag-Grid: group key must be a string');\n        }\n        // otherwise, search for the column group by id\n        var res = null;\n        this.columnUtils.depthFirstOriginalTreeSearch(this.gridBalancedTree, function (node) {\n            if (node instanceof originalColumnGroup_1.OriginalColumnGroup) {\n                var originalColumnGroup = node;\n                if (originalColumnGroup.getId() === key) {\n                    res = originalColumnGroup;\n                }\n            }\n        });\n        return res;\n    };\n    ColumnController.prototype.calculateColumnsForDisplay = function () {\n        var columnsForDisplay;\n        if (this.pivotMode && !this.secondaryColumnsPresent) {\n            // pivot mode is on, but we are not pivoting, so we only\n            // show columns we are aggregating on\n            columnsForDisplay = this.createColumnsToDisplayFromValueColumns();\n        }\n        else {\n            // otherwise continue as normal. this can be working on the primary\n            // or secondary columns, whatever the gridColumns are set to\n            columnsForDisplay = utils_1.Utils.filter(this.gridColumns, function (column) { return column.isVisible(); });\n        }\n        this.createGroupAutoColumnsIfNeeded();\n        if (utils_1.Utils.exists(this.groupAutoColumns)) {\n            columnsForDisplay = this.groupAutoColumns.concat(columnsForDisplay);\n        }\n        return columnsForDisplay;\n    };\n    ColumnController.prototype.checkColSpanActiveInCols = function (columns) {\n        var result = false;\n        columns.forEach(function (col) {\n            if (utils_1.Utils.exists(col.getColDef().colSpan)) {\n                result = true;\n            }\n        });\n        return result;\n    };\n    ColumnController.prototype.calculateColumnsForGroupDisplay = function () {\n        var _this = this;\n        this.groupDisplayColumns = [];\n        var checkFunc = function (col) {\n            var colDef = col.getColDef();\n            if (colDef && utils_1.Utils.exists(colDef.showRowGroup)) {\n                _this.groupDisplayColumns.push(col);\n            }\n        };\n        this.gridColumns.forEach(checkFunc);\n        if (this.groupAutoColumns) {\n            this.groupAutoColumns.forEach(checkFunc);\n        }\n    };\n    ColumnController.prototype.getGroupDisplayColumns = function () {\n        return this.groupDisplayColumns;\n    };\n    ColumnController.prototype.createColumnsToDisplayFromValueColumns = function () {\n        var _this = this;\n        // make a copy of the value columns, so we have to side effects\n        var result = this.valueColumns.slice();\n        // order the columns as per the grid columns. having the order is\n        // important as without it, reordering of columns would have no impact\n        result.sort(function (colA, colB) {\n            return _this.gridColumns.indexOf(colA) - _this.gridColumns.indexOf(colB);\n        });\n        return result;\n    };\n    ColumnController.prototype.updateDisplayedColumns = function () {\n        var columnsForDisplay = this.calculateColumnsForDisplay();\n        this.buildDisplayedTrees(columnsForDisplay);\n        this.calculateColumnsForGroupDisplay();\n        // this is also called when a group is opened or closed\n        this.updateGroupsAndDisplayedColumns();\n        this.setFirstRightAndLastLeftPinned();\n    };\n    ColumnController.prototype.isSecondaryColumnsPresent = function () {\n        return this.secondaryColumnsPresent;\n    };\n    ColumnController.prototype.setSecondaryColumns = function (colDefs) {\n        var newColsPresent = colDefs && colDefs.length > 0;\n        // if not cols passed, and we had to cols anyway, then do nothing\n        if (!newColsPresent && !this.secondaryColumnsPresent) {\n            return;\n        }\n        if (newColsPresent) {\n            this.processSecondaryColumnDefinitions(colDefs);\n            var balancedTreeResult = this.balancedColumnTreeBuilder.createBalancedColumnGroups(colDefs, false);\n            this.secondaryBalancedTree = balancedTreeResult.balancedTree;\n            this.secondaryHeaderRowCount = balancedTreeResult.treeDept + 1;\n            this.secondaryColumns = this.getColumnsFromTree(this.secondaryBalancedTree);\n            this.secondaryColumnsPresent = true;\n        }\n        else {\n            this.secondaryBalancedTree = null;\n            this.secondaryHeaderRowCount = -1;\n            this.secondaryColumns = null;\n            this.secondaryColumnsPresent = false;\n        }\n        this.copyDownGridColumns();\n        this.updateDisplayedColumns();\n    };\n    ColumnController.prototype.processSecondaryColumnDefinitions = function (colDefs) {\n        var columnCallback = this.gridOptionsWrapper.getProcessSecondaryColDefFunc();\n        var groupCallback = this.gridOptionsWrapper.getProcessSecondaryColGroupDefFunc();\n        if (!columnCallback && !groupCallback) {\n            return;\n        }\n        searchForColDefs(colDefs);\n        function searchForColDefs(colDefs2) {\n            colDefs2.forEach(function (abstractColDef) {\n                var isGroup = utils_1.Utils.exists(abstractColDef.children);\n                if (isGroup) {\n                    var colGroupDef = abstractColDef;\n                    if (groupCallback) {\n                        groupCallback(colGroupDef);\n                    }\n                    searchForColDefs(colGroupDef.children);\n                }\n                else {\n                    var colDef = abstractColDef;\n                    if (columnCallback) {\n                        columnCallback(colDef);\n                    }\n                }\n            });\n        }\n    };\n    // called from: setColumnState, setColumnDefs, setAlternativeColumnDefs\n    ColumnController.prototype.copyDownGridColumns = function () {\n        if (this.secondaryColumns) {\n            this.gridBalancedTree = this.secondaryBalancedTree.slice();\n            this.gridHeaderRowCount = this.secondaryHeaderRowCount;\n            this.gridColumns = this.secondaryColumns.slice();\n        }\n        else {\n            this.gridBalancedTree = this.primaryBalancedTree.slice();\n            this.gridHeaderRowCount = this.primaryHeaderRowCount;\n            this.gridColumns = this.primaryColumns.slice();\n        }\n        this.clearDisplayedColumns();\n        this.colSpanActive = this.checkColSpanActiveInCols(this.gridColumns);\n        var event = {\n            type: events_1.Events.EVENT_GRID_COLUMNS_CHANGED,\n            api: this.gridApi,\n            columnApi: this.columnApi\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    // gets called after we copy down grid columns, to make sure any part of the gui\n    // that tries to draw, eg the header, it will get empty lists of columns rather\n    // than stale columns. for example, the header will received gridColumnsChanged\n    // event, so will try and draw, but it will draw successfully when it acts on the\n    // virtualColumnsChanged event\n    ColumnController.prototype.clearDisplayedColumns = function () {\n        this.displayedLeftColumnTree = [];\n        this.displayedRightColumnTree = [];\n        this.displayedCentreColumnTree = [];\n        this.displayedLeftHeaderRows = {};\n        this.displayedRightHeaderRows = {};\n        this.displayedCentreHeaderRows = {};\n        this.displayedLeftColumns = [];\n        this.displayedRightColumns = [];\n        this.displayedCenterColumns = [];\n        this.allDisplayedColumns = [];\n        this.allDisplayedVirtualColumns = [];\n    };\n    ColumnController.prototype.updateGroupsAndDisplayedColumns = function () {\n        this.updateGroups();\n        this.updateDisplayedColumnsFromTrees();\n        this.updateVirtualSets();\n        this.updateBodyWidths();\n        // this event is picked up by the gui, headerRenderer and rowRenderer, to recalculate what columns to display\n        var event = {\n            type: events_1.Events.EVENT_DISPLAYED_COLUMNS_CHANGED,\n            api: this.gridApi,\n            columnApi: this.columnApi\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    ColumnController.prototype.updateDisplayedColumnsFromTrees = function () {\n        this.addToDisplayedColumns(this.displayedLeftColumnTree, this.displayedLeftColumns);\n        this.addToDisplayedColumns(this.displayedCentreColumnTree, this.displayedCenterColumns);\n        this.addToDisplayedColumns(this.displayedRightColumnTree, this.displayedRightColumns);\n        this.setupAllDisplayedColumns();\n        this.setLeftValues();\n    };\n    ColumnController.prototype.setupAllDisplayedColumns = function () {\n        if (this.gridOptionsWrapper.isEnableRtl()) {\n            this.allDisplayedColumns = this.displayedRightColumns\n                .concat(this.displayedCenterColumns)\n                .concat(this.displayedLeftColumns);\n        }\n        else {\n            this.allDisplayedColumns = this.displayedLeftColumns\n                .concat(this.displayedCenterColumns)\n                .concat(this.displayedRightColumns);\n        }\n    };\n    // sets the left pixel position of each column\n    ColumnController.prototype.setLeftValues = function () {\n        this.setLeftValuesOfColumns();\n        this.setLeftValuesOfGroups();\n    };\n    ColumnController.prototype.setLeftValuesOfColumns = function () {\n        var _this = this;\n        // go through each list of displayed columns\n        var allColumns = this.primaryColumns.slice(0);\n        // let totalColumnWidth = this.getWidthOfColsInList()\n        var doingRtl = this.gridOptionsWrapper.isEnableRtl();\n        [this.displayedLeftColumns, this.displayedRightColumns, this.displayedCenterColumns].forEach(function (columns) {\n            if (doingRtl) {\n                // when doing RTL, we start at the top most pixel (ie RHS) and work backwards\n                var left_1 = _this.getWidthOfColsInList(columns);\n                columns.forEach(function (column) {\n                    left_1 -= column.getActualWidth();\n                    column.setLeft(left_1);\n                });\n            }\n            else {\n                // otherwise normal LTR, we start at zero\n                var left_2 = 0;\n                columns.forEach(function (column) {\n                    column.setLeft(left_2);\n                    left_2 += column.getActualWidth();\n                });\n            }\n            utils_1.Utils.removeAllFromArray(allColumns, columns);\n        });\n        // items left in allColumns are columns not displayed, so remove the left position. this is\n        // important for the rows, as if a col is made visible, then taken out, then made visible again,\n        // we don't want the animation of the cell floating in from the old position, whatever that was.\n        allColumns.forEach(function (column) {\n            column.setLeft(null);\n        });\n    };\n    ColumnController.prototype.setLeftValuesOfGroups = function () {\n        // a groups left value is the lest left value of it's children\n        [this.displayedLeftColumnTree, this.displayedRightColumnTree, this.displayedCentreColumnTree].forEach(function (columns) {\n            columns.forEach(function (column) {\n                if (column instanceof columnGroup_1.ColumnGroup) {\n                    var columnGroup = column;\n                    columnGroup.checkLeft();\n                }\n            });\n        });\n    };\n    ColumnController.prototype.addToDisplayedColumns = function (displayedColumnTree, displayedColumns) {\n        displayedColumns.length = 0;\n        this.columnUtils.depthFirstDisplayedColumnTreeSearch(displayedColumnTree, function (child) {\n            if (child instanceof column_1.Column) {\n                displayedColumns.push(child);\n            }\n        });\n    };\n    ColumnController.prototype.updateDisplayedCenterVirtualColumns = function () {\n        var skipVirtualisation = this.gridOptionsWrapper.isSuppressColumnVirtualisation() || this.gridOptionsWrapper.isForPrint();\n        if (skipVirtualisation) {\n            // no virtualisation, so don't filter\n            this.allDisplayedCenterVirtualColumns = this.displayedCenterColumns;\n        }\n        else {\n            // filter out what should be visible\n            this.allDisplayedCenterVirtualColumns = this.filterOutColumnsWithinViewport();\n        }\n        this.allDisplayedVirtualColumns = this.allDisplayedCenterVirtualColumns\n            .concat(this.displayedLeftColumns)\n            .concat(this.displayedRightColumns);\n        // return map of virtual col id's, for easy lookup when building the groups.\n        // the map will be colId=>true, ie col id's mapping to 'true'.\n        var result = {};\n        this.allDisplayedVirtualColumns.forEach(function (col) {\n            result[col.getId()] = true;\n        });\n        return result;\n    };\n    ColumnController.prototype.getVirtualHeaderGroupRow = function (type, dept) {\n        var result;\n        switch (type) {\n            case column_1.Column.PINNED_LEFT:\n                result = this.displayedLeftHeaderRows[dept];\n                break;\n            case column_1.Column.PINNED_RIGHT:\n                result = this.displayedRightHeaderRows[dept];\n                break;\n            default:\n                result = this.displayedCentreHeaderRows[dept];\n                break;\n        }\n        if (utils_1.Utils.missing(result)) {\n            result = [];\n        }\n        return result;\n    };\n    ColumnController.prototype.updateDisplayedVirtualGroups = function (virtualColIds) {\n        // go through each group, see if any of it's cols are displayed, and if yes,\n        // then this group is included\n        this.displayedLeftHeaderRows = {};\n        this.displayedRightHeaderRows = {};\n        this.displayedCentreHeaderRows = {};\n        testGroup(this.displayedLeftColumnTree, this.displayedLeftHeaderRows, 0);\n        testGroup(this.displayedRightColumnTree, this.displayedRightHeaderRows, 0);\n        testGroup(this.displayedCentreColumnTree, this.displayedCentreHeaderRows, 0);\n        function testGroup(children, result, dept) {\n            var returnValue = false;\n            for (var i = 0; i < children.length; i++) {\n                // see if this item is within viewport\n                var child = children[i];\n                var addThisItem = void 0;\n                if (child instanceof column_1.Column) {\n                    // for column, test if column is included\n                    addThisItem = virtualColIds[child.getId()] === true;\n                }\n                else {\n                    // if group, base decision on children\n                    var columnGroup = child;\n                    addThisItem = testGroup(columnGroup.getDisplayedChildren(), result, dept + 1);\n                }\n                if (addThisItem) {\n                    returnValue = true;\n                    if (!result[dept]) {\n                        result[dept] = [];\n                    }\n                    result[dept].push(child);\n                }\n            }\n            return returnValue;\n        }\n    };\n    ColumnController.prototype.updateVirtualSets = function () {\n        var virtualColIds = this.updateDisplayedCenterVirtualColumns();\n        this.updateDisplayedVirtualGroups(virtualColIds);\n    };\n    ColumnController.prototype.filterOutColumnsWithinViewport = function () {\n        return utils_1.Utils.filter(this.displayedCenterColumns, this.isColumnInViewport.bind(this));\n    };\n    // called from api\n    ColumnController.prototype.sizeColumnsToFit = function (gridWidth) {\n        var _this = this;\n        // avoid divide by zero\n        var allDisplayedColumns = this.getAllDisplayedColumns();\n        if (gridWidth <= 0 || allDisplayedColumns.length === 0) {\n            return;\n        }\n        var colsToNotSpread = utils_1.Utils.filter(allDisplayedColumns, function (column) {\n            return column.getColDef().suppressSizeToFit === true;\n        });\n        var colsToSpread = utils_1.Utils.filter(allDisplayedColumns, function (column) {\n            return column.getColDef().suppressSizeToFit !== true;\n        });\n        // make a copy of the cols that are going to be resized\n        var colsToFireEventFor = colsToSpread.slice(0);\n        var finishedResizing = false;\n        while (!finishedResizing) {\n            finishedResizing = true;\n            var availablePixels = gridWidth - this.getWidthOfColsInList(colsToNotSpread);\n            if (availablePixels <= 0) {\n                // no width, set everything to minimum\n                colsToSpread.forEach(function (column) {\n                    column.setMinimum();\n                });\n            }\n            else {\n                var scale = availablePixels / this.getWidthOfColsInList(colsToSpread);\n                // we set the pixels for the last col based on what's left, as otherwise\n                // we could be a pixel or two short or extra because of rounding errors.\n                var pixelsForLastCol = availablePixels;\n                // backwards through loop, as we are removing items as we go\n                for (var i = colsToSpread.length - 1; i >= 0; i--) {\n                    var column = colsToSpread[i];\n                    var newWidth = Math.round(column.getActualWidth() * scale);\n                    if (newWidth < column.getMinWidth()) {\n                        column.setMinimum();\n                        moveToNotSpread(column);\n                        finishedResizing = false;\n                    }\n                    else if (column.isGreaterThanMax(newWidth)) {\n                        column.setActualWidth(column.getMaxWidth());\n                        moveToNotSpread(column);\n                        finishedResizing = false;\n                    }\n                    else {\n                        var onLastCol = i === 0;\n                        if (onLastCol) {\n                            column.setActualWidth(pixelsForLastCol);\n                        }\n                        else {\n                            column.setActualWidth(newWidth);\n                        }\n                    }\n                    pixelsForLastCol -= newWidth;\n                }\n            }\n        }\n        this.setLeftValues();\n        this.updateBodyWidths();\n        colsToFireEventFor.forEach(function (column) {\n            var event = {\n                type: events_1.Events.EVENT_COLUMN_RESIZED,\n                column: column,\n                columns: [column],\n                finished: true,\n                api: _this.gridApi,\n                columnApi: _this.columnApi\n            };\n            _this.eventService.dispatchEvent(event);\n        });\n        function moveToNotSpread(column) {\n            utils_1.Utils.removeFromArray(colsToSpread, column);\n            colsToNotSpread.push(column);\n        }\n    };\n    ColumnController.prototype.buildDisplayedTrees = function (visibleColumns) {\n        var leftVisibleColumns = utils_1.Utils.filter(visibleColumns, function (column) {\n            return column.getPinned() === 'left';\n        });\n        var rightVisibleColumns = utils_1.Utils.filter(visibleColumns, function (column) {\n            return column.getPinned() === 'right';\n        });\n        var centerVisibleColumns = utils_1.Utils.filter(visibleColumns, function (column) {\n            return column.getPinned() !== 'left' && column.getPinned() !== 'right';\n        });\n        var groupInstanceIdCreator = new groupInstanceIdCreator_1.GroupInstanceIdCreator();\n        this.displayedLeftColumnTree = this.displayedGroupCreator.createDisplayedGroups(leftVisibleColumns, this.gridBalancedTree, groupInstanceIdCreator, this.displayedLeftColumnTree);\n        this.displayedRightColumnTree = this.displayedGroupCreator.createDisplayedGroups(rightVisibleColumns, this.gridBalancedTree, groupInstanceIdCreator, this.displayedRightColumnTree);\n        this.displayedCentreColumnTree = this.displayedGroupCreator.createDisplayedGroups(centerVisibleColumns, this.gridBalancedTree, groupInstanceIdCreator, this.displayedCentreColumnTree);\n    };\n    ColumnController.prototype.updateGroups = function () {\n        var allGroups = this.getAllDisplayedColumnGroups();\n        this.columnUtils.depthFirstAllColumnTreeSearch(allGroups, function (child) {\n            if (child instanceof columnGroup_1.ColumnGroup) {\n                var group = child;\n                group.calculateDisplayedColumns();\n            }\n        });\n    };\n    ColumnController.prototype.getGroupAutoColumns = function () {\n        return this.groupAutoColumns;\n    };\n    ColumnController.prototype.createGroupAutoColumnsIfNeeded = function () {\n        if (!this.autoGroupsNeedBuilding) {\n            return;\n        }\n        this.autoGroupsNeedBuilding = false;\n        // see if we need to insert the default grouping column\n        var needAutoColumns = (this.rowGroupColumns.length > 0 || this.usingTreeData)\n            && !this.gridOptionsWrapper.isGroupSuppressAutoColumn()\n            && !this.gridOptionsWrapper.isGroupUseEntireRow()\n            && !this.gridOptionsWrapper.isGroupSuppressRow();\n        if (needAutoColumns) {\n            this.groupAutoColumns = this.autoGroupColService.createAutoGroupColumns(this.rowGroupColumns);\n        }\n        else {\n            this.groupAutoColumns = null;\n        }\n    };\n    ColumnController.prototype.createValueColumns = function () {\n        this.valueColumns.forEach(function (column) { return column.setValueActive(false); });\n        this.valueColumns = [];\n        // override with columns that have the aggFunc specified explicitly\n        for (var i = 0; i < this.primaryColumns.length; i++) {\n            var column = this.primaryColumns[i];\n            if (column.getColDef().aggFunc) {\n                column.setAggFunc(column.getColDef().aggFunc);\n                this.valueColumns.push(column);\n                column.setValueActive(true);\n            }\n        }\n    };\n    ColumnController.prototype.getWidthOfColsInList = function (columnList) {\n        var result = 0;\n        for (var i = 0; i < columnList.length; i++) {\n            result += columnList[i].getActualWidth();\n        }\n        return result;\n    };\n    ColumnController.prototype.getGridBalancedTree = function () {\n        return this.gridBalancedTree;\n    };\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], ColumnController.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('expressionService'),\n        __metadata(\"design:type\", expressionService_1.ExpressionService)\n    ], ColumnController.prototype, \"expressionService\", void 0);\n    __decorate([\n        context_1.Autowired('balancedColumnTreeBuilder'),\n        __metadata(\"design:type\", balancedColumnTreeBuilder_1.BalancedColumnTreeBuilder)\n    ], ColumnController.prototype, \"balancedColumnTreeBuilder\", void 0);\n    __decorate([\n        context_1.Autowired('displayedGroupCreator'),\n        __metadata(\"design:type\", displayedGroupCreator_1.DisplayedGroupCreator)\n    ], ColumnController.prototype, \"displayedGroupCreator\", void 0);\n    __decorate([\n        context_1.Autowired('autoWidthCalculator'),\n        __metadata(\"design:type\", autoWidthCalculator_1.AutoWidthCalculator)\n    ], ColumnController.prototype, \"autoWidthCalculator\", void 0);\n    __decorate([\n        context_1.Autowired('eventService'),\n        __metadata(\"design:type\", eventService_1.EventService)\n    ], ColumnController.prototype, \"eventService\", void 0);\n    __decorate([\n        context_1.Autowired('columnUtils'),\n        __metadata(\"design:type\", columnUtils_1.ColumnUtils)\n    ], ColumnController.prototype, \"columnUtils\", void 0);\n    __decorate([\n        context_1.Autowired('gridPanel'),\n        __metadata(\"design:type\", gridPanel_1.GridPanel)\n    ], ColumnController.prototype, \"gridPanel\", void 0);\n    __decorate([\n        context_1.Autowired('context'),\n        __metadata(\"design:type\", context_1.Context)\n    ], ColumnController.prototype, \"context\", void 0);\n    __decorate([\n        context_1.Autowired('columnAnimationService'),\n        __metadata(\"design:type\", columnAnimationService_1.ColumnAnimationService)\n    ], ColumnController.prototype, \"columnAnimationService\", void 0);\n    __decorate([\n        context_1.Autowired('autoGroupColService'),\n        __metadata(\"design:type\", autoGroupColService_1.AutoGroupColService)\n    ], ColumnController.prototype, \"autoGroupColService\", void 0);\n    __decorate([\n        context_1.Optional('aggFuncService'),\n        __metadata(\"design:type\", Object)\n    ], ColumnController.prototype, \"aggFuncService\", void 0);\n    __decorate([\n        context_1.Optional('valueCache'),\n        __metadata(\"design:type\", valueCache_1.ValueCache)\n    ], ColumnController.prototype, \"valueCache\", void 0);\n    __decorate([\n        context_1.Autowired('columnApi'),\n        __metadata(\"design:type\", ColumnApi)\n    ], ColumnController.prototype, \"columnApi\", void 0);\n    __decorate([\n        context_1.Autowired('gridApi'),\n        __metadata(\"design:type\", gridApi_1.GridApi)\n    ], ColumnController.prototype, \"gridApi\", void 0);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], ColumnController.prototype, \"init\", null);\n    __decorate([\n        __param(0, context_1.Qualifier('loggerFactory')),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [logger_1.LoggerFactory]),\n        __metadata(\"design:returntype\", void 0)\n    ], ColumnController.prototype, \"setBeans\", null);\n    ColumnController = __decorate([\n        context_1.Bean('columnController')\n    ], ColumnController);\n    return ColumnController;\n}());\nexports.ColumnController = ColumnController;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/columnController/columnController.js\n// module id = 12\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar logger_1 = require(\"./logger\");\nvar utils_1 = require(\"./utils\");\nvar context_1 = require(\"./context/context\");\nvar context_2 = require(\"./context/context\");\nvar gridOptionsWrapper_1 = require(\"./gridOptionsWrapper\");\nvar EventService = (function () {\n    function EventService() {\n        this.allSyncListeners = {};\n        this.allAsyncListeners = {};\n        this.globalSyncListeners = [];\n        this.globalAsyncListeners = [];\n        this.asyncFunctionsQueue = [];\n        this.scheduled = false;\n    }\n    EventService_1 = EventService;\n    // because this class is used both inside the context and outside the context, we do not\n    // use autowired attributes, as that would be confusing, as sometimes the attributes\n    // would be wired, and sometimes not.\n    //\n    // the global event servers used by ag-Grid is autowired by the context once, and this\n    // setBeans method gets called once.\n    //\n    // the times when this class is used outside of the context (eg RowNode has an instance of this\n    // class) then it is not a bean, and this setBeans method is not called.\n    EventService.prototype.setBeans = function (loggerFactory, gridOptionsWrapper, globalEventListener) {\n        if (globalEventListener === void 0) { globalEventListener = null; }\n        this.logger = loggerFactory.create('EventService');\n        if (globalEventListener) {\n            var async = gridOptionsWrapper.useAsyncEvents();\n            this.addGlobalListener(globalEventListener, async);\n        }\n    };\n    EventService.prototype.getListenerList = function (eventType, async) {\n        var listenerMap = async ? this.allAsyncListeners : this.allSyncListeners;\n        var listenerList = listenerMap[eventType];\n        if (!listenerList) {\n            listenerList = [];\n            listenerMap[eventType] = listenerList;\n        }\n        return listenerList;\n    };\n    EventService.prototype.addEventListener = function (eventType, listener, async) {\n        if (async === void 0) { async = false; }\n        if (!this.assertNotDeprecated(eventType))\n            return;\n        var listenerList = this.getListenerList(eventType, async);\n        if (listenerList.indexOf(listener) < 0) {\n            listenerList.push(listener);\n        }\n    };\n    EventService.prototype.assertNotDeprecated = function (eventType) {\n        if (eventType === 'floatingRowDataChanged') {\n            console.warn('ag-Grid: floatingRowDataChanged is now called pinnedRowDataChanged');\n            return false;\n        }\n        else {\n            return true;\n        }\n    };\n    // for some events, it's important that the model gets to hear about them before the view,\n    // as the model may need to update before the view works on the info. if you register\n    // via this method, you get notified before the view parts\n    EventService.prototype.addModalPriorityEventListener = function (eventType, listener, async) {\n        if (async === void 0) { async = false; }\n        if (!this.assertNotDeprecated(eventType))\n            return;\n        this.addEventListener(eventType + EventService_1.PRIORITY, listener, async);\n    };\n    EventService.prototype.addGlobalListener = function (listener, async) {\n        if (async === void 0) { async = false; }\n        if (async) {\n            this.globalAsyncListeners.push(listener);\n        }\n        else {\n            this.globalSyncListeners.push(listener);\n        }\n    };\n    EventService.prototype.removeEventListener = function (eventType, listener, async) {\n        if (async === void 0) { async = false; }\n        var listenerList = this.getListenerList(eventType, async);\n        utils_1.Utils.removeFromArray(listenerList, listener);\n    };\n    EventService.prototype.removeGlobalListener = function (listener, async) {\n        if (async === void 0) { async = false; }\n        if (async) {\n            utils_1.Utils.removeFromArray(this.globalAsyncListeners, listener);\n        }\n        else {\n            utils_1.Utils.removeFromArray(this.globalSyncListeners, listener);\n        }\n    };\n    // why do we pass the type here? the type is in ColumnChangeEvent, so unless the\n    // type is not in other types of events???\n    EventService.prototype.dispatchEvent = function (event) {\n        // console.log(`dispatching ${eventType}: ${event}`);\n        this.dispatchToListeners(event, true);\n        this.dispatchToListeners(event, false);\n    };\n    EventService.prototype.dispatchToListeners = function (event, async) {\n        var _this = this;\n        var globalListeners = async ? this.globalAsyncListeners : this.globalSyncListeners;\n        var eventType = event.type;\n        // this allows the columnController to get events before anyone else\n        var p1ListenerList = this.getListenerList(eventType + EventService_1.PRIORITY, async);\n        utils_1.Utils.forEachSnapshotFirst(p1ListenerList, function (listener) {\n            if (async) {\n                _this.dispatchAsync(function () { return listener(event); });\n            }\n            else {\n                listener(event);\n            }\n        });\n        var listenerList = this.getListenerList(eventType, async);\n        utils_1.Utils.forEachSnapshotFirst(listenerList, function (listener) {\n            if (async) {\n                _this.dispatchAsync(function () { return listener(event); });\n            }\n            else {\n                listener(event);\n            }\n        });\n        utils_1.Utils.forEachSnapshotFirst(globalListeners, function (listener) {\n            if (async) {\n                _this.dispatchAsync(function () { return listener(eventType, event); });\n            }\n            else {\n                listener(eventType, event);\n            }\n        });\n    };\n    // this gets called inside the grid's thread, for each event that it\n    // wants to set async. the grid then batches the events into one setTimeout()\n    // because setTimeout() is an expensive operation. ideally we would have\n    // each event in it's own setTimeout(), but we batch for performance.\n    EventService.prototype.dispatchAsync = function (func) {\n        // add to the queue for executing later in the next VM turn\n        this.asyncFunctionsQueue.push(func);\n        // check if timeout is already scheduled. the first time the grid calls\n        // this within it's thread turn, this should be false, so it will schedule\n        // the 'flush queue' method the first time it comes here. then the flag is\n        // set to 'true' so it will know it's already scheduled for subsequent calls.\n        if (!this.scheduled) {\n            // if not scheduled, schedule one\n            setTimeout(this.flushAsyncQueue.bind(this), 0);\n            // mark that it is scheduled\n            this.scheduled = true;\n        }\n    };\n    // this happens in the next VM turn only, and empties the queue of events\n    EventService.prototype.flushAsyncQueue = function () {\n        this.scheduled = false;\n        // we take a copy, because the event listener could be using\n        // the grid, which would cause more events, which would be potentially\n        // added to the queue, so safe to take a copy, the new events will\n        // get executed in a later VM turn rather than risk updating the\n        // queue as we are flushing it.\n        var queueCopy = this.asyncFunctionsQueue.slice();\n        this.asyncFunctionsQueue = [];\n        // execute the queue\n        queueCopy.forEach(function (func) { return func(); });\n    };\n    // this is an old idea niall had, should really take it out, was to do with ordering who gets to process\n    // events first, to give model and service objects preference over the view\n    EventService.PRIORITY = '-P1';\n    __decorate([\n        __param(0, context_2.Qualifier('loggerFactory')),\n        __param(1, context_2.Qualifier('gridOptionsWrapper')),\n        __param(2, context_2.Qualifier('globalEventListener')),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [logger_1.LoggerFactory,\n            gridOptionsWrapper_1.GridOptionsWrapper,\n            Function]),\n        __metadata(\"design:returntype\", void 0)\n    ], EventService.prototype, \"setBeans\", null);\n    EventService = EventService_1 = __decorate([\n        context_1.Bean('eventService')\n    ], EventService);\n    return EventService;\n    var EventService_1;\n}());\nexports.EventService = EventService;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/eventService.js\n// module id = 13\n// module chunks = 0","// 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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/process/browser.js\n// module id = 14\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar eventKeys_1 = require(\"./eventKeys\");\nexports.Events = eventKeys_1.Events;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/events.js\n// module id = 15\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar csvCreator_1 = require(\"./csvCreator\");\nvar rowRenderer_1 = require(\"./rendering/rowRenderer\");\nvar headerRenderer_1 = require(\"./headerRendering/headerRenderer\");\nvar filterManager_1 = require(\"./filter/filterManager\");\nvar columnController_1 = require(\"./columnController/columnController\");\nvar selectionController_1 = require(\"./selectionController\");\nvar gridOptionsWrapper_1 = require(\"./gridOptionsWrapper\");\nvar gridPanel_1 = require(\"./gridPanel/gridPanel\");\nvar valueService_1 = require(\"./valueService/valueService\");\nvar eventService_1 = require(\"./eventService\");\nvar constants_1 = require(\"./constants\");\nvar context_1 = require(\"./context/context\");\nvar gridCore_1 = require(\"./gridCore\");\nvar sortController_1 = require(\"./sortController\");\nvar focusedCellController_1 = require(\"./focusedCellController\");\nvar gridCell_1 = require(\"./entities/gridCell\");\nvar utils_1 = require(\"./utils\");\nvar cellRendererFactory_1 = require(\"./rendering/cellRendererFactory\");\nvar cellEditorFactory_1 = require(\"./rendering/cellEditorFactory\");\nvar paginationProxy_1 = require(\"./rowModels/paginationProxy\");\nvar immutableService_1 = require(\"./rowModels/inMemory/immutableService\");\nvar valueCache_1 = require(\"./valueService/valueCache\");\nvar alignedGridsService_1 = require(\"./alignedGridsService\");\nvar pinnedRowModel_1 = require(\"./rowModels/pinnedRowModel\");\nvar GridApi = (function () {\n    function GridApi() {\n        this.detailGridInfoMap = {};\n        /*\n        Taking these out, as we want to reconsider how we register components\n        \n        public addCellRenderer(key: string, cellRenderer: {new(): ICellRenderer} | ICellRendererFunc): void {\n            this.cellRendererFactory.addCellRenderer(key, cellRenderer);\n        }\n        \n        public addCellEditor(key: string, cellEditor: {new(): ICellEditor}): void {\n            this.cellEditorFactory.addCellEditor(key, cellEditor);\n        }*/\n    }\n    GridApi.prototype.init = function () {\n        switch (this.rowModel.getType()) {\n            case constants_1.Constants.ROW_MODEL_TYPE_IN_MEMORY:\n                this.inMemoryRowModel = this.rowModel;\n                break;\n            case constants_1.Constants.ROW_MODEL_TYPE_INFINITE:\n                this.infinitePageRowModel = this.rowModel;\n                break;\n            case constants_1.Constants.ROW_MODEL_TYPE_ENTERPRISE:\n                this.enterpriseRowModel = this.rowModel;\n                break;\n        }\n    };\n    /** Used internally by grid. Not intended to be used by the client. Interface may change between releases. */\n    GridApi.prototype.__getAlignedGridService = function () {\n        return this.alignedGridsService;\n    };\n    GridApi.prototype.addDetailGridInfo = function (id, gridInfo) {\n        this.detailGridInfoMap[id] = gridInfo;\n    };\n    GridApi.prototype.removeDetailGridInfo = function (id) {\n        this.detailGridInfoMap[id] = undefined;\n    };\n    GridApi.prototype.getDetailGridInfo = function (id) {\n        return this.detailGridInfoMap[id];\n    };\n    GridApi.prototype.forEachDetailGridInfo = function (callback) {\n        var index = 0;\n        utils_1.Utils.iterateObject(this.detailGridInfoMap, function (id, gridInfo) {\n            // check for undefined, as old references will still be lying around\n            if (utils_1.Utils.exists(gridInfo)) {\n                callback(gridInfo, index);\n                index++;\n            }\n        });\n    };\n    GridApi.prototype.getDataAsCsv = function (params) {\n        return this.csvCreator.getDataAsCsv(params);\n    };\n    GridApi.prototype.exportDataAsCsv = function (params) {\n        this.csvCreator.exportDataAsCsv(params);\n    };\n    GridApi.prototype.getDataAsExcel = function (params) {\n        if (!this.excelCreator) {\n            console.warn('ag-Grid: Excel export is only available in ag-Grid Enterprise');\n        }\n        return this.excelCreator.getDataAsExcelXml(params);\n    };\n    GridApi.prototype.exportDataAsExcel = function (params) {\n        if (!this.excelCreator) {\n            console.warn('ag-Grid: Excel export is only available in ag-Grid Enterprise');\n        }\n        this.excelCreator.exportDataAsExcel(params);\n    };\n    GridApi.prototype.setEnterpriseDatasource = function (datasource) {\n        if (this.gridOptionsWrapper.isRowModelEnterprise()) {\n            // should really have an IEnterpriseRowModel interface, so we are not casting to any\n            this.rowModel.setDatasource(datasource);\n        }\n        else {\n            console.warn(\"ag-Grid: you can only use an enterprise datasource when gridOptions.rowModelType is '\" + constants_1.Constants.ROW_MODEL_TYPE_ENTERPRISE + \"'\");\n        }\n    };\n    GridApi.prototype.setDatasource = function (datasource) {\n        if (this.gridOptionsWrapper.isRowModelInfinite()) {\n            this.rowModel.setDatasource(datasource);\n        }\n        else {\n            console.warn(\"ag-Grid: you can only use a datasource when gridOptions.rowModelType is '\" + constants_1.Constants.ROW_MODEL_TYPE_INFINITE + \"'\");\n        }\n    };\n    GridApi.prototype.setViewportDatasource = function (viewportDatasource) {\n        if (this.gridOptionsWrapper.isRowModelViewport()) {\n            // this is bad coding, because it's using an interface that's exposed in the enterprise.\n            // really we should create an interface in the core for viewportDatasource and let\n            // the enterprise implement it, rather than casting to 'any' here\n            this.rowModel.setViewportDatasource(viewportDatasource);\n        }\n        else {\n            console.warn(\"ag-Grid: you can only use a viewport datasource when gridOptions.rowModelType is '\" + constants_1.Constants.ROW_MODEL_TYPE_VIEWPORT + \"'\");\n        }\n    };\n    GridApi.prototype.setRowData = function (rowData) {\n        if (this.gridOptionsWrapper.isRowModelDefault()) {\n            if (this.gridOptionsWrapper.isDeltaRowDataMode()) {\n                var _a = this.immutableService.createTransactionForRowData(rowData), transaction = _a[0], orderIdMap = _a[1];\n                this.inMemoryRowModel.updateRowData(transaction, orderIdMap);\n            }\n            else {\n                this.selectionController.reset();\n                this.inMemoryRowModel.setRowData(rowData);\n            }\n        }\n        else {\n            console.log('cannot call setRowData unless using normal row model');\n        }\n    };\n    // DEPRECATED\n    GridApi.prototype.setFloatingTopRowData = function (rows) {\n        console.warn('ag-Grid: since v12, api.setFloatingTopRowData() is now api.setPinnedTopRowData()');\n        this.setPinnedTopRowData(rows);\n    };\n    // DEPRECATED\n    GridApi.prototype.setFloatingBottomRowData = function (rows) {\n        console.warn('ag-Grid: since v12, api.setFloatingBottomRowData() is now api.setPinnedBottomRowData()');\n        this.setPinnedBottomRowData(rows);\n    };\n    // DEPRECATED\n    GridApi.prototype.getFloatingTopRowCount = function () {\n        console.warn('ag-Grid: since v12, api.getFloatingTopRowCount() is now api.getPinnedTopRowCount()');\n        return this.getPinnedTopRowCount();\n    };\n    // DEPRECATED\n    GridApi.prototype.getFloatingBottomRowCount = function () {\n        console.warn('ag-Grid: since v12, api.getFloatingBottomRowCount() is now api.getPinnedBottomRowCount()');\n        return this.getPinnedBottomRowCount();\n    };\n    // DEPRECATED\n    GridApi.prototype.getFloatingTopRow = function (index) {\n        console.warn('ag-Grid: since v12, api.getFloatingTopRow() is now api.getPinnedTopRow()');\n        return this.getPinnedTopRow(index);\n    };\n    // DEPRECATED\n    GridApi.prototype.getFloatingBottomRow = function (index) {\n        console.warn('ag-Grid: since v12, api.getFloatingBottomRow() is now api.getPinnedBottomRow()');\n        return this.getPinnedBottomRow(index);\n    };\n    GridApi.prototype.setPinnedTopRowData = function (rows) {\n        this.pinnedRowModel.setPinnedTopRowData(rows);\n    };\n    GridApi.prototype.setPinnedBottomRowData = function (rows) {\n        this.pinnedRowModel.setPinnedBottomRowData(rows);\n    };\n    GridApi.prototype.getPinnedTopRowCount = function () {\n        return this.pinnedRowModel.getPinnedTopRowCount();\n    };\n    GridApi.prototype.getPinnedBottomRowCount = function () {\n        return this.pinnedRowModel.getPinnedBottomRowCount();\n    };\n    GridApi.prototype.getPinnedTopRow = function (index) {\n        return this.pinnedRowModel.getPinnedTopRow(index);\n    };\n    GridApi.prototype.getPinnedBottomRow = function (index) {\n        return this.pinnedRowModel.getPinnedBottomRow(index);\n    };\n    GridApi.prototype.setColumnDefs = function (colDefs) {\n        this.columnController.setColumnDefs(colDefs);\n    };\n    GridApi.prototype.expireValueCache = function () {\n        this.valueCache.expire();\n    };\n    GridApi.prototype.getVerticalPixelRange = function () {\n        return this.gridPanel.getVerticalPixelRange();\n    };\n    GridApi.prototype.refreshToolPanel = function () {\n        if (this.toolPanel) {\n            this.toolPanel.refresh();\n        }\n    };\n    GridApi.prototype.refreshCells = function (params) {\n        if (params === void 0) { params = {}; }\n        if (Array.isArray(params)) {\n            // the old version of refreshCells() took an array of rowNodes for the first argument\n            console.warn('since ag-Grid v11.1, refreshCells() now takes parameters, please see the documentation.');\n            return;\n        }\n        this.rowRenderer.refreshCells(params);\n    };\n    GridApi.prototype.redrawRows = function (params) {\n        if (params === void 0) { params = {}; }\n        if (params && params.rowNodes) {\n            this.rowRenderer.redrawRows(params.rowNodes);\n        }\n        else {\n            this.rowRenderer.redrawAfterModelUpdate();\n        }\n    };\n    GridApi.prototype.timeFullRedraw = function (count) {\n        if (count === void 0) { count = 1; }\n        var iterationCount = 0;\n        var totalProcessing = 0;\n        var totalReflow = 0;\n        var that = this;\n        doOneIteration();\n        function doOneIteration() {\n            var start = (new Date()).getTime();\n            that.rowRenderer.redrawAfterModelUpdate();\n            var endProcessing = (new Date()).getTime();\n            setTimeout(function () {\n                var endReflow = (new Date()).getTime();\n                var durationProcessing = endProcessing - start;\n                var durationReflow = endReflow - endProcessing;\n                console.log('duration:  processing = ' + durationProcessing + 'ms, reflow = ' + durationReflow + 'ms');\n                iterationCount++;\n                totalProcessing += durationProcessing;\n                totalReflow += durationReflow;\n                if (iterationCount < count) {\n                    // wait for 1s between tests\n                    setTimeout(doOneIteration, 1000);\n                }\n                else {\n                    finish();\n                }\n            }, 0);\n        }\n        function finish() {\n            console.log('tests complete. iteration count = ' + iterationCount);\n            console.log('average processing = ' + (totalProcessing / iterationCount) + 'ms');\n            console.log('average reflow = ' + (totalReflow / iterationCount) + 'ms');\n        }\n    };\n    // *** deprecated\n    GridApi.prototype.refreshView = function () {\n        console.warn('ag-Grid: since v11.1, refreshView() is deprecated, please call refreshCells() or redrawRows() instead');\n        this.redrawRows();\n    };\n    // *** deprecated\n    GridApi.prototype.refreshRows = function (rowNodes) {\n        console.warn('since ag-Grid v11.1, refreshRows() is deprecated, please use refreshCells({rowNodes: rows}) or redrawRows({rowNodes: rows}) instead');\n        this.refreshCells({ rowNodes: rowNodes });\n    };\n    // *** deprecated\n    GridApi.prototype.rowDataChanged = function (rows) {\n        console.log('ag-Grid: rowDataChanged is deprecated, either call refreshView() to refresh everything, or call rowNode.setRowData(newData) to set value on a particular node');\n        this.redrawRows();\n    };\n    // *** deprecated\n    GridApi.prototype.softRefreshView = function () {\n        console.warn('ag-Grid: since v11.1, softRefreshView() is deprecated, call refreshCells(params) instead.');\n        this.refreshCells({ volatile: true });\n    };\n    // *** deprecated\n    GridApi.prototype.refreshGroupRows = function () {\n        console.warn('ag-Grid: since v11.1, refreshGroupRows() is no longer supported, call refreshCells() instead. ' +\n            'Because refreshCells() now does dirty checking, it will only refresh cells that have changed, so it should ' +\n            'not be necessary to only refresh the group rows.');\n        this.refreshCells();\n    };\n    GridApi.prototype.setFunctionsReadOnly = function (readOnly) {\n        this.gridOptionsWrapper.setProperty('functionsReadOnly', readOnly);\n    };\n    GridApi.prototype.refreshHeader = function () {\n        this.headerRenderer.refreshHeader();\n    };\n    GridApi.prototype.isAnyFilterPresent = function () {\n        return this.filterManager.isAnyFilterPresent();\n    };\n    GridApi.prototype.isAdvancedFilterPresent = function () {\n        return this.filterManager.isAdvancedFilterPresent();\n    };\n    GridApi.prototype.isQuickFilterPresent = function () {\n        return this.filterManager.isQuickFilterPresent();\n    };\n    GridApi.prototype.getModel = function () {\n        return this.rowModel;\n    };\n    GridApi.prototype.onGroupExpandedOrCollapsed = function (deprecated_refreshFromIndex) {\n        if (utils_1.Utils.missing(this.inMemoryRowModel)) {\n            console.log('ag-Grid: cannot call onGroupExpandedOrCollapsed unless using normal row model');\n        }\n        if (utils_1.Utils.exists(deprecated_refreshFromIndex)) {\n            console.log('ag-Grid: api.onGroupExpandedOrCollapsed - refreshFromIndex parameter is no longer used, the grid will refresh all rows');\n        }\n        // we don't really want the user calling this if one one rowNode was expanded, instead they should be\n        // calling rowNode.setExpanded(boolean) - this way we do a 'keepRenderedRows=false' so that the whole\n        // grid gets refreshed again - otherwise the row with the rowNodes that were changed won't get updated,\n        // and thus the expand icon in the group cell won't get 'opened' or 'closed'.\n        this.inMemoryRowModel.refreshModel({ step: constants_1.Constants.STEP_MAP });\n    };\n    GridApi.prototype.refreshInMemoryRowModel = function (step) {\n        if (utils_1.Utils.missing(this.inMemoryRowModel)) {\n            console.log('cannot call refreshInMemoryRowModel unless using normal row model');\n        }\n        var paramsStep = constants_1.Constants.STEP_EVERYTHING;\n        var stepsMapped = {\n            group: constants_1.Constants.STEP_EVERYTHING,\n            filter: constants_1.Constants.STEP_FILTER,\n            map: constants_1.Constants.STEP_MAP,\n            aggregate: constants_1.Constants.STEP_AGGREGATE,\n            sort: constants_1.Constants.STEP_SORT,\n            pivot: constants_1.Constants.STEP_PIVOT\n        };\n        if (utils_1.Utils.exists(step)) {\n            paramsStep = stepsMapped[step];\n        }\n        if (utils_1.Utils.missing(paramsStep)) {\n            console.error(\"ag-Grid: invalid step \" + step + \", available steps are \" + Object.keys(stepsMapped).join(', '));\n            return;\n        }\n        var modelParams = {\n            step: paramsStep,\n            keepRenderedRows: true,\n            animate: true,\n            keepEditingRows: true\n        };\n        this.inMemoryRowModel.refreshModel(modelParams);\n    };\n    GridApi.prototype.getRowNode = function (id) {\n        if (utils_1.Utils.missing(this.inMemoryRowModel)) {\n            console.warn('ag-Grid: cannot call getRowNode unless using normal row model');\n            return;\n        }\n        return this.inMemoryRowModel.getRowNode(id);\n    };\n    GridApi.prototype.expandAll = function () {\n        if (utils_1.Utils.missing(this.inMemoryRowModel)) {\n            console.warn('ag-Grid: cannot call expandAll unless using normal row model');\n            return;\n        }\n        this.inMemoryRowModel.expandOrCollapseAll(true);\n    };\n    GridApi.prototype.collapseAll = function () {\n        if (utils_1.Utils.missing(this.inMemoryRowModel)) {\n            console.warn('ag-Grid: cannot call collapseAll unless using normal row model');\n            return;\n        }\n        this.inMemoryRowModel.expandOrCollapseAll(false);\n    };\n    GridApi.prototype.addVirtualRowListener = function (eventName, rowIndex, callback) {\n        if (typeof eventName !== 'string') {\n            console.log('ag-Grid: addVirtualRowListener is deprecated, please use addRenderedRowListener.');\n        }\n        this.addRenderedRowListener(eventName, rowIndex, callback);\n    };\n    GridApi.prototype.addRenderedRowListener = function (eventName, rowIndex, callback) {\n        if (eventName === 'virtualRowSelected') {\n            console.log('ag-Grid: event virtualRowSelected is deprecated, to register for individual row ' +\n                'selection events, add a listener directly to the row node.');\n        }\n        this.rowRenderer.addRenderedRowListener(eventName, rowIndex, callback);\n    };\n    GridApi.prototype.setQuickFilter = function (newFilter) {\n        this.filterManager.setQuickFilter(newFilter);\n    };\n    GridApi.prototype.selectIndex = function (index, tryMulti, suppressEvents) {\n        console.log('ag-Grid: do not use api for selection, call node.setSelected(value) instead');\n        if (suppressEvents) {\n            console.log('ag-Grid: suppressEvents is no longer supported, stop listening for the event if you no longer want it');\n        }\n        this.selectionController.selectIndex(index, tryMulti);\n    };\n    GridApi.prototype.deselectIndex = function (index, suppressEvents) {\n        if (suppressEvents === void 0) { suppressEvents = false; }\n        console.log('ag-Grid: do not use api for selection, call node.setSelected(value) instead');\n        if (suppressEvents) {\n            console.log('ag-Grid: suppressEvents is no longer supported, stop listening for the event if you no longer want it');\n        }\n        this.selectionController.deselectIndex(index);\n    };\n    GridApi.prototype.selectNode = function (node, tryMulti, suppressEvents) {\n        if (tryMulti === void 0) { tryMulti = false; }\n        if (suppressEvents === void 0) { suppressEvents = false; }\n        console.log('ag-Grid: API for selection is deprecated, call node.setSelected(value) instead');\n        if (suppressEvents) {\n            console.log('ag-Grid: suppressEvents is no longer supported, stop listening for the event if you no longer want it');\n        }\n        node.setSelectedParams({ newValue: true, clearSelection: !tryMulti });\n    };\n    GridApi.prototype.deselectNode = function (node, suppressEvents) {\n        if (suppressEvents === void 0) { suppressEvents = false; }\n        console.log('ag-Grid: API for selection is deprecated, call node.setSelected(value) instead');\n        if (suppressEvents) {\n            console.log('ag-Grid: suppressEvents is no longer supported, stop listening for the event if you no longer want it');\n        }\n        node.setSelectedParams({ newValue: false });\n    };\n    GridApi.prototype.selectAll = function () {\n        this.selectionController.selectAllRowNodes();\n    };\n    GridApi.prototype.deselectAll = function () {\n        this.selectionController.deselectAllRowNodes();\n    };\n    GridApi.prototype.selectAllFiltered = function () {\n        this.selectionController.selectAllRowNodes(true);\n    };\n    GridApi.prototype.deselectAllFiltered = function () {\n        this.selectionController.deselectAllRowNodes(true);\n    };\n    GridApi.prototype.recomputeAggregates = function () {\n        if (utils_1.Utils.missing(this.inMemoryRowModel)) {\n            console.log('cannot call recomputeAggregates unless using normal row model');\n        }\n        this.inMemoryRowModel.refreshModel({ step: constants_1.Constants.STEP_AGGREGATE });\n    };\n    GridApi.prototype.sizeColumnsToFit = function () {\n        if (this.gridOptionsWrapper.isForPrint()) {\n            console.warn('ag-grid: sizeColumnsToFit does not work when forPrint=true');\n            return;\n        }\n        this.gridPanel.sizeColumnsToFit();\n    };\n    GridApi.prototype.showLoadingOverlay = function () {\n        this.gridPanel.showLoadingOverlay();\n    };\n    GridApi.prototype.showNoRowsOverlay = function () {\n        this.gridPanel.showNoRowsOverlay();\n    };\n    GridApi.prototype.hideOverlay = function () {\n        this.gridPanel.hideOverlay();\n    };\n    GridApi.prototype.isNodeSelected = function (node) {\n        console.log('ag-Grid: no need to call api.isNodeSelected(), just call node.isSelected() instead');\n        return node.isSelected();\n    };\n    GridApi.prototype.getSelectedNodesById = function () {\n        console.error('ag-Grid: since version 3.4, getSelectedNodesById no longer exists, use getSelectedNodes() instead');\n        return null;\n    };\n    GridApi.prototype.getSelectedNodes = function () {\n        return this.selectionController.getSelectedNodes();\n    };\n    GridApi.prototype.getSelectedRows = function () {\n        return this.selectionController.getSelectedRows();\n    };\n    GridApi.prototype.getBestCostNodeSelection = function () {\n        return this.selectionController.getBestCostNodeSelection();\n    };\n    GridApi.prototype.getRenderedNodes = function () {\n        return this.rowRenderer.getRenderedNodes();\n    };\n    GridApi.prototype.ensureColIndexVisible = function (index) {\n        console.warn('ag-Grid: ensureColIndexVisible(index) no longer supported, use ensureColumnVisible(colKey) instead.');\n    };\n    GridApi.prototype.ensureColumnVisible = function (key) {\n        this.gridPanel.ensureColumnVisible(key);\n    };\n    // Valid values for position are bottom, middle and top\n    GridApi.prototype.ensureIndexVisible = function (index, position) {\n        this.gridPanel.ensureIndexVisible(index, position);\n    };\n    // Valid values for position are bottom, middle and top\n    GridApi.prototype.ensureNodeVisible = function (comparator, position) {\n        this.gridCore.ensureNodeVisible(comparator, position);\n    };\n    GridApi.prototype.forEachLeafNode = function (callback) {\n        if (utils_1.Utils.missing(this.inMemoryRowModel)) {\n            console.log('cannot call forEachNode unless using normal row model');\n        }\n        this.inMemoryRowModel.forEachLeafNode(callback);\n    };\n    GridApi.prototype.forEachNode = function (callback) {\n        this.rowModel.forEachNode(callback);\n    };\n    GridApi.prototype.forEachNodeAfterFilter = function (callback) {\n        if (utils_1.Utils.missing(this.inMemoryRowModel)) {\n            console.log('cannot call forEachNodeAfterFilter unless using normal row model');\n        }\n        this.inMemoryRowModel.forEachNodeAfterFilter(callback);\n    };\n    GridApi.prototype.forEachNodeAfterFilterAndSort = function (callback) {\n        if (utils_1.Utils.missing(this.inMemoryRowModel)) {\n            console.log('cannot call forEachNodeAfterFilterAndSort unless using normal row model');\n        }\n        this.inMemoryRowModel.forEachNodeAfterFilterAndSort(callback);\n    };\n    GridApi.prototype.getFilterApiForColDef = function (colDef) {\n        console.warn('ag-grid API method getFilterApiForColDef deprecated, use getFilterApi instead');\n        return this.getFilterInstance(colDef);\n    };\n    GridApi.prototype.getFilterInstance = function (key) {\n        var column = this.columnController.getPrimaryColumn(key);\n        if (column) {\n            return this.filterManager.getFilterComponent(column).resolveNow(null, function (filterComp) { return filterComp; });\n        }\n    };\n    GridApi.prototype.getFilterApi = function (key) {\n        console.warn('ag-Grid: getFilterApi is deprecated, use getFilterInstance instead');\n        return this.getFilterInstance(key);\n    };\n    GridApi.prototype.destroyFilter = function (key) {\n        var column = this.columnController.getPrimaryColumn(key);\n        if (column) {\n            return this.filterManager.destroyFilter(column);\n        }\n    };\n    GridApi.prototype.getColumnDef = function (key) {\n        var column = this.columnController.getPrimaryColumn(key);\n        if (column) {\n            return column.getColDef();\n        }\n        else {\n            return null;\n        }\n    };\n    GridApi.prototype.onFilterChanged = function () {\n        this.filterManager.onFilterChanged();\n    };\n    GridApi.prototype.onSortChanged = function () {\n        this.sortController.onSortChanged();\n    };\n    GridApi.prototype.setSortModel = function (sortModel) {\n        this.sortController.setSortModel(sortModel);\n    };\n    GridApi.prototype.getSortModel = function () {\n        return this.sortController.getSortModel();\n    };\n    GridApi.prototype.setFilterModel = function (model) {\n        this.filterManager.setFilterModel(model);\n    };\n    GridApi.prototype.getFilterModel = function () {\n        return this.filterManager.getFilterModel();\n    };\n    GridApi.prototype.getFocusedCell = function () {\n        return this.focusedCellController.getFocusedCell();\n    };\n    GridApi.prototype.clearFocusedCell = function () {\n        return this.focusedCellController.clearFocusedCell();\n    };\n    GridApi.prototype.setFocusedCell = function (rowIndex, colKey, floating) {\n        this.focusedCellController.setFocusedCell(rowIndex, colKey, floating, true);\n    };\n    GridApi.prototype.setHeaderHeight = function (headerHeight) {\n        this.gridOptionsWrapper.setProperty(gridOptionsWrapper_1.GridOptionsWrapper.PROP_HEADER_HEIGHT, headerHeight);\n        this.doLayout();\n    };\n    GridApi.prototype.setGroupHeaderHeight = function (headerHeight) {\n        this.gridOptionsWrapper.setProperty(gridOptionsWrapper_1.GridOptionsWrapper.PROP_GROUP_HEADER_HEIGHT, headerHeight);\n        this.doLayout();\n    };\n    GridApi.prototype.setFloatingFiltersHeight = function (headerHeight) {\n        this.gridOptionsWrapper.setProperty(gridOptionsWrapper_1.GridOptionsWrapper.PROP_FLOATING_FILTERS_HEIGHT, headerHeight);\n        this.doLayout();\n    };\n    GridApi.prototype.setPivotGroupHeaderHeight = function (headerHeight) {\n        this.gridOptionsWrapper.setProperty(gridOptionsWrapper_1.GridOptionsWrapper.PROP_PIVOT_GROUP_HEADER_HEIGHT, headerHeight);\n        this.doLayout();\n    };\n    GridApi.prototype.setPivotHeaderHeight = function (headerHeight) {\n        this.gridOptionsWrapper.setProperty(gridOptionsWrapper_1.GridOptionsWrapper.PROP_PIVOT_HEADER_HEIGHT, headerHeight);\n        this.doLayout();\n    };\n    GridApi.prototype.showToolPanel = function (show) {\n        this.gridCore.showToolPanel(show);\n    };\n    GridApi.prototype.isToolPanelShowing = function () {\n        return this.gridCore.isToolPanelShowing();\n    };\n    GridApi.prototype.doLayout = function () {\n        this.gridCore.doLayout();\n        // if the column is not visible, then made visible, it will be right size, but the\n        // correct virtual columns will not be displayed. the setLeftAndRightBounds() gets\n        // called when size changes. however when size is not changed, then wrong cols are shown.\n        // this was to fix https://ag-grid.atlassian.net/browse/AG-1081\n        this.gridPanel.setLeftAndRightBounds();\n    };\n    GridApi.prototype.resetRowHeights = function () {\n        if (utils_1.Utils.exists(this.inMemoryRowModel)) {\n            this.inMemoryRowModel.resetRowHeights();\n        }\n    };\n    GridApi.prototype.setGroupRemoveSingleChildren = function (value) {\n        this.gridOptionsWrapper.setProperty(gridOptionsWrapper_1.GridOptionsWrapper.PROP_GROUP_REMOVE_SINGLE_CHILDREN, value);\n    };\n    GridApi.prototype.setGroupRemoveLowestSingleChildren = function (value) {\n        this.gridOptionsWrapper.setProperty(gridOptionsWrapper_1.GridOptionsWrapper.PROP_GROUP_REMOVE_LOWEST_SINGLE_CHILDREN, value);\n    };\n    GridApi.prototype.onRowHeightChanged = function () {\n        if (utils_1.Utils.exists(this.inMemoryRowModel)) {\n            this.inMemoryRowModel.onRowHeightChanged();\n        }\n    };\n    GridApi.prototype.getValue = function (colKey, rowNode) {\n        var column = this.columnController.getPrimaryColumn(colKey);\n        if (utils_1.Utils.missing(column)) {\n            column = this.columnController.getGridColumn(colKey);\n        }\n        if (utils_1.Utils.missing(column)) {\n            return null;\n        }\n        else {\n            return this.valueService.getValue(column, rowNode);\n        }\n    };\n    GridApi.prototype.addEventListener = function (eventType, listener) {\n        var async = this.gridOptionsWrapper.useAsyncEvents();\n        this.eventService.addEventListener(eventType, listener, async);\n    };\n    GridApi.prototype.addGlobalListener = function (listener) {\n        var async = this.gridOptionsWrapper.useAsyncEvents();\n        this.eventService.addGlobalListener(listener, async);\n    };\n    GridApi.prototype.removeEventListener = function (eventType, listener) {\n        var async = this.gridOptionsWrapper.useAsyncEvents();\n        this.eventService.removeEventListener(eventType, listener, async);\n    };\n    GridApi.prototype.removeGlobalListener = function (listener) {\n        var async = this.gridOptionsWrapper.useAsyncEvents();\n        this.eventService.removeGlobalListener(listener, async);\n    };\n    GridApi.prototype.dispatchEvent = function (event) {\n        this.eventService.dispatchEvent(event);\n    };\n    GridApi.prototype.destroy = function () {\n        this.context.destroy();\n    };\n    GridApi.prototype.resetQuickFilter = function () {\n        this.rowModel.forEachNode(function (node) { return node.quickFilterAggregateText = null; });\n    };\n    GridApi.prototype.getRangeSelections = function () {\n        if (this.rangeController) {\n            return this.rangeController.getCellRanges();\n        }\n        else {\n            console.warn('ag-Grid: cell range selection is only available in ag-Grid Enterprise');\n            return null;\n        }\n    };\n    GridApi.prototype.camelCaseToHumanReadable = function (camelCase) {\n        return utils_1.Utils.camelCaseToHumanText(camelCase);\n    };\n    GridApi.prototype.addRangeSelection = function (rangeSelection) {\n        if (!this.rangeController) {\n            console.warn('ag-Grid: cell range selection is only available in ag-Grid Enterprise');\n        }\n        this.rangeController.addRange(rangeSelection);\n    };\n    GridApi.prototype.clearRangeSelection = function () {\n        if (!this.rangeController) {\n            console.warn('ag-Grid: cell range selection is only available in ag-Grid Enterprise');\n        }\n        this.rangeController.clearSelection();\n    };\n    GridApi.prototype.copySelectedRowsToClipboard = function (includeHeader, columnKeys) {\n        if (!this.clipboardService) {\n            console.warn('ag-Grid: clipboard is only available in ag-Grid Enterprise');\n        }\n        this.clipboardService.copySelectedRowsToClipboard(includeHeader, columnKeys);\n    };\n    GridApi.prototype.copySelectedRangeToClipboard = function (includeHeader) {\n        if (!this.clipboardService) {\n            console.warn('ag-Grid: clipboard is only available in ag-Grid Enterprise');\n        }\n        this.clipboardService.copySelectedRangeToClipboard(includeHeader);\n    };\n    GridApi.prototype.copySelectedRangeDown = function () {\n        if (!this.clipboardService) {\n            console.warn('ag-Grid: clipboard is only available in ag-Grid Enterprise');\n        }\n        this.clipboardService.copyRangeDown();\n    };\n    GridApi.prototype.showColumnMenuAfterButtonClick = function (colKey, buttonElement) {\n        var column = this.columnController.getPrimaryColumn(colKey);\n        this.menuFactory.showMenuAfterButtonClick(column, buttonElement);\n    };\n    GridApi.prototype.showColumnMenuAfterMouseClick = function (colKey, mouseEvent) {\n        var column = this.columnController.getPrimaryColumn(colKey);\n        this.menuFactory.showMenuAfterMouseEvent(column, mouseEvent);\n    };\n    GridApi.prototype.tabToNextCell = function () {\n        return this.rowRenderer.tabToNextCell(false);\n    };\n    GridApi.prototype.tabToPreviousCell = function () {\n        return this.rowRenderer.tabToNextCell(true);\n    };\n    GridApi.prototype.stopEditing = function (cancel) {\n        if (cancel === void 0) { cancel = false; }\n        this.rowRenderer.stopEditing(cancel);\n    };\n    GridApi.prototype.startEditingCell = function (params) {\n        var column = this.columnController.getGridColumn(params.colKey);\n        if (!column) {\n            console.warn(\"ag-Grid: no column found for \" + params.colKey);\n            return;\n        }\n        var gridCellDef = {\n            rowIndex: params.rowIndex,\n            floating: params.rowPinned,\n            column: column\n        };\n        var gridCell = new gridCell_1.GridCell(gridCellDef);\n        var notPinned = utils_1.Utils.missing(params.rowPinned);\n        if (notPinned) {\n            this.gridPanel.ensureIndexVisible(params.rowIndex);\n        }\n        this.rowRenderer.startEditingCell(gridCell, params.keyPress, params.charPress);\n    };\n    GridApi.prototype.addAggFunc = function (key, aggFunc) {\n        if (this.aggFuncService) {\n            this.aggFuncService.addAggFunc(key, aggFunc);\n        }\n    };\n    GridApi.prototype.addAggFuncs = function (aggFuncs) {\n        if (this.aggFuncService) {\n            this.aggFuncService.addAggFuncs(aggFuncs);\n        }\n    };\n    GridApi.prototype.clearAggFuncs = function () {\n        if (this.aggFuncService) {\n            this.aggFuncService.clear();\n        }\n    };\n    GridApi.prototype.updateRowData = function (rowDataTransaction) {\n        var res = null;\n        if (this.inMemoryRowModel) {\n            res = this.inMemoryRowModel.updateRowData(rowDataTransaction);\n        }\n        else if (this.infinitePageRowModel) {\n            this.infinitePageRowModel.updateRowData(rowDataTransaction);\n        }\n        else {\n            console.error('ag-Grid: updateRowData() only works with InMemoryRowModel and InfiniteRowModel.');\n        }\n        // do change detection for all present cells\n        if (!this.gridOptionsWrapper.isSuppressChangeDetection()) {\n            this.rowRenderer.refreshCells();\n        }\n        return res;\n    };\n    GridApi.prototype.insertItemsAtIndex = function (index, items, skipRefresh) {\n        if (skipRefresh === void 0) { skipRefresh = false; }\n        console.warn('ag-Grid: insertItemsAtIndex() is deprecated, use updateRowData(transaction) instead.');\n        this.updateRowData({ add: items, addIndex: index, update: null, remove: null });\n    };\n    GridApi.prototype.removeItems = function (rowNodes, skipRefresh) {\n        if (skipRefresh === void 0) { skipRefresh = false; }\n        console.warn('ag-Grid: removeItems() is deprecated, use updateRowData(transaction) instead.');\n        var dataToRemove = rowNodes.map(function (rowNode) { return rowNode.data; });\n        this.updateRowData({ add: null, addIndex: null, update: null, remove: dataToRemove });\n    };\n    GridApi.prototype.addItems = function (items, skipRefresh) {\n        if (skipRefresh === void 0) { skipRefresh = false; }\n        console.warn('ag-Grid: addItems() is deprecated, use updateRowData(transaction) instead.');\n        this.updateRowData({ add: items, addIndex: null, update: null, remove: null });\n    };\n    GridApi.prototype.refreshVirtualPageCache = function () {\n        console.warn('ag-Grid: refreshVirtualPageCache() is now called refreshInfiniteCache(), please call refreshInfiniteCache() instead');\n        this.refreshInfiniteCache();\n    };\n    GridApi.prototype.refreshInfinitePageCache = function () {\n        console.warn('ag-Grid: refreshInfinitePageCache() is now called refreshInfiniteCache(), please call refreshInfiniteCache() instead');\n        this.refreshInfiniteCache();\n    };\n    GridApi.prototype.refreshInfiniteCache = function () {\n        if (this.infinitePageRowModel) {\n            this.infinitePageRowModel.refreshCache();\n        }\n        else {\n            console.warn(\"ag-Grid: api.refreshInfiniteCache is only available when rowModelType='infinite'.\");\n        }\n    };\n    GridApi.prototype.purgeVirtualPageCache = function () {\n        console.warn('ag-Grid: purgeVirtualPageCache() is now called purgeInfiniteCache(), please call purgeInfiniteCache() instead');\n        this.purgeInfinitePageCache();\n    };\n    GridApi.prototype.purgeInfinitePageCache = function () {\n        console.warn('ag-Grid: purgeInfinitePageCache() is now called purgeInfiniteCache(), please call purgeInfiniteCache() instead');\n        this.purgeInfiniteCache();\n    };\n    GridApi.prototype.purgeInfiniteCache = function () {\n        if (this.infinitePageRowModel) {\n            this.infinitePageRowModel.purgeCache();\n        }\n        else {\n            console.warn(\"ag-Grid: api.purgeInfiniteCache is only available when rowModelType='infinite'.\");\n        }\n    };\n    GridApi.prototype.purgeEnterpriseCache = function (route) {\n        if (this.enterpriseRowModel) {\n            this.enterpriseRowModel.purgeCache(route);\n        }\n        else {\n            console.warn(\"ag-Grid: api.purgeEnterpriseCache is only available when rowModelType='enterprise'.\");\n        }\n    };\n    GridApi.prototype.getVirtualRowCount = function () {\n        console.warn('ag-Grid: getVirtualRowCount() is now called getInfiniteRowCount(), please call getInfiniteRowCount() instead');\n        return this.getInfiniteRowCount();\n    };\n    GridApi.prototype.getInfiniteRowCount = function () {\n        if (this.infinitePageRowModel) {\n            return this.infinitePageRowModel.getVirtualRowCount();\n        }\n        else {\n            console.warn(\"ag-Grid: api.getVirtualRowCount is only available when rowModelType='virtual'.\");\n        }\n    };\n    GridApi.prototype.isMaxRowFound = function () {\n        if (this.infinitePageRowModel) {\n            return this.infinitePageRowModel.isMaxRowFound();\n        }\n        else {\n            console.warn(\"ag-Grid: api.isMaxRowFound is only available when rowModelType='virtual'.\");\n        }\n    };\n    GridApi.prototype.setVirtualRowCount = function (rowCount, maxRowFound) {\n        console.warn('ag-Grid: setVirtualRowCount() is now called setInfiniteRowCount(), please call setInfiniteRowCount() instead');\n        this.setInfiniteRowCount(rowCount, maxRowFound);\n    };\n    GridApi.prototype.setInfiniteRowCount = function (rowCount, maxRowFound) {\n        if (this.infinitePageRowModel) {\n            this.infinitePageRowModel.setVirtualRowCount(rowCount, maxRowFound);\n        }\n        else {\n            console.warn(\"ag-Grid: api.setVirtualRowCount is only available when rowModelType='virtual'.\");\n        }\n    };\n    GridApi.prototype.getVirtualPageState = function () {\n        console.warn('ag-Grid: getVirtualPageState() is now called getCacheBlockState(), please call getCacheBlockState() instead');\n        return this.getCacheBlockState();\n    };\n    GridApi.prototype.getInfinitePageState = function () {\n        console.warn('ag-Grid: getInfinitePageState() is now called getCacheBlockState(), please call getCacheBlockState() instead');\n        return this.getCacheBlockState();\n    };\n    GridApi.prototype.getCacheBlockState = function () {\n        if (this.infinitePageRowModel) {\n            return this.infinitePageRowModel.getBlockState();\n        }\n        else if (this.enterpriseRowModel) {\n            return this.enterpriseRowModel.getBlockState();\n        }\n        else {\n            console.warn(\"ag-Grid: api.getCacheBlockState() is only available when rowModelType='infinite' or rowModelType='enterprise'.\");\n        }\n    };\n    GridApi.prototype.checkGridSize = function () {\n        this.gridPanel.setBodyAndHeaderHeights();\n    };\n    GridApi.prototype.getFirstRenderedRow = function () {\n        console.log('in ag-Grid v12, getFirstRenderedRow() was renamed to getFirstDisplayedRow()');\n        return this.getFirstDisplayedRow();\n    };\n    GridApi.prototype.getFirstDisplayedRow = function () {\n        return this.rowRenderer.getFirstVirtualRenderedRow();\n    };\n    GridApi.prototype.getLastRenderedRow = function () {\n        console.log('in ag-Grid v12, getLastRenderedRow() was renamed to getLastDisplayedRow()');\n        return this.getLastDisplayedRow();\n    };\n    GridApi.prototype.getLastDisplayedRow = function () {\n        return this.rowRenderer.getLastVirtualRenderedRow();\n    };\n    GridApi.prototype.getDisplayedRowAtIndex = function (index) {\n        return this.rowModel.getRow(index);\n    };\n    GridApi.prototype.getDisplayedRowCount = function () {\n        return this.rowModel.getRowCount();\n    };\n    GridApi.prototype.paginationIsLastPageFound = function () {\n        return this.paginationProxy.isLastPageFound();\n    };\n    GridApi.prototype.paginationGetPageSize = function () {\n        return this.paginationProxy.getPageSize();\n    };\n    GridApi.prototype.paginationSetPageSize = function (size) {\n        this.gridOptionsWrapper.setProperty('paginationPageSize', size);\n    };\n    GridApi.prototype.paginationGetCurrentPage = function () {\n        return this.paginationProxy.getCurrentPage();\n    };\n    GridApi.prototype.paginationGetTotalPages = function () {\n        return this.paginationProxy.getTotalPages();\n    };\n    GridApi.prototype.paginationGetRowCount = function () {\n        return this.paginationProxy.getTotalRowCount();\n    };\n    GridApi.prototype.paginationGoToNextPage = function () {\n        this.paginationProxy.goToNextPage();\n    };\n    GridApi.prototype.paginationGoToPreviousPage = function () {\n        this.paginationProxy.goToPreviousPage();\n    };\n    GridApi.prototype.paginationGoToFirstPage = function () {\n        this.paginationProxy.goToFirstPage();\n    };\n    GridApi.prototype.paginationGoToLastPage = function () {\n        this.paginationProxy.goToLastPage();\n    };\n    GridApi.prototype.paginationGoToPage = function (page) {\n        this.paginationProxy.goToPage(page);\n    };\n    __decorate([\n        context_1.Autowired('immutableService'),\n        __metadata(\"design:type\", immutableService_1.ImmutableService)\n    ], GridApi.prototype, \"immutableService\", void 0);\n    __decorate([\n        context_1.Autowired('csvCreator'),\n        __metadata(\"design:type\", csvCreator_1.CsvCreator)\n    ], GridApi.prototype, \"csvCreator\", void 0);\n    __decorate([\n        context_1.Optional('excelCreator'),\n        __metadata(\"design:type\", Object)\n    ], GridApi.prototype, \"excelCreator\", void 0);\n    __decorate([\n        context_1.Autowired('gridCore'),\n        __metadata(\"design:type\", gridCore_1.GridCore)\n    ], GridApi.prototype, \"gridCore\", void 0);\n    __decorate([\n        context_1.Autowired('rowRenderer'),\n        __metadata(\"design:type\", rowRenderer_1.RowRenderer)\n    ], GridApi.prototype, \"rowRenderer\", void 0);\n    __decorate([\n        context_1.Autowired('headerRenderer'),\n        __metadata(\"design:type\", headerRenderer_1.HeaderRenderer)\n    ], GridApi.prototype, \"headerRenderer\", void 0);\n    __decorate([\n        context_1.Autowired('filterManager'),\n        __metadata(\"design:type\", filterManager_1.FilterManager)\n    ], GridApi.prototype, \"filterManager\", void 0);\n    __decorate([\n        context_1.Autowired('columnController'),\n        __metadata(\"design:type\", columnController_1.ColumnController)\n    ], GridApi.prototype, \"columnController\", void 0);\n    __decorate([\n        context_1.Autowired('selectionController'),\n        __metadata(\"design:type\", selectionController_1.SelectionController)\n    ], GridApi.prototype, \"selectionController\", void 0);\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], GridApi.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('gridPanel'),\n        __metadata(\"design:type\", gridPanel_1.GridPanel)\n    ], GridApi.prototype, \"gridPanel\", void 0);\n    __decorate([\n        context_1.Autowired('valueService'),\n        __metadata(\"design:type\", valueService_1.ValueService)\n    ], GridApi.prototype, \"valueService\", void 0);\n    __decorate([\n        context_1.Autowired('alignedGridsService'),\n        __metadata(\"design:type\", alignedGridsService_1.AlignedGridsService)\n    ], GridApi.prototype, \"alignedGridsService\", void 0);\n    __decorate([\n        context_1.Autowired('eventService'),\n        __metadata(\"design:type\", eventService_1.EventService)\n    ], GridApi.prototype, \"eventService\", void 0);\n    __decorate([\n        context_1.Autowired('pinnedRowModel'),\n        __metadata(\"design:type\", pinnedRowModel_1.PinnedRowModel)\n    ], GridApi.prototype, \"pinnedRowModel\", void 0);\n    __decorate([\n        context_1.Autowired('context'),\n        __metadata(\"design:type\", context_1.Context)\n    ], GridApi.prototype, \"context\", void 0);\n    __decorate([\n        context_1.Autowired('rowModel'),\n        __metadata(\"design:type\", Object)\n    ], GridApi.prototype, \"rowModel\", void 0);\n    __decorate([\n        context_1.Autowired('sortController'),\n        __metadata(\"design:type\", sortController_1.SortController)\n    ], GridApi.prototype, \"sortController\", void 0);\n    __decorate([\n        context_1.Autowired('paginationProxy'),\n        __metadata(\"design:type\", paginationProxy_1.PaginationProxy)\n    ], GridApi.prototype, \"paginationProxy\", void 0);\n    __decorate([\n        context_1.Autowired('focusedCellController'),\n        __metadata(\"design:type\", focusedCellController_1.FocusedCellController)\n    ], GridApi.prototype, \"focusedCellController\", void 0);\n    __decorate([\n        context_1.Optional('rangeController'),\n        __metadata(\"design:type\", Object)\n    ], GridApi.prototype, \"rangeController\", void 0);\n    __decorate([\n        context_1.Optional('clipboardService'),\n        __metadata(\"design:type\", Object)\n    ], GridApi.prototype, \"clipboardService\", void 0);\n    __decorate([\n        context_1.Optional('aggFuncService'),\n        __metadata(\"design:type\", Object)\n    ], GridApi.prototype, \"aggFuncService\", void 0);\n    __decorate([\n        context_1.Autowired('menuFactory'),\n        __metadata(\"design:type\", Object)\n    ], GridApi.prototype, \"menuFactory\", void 0);\n    __decorate([\n        context_1.Autowired('cellRendererFactory'),\n        __metadata(\"design:type\", cellRendererFactory_1.CellRendererFactory)\n    ], GridApi.prototype, \"cellRendererFactory\", void 0);\n    __decorate([\n        context_1.Autowired('cellEditorFactory'),\n        __metadata(\"design:type\", cellEditorFactory_1.CellEditorFactory)\n    ], GridApi.prototype, \"cellEditorFactory\", void 0);\n    __decorate([\n        context_1.Autowired('valueCache'),\n        __metadata(\"design:type\", valueCache_1.ValueCache)\n    ], GridApi.prototype, \"valueCache\", void 0);\n    __decorate([\n        context_1.Optional('toolPanel'),\n        __metadata(\"design:type\", Object)\n    ], GridApi.prototype, \"toolPanel\", void 0);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], GridApi.prototype, \"init\", null);\n    GridApi = __decorate([\n        context_1.Bean('gridApi')\n    ], GridApi);\n    return GridApi;\n}());\nexports.GridApi = GridApi;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/gridApi.js\n// module id = 16\n// module chunks = 0","/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n  warning = function(condition, format, args) {\n    var len = arguments.length;\n    args = new Array(len > 2 ? len - 2 : 0);\n    for (var key = 2; key < len; key++) {\n      args[key - 2] = arguments[key];\n    }\n    if (format === undefined) {\n      throw new Error(\n        '`warning(condition, format, ...args)` requires a warning ' +\n        'message argument'\n      );\n    }\n\n    if (format.length < 10 || (/^[s\\W]*$/).test(format)) {\n      throw new Error(\n        'The warning format should be able to uniquely identify this ' +\n        'warning. Please, use a more descriptive format than: ' + format\n      );\n    }\n\n    if (!condition) {\n      var argIndex = 0;\n      var message = 'Warning: ' +\n        format.replace(/%s/g, function() {\n          return args[argIndex++];\n        });\n      if (typeof console !== 'undefined') {\n        console.error(message);\n      }\n      try {\n        // This error was thrown as a convenience so that you can use this stack\n        // to find the callsite that caused this warning to fire.\n        throw new Error(message);\n      } catch(x) {}\n    }\n  };\n}\n\nmodule.exports = warning;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/warning/browser.js\n// module id = 17\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _createChainableTypeChecker = require('./utils/createChainableTypeChecker');\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(_createChainableTypeChecker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction elementType(props, propName, componentName, location, propFullName) {\n  var propValue = props[propName];\n  var propType = typeof propValue === 'undefined' ? 'undefined' : _typeof(propValue);\n\n  if (_react2.default.isValidElement(propValue)) {\n    return new Error('Invalid ' + location + ' `' + propFullName + '` of type ReactElement ' + ('supplied to `' + componentName + '`, expected an element type (a string ') + 'or a ReactClass).');\n  }\n\n  if (propType !== 'function' && propType !== 'string') {\n    return new Error('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected an element type (a string ') + 'or a ReactClass).');\n  }\n\n  return null;\n}\n\nexports.default = (0, _createChainableTypeChecker2.default)(elementType);\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types-extra/lib/elementType.js\n// module id = 18\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Constants = (function () {\n    function Constants() {\n    }\n    Constants.STEP_EVERYTHING = 0;\n    Constants.STEP_FILTER = 1;\n    Constants.STEP_SORT = 2;\n    Constants.STEP_MAP = 3;\n    Constants.STEP_AGGREGATE = 4;\n    Constants.STEP_PIVOT = 5;\n    Constants.ROW_BUFFER_SIZE = 10;\n    Constants.LAYOUT_INTERVAL = 500;\n    Constants.EXPORT_TYPE_DRAG_COPY = 'dragCopy';\n    Constants.EXPORT_TYPE_CLIPBOARD = 'clipboard';\n    Constants.EXPORT_TYPE_EXCEL = 'excel';\n    Constants.EXPORT_TYPE_CSV = 'csv';\n    Constants.KEY_BACKSPACE = 8;\n    Constants.KEY_TAB = 9;\n    Constants.KEY_NEW_LINE = 10;\n    Constants.KEY_ENTER = 13;\n    Constants.KEY_SHIFT = 16;\n    Constants.KEY_ESCAPE = 27;\n    Constants.KEY_SPACE = 32;\n    Constants.KEY_LEFT = 37;\n    Constants.KEY_UP = 38;\n    Constants.KEY_RIGHT = 39;\n    Constants.KEY_DOWN = 40;\n    Constants.KEY_DELETE = 46;\n    Constants.KEY_A = 65;\n    Constants.KEY_C = 67;\n    Constants.KEY_V = 86;\n    Constants.KEY_D = 68;\n    Constants.KEY_F2 = 113;\n    Constants.KEY_PAGE_UP = 33;\n    Constants.KEY_PAGE_DOWN = 34;\n    Constants.KEY_PAGE_HOME = 36;\n    Constants.KEY_PAGE_END = 35;\n    Constants.ROW_MODEL_TYPE_INFINITE = 'infinite';\n    Constants.ROW_MODEL_TYPE_VIEWPORT = 'viewport';\n    Constants.ROW_MODEL_TYPE_IN_MEMORY = 'inMemory';\n    Constants.ROW_MODEL_TYPE_ENTERPRISE = 'enterprise';\n    Constants.DEPRECATED_ROW_MODEL_TYPE_NORMAL = 'normal';\n    Constants.ALWAYS = 'always';\n    Constants.ONLY_WHEN_GROUPING = 'onlyWhenGrouping';\n    Constants.PINNED_TOP = 'top';\n    Constants.PINNED_BOTTOM = 'bottom';\n    return Constants;\n}());\nexports.Constants = Constants;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/constants.js\n// module id = 19\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar beanStub_1 = require(\"../context/beanStub\");\nvar compIdSequence = new utils_1.NumberSequence();\nvar Component = (function (_super) {\n    __extends(Component, _super);\n    function Component(template) {\n        var _this = _super.call(this) || this;\n        _this.childComponents = [];\n        _this.annotatedEventListeners = [];\n        _this.visible = true;\n        // unique id for this row component. this is used for getting a reference to the HTML dom.\n        // we cannot use the RowNode id as this is not unique (due to animation, old rows can be lying\n        // around as we create a new rowComp instance for the same row node).\n        _this.compId = compIdSequence.next();\n        if (template) {\n            _this.setTemplate(template);\n        }\n        return _this;\n    }\n    Component.prototype.getCompId = function () {\n        return this.compId;\n    };\n    Component.prototype.instantiate = function (context) {\n        this.instantiateRecurse(this.getGui(), context);\n    };\n    Component.prototype.instantiateRecurse = function (parentNode, context) {\n        var childCount = parentNode.childNodes ? parentNode.childNodes.length : 0;\n        for (var i = 0; i < childCount; i++) {\n            var childNode = parentNode.childNodes[i];\n            var newComponent = context.createComponent(childNode);\n            if (newComponent) {\n                this.swapComponentForNode(newComponent, parentNode, childNode);\n            }\n            else {\n                if (childNode.childNodes) {\n                    this.instantiateRecurse(childNode, context);\n                }\n            }\n        }\n    };\n    Component.prototype.swapComponentForNode = function (newComponent, parentNode, childNode) {\n        parentNode.replaceChild(newComponent.getGui(), childNode);\n        this.childComponents.push(newComponent);\n        this.swapInComponentForQuerySelectors(newComponent, childNode);\n    };\n    Component.prototype.swapInComponentForQuerySelectors = function (newComponent, childNode) {\n        var thisProto = Object.getPrototypeOf(this);\n        var thisNoType = this;\n        while (thisProto != null) {\n            var metaData = thisProto.__agComponentMetaData;\n            var currentProtoName = (thisProto.constructor).name;\n            if (metaData && metaData[currentProtoName] && metaData[currentProtoName].querySelectors) {\n                metaData[currentProtoName].querySelectors.forEach(function (querySelector) {\n                    if (thisNoType[querySelector.attributeName] === childNode) {\n                        thisNoType[querySelector.attributeName] = newComponent;\n                    }\n                });\n            }\n            thisProto = Object.getPrototypeOf(thisProto);\n        }\n    };\n    Component.prototype.setTemplate = function (template) {\n        var eGui = utils_1.Utils.loadTemplate(template);\n        this.setTemplateFromElement(eGui);\n    };\n    Component.prototype.setTemplateFromElement = function (element) {\n        this.eGui = element;\n        this.eGui.__agComponent = this;\n        this.addAnnotatedEventListeners();\n        this.wireQuerySelectors();\n    };\n    Component.prototype.attributesSet = function () {\n    };\n    Component.prototype.wireQuerySelectors = function () {\n        var _this = this;\n        if (!this.eGui) {\n            return;\n        }\n        var thisProto = Object.getPrototypeOf(this);\n        var _loop_1 = function () {\n            var metaData = thisProto.__agComponentMetaData;\n            var currentProtoName = (thisProto.constructor).name;\n            if (metaData && metaData[currentProtoName] && metaData[currentProtoName].querySelectors) {\n                var thisNoType_1 = this_1;\n                metaData[currentProtoName].querySelectors.forEach(function (querySelector) {\n                    var resultOfQuery = _this.eGui.querySelector(querySelector.querySelector);\n                    if (resultOfQuery) {\n                        var backingComponent = resultOfQuery.__agComponent;\n                        if (backingComponent) {\n                            thisNoType_1[querySelector.attributeName] = backingComponent;\n                        }\n                        else {\n                            thisNoType_1[querySelector.attributeName] = resultOfQuery;\n                        }\n                    }\n                    else {\n                        // put debug msg in here if query selector fails???\n                    }\n                });\n            }\n            thisProto = Object.getPrototypeOf(thisProto);\n        };\n        var this_1 = this;\n        while (thisProto != null) {\n            _loop_1();\n        }\n    };\n    Component.prototype.addAnnotatedEventListeners = function () {\n        var _this = this;\n        this.removeAnnotatedEventListeners();\n        if (!this.eGui) {\n            return;\n        }\n        var thisProto = Object.getPrototypeOf(this);\n        while (thisProto != null) {\n            var metaData = thisProto.__agComponentMetaData;\n            var currentProtoName = (thisProto.constructor).name;\n            if (metaData && metaData[currentProtoName] && metaData[currentProtoName].listenerMethods) {\n                if (!this.annotatedEventListeners) {\n                    this.annotatedEventListeners = [];\n                }\n                metaData[currentProtoName].listenerMethods.forEach(function (eventListener) {\n                    var listener = _this[eventListener.methodName].bind(_this);\n                    _this.eGui.addEventListener(eventListener.eventName, listener);\n                    _this.annotatedEventListeners.push({ eventName: eventListener.eventName, listener: listener });\n                });\n            }\n            thisProto = Object.getPrototypeOf(thisProto);\n        }\n    };\n    Component.prototype.removeAnnotatedEventListeners = function () {\n        var _this = this;\n        if (!this.annotatedEventListeners) {\n            return;\n        }\n        if (!this.eGui) {\n            return;\n        }\n        this.annotatedEventListeners.forEach(function (eventListener) {\n            _this.eGui.removeEventListener(eventListener.eventName, eventListener.listener);\n        });\n        this.annotatedEventListeners = null;\n    };\n    Component.prototype.getGui = function () {\n        return this.eGui;\n    };\n    // this method is for older code, that wants to provide the gui element,\n    // it is not intended for this to be in ag-Stack\n    Component.prototype.setGui = function (eGui) {\n        this.eGui = eGui;\n    };\n    Component.prototype.queryForHtmlElement = function (cssSelector) {\n        return this.eGui.querySelector(cssSelector);\n    };\n    Component.prototype.queryForHtmlInputElement = function (cssSelector) {\n        return this.eGui.querySelector(cssSelector);\n    };\n    Component.prototype.appendChild = function (newChild) {\n        if (utils_1.Utils.isNodeOrElement(newChild)) {\n            this.eGui.appendChild(newChild);\n        }\n        else {\n            var childComponent = newChild;\n            this.eGui.appendChild(childComponent.getGui());\n            this.childComponents.push(childComponent);\n        }\n    };\n    Component.prototype.addFeature = function (context, feature) {\n        context.wireBean(feature);\n        if (feature.destroy) {\n            this.addDestroyFunc(feature.destroy.bind(feature));\n        }\n    };\n    Component.prototype.isVisible = function () {\n        return this.visible;\n    };\n    Component.prototype.setVisible = function (visible) {\n        if (visible !== this.visible) {\n            this.visible = visible;\n            utils_1.Utils.addOrRemoveCssClass(this.eGui, 'ag-hidden', !visible);\n            var event_1 = {\n                type: Component.EVENT_VISIBLE_CHANGED,\n                visible: this.visible\n            };\n            this.dispatchEvent(event_1);\n        }\n    };\n    Component.prototype.addOrRemoveCssClass = function (className, addOrRemove) {\n        utils_1.Utils.addOrRemoveCssClass(this.eGui, className, addOrRemove);\n    };\n    Component.prototype.destroy = function () {\n        _super.prototype.destroy.call(this);\n        this.childComponents.forEach(function (childComponent) { return childComponent.destroy(); });\n        this.childComponents.length = 0;\n        this.removeAnnotatedEventListeners();\n    };\n    Component.prototype.addGuiEventListener = function (event, listener) {\n        var _this = this;\n        this.getGui().addEventListener(event, listener);\n        this.addDestroyFunc(function () { return _this.getGui().removeEventListener(event, listener); });\n    };\n    Component.prototype.addCssClass = function (className) {\n        utils_1.Utils.addCssClass(this.getGui(), className);\n    };\n    Component.prototype.removeCssClass = function (className) {\n        utils_1.Utils.removeCssClass(this.getGui(), className);\n    };\n    Component.prototype.getAttribute = function (key) {\n        var eGui = this.getGui();\n        if (eGui) {\n            return eGui.getAttribute(key);\n        }\n        else {\n            return null;\n        }\n    };\n    Component.prototype.getRefElement = function (refName) {\n        return this.queryForHtmlElement('[ref=\"' + refName + '\"]');\n    };\n    Component.EVENT_VISIBLE_CHANGED = 'visibleChanged';\n    return Component;\n}(beanStub_1.BeanStub));\nexports.Component = Component;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/widgets/component.js\n// module id = 20\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar eventService_1 = require(\"../eventService\");\nvar utils_1 = require(\"../utils\");\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar columnUtils_1 = require(\"../columnController/columnUtils\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar gridApi_1 = require(\"../gridApi\");\n// Wrapper around a user provide column definition. The grid treats the column definition as ready only.\n// This class contains all the runtime information about a column, plus some logic (the definition has no logic).\n// This class implements both interfaces ColumnGroupChild and OriginalColumnGroupChild as the class can\n// appear as a child of either the original tree or the displayed tree. However the relevant group classes\n// for each type only implements one, as each group can only appear in it's associated tree (eg OriginalColumnGroup\n// can only appear in OriginalColumn tree).\nvar Column = (function () {\n    function Column(colDef, colId, primary) {\n        this.moving = false;\n        this.menuVisible = false;\n        this.filterActive = false;\n        this.eventService = new eventService_1.EventService();\n        this.rowGroupActive = false;\n        this.pivotActive = false;\n        this.aggregationActive = false;\n        this.colDef = colDef;\n        this.visible = !colDef.hide;\n        this.sort = colDef.sort;\n        this.sortedAt = colDef.sortedAt;\n        this.colId = colId;\n        this.primary = primary;\n    }\n    Column.prototype.setParent = function (parent) {\n        this.parent = parent;\n    };\n    Column.prototype.getParent = function () {\n        return this.parent;\n    };\n    // this is done after constructor as it uses gridOptionsWrapper\n    Column.prototype.initialise = function () {\n        this.setPinned(this.colDef.pinned);\n        var minColWidth = this.gridOptionsWrapper.getMinColWidth();\n        var maxColWidth = this.gridOptionsWrapper.getMaxColWidth();\n        if (this.colDef.minWidth) {\n            this.minWidth = this.colDef.minWidth;\n        }\n        else {\n            this.minWidth = minColWidth;\n        }\n        if (this.colDef.maxWidth) {\n            this.maxWidth = this.colDef.maxWidth;\n        }\n        else {\n            this.maxWidth = maxColWidth;\n        }\n        this.actualWidth = this.columnUtils.calculateColInitialWidth(this.colDef);\n        var suppressDotNotation = this.gridOptionsWrapper.isSuppressFieldDotNotation();\n        this.fieldContainsDots = utils_1.Utils.exists(this.colDef.field) && this.colDef.field.indexOf('.') >= 0 && !suppressDotNotation;\n        this.tooltipFieldContainsDots = utils_1.Utils.exists(this.colDef.tooltipField) && this.colDef.tooltipField.indexOf('.') >= 0 && !suppressDotNotation;\n        this.validate();\n    };\n    Column.prototype.isEmptyGroup = function () {\n        return false;\n    };\n    Column.prototype.isRowGroupDisplayed = function (colId) {\n        if (utils_1.Utils.missing(this.colDef) || utils_1.Utils.missing(this.colDef.showRowGroup)) {\n            return false;\n        }\n        var showingAllGroups = this.colDef.showRowGroup === true;\n        var showingThisGroup = this.colDef.showRowGroup === colId;\n        return showingAllGroups || showingThisGroup;\n    };\n    Column.prototype.getUniqueId = function () {\n        return this.getId();\n    };\n    Column.prototype.isPrimary = function () {\n        return this.primary;\n    };\n    Column.prototype.isFilterAllowed = function () {\n        return this.primary && !this.colDef.suppressFilter;\n    };\n    Column.prototype.isFieldContainsDots = function () {\n        return this.fieldContainsDots;\n    };\n    Column.prototype.isTooltipFieldContainsDots = function () {\n        return this.tooltipFieldContainsDots;\n    };\n    Column.prototype.validate = function () {\n        var colDefAny = this.colDef;\n        if (!this.gridOptionsWrapper.isEnterprise()) {\n            var itemsNotAllowedWithoutEnterprise = ['enableRowGroup', 'rowGroup', 'rowGroupIndex', 'enablePivot', 'pivot', 'pivotIndex', 'aggFunc'];\n            itemsNotAllowedWithoutEnterprise.forEach(function (item) {\n                if (utils_1.Utils.exists(colDefAny[item])) {\n                    console.warn(\"ag-Grid: \" + item + \" is only valid in ag-Grid-Enterprise, your column definition should not have \" + item);\n                }\n            });\n        }\n        if (this.gridOptionsWrapper.isTreeData()) {\n            var itemsNotAllowedWithTreeData = ['enableRowGroup', 'rowGroup', 'rowGroupIndex', 'enablePivot', 'pivot', 'pivotIndex'];\n            itemsNotAllowedWithTreeData.forEach(function (item) {\n                if (utils_1.Utils.exists(colDefAny[item])) {\n                    console.warn(\"ag-Grid: \" + item + \" is not possible when doing tree data, your column definition should not have \" + item);\n                }\n            });\n        }\n        if (utils_1.Utils.exists(this.colDef.width) && typeof this.colDef.width !== 'number') {\n            console.warn('ag-Grid: colDef.width should be a number, not ' + typeof this.colDef.width);\n        }\n        if (utils_1.Utils.get(this, 'colDef.cellRendererParams.restrictToOneGroup', null)) {\n            console.warn('ag-Grid: Since ag-grid 11.0.0 cellRendererParams.restrictToOneGroup is deprecated. You should use showRowGroup');\n        }\n        if (utils_1.Utils.get(this, 'colDef.cellRendererParams.keyMap', null)) {\n            console.warn('ag-Grid: Since ag-grid 11.0.0 cellRendererParams.keyMap is deprecated. You should use colDef.keyCreator');\n        }\n        if (utils_1.Utils.get(this, 'colDef.cellRendererParams.keyMap', null)) {\n            console.warn('ag-Grid: Since ag-grid 11.0.0 cellRendererParams.keyMap is deprecated. You should use colDef.keyCreator');\n        }\n        if (colDefAny.floatingCellRenderer) {\n            console.warn('ag-Grid: since v11, floatingCellRenderer is now pinnedRowCellRenderer');\n            this.colDef.pinnedRowCellRenderer = colDefAny.floatingCellRenderer;\n        }\n        if (colDefAny.floatingRendererFramework) {\n            console.warn('ag-Grid: since v11, floatingRendererFramework is now pinnedRowCellRendererFramework');\n            this.colDef.pinnedRowCellRendererFramework = colDefAny.floatingRendererFramework;\n        }\n        if (colDefAny.floatingRendererParams) {\n            console.warn('ag-Grid: since v11, floatingRendererParams is now pinnedRowCellRendererParams');\n            this.colDef.pinnedRowCellRendererParams = colDefAny.floatingRendererParams;\n        }\n        if (colDefAny.floatingValueFormatter) {\n            console.warn('ag-Grid: since v11, floatingValueFormatter is now pinnedRowValueFormatter');\n            this.colDef.pinnedRowValueFormatter = colDefAny.floatingValueFormatter;\n        }\n        if (colDefAny.cellFormatter) {\n            console.warn('ag-Grid: since v12, cellFormatter is now valueFormatter');\n            if (utils_1.Utils.missing(this.colDef.valueFormatter)) {\n                this.colDef.valueFormatter = colDefAny.cellFormatter;\n            }\n        }\n        if (colDefAny.headerCellTemplate) {\n            console.warn('ag-Grid: since v15, headerCellTemplate is gone, use header component instead.');\n        }\n        if (colDefAny.headerCellRenderer) {\n            console.warn('ag-Grid: since v15, headerCellRenderer is gone, use header component instead.');\n        }\n    };\n    Column.prototype.addEventListener = function (eventType, listener) {\n        this.eventService.addEventListener(eventType, listener);\n    };\n    Column.prototype.removeEventListener = function (eventType, listener) {\n        this.eventService.removeEventListener(eventType, listener);\n    };\n    Column.prototype.createIsColumnFuncParams = function (rowNode) {\n        return {\n            node: rowNode,\n            column: this,\n            colDef: this.colDef,\n            context: this.gridOptionsWrapper.getContext(),\n            api: this.gridOptionsWrapper.getApi(),\n            columnApi: this.gridOptionsWrapper.getColumnApi()\n        };\n    };\n    Column.prototype.isSuppressNavigable = function (rowNode) {\n        // if boolean set, then just use it\n        if (typeof this.colDef.suppressNavigable === 'boolean') {\n            return this.colDef.suppressNavigable;\n        }\n        // if function, then call the function to find out\n        if (typeof this.colDef.suppressNavigable === 'function') {\n            var params = this.createIsColumnFuncParams(rowNode);\n            var userFunc = this.colDef.suppressNavigable;\n            return userFunc(params);\n        }\n        return false;\n    };\n    Column.prototype.isCellEditable = function (rowNode) {\n        // only allow editing of groups if the user has this option enabled\n        if (rowNode.group && !this.gridOptionsWrapper.isEnableGroupEdit()) {\n            return false;\n        }\n        return this.isColumnFunc(rowNode, this.colDef.editable);\n    };\n    Column.prototype.isSuppressPaste = function (rowNode) {\n        return this.isColumnFunc(rowNode, this.colDef ? this.colDef.suppressPaste : null);\n    };\n    Column.prototype.isResizable = function () {\n        var enableColResize = this.gridOptionsWrapper.isEnableColResize();\n        var suppressResize = this.colDef && this.colDef.suppressResize;\n        return enableColResize && !suppressResize;\n    };\n    Column.prototype.isColumnFunc = function (rowNode, value) {\n        // if boolean set, then just use it\n        if (typeof value === 'boolean') {\n            return value;\n        }\n        // if function, then call the function to find out\n        if (typeof value === 'function') {\n            var params = this.createIsColumnFuncParams(rowNode);\n            var editableFunc = value;\n            return editableFunc(params);\n        }\n        return false;\n    };\n    Column.prototype.setMoving = function (moving) {\n        this.moving = moving;\n        this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_MOVING_CHANGED));\n    };\n    Column.prototype.createColumnEvent = function (type) {\n        return {\n            api: this.gridApi,\n            columnApi: this.columnApi,\n            type: type,\n            column: this,\n            columns: [this]\n        };\n    };\n    Column.prototype.isMoving = function () {\n        return this.moving;\n    };\n    Column.prototype.getSort = function () {\n        return this.sort;\n    };\n    Column.prototype.setSort = function (sort) {\n        if (this.sort !== sort) {\n            this.sort = sort;\n            this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_SORT_CHANGED));\n        }\n    };\n    Column.prototype.setMenuVisible = function (visible) {\n        if (this.menuVisible !== visible) {\n            this.menuVisible = visible;\n            this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_MENU_VISIBLE_CHANGED));\n        }\n    };\n    Column.prototype.isMenuVisible = function () {\n        return this.menuVisible;\n    };\n    Column.prototype.isSortAscending = function () {\n        return this.sort === Column.SORT_ASC;\n    };\n    Column.prototype.isSortDescending = function () {\n        return this.sort === Column.SORT_DESC;\n    };\n    Column.prototype.isSortNone = function () {\n        return utils_1.Utils.missing(this.sort);\n    };\n    Column.prototype.isSorting = function () {\n        return utils_1.Utils.exists(this.sort);\n    };\n    Column.prototype.getSortedAt = function () {\n        return this.sortedAt;\n    };\n    Column.prototype.setSortedAt = function (sortedAt) {\n        this.sortedAt = sortedAt;\n    };\n    Column.prototype.setAggFunc = function (aggFunc) {\n        this.aggFunc = aggFunc;\n    };\n    Column.prototype.getAggFunc = function () {\n        return this.aggFunc;\n    };\n    Column.prototype.getLeft = function () {\n        return this.left;\n    };\n    Column.prototype.getOldLeft = function () {\n        return this.oldLeft;\n    };\n    Column.prototype.getRight = function () {\n        return this.left + this.actualWidth;\n    };\n    Column.prototype.setLeft = function (left) {\n        this.oldLeft = this.left;\n        if (this.left !== left) {\n            this.left = left;\n            this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_LEFT_CHANGED));\n        }\n    };\n    Column.prototype.isFilterActive = function () {\n        return this.filterActive;\n    };\n    Column.prototype.setFilterActive = function (active) {\n        if (this.filterActive !== active) {\n            this.filterActive = active;\n            this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_FILTER_ACTIVE_CHANGED));\n        }\n        this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_FILTER_CHANGED));\n    };\n    Column.prototype.setPinned = function (pinned) {\n        // pinning is not allowed when doing 'forPrint'\n        if (this.gridOptionsWrapper.isForPrint()) {\n            return;\n        }\n        if (pinned === true || pinned === Column.PINNED_LEFT) {\n            this.pinned = Column.PINNED_LEFT;\n        }\n        else if (pinned === Column.PINNED_RIGHT) {\n            this.pinned = Column.PINNED_RIGHT;\n        }\n        else {\n            this.pinned = null;\n        }\n        // console.log(`setColumnsPinned ${this.getColId()} ${this.pinned}`);\n    };\n    Column.prototype.setFirstRightPinned = function (firstRightPinned) {\n        if (this.firstRightPinned !== firstRightPinned) {\n            this.firstRightPinned = firstRightPinned;\n            this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_FIRST_RIGHT_PINNED_CHANGED));\n        }\n    };\n    Column.prototype.setLastLeftPinned = function (lastLeftPinned) {\n        if (this.lastLeftPinned !== lastLeftPinned) {\n            this.lastLeftPinned = lastLeftPinned;\n            this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_LAST_LEFT_PINNED_CHANGED));\n        }\n    };\n    Column.prototype.isFirstRightPinned = function () {\n        return this.firstRightPinned;\n    };\n    Column.prototype.isLastLeftPinned = function () {\n        return this.lastLeftPinned;\n    };\n    Column.prototype.isPinned = function () {\n        return this.pinned === Column.PINNED_LEFT || this.pinned === Column.PINNED_RIGHT;\n    };\n    Column.prototype.isPinnedLeft = function () {\n        return this.pinned === Column.PINNED_LEFT;\n    };\n    Column.prototype.isPinnedRight = function () {\n        return this.pinned === Column.PINNED_RIGHT;\n    };\n    Column.prototype.getPinned = function () {\n        return this.pinned;\n    };\n    Column.prototype.setVisible = function (visible) {\n        var newValue = visible === true;\n        if (this.visible !== newValue) {\n            this.visible = newValue;\n            this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_VISIBLE_CHANGED));\n        }\n    };\n    Column.prototype.isVisible = function () {\n        return this.visible;\n    };\n    Column.prototype.getColDef = function () {\n        return this.colDef;\n    };\n    Column.prototype.getColumnGroupShow = function () {\n        return this.colDef.columnGroupShow;\n    };\n    Column.prototype.getColId = function () {\n        return this.colId;\n    };\n    Column.prototype.getId = function () {\n        return this.getColId();\n    };\n    Column.prototype.getDefinition = function () {\n        return this.colDef;\n    };\n    Column.prototype.getActualWidth = function () {\n        return this.actualWidth;\n    };\n    Column.prototype.getColSpan = function (rowNode) {\n        if (utils_1.Utils.missing(this.colDef.colSpan)) {\n            return 1;\n        }\n        else {\n            var params = {\n                node: rowNode,\n                data: rowNode.data,\n                colDef: this.colDef,\n                column: this,\n                api: this.gridOptionsWrapper.getApi(),\n                columnApi: this.gridOptionsWrapper.getColumnApi(),\n                context: this.gridOptionsWrapper.getContext()\n            };\n            var colSpan = this.colDef.colSpan(params);\n            // colSpan must be number equal to or greater than 1\n            if (colSpan > 1) {\n                return colSpan;\n            }\n            else {\n                return 1;\n            }\n        }\n    };\n    Column.prototype.setActualWidth = function (actualWidth) {\n        if (this.actualWidth !== actualWidth) {\n            this.actualWidth = actualWidth;\n            this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_WIDTH_CHANGED));\n        }\n    };\n    Column.prototype.isGreaterThanMax = function (width) {\n        if (this.maxWidth) {\n            return width > this.maxWidth;\n        }\n        else {\n            return false;\n        }\n    };\n    Column.prototype.getMinWidth = function () {\n        return this.minWidth;\n    };\n    Column.prototype.getMaxWidth = function () {\n        return this.maxWidth;\n    };\n    Column.prototype.setMinimum = function () {\n        this.setActualWidth(this.minWidth);\n    };\n    Column.prototype.setRowGroupActive = function (rowGroup) {\n        if (this.rowGroupActive !== rowGroup) {\n            this.rowGroupActive = rowGroup;\n            this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_ROW_GROUP_CHANGED));\n        }\n    };\n    Column.prototype.isRowGroupActive = function () {\n        return this.rowGroupActive;\n    };\n    Column.prototype.setPivotActive = function (pivot) {\n        if (this.pivotActive !== pivot) {\n            this.pivotActive = pivot;\n            this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_PIVOT_CHANGED));\n        }\n    };\n    Column.prototype.isPivotActive = function () {\n        return this.pivotActive;\n    };\n    Column.prototype.isAnyFunctionActive = function () {\n        return this.isPivotActive() || this.isRowGroupActive() || this.isValueActive();\n    };\n    Column.prototype.isAnyFunctionAllowed = function () {\n        return this.isAllowPivot() || this.isAllowRowGroup() || this.isAllowValue();\n    };\n    Column.prototype.setValueActive = function (value) {\n        if (this.aggregationActive !== value) {\n            this.aggregationActive = value;\n            this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_VALUE_CHANGED));\n        }\n    };\n    Column.prototype.isValueActive = function () {\n        return this.aggregationActive;\n    };\n    Column.prototype.isAllowPivot = function () {\n        return this.colDef.enablePivot === true;\n    };\n    Column.prototype.isAllowValue = function () {\n        return this.colDef.enableValue === true;\n    };\n    Column.prototype.isAllowRowGroup = function () {\n        return this.colDef.enableRowGroup === true;\n    };\n    Column.prototype.getMenuTabs = function (defaultValues) {\n        var menuTabs = this.getColDef().menuTabs;\n        if (menuTabs == null) {\n            menuTabs = defaultValues;\n        }\n        return menuTabs;\n    };\n    // + renderedHeaderCell - for making header cell transparent when moving\n    Column.EVENT_MOVING_CHANGED = 'movingChanged';\n    // + renderedCell - changing left position\n    Column.EVENT_LEFT_CHANGED = 'leftChanged';\n    // + renderedCell - changing width\n    Column.EVENT_WIDTH_CHANGED = 'widthChanged';\n    // + renderedCell - for changing pinned classes\n    Column.EVENT_LAST_LEFT_PINNED_CHANGED = 'lastLeftPinnedChanged';\n    Column.EVENT_FIRST_RIGHT_PINNED_CHANGED = 'firstRightPinnedChanged';\n    // + renderedColumn - for changing visibility icon\n    Column.EVENT_VISIBLE_CHANGED = 'visibleChanged';\n    // + every time the filter changes, used in the floating filters\n    Column.EVENT_FILTER_CHANGED = 'filterChanged';\n    // + renderedHeaderCell - marks the header with filter icon\n    Column.EVENT_FILTER_ACTIVE_CHANGED = 'filterActiveChanged';\n    // + renderedHeaderCell - marks the header with sort icon\n    Column.EVENT_SORT_CHANGED = 'sortChanged';\n    Column.EVENT_MENU_VISIBLE_CHANGED = 'menuVisibleChanged';\n    // + toolpanel, for gui updates\n    Column.EVENT_ROW_GROUP_CHANGED = 'columnRowGroupChanged';\n    // + toolpanel, for gui updates\n    Column.EVENT_PIVOT_CHANGED = 'columnPivotChanged';\n    // + toolpanel, for gui updates\n    Column.EVENT_VALUE_CHANGED = 'columnValueChanged';\n    Column.PINNED_RIGHT = 'right';\n    Column.PINNED_LEFT = 'left';\n    Column.SORT_ASC = 'asc';\n    Column.SORT_DESC = 'desc';\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], Column.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('columnUtils'),\n        __metadata(\"design:type\", columnUtils_1.ColumnUtils)\n    ], Column.prototype, \"columnUtils\", void 0);\n    __decorate([\n        context_1.Autowired('frameworkFactory'),\n        __metadata(\"design:type\", Object)\n    ], Column.prototype, \"frameworkFactory\", void 0);\n    __decorate([\n        context_1.Autowired('columnApi'),\n        __metadata(\"design:type\", columnController_1.ColumnApi)\n    ], Column.prototype, \"columnApi\", void 0);\n    __decorate([\n        context_1.Autowired('gridApi'),\n        __metadata(\"design:type\", gridApi_1.GridApi)\n    ], Column.prototype, \"gridApi\", void 0);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], Column.prototype, \"initialise\", null);\n    return Column;\n}());\nexports.Column = Column;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/entities/column.js\n// module id = 21\n// module chunks = 0","/*!\n * jQuery JavaScript Library v3.2.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2017-03-20T18:59Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar document = window.document;\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\n\n\n\tfunction DOMEval( code, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar script = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.2.1\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android <=4.0 only\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && Array.isArray( src ) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject( src ) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type( obj ) === \"function\";\n\t},\n\n\tisWindow: function( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\n\t\t// As of jQuery 3.0, isNumeric is limited to\n\t\t// strings and numbers (primitives or objects)\n\t\t// that can be coerced to finite numbers (gh-2662)\n\t\tvar type = jQuery.type( obj );\n\t\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t\t// subtraction forces infinities to NaN\n\t\t\t!isNaN( obj - parseFloat( obj ) );\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\n\t\t/* eslint-disable no-unused-vars */\n\t\t// See https://github.com/eslint/eslint/issues/6125\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\ttype: function( obj ) {\n\t\tif ( obj == null ) {\n\t\t\treturn obj + \"\";\n\t\t}\n\n\t\t// Support: Android <=2.3 only (functionish RegExp)\n\t\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\t\ttypeof obj;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code ) {\n\t\tDOMEval( code );\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Support: IE <=9 - 11, Edge 12 - 13\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android <=4.0 only\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tvar tmp, args, proxy;\n\n\t\tif ( typeof context === \"string\" ) {\n\t\t\ttmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\targs = slice.call( arguments, 2 );\n\t\tproxy = function() {\n\t\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\tnow: Date.now,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = jQuery.type( obj );\n\n\tif ( type === \"function\" || jQuery.isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.3\n * https://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2016-08-08\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tdisabledAncestor = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && (\"form\" in elem || \"label\" in elem);\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\t\tsetDocument( context );\n\t\t}\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( (m = match[1]) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[2] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!compilerCache[ selector + \" \" ] &&\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\n\t\t\t\tif ( nodeType !== 1 ) {\n\t\t\t\t\tnewContext = context;\n\t\t\t\t\tnewSelector = selector;\n\n\t\t\t\t// qSA looks outside Element context, which is not what we want\n\t\t\t\t// Thanks to Andrew Dupont for this workaround technique\n\t\t\t\t// Support: IE <=8\n\t\t\t\t// Exclude object elements\n\t\t\t\t} else if ( context.nodeName.toLowerCase() !== \"object\" ) {\n\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\n\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = \"#\" + nid + \" \" + toSelector( groups[i] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\t\t\t\t}\n\n\t\t\t\tif ( newSelector ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement(\"fieldset\");\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tdisabledAncestor( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9-11, Edge\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\tif ( preferredDoc !== document &&\n\t\t(subWindow = document.defaultView) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( el ) {\n\t\tel.appendChild( document.createComment(\"\") );\n\t\treturn !el.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t});\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[\"ID\"] =  function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( (elem = elems[i++]) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( el ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( el ) {\n\t\t\tel.innerHTML = \"<a href='' disabled='disabled'></a>\" +\n\t\t\t\t\"<select disabled='disabled'><option/></select>\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll(\":enabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll(\":disabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( el ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === document ? -1 :\n\t\t\t\tb === document ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!compilerCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn (sel + \"\").replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t//   but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( (oldCache = uniqueCache[ key ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context === document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n *  selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n *  selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( el ) {\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement(\"fieldset\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( el ) {\n\tel.innerHTML = \"<a href='#'></a>\";\n\treturn el.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( el ) {\n\tel.innerHTML = \"<input/>\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( el ) {\n\treturn el.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n  return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n};\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\nvar risSimple = /^.[^:#\\[\\.,]*$/;\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Simple selector that can be filtered directly, removing non-Elements\n\tif ( risSimple.test( qualifier ) ) {\n\t\treturn jQuery.filter( qualifier, elements, not );\n\t}\n\n\t// Complex selector, compare the two sets, removing non-Elements\n\tqualifier = jQuery.filter( qualifier, elements );\n\treturn jQuery.grep( elements, function( elem ) {\n\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1;\n\t} );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( jQuery.isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n        if ( nodeName( elem, \"iframe\" ) ) {\n            return elem.contentDocument;\n        }\n\n        // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n        // Treat the template element as a regular one in browsers that\n        // don't support it.\n        if ( nodeName( elem, \"template\" ) ) {\n            elem = elem.content || elem;\n        }\n\n        return jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( jQuery.isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && jQuery.type( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && jQuery.isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && jQuery.isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = jQuery.isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( jQuery.isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tjQuery.isFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tjQuery.isFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tjQuery.isFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the master Deferred\n\t\t\tmaster = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tmaster.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( master.state() === \"pending\" ||\n\t\t\t\tjQuery.isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn master.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), master.reject );\n\t\t}\n\n\t\treturn master.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( jQuery.type( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !jQuery.isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t//  - Node\n\t//    - Node.ELEMENT_NODE\n\t//    - Node.DOCUMENT_NODE\n\t//  - Object\n\t//    - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ jQuery.camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ jQuery.camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ jQuery.camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t//   1. No key was specified\n\t\t//   2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t//   1. The entire cache object\n\t\t//   2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t//   1. An object of properties\n\t\t//   2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( jQuery.camelCase );\n\t\t\t} else {\n\t\t\t\tkey = jQuery.camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = jQuery.camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tjQuery.contains( elem.ownerDocument, elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\nvar swap = function( elem, options, callback, args ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.apply( elem, args || [] );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted,\n\t\tscale = 1,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = ( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\tdo {\n\n\t\t\t// If previous iteration zeroed out, double until we get *something*.\n\t\t\t// Use string for doubling so we don't accidentally see scale as unchanged below\n\t\t\tscale = scale || \".5\";\n\n\t\t\t// Adjust and apply\n\t\t\tinitialInUnit = initialInUnit / scale;\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Update scale, tolerating zero or NaN from tween.cur()\n\t\t// Break the loop if scale is unchanged or perfect, or if we've just had enough.\n\t\t} while (\n\t\t\tscale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations\n\t\t);\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]+)/i );\n\nvar rscriptType = ( /^$|\\/(?:java|ecma)script/i );\n\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// Support: IE <=9 only\n\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\n// Support: IE <=9 only\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, contains, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( jQuery.type( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( contains ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n} )();\nvar documentElement = document.documentElement;\n\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 only\n// See #13393 for more info\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tvar event = jQuery.event.fix( nativeEvent );\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\t\t\thandlers = ( dataPriv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or 2) have namespace(s)\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: jQuery.isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tfocus: {\n\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\tthis.focus();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this.type === \"checkbox\" && this.click && nodeName( this, \"input\" ) ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn nodeName( event.target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\n\twhich: function( event ) {\n\t\tvar button = event.button;\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\n\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\n\t\t\tif ( button & 1 ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif ( button & 2 ) {\n\t\t\t\treturn 3;\n\t\t\t}\n\n\t\t\tif ( button & 4 ) {\n\t\t\t\treturn 2;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn event.which;\n\t}\n}, jQuery.event.addProp );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event )  dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t/* eslint-disable max-len */\n\n\t// See https://github.com/eslint/eslint/issues/3229\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,\n\n\t/* eslint-enable */\n\n\t// Support: IE <=10 - 11, Edge 12 - 13\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trscriptTypeMasked = /^true\\/(.*)/,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( \">tbody\", elem )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tvar match = rscriptTypeMasked.exec( elem.type );\n\n\tif ( match ) {\n\t\telem.type = match[ 1 ];\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.access( src );\n\t\tpdataCur = dataPriv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = concat.apply( [], args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tisFunction = jQuery.isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( isFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( isFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && jQuery.contains( node.ownerDocument, node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html.replace( rxhtmlTag, \"<$1></$2>\" );\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rmargin = ( /^margin/ );\n\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdiv.style.cssText =\n\t\t\t\"box-sizing:border-box;\" +\n\t\t\t\"position:relative;display:block;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"top:1%;width:50%\";\n\t\tdiv.innerHTML = \"\";\n\t\tdocumentElement.appendChild( container );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = divStyle.marginLeft === \"2px\";\n\t\tboxSizingReliableVal = divStyle.width === \"4px\";\n\n\t\t// Support: Android 4.0 - 4.3 only\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.marginRight = \"50%\";\n\t\tpixelMarginRightVal = divStyle.marginRight === \"4px\";\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tcontainer.style.cssText = \"border:0;width:8px;height:0;top:0;left:-9999px;\" +\n\t\t\"padding:0;margin-top:1px;position:absolute\";\n\tcontainer.appendChild( div );\n\n\tjQuery.extend( support, {\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelMarginRight: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelMarginRightVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t//   .css('filter') (IE 9 only, #12537)\n\t//   .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t},\n\n\tcssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style;\n\n// Return a css property mapped to a potentially vendor prefixed property\nfunction vendorPropName( name ) {\n\n\t// Shortcut for names that are not vendor prefixed\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a property mapped along what jQuery.cssProps suggests or to\n// a vendor prefixed property.\nfunction finalPropName( name ) {\n\tvar ret = jQuery.cssProps[ name ];\n\tif ( !ret ) {\n\t\tret = jQuery.cssProps[ name ] = vendorPropName( name ) || name;\n\t}\n\treturn ret;\n}\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {\n\tvar i,\n\t\tval = 0;\n\n\t// If we already have the right measurement, avoid augmentation\n\tif ( extra === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\ti = 4;\n\n\t// Otherwise initialize for horizontal or vertical properties\n\t} else {\n\t\ti = name === \"width\" ? 1 : 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin, so add it if we want it\n\t\tif ( extra === \"margin\" ) {\n\t\t\tval += jQuery.css( elem, extra + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\tif ( isBorderBox ) {\n\n\t\t\t// border-box includes padding, so remove it if we want content\n\t\t\tif ( extra === \"content\" ) {\n\t\t\t\tval -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// At this point, extra isn't border nor margin, so remove border\n\t\t\tif ( extra !== \"margin\" ) {\n\t\t\t\tval -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// At this point, extra isn't content, so add padding\n\t\t\tval += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// At this point, extra isn't content nor padding, so add border\n\t\t\tif ( extra !== \"padding\" ) {\n\t\t\t\tval += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn val;\n}\n\nfunction getWidthOrHeight( elem, name, extra ) {\n\n\t// Start with computed style\n\tvar valueIsBorderBox,\n\t\tstyles = getStyles( elem ),\n\t\tval = curCSS( elem, name, styles ),\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t// Computed unit is not pixels. Stop here and return.\n\tif ( rnumnonpx.test( val ) ) {\n\t\treturn val;\n\t}\n\n\t// Check for style in case a browser which returns unreliable values\n\t// for getComputedStyle silently falls back to the reliable elem.style\n\tvalueIsBorderBox = isBorderBox &&\n\t\t( support.boxSizingReliable() || val === elem.style[ name ] );\n\n\t// Fall back to offsetWidth/Height when value is \"auto\"\n\t// This happens for inline elements with no explicit setting (gh-3571)\n\tif ( val === \"auto\" ) {\n\t\tval = elem[ \"offset\" + name[ 0 ].toUpperCase() + name.slice( 1 ) ];\n\t}\n\n\t// Normalize \"\", auto, and prepare for extra\n\tval = parseFloat( val ) || 0;\n\n\t// Use the active box-sizing model to add/subtract irrelevant styles\n\treturn ( val +\n\t\taugmentWidthOrHeight(\n\t\t\telem,\n\t\t\tname,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t\"float\": \"cssFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = jQuery.camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\tif ( type === \"number\" ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = jQuery.camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t\t\t} ) :\n\t\t\t\t\t\tgetWidthOrHeight( elem, name, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = extra && getStyles( elem ),\n\t\t\t\tsubtract = extra && augmentWidthOrHeight(\n\t\t\t\t\telem,\n\t\t\t\t\tname,\n\t\t\t\t\textra,\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\t\tstyles\n\t\t\t\t);\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ name ] = value;\n\t\t\t\tvalue = jQuery.css( elem, name );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( !rmargin.test( prefix ) ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 &&\n\t\t\t\t( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||\n\t\t\t\t\tjQuery.cssHooks[ tween.prop ] ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = jQuery.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 13\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = jQuery.camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( jQuery.isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tjQuery.proxy( result.stop, result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( jQuery.isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( jQuery.isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tjQuery.isFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !jQuery.isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = jQuery.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://html.spec.whatwg.org/multipage/infrastructure.html#strip-and-collapse-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof value === \"string\" && value ) {\n\t\t\tclasses = value.match( rnothtmlwhite ) || [];\n\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tif ( typeof value === \"string\" && value ) {\n\t\t\tclasses = value.match( rnothtmlwhite ) || [];\n\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value;\n\n\t\tif ( typeof stateVal === \"boolean\" && type === \"string\" ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( type === \"string\" ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = value.match( rnothtmlwhite ) || [];\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, isFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tisFunction = jQuery.isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/;\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || {} )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\t\t\t\t\telem[ type ]();\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\njQuery.each( ( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n} );\n\njQuery.fn.extend( {\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\n\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = jQuery.now();\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {\n\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && jQuery.type( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = jQuery.isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} )\n\t\t.filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} )\n\t\t.map( function( i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\toriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 13\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce++ ) + uncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\n\njQuery._evalUrl = function( url ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\t\t\"throws\": true\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar isFunction = jQuery.isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\"  ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" ).prop( {\n\t\t\t\t\tcharset: s.scriptCharset,\n\t\t\t\t\tsrc: s.url\n\t\t\t\t} ).on(\n\t\t\t\t\t\"load error\",\n\t\t\t\t\tcallback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && jQuery.isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( jQuery.isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar doc, docElem, rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\trect = elem.getBoundingClientRect();\n\n\t\tdoc = elem.ownerDocument;\n\t\tdocElem = doc.documentElement;\n\t\twin = doc.defaultView;\n\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset - docElem.clientTop,\n\t\t\tleft: rect.left + win.pageXOffset - docElem.clientLeft\n\t\t};\n\t},\n\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// Fixed elements are offset from window (parentOffset = {top:0, left: 0},\n\t\t// because it is its only offset parent\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume getBoundingClientRect is there when computed position is fixed\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\n\t\t\t// Get *real* offsetParent\n\t\t\toffsetParent = this.offsetParent();\n\n\t\t\t// Get correct offsets\n\t\t\toffset = this.offset();\n\t\t\tif ( !nodeName( offsetParent[ 0 ], \"html\" ) ) {\n\t\t\t\tparentOffset = offsetParent.offset();\n\t\t\t}\n\n\t\t\t// Add offsetParent borders\n\t\t\tparentOffset = {\n\t\t\t\ttop: parentOffset.top + jQuery.css( offsetParent[ 0 ], \"borderTopWidth\", true ),\n\t\t\t\tleft: parentOffset.left + jQuery.css( offsetParent[ 0 ], \"borderLeftWidth\", true )\n\t\t\t};\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t//    documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( jQuery.isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name },\n\t\tfunction( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t}\n} );\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\n\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( !noGlobal ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jquery/dist/jquery.js\n// module id = 22\n// module chunks = 0","/**\n * Safe chained function\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n *\n * @param {function} functions to chain\n * @returns {function|null}\n */\nfunction createChainedFunction() {\n  for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {\n    funcs[_key] = arguments[_key];\n  }\n\n  return funcs.filter(function (f) {\n    return f != null;\n  }).reduce(function (acc, f) {\n    if (typeof f !== 'function') {\n      throw new Error('Invalid Argument Type, must only provide functions, undefined, or null.');\n    }\n\n    if (acc === null) {\n      return f;\n    }\n\n    return function chainedFunction() {\n      for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      acc.apply(this, args);\n      f.apply(this, args);\n    };\n  }, null);\n}\n\nexport default createChainedFunction;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/utils/createChainedFunction.js\n// module id = 23\n// module chunks = 0","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (format === undefined) {\n      throw new Error('invariant requires an error message argument');\n    }\n  }\n\n  if (!condition) {\n    var error;\n    if (format === undefined) {\n      error = new Error(\n        'Minified exception occurred; use the non-minified dev environment ' +\n        'for the full error message and additional helpful warnings.'\n      );\n    } else {\n      var args = [a, b, c, d, e, f];\n      var argIndex = 0;\n      error = new Error(\n        format.replace(/%s/g, function() { return args[argIndex++]; })\n      );\n      error.name = 'Invariant Violation';\n    }\n\n    error.framesToPop = 1; // we don't care about invariant's own frame\n    throw error;\n  }\n};\n\nmodule.exports = invariant;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/invariant/browser.js\n// module id = 24\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"./gridOptionsWrapper\");\nvar context_1 = require(\"./context/context\");\nvar context_2 = require(\"./context/context\");\nvar LoggerFactory = (function () {\n    function LoggerFactory() {\n    }\n    LoggerFactory.prototype.setBeans = function (gridOptionsWrapper) {\n        this.logging = gridOptionsWrapper.isDebug();\n    };\n    LoggerFactory.prototype.create = function (name) {\n        return new Logger(name, this.isLogging.bind(this));\n    };\n    LoggerFactory.prototype.isLogging = function () {\n        return this.logging;\n    };\n    __decorate([\n        __param(0, context_2.Qualifier('gridOptionsWrapper')),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [gridOptionsWrapper_1.GridOptionsWrapper]),\n        __metadata(\"design:returntype\", void 0)\n    ], LoggerFactory.prototype, \"setBeans\", null);\n    LoggerFactory = __decorate([\n        context_1.Bean('loggerFactory')\n    ], LoggerFactory);\n    return LoggerFactory;\n}());\nexports.LoggerFactory = LoggerFactory;\nvar Logger = (function () {\n    function Logger(name, isLoggingFunc) {\n        this.name = name;\n        this.isLoggingFunc = isLoggingFunc;\n    }\n    Logger.prototype.isLogging = function () {\n        return this.isLoggingFunc();\n    };\n    Logger.prototype.log = function (message) {\n        if (this.isLoggingFunc()) {\n            console.log('ag-Grid.' + this.name + ': ' + message);\n        }\n    };\n    return Logger;\n}());\nexports.Logger = Logger;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/logger.js\n// module id = 25\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar rowRenderer_1 = require(\"../rendering/rowRenderer\");\nvar borderLayout_1 = require(\"../layout/borderLayout\");\nvar logger_1 = require(\"../logger\");\nvar context_1 = require(\"../context/context\");\nvar eventService_1 = require(\"../eventService\");\nvar events_1 = require(\"../events\");\nvar dragService_1 = require(\"../dragAndDrop/dragService\");\nvar constants_1 = require(\"../constants\");\nvar selectionController_1 = require(\"../selectionController\");\nvar csvCreator_1 = require(\"../csvCreator\");\nvar mouseEventService_1 = require(\"./mouseEventService\");\nvar focusedCellController_1 = require(\"../focusedCellController\");\nvar scrollVisibleService_1 = require(\"./scrollVisibleService\");\nvar beanStub_1 = require(\"../context/beanStub\");\nvar rowContainerComponent_1 = require(\"../rendering/rowContainerComponent\");\nvar paginationProxy_1 = require(\"../rowModels/paginationProxy\");\nvar popupEditorWrapper_1 = require(\"../rendering/cellEditors/popupEditorWrapper\");\nvar alignedGridsService_1 = require(\"../alignedGridsService\");\nvar pinnedRowModel_1 = require(\"../rowModels/pinnedRowModel\");\nvar gridApi_1 = require(\"../gridApi\");\nvar animationFrameService_1 = require(\"../misc/animationFrameService\");\nvar rowComp_1 = require(\"../rendering/rowComp\");\nvar navigationService_1 = require(\"./navigationService\");\nvar valueService_1 = require(\"../valueService/valueService\");\nvar touchListener_1 = require(\"../widgets/touchListener\");\nvar componentRecipes_1 = require(\"../components/framework/componentRecipes\");\n// in the html below, it is important that there are no white space between some of the divs, as if there is white space,\n// it won't render correctly in safari, as safari renders white space as a gap\nvar HEADER_SNIPPET = '<div class=\"ag-header\" role=\"row\">' +\n    '<div class=\"ag-pinned-left-header\" role=\"presentation\"></div>' +\n    '<div class=\"ag-pinned-right-header\" role=\"presentation\"></div>' +\n    '<div class=\"ag-header-viewport\" role=\"presentation\">' +\n    '<div class=\"ag-header-container\" role=\"presentation\"></div>' +\n    '</div>' +\n    '<div class=\"ag-header-overlay\" role=\"presentation\"></div>' +\n    '</div>';\nvar FLOATING_TOP_SNIPPET = '<div class=\"ag-floating-top\" role=\"presentation\">' +\n    '<div class=\"ag-pinned-left-floating-top\" role=\"presentation\"></div>' +\n    '<div class=\"ag-pinned-right-floating-top\" role=\"presentation\"></div>' +\n    '<div class=\"ag-floating-top-viewport\" role=\"presentation\">' +\n    '<div class=\"ag-floating-top-container\" role=\"presentation\"></div>' +\n    '</div>' +\n    '<div class=\"ag-floating-top-full-width-container\" role=\"presentation\"></div>' +\n    '</div>';\nvar FLOATING_BOTTOM_SNIPPET = '<div class=\"ag-floating-bottom\" role=\"presentation\">' +\n    '<div class=\"ag-pinned-left-floating-bottom\" role=\"presentation\"></div>' +\n    '<div class=\"ag-pinned-right-floating-bottom\" role=\"presentation\"></div>' +\n    '<div class=\"ag-floating-bottom-viewport\" role=\"presentation\">' +\n    '<div class=\"ag-floating-bottom-container\" role=\"presentation\"></div>' +\n    '</div>' +\n    '<div class=\"ag-floating-bottom-full-width-container\" role=\"presentation\"></div>' +\n    '</div>';\nvar BODY_SNIPPET = '<div class=\"ag-body\" role=\"presentation\">' +\n    '<div class=\"ag-pinned-left-cols-viewport\" role=\"presentation\">' +\n    '<div class=\"ag-pinned-left-cols-container\" role=\"presentation\"></div>' +\n    '</div>' +\n    '<div class=\"ag-pinned-right-cols-viewport\" role=\"presentation\">' +\n    '<div class=\"ag-pinned-right-cols-container\" role=\"presentation\"></div>' +\n    '</div>' +\n    '<div class=\"ag-body-viewport-wrapper\" role=\"presentation\">' +\n    '<div class=\"ag-body-viewport\" role=\"presentation\">' +\n    '<div class=\"ag-body-container\" role=\"presentation\"></div>' +\n    '</div>' +\n    '</div>' +\n    '<div class=\"ag-full-width-viewport\" role=\"presentation\">' +\n    '<div class=\"ag-full-width-container\" role=\"presentation\"></div>' +\n    '</div>' +\n    '</div>';\n// the difference between the 'normal' and 'full height' template is the order of the floating and body,\n// for normal, the floating top and bottom go in first as they are fixed position,\n// for auto-height, the body is in the middle of the top and bottom as they are just normally laid out\nvar GRID_PANEL_NORMAL_TEMPLATE = '<div class=\"ag-root ag-font-style\" role=\"grid\">' +\n    HEADER_SNIPPET + FLOATING_TOP_SNIPPET + FLOATING_BOTTOM_SNIPPET + BODY_SNIPPET +\n    '</div>';\nvar GRID_PANEL_AUTO_HEIGHT_TEMPLATE = '<div class=\"ag-root ag-font-style\" role=\"grid\">' +\n    HEADER_SNIPPET + FLOATING_TOP_SNIPPET + BODY_SNIPPET + FLOATING_BOTTOM_SNIPPET +\n    '</div>';\n// the template for for-print is much easier than that others, as it doesn't have any pinned areas\n// or scrollable areas (so no viewports).\nvar GRID_PANEL_FOR_PRINT_TEMPLATE = '<div class=\"ag-root ag-font-style\">' +\n    // header\n    '<div class=\"ag-header-container\"></div>' +\n    // floating\n    '<div class=\"ag-floating-top-container\"></div>' +\n    // body\n    '<div class=\"ag-body-container\"></div>' +\n    // floating bottom\n    '<div class=\"ag-floating-bottom-container\"></div>' +\n    '</div>';\nvar GridPanel = (function (_super) {\n    __extends(GridPanel, _super);\n    function GridPanel() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.scrollLeft = -1;\n        _this.nextScrollLeft = -1;\n        _this.scrollTop = -1;\n        _this.nextScrollTop = -1;\n        _this.verticalRedrawNeeded = false;\n        return _this;\n    }\n    GridPanel.prototype.agWire = function (loggerFactory) {\n        this.logger = loggerFactory.create('GridPanel');\n        // makes code below more readable if we pull 'forPrint' out\n        this.forPrint = this.gridOptionsWrapper.isForPrint();\n        this.autoHeight = this.gridOptionsWrapper.isAutoHeight();\n        this.scrollWidth = this.gridOptionsWrapper.getScrollbarWidth();\n        this.enableRtl = this.gridOptionsWrapper.isEnableRtl();\n        this.loadTemplate();\n        this.findElements();\n    };\n    GridPanel.prototype.getVerticalPixelRange = function () {\n        var container = this.getPrimaryScrollViewport();\n        var result = {\n            top: container.scrollTop,\n            bottom: container.scrollTop + container.offsetHeight\n        };\n        return result;\n    };\n    // we override this, as the base class is missing the annotation\n    GridPanel.prototype.destroy = function () {\n        _super.prototype.destroy.call(this);\n    };\n    GridPanel.prototype.onRowDataChanged = function () {\n        this.showOrHideOverlay();\n    };\n    GridPanel.prototype.showOrHideOverlay = function () {\n        if (this.paginationProxy.isEmpty() && !this.gridOptionsWrapper.isSuppressNoRowsOverlay()) {\n            this.showNoRowsOverlay();\n        }\n        else {\n            this.hideOverlay();\n        }\n    };\n    GridPanel.prototype.getLayout = function () {\n        return this.layout;\n    };\n    GridPanel.prototype.init = function () {\n        this.useAnimationFrame = !this.gridOptionsWrapper.isSuppressAnimationFrame();\n        this.addEventListeners();\n        this.addDragListeners();\n        this.layout = new borderLayout_1.BorderLayout({\n            center: this.eRoot,\n            dontFill: this.forPrint,\n            fillHorizontalOnly: this.autoHeight,\n            name: 'eGridPanel',\n            componentRecipes: this.componentRecipes\n        });\n        this.layout.addSizeChangeListener(this.setBodyAndHeaderHeights.bind(this));\n        this.layout.addSizeChangeListener(this.setLeftAndRightBounds.bind(this));\n        this.addScrollListener();\n        if (this.gridOptionsWrapper.isSuppressHorizontalScroll()) {\n            this.eBodyViewport.style.overflowX = 'hidden';\n        }\n        if (this.gridOptionsWrapper.isRowModelDefault() && !this.gridOptionsWrapper.getRowData()) {\n            this.showLoadingOverlay();\n        }\n        this.setPinnedContainersVisible();\n        this.setBodyAndHeaderHeights();\n        this.disableBrowserDragging();\n        this.addShortcutKeyListeners();\n        this.addMouseListeners();\n        this.addKeyboardEvents();\n        this.addBodyViewportListener();\n        this.addStopEditingWhenGridLosesFocus();\n        this.mockContextMenuForIPad();\n        if (this.$scope) {\n            this.addAngularApplyCheck();\n        }\n        this.onDisplayedColumnsWidthChanged();\n    };\n    GridPanel.prototype.addStopEditingWhenGridLosesFocus = function () {\n        var _this = this;\n        if (this.gridOptionsWrapper.isStopEditingWhenGridLosesFocus()) {\n            this.addDestroyableEventListener(this.eBody, 'focusout', function (event) {\n                // this is the element the focus is moving to\n                var elementWithFocus = event.relatedTarget;\n                // see if the element the focus is going to is part of the grid\n                var clickInsideGrid = false;\n                var pointer = elementWithFocus;\n                while (utils_1.Utils.exists(pointer) && !clickInsideGrid) {\n                    var isPopup = !!_this.gridOptionsWrapper.getDomData(pointer, popupEditorWrapper_1.PopupEditorWrapper.DOM_KEY_POPUP_EDITOR_WRAPPER);\n                    var isBody = _this.eBody == pointer;\n                    clickInsideGrid = isPopup || isBody;\n                    pointer = pointer.parentNode;\n                }\n                if (!clickInsideGrid) {\n                    _this.rowRenderer.stopEditing();\n                }\n            });\n        }\n    };\n    GridPanel.prototype.addAngularApplyCheck = function () {\n        var _this = this;\n        // this makes sure if we queue up requests, we only execute oe\n        var applyTriggered = false;\n        var listener = function () {\n            // only need to do one apply at a time\n            if (applyTriggered) {\n                return;\n            }\n            applyTriggered = true; // mark 'need apply' to true\n            setTimeout(function () {\n                applyTriggered = false;\n                _this.$scope.$apply();\n            }, 0);\n        };\n        // these are the events we need to do an apply after - these are the ones that can end up\n        // with columns added or removed\n        this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_DISPLAYED_COLUMNS_CHANGED, listener);\n        this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_VIRTUAL_COLUMNS_CHANGED, listener);\n    };\n    // if we do not do this, then the user can select a pic in the grid (eg an image in a custom cell renderer)\n    // and then that will start the browser native drag n' drop, which messes up with our own drag and drop.\n    GridPanel.prototype.disableBrowserDragging = function () {\n        this.eRoot.addEventListener('dragstart', function (event) {\n            if (event.target instanceof HTMLImageElement) {\n                event.preventDefault();\n                return false;\n            }\n        });\n    };\n    GridPanel.prototype.addEventListeners = function () {\n        this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n        this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onDisplayedColumnsWidthChanged.bind(this));\n        this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_SCROLL_VISIBILITY_CHANGED, this.onScrollVisibilityChanged.bind(this));\n        this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_PINNED_ROW_DATA_CHANGED, this.setBodyAndHeaderHeights.bind(this));\n        this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_ROW_DATA_CHANGED, this.onRowDataChanged.bind(this));\n        this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_ROW_DATA_UPDATED, this.onRowDataChanged.bind(this));\n        this.addDestroyableEventListener(this.gridOptionsWrapper, gridOptionsWrapper_1.GridOptionsWrapper.PROP_HEADER_HEIGHT, this.setBodyAndHeaderHeights.bind(this));\n        this.addDestroyableEventListener(this.gridOptionsWrapper, gridOptionsWrapper_1.GridOptionsWrapper.PROP_PIVOT_HEADER_HEIGHT, this.setBodyAndHeaderHeights.bind(this));\n        this.addDestroyableEventListener(this.gridOptionsWrapper, gridOptionsWrapper_1.GridOptionsWrapper.PROP_GROUP_HEADER_HEIGHT, this.setBodyAndHeaderHeights.bind(this));\n        this.addDestroyableEventListener(this.gridOptionsWrapper, gridOptionsWrapper_1.GridOptionsWrapper.PROP_PIVOT_GROUP_HEADER_HEIGHT, this.setBodyAndHeaderHeights.bind(this));\n        this.addDestroyableEventListener(this.gridOptionsWrapper, gridOptionsWrapper_1.GridOptionsWrapper.PROP_FLOATING_FILTERS_HEIGHT, this.setBodyAndHeaderHeights.bind(this));\n    };\n    GridPanel.prototype.addDragListeners = function () {\n        var _this = this;\n        if (this.forPrint // no range select when doing 'for print'\n            || !this.gridOptionsWrapper.isEnableRangeSelection() // no range selection if no property\n            || utils_1.Utils.missing(this.rangeController)) {\n            return;\n        }\n        var containers = [this.ePinnedLeftColsContainer, this.ePinnedRightColsContainer, this.eBodyContainer,\n            this.eFloatingTop, this.eFloatingBottom];\n        containers.forEach(function (container) {\n            var params = {\n                dragStartPixels: 0,\n                eElement: container,\n                onDragStart: _this.rangeController.onDragStart.bind(_this.rangeController),\n                onDragStop: _this.rangeController.onDragStop.bind(_this.rangeController),\n                onDragging: _this.rangeController.onDragging.bind(_this.rangeController)\n            };\n            _this.dragService.addDragSource(params);\n            _this.addDestroyFunc(function () { return _this.dragService.removeDragSource(params); });\n        });\n    };\n    GridPanel.prototype.addMouseListeners = function () {\n        var _this = this;\n        var eventNames = ['click', 'mousedown', 'dblclick', 'contextmenu', 'mouseover', 'mouseout'];\n        eventNames.forEach(function (eventName) {\n            var listener = _this.processMouseEvent.bind(_this, eventName);\n            _this.eAllCellContainers.forEach(function (container) {\n                return _this.addDestroyableEventListener(container, eventName, listener);\n            });\n        });\n    };\n    GridPanel.prototype.addKeyboardEvents = function () {\n        var _this = this;\n        var eventNames = ['keydown', 'keypress'];\n        eventNames.forEach(function (eventName) {\n            var listener = _this.processKeyboardEvent.bind(_this, eventName);\n            _this.eAllCellContainers.forEach(function (container) {\n                _this.addDestroyableEventListener(container, eventName, listener);\n            });\n        });\n    };\n    GridPanel.prototype.addBodyViewportListener = function () {\n        var _this = this;\n        // we never add this when doing 'forPrint'\n        if (this.gridOptionsWrapper.isForPrint()) {\n            return;\n        }\n        // we want to listen for clicks directly on the eBodyViewport, so the user has a way of showing\n        // the context menu if no rows are displayed, or user simply clicks outside of a cell\n        var listener = function (mouseEvent) {\n            var target = utils_1.Utils.getTarget(mouseEvent);\n            if (target === _this.eBodyViewport || target === _this.ePinnedLeftColsViewport || target === _this.ePinnedRightColsViewport) {\n                // show it\n                _this.onContextMenu(mouseEvent, null, null, null, null);\n                _this.preventDefaultOnContextMenu(mouseEvent);\n            }\n        };\n        //For some reason listening only to this.eBody doesnt work... Maybe because the event is consumed somewhere else?\n        //In any case, not expending much time on this, if anyome comes accross this and knows how to make this work with\n        //one listener please go ahead and change it...\n        this.addDestroyableEventListener(this.eBodyViewport, 'contextmenu', listener);\n        this.addDestroyableEventListener(this.ePinnedRightColsViewport, 'contextmenu', listener);\n        this.addDestroyableEventListener(this.ePinnedLeftColsViewport, 'contextmenu', listener);\n    };\n    GridPanel.prototype.getRowForEvent = function (event) {\n        var sourceElement = utils_1.Utils.getTarget(event);\n        while (sourceElement) {\n            var renderedRow = this.gridOptionsWrapper.getDomData(sourceElement, rowComp_1.RowComp.DOM_DATA_KEY_RENDERED_ROW);\n            if (renderedRow) {\n                return renderedRow;\n            }\n            sourceElement = sourceElement.parentElement;\n        }\n        return null;\n    };\n    GridPanel.prototype.processKeyboardEvent = function (eventName, keyboardEvent) {\n        var renderedCell = this.mouseEventService.getRenderedCellForEvent(keyboardEvent);\n        if (!renderedCell) {\n            return;\n        }\n        switch (eventName) {\n            case 'keydown':\n                // first see if it's a scroll key, page up / down, home / end etc\n                var wasScrollKey = this.navigationService.handlePageScrollingKey(keyboardEvent);\n                // if not a scroll key, then we pass onto cell\n                if (!wasScrollKey) {\n                    renderedCell.onKeyDown(keyboardEvent);\n                }\n                break;\n            case 'keypress':\n                renderedCell.onKeyPress(keyboardEvent);\n                break;\n        }\n    };\n    // gets called by rowRenderer when new data loaded, as it will want to scroll\n    // to the top\n    GridPanel.prototype.scrollToTop = function () {\n        if (!this.forPrint) {\n            this.getPrimaryScrollViewport().scrollTop = 0;\n        }\n    };\n    GridPanel.prototype.processMouseEvent = function (eventName, mouseEvent) {\n        if (!this.mouseEventService.isEventFromThisGrid(mouseEvent))\n            return;\n        if (utils_1.Utils.isStopPropagationForAgGrid(mouseEvent)) {\n            return;\n        }\n        var rowComp = this.getRowForEvent(mouseEvent);\n        var cellComp = this.mouseEventService.getRenderedCellForEvent(mouseEvent);\n        if (eventName === \"contextmenu\") {\n            this.handleContextMenuMouseEvent(mouseEvent, null, rowComp, cellComp);\n        }\n        else {\n            if (cellComp)\n                cellComp.onMouseEvent(eventName, mouseEvent);\n            if (rowComp)\n                rowComp.onMouseEvent(eventName, mouseEvent);\n        }\n        this.preventDefaultOnContextMenu(mouseEvent);\n    };\n    GridPanel.prototype.mockContextMenuForIPad = function () {\n        var _this = this;\n        // we do NOT want this when not in ipad, otherwise we will be doing\n        if (!utils_1.Utils.isUserAgentIPad()) {\n            return;\n        }\n        this.eAllCellContainers.forEach(function (container) {\n            var touchListener = new touchListener_1.TouchListener(container);\n            var longTapListener = function (event) {\n                var rowComp = _this.getRowForEvent(event.touchEvent);\n                var cellComp = _this.mouseEventService.getRenderedCellForEvent(event.touchEvent);\n                _this.handleContextMenuMouseEvent(null, event.touchEvent, rowComp, cellComp);\n            };\n            _this.addDestroyableEventListener(touchListener, touchListener_1.TouchListener.EVENT_LONG_TAP, longTapListener);\n            _this.addDestroyFunc(function () { return touchListener.destroy(); });\n        });\n    };\n    GridPanel.prototype.handleContextMenuMouseEvent = function (mouseEvent, touchEvent, rowComp, cellComp) {\n        var rowNode = rowComp ? rowComp.getRowNode() : null;\n        var column = cellComp ? cellComp.getColumn() : null;\n        var value = null;\n        if (column) {\n            var event_1 = mouseEvent ? mouseEvent : touchEvent;\n            cellComp.dispatchCellContextMenuEvent(event_1);\n            value = this.valueService.getValue(column, rowNode);\n        }\n        this.onContextMenu(mouseEvent, touchEvent, rowNode, column, value);\n    };\n    GridPanel.prototype.onContextMenu = function (mouseEvent, touchEvent, rowNode, column, value) {\n        // to allow us to debug in chrome, we ignore the event if ctrl is pressed.\n        // not everyone wants this, so first 'if' below allows to turn this hack off.\n        if (!this.gridOptionsWrapper.isAllowContextMenuWithControlKey()) {\n            // then do the check\n            if (mouseEvent && (mouseEvent.ctrlKey || mouseEvent.metaKey)) {\n                return;\n            }\n        }\n        if (this.contextMenuFactory && !this.gridOptionsWrapper.isSuppressContextMenu()) {\n            var eventOrTouch = mouseEvent ? mouseEvent : touchEvent.touches[0];\n            this.contextMenuFactory.showMenu(rowNode, column, value, eventOrTouch);\n            var event_2 = mouseEvent ? mouseEvent : touchEvent;\n            event_2.preventDefault();\n        }\n    };\n    GridPanel.prototype.preventDefaultOnContextMenu = function (mouseEvent) {\n        // if we don't do this, then middle click will never result in a 'click' event, as 'mousedown'\n        // will be consumed by the browser to mean 'scroll' (as you can scroll with the middle mouse\n        // button in the browser). so this property allows the user to receive middle button clicks if\n        // they want.\n        if (this.gridOptionsWrapper.isSuppressMiddleClickScrolls() && mouseEvent.which === 2) {\n            mouseEvent.preventDefault();\n        }\n    };\n    GridPanel.prototype.addShortcutKeyListeners = function () {\n        var _this = this;\n        this.eAllCellContainers.forEach(function (container) {\n            container.addEventListener('keydown', function (event) {\n                // if the cell the event came from is editing, then we do not\n                // want to do the default shortcut keys, otherwise the editor\n                // (eg a text field) would not be able to do the normal cut/copy/paste\n                var renderedCell = _this.mouseEventService.getRenderedCellForEvent(event);\n                if (renderedCell && renderedCell.isEditing()) {\n                    return;\n                }\n                // for copy / paste, we don't want to execute when the event\n                // was from a child grid (happens in master detail)\n                if (!_this.mouseEventService.isEventFromThisGrid(event)) {\n                    return;\n                }\n                if (event.ctrlKey || event.metaKey) {\n                    switch (event.which) {\n                        case constants_1.Constants.KEY_A: return _this.onCtrlAndA(event);\n                        case constants_1.Constants.KEY_C: return _this.onCtrlAndC(event);\n                        case constants_1.Constants.KEY_V: return _this.onCtrlAndV(event);\n                        case constants_1.Constants.KEY_D: return _this.onCtrlAndD(event);\n                    }\n                }\n            });\n        });\n    };\n    GridPanel.prototype.onCtrlAndA = function (event) {\n        if (this.rangeController && this.paginationProxy.isRowsToRender()) {\n            var rowEnd = void 0;\n            var floatingStart = void 0;\n            var floatingEnd = void 0;\n            if (this.pinnedRowModel.isEmpty(constants_1.Constants.PINNED_TOP)) {\n                floatingStart = null;\n            }\n            else {\n                floatingStart = constants_1.Constants.PINNED_TOP;\n            }\n            if (this.pinnedRowModel.isEmpty(constants_1.Constants.PINNED_BOTTOM)) {\n                floatingEnd = null;\n                rowEnd = this.paginationProxy.getTotalRowCount() - 1;\n            }\n            else {\n                floatingEnd = constants_1.Constants.PINNED_BOTTOM;\n                rowEnd = this.pinnedRowModel.getPinnedBottomRowData().length = 1;\n            }\n            var allDisplayedColumns = this.columnController.getAllDisplayedColumns();\n            if (utils_1.Utils.missingOrEmpty(allDisplayedColumns)) {\n                return;\n            }\n            this.rangeController.setRange({\n                rowStart: 0,\n                floatingStart: floatingStart,\n                rowEnd: rowEnd,\n                floatingEnd: floatingEnd,\n                columnStart: allDisplayedColumns[0],\n                columnEnd: allDisplayedColumns[allDisplayedColumns.length - 1]\n            });\n        }\n        event.preventDefault();\n        return false;\n    };\n    GridPanel.prototype.onCtrlAndC = function (event) {\n        if (!this.clipboardService) {\n            return;\n        }\n        var focusedCell = this.focusedCellController.getFocusedCell();\n        this.clipboardService.copyToClipboard();\n        event.preventDefault();\n        // the copy operation results in loosing focus on the cell,\n        // because of the trickery the copy logic uses with a temporary\n        // widget. so we set it back again.\n        if (focusedCell) {\n            this.focusedCellController.setFocusedCell(focusedCell.rowIndex, focusedCell.column, focusedCell.floating, true);\n        }\n        return false;\n    };\n    GridPanel.prototype.onCtrlAndV = function (event) {\n        if (!this.rangeController) {\n            return;\n        }\n        this.clipboardService.pasteFromClipboard();\n        return false;\n    };\n    GridPanel.prototype.onCtrlAndD = function (event) {\n        if (!this.clipboardService) {\n            return;\n        }\n        this.clipboardService.copyRangeDown();\n        event.preventDefault();\n        return false;\n    };\n    // Valid values for position are bottom, middle and top\n    // position should be {'top','middle','bottom', or undefined/null}.\n    // if undefined/null, then the grid will to the minimal amount of scrolling,\n    // eg if grid needs to scroll up, it scrolls until row is on top,\n    //    if grid needs to scroll down, it scrolls until row is on bottom,\n    //    if row is already in view, grid does not scroll\n    GridPanel.prototype.ensureIndexVisible = function (index, position) {\n        // if for print or auto height, everything is always visible\n        if (this.gridOptionsWrapper.isForPrint() || this.gridOptionsWrapper.isAutoHeight()) {\n            return;\n        }\n        this.logger.log('ensureIndexVisible: ' + index);\n        var rowCount = this.paginationProxy.getTotalRowCount();\n        if (typeof index !== 'number' || index < 0 || index >= rowCount) {\n            console.warn('invalid row index for ensureIndexVisible: ' + index);\n            return;\n        }\n        this.paginationProxy.goToPageWithIndex(index);\n        var nodeAtIndex = this.paginationProxy.getRow(index);\n        var pixelOffset = this.paginationProxy.getPixelOffset();\n        var rowTopPixel = nodeAtIndex.rowTop - pixelOffset;\n        var rowBottomPixel = rowTopPixel + nodeAtIndex.rowHeight;\n        var vRange = this.getVerticalPixelRange();\n        var vRangeTop = vRange.top;\n        var vRangeBottom = vRange.bottom;\n        var scrollShowing = this.isHorizontalScrollShowing();\n        if (scrollShowing) {\n            vRangeBottom -= this.scrollWidth;\n        }\n        var rowToHighlightHeight = rowBottomPixel - rowTopPixel;\n        var viewportHeight = vRangeBottom - vRangeTop;\n        var halfScreenHeight = (viewportHeight / 2) + (rowToHighlightHeight / 2);\n        var eViewportToScroll = this.getPrimaryScrollViewport();\n        var newScrollPosition;\n        switch (position) {\n            case 'top':\n                newScrollPosition = rowTopPixel;\n                break;\n            case 'bottom':\n                newScrollPosition = rowBottomPixel - viewportHeight;\n                break;\n            case 'middle':\n                newScrollPosition = halfScreenHeight;\n                // The if/else logic here protects us from over scrolling\n                // ie: Trying to scroll past the row (ie ensureNodeVisible (0, 'middle'))\n                newScrollPosition = newScrollPosition > rowTopPixel ? rowTopPixel : newScrollPosition;\n                break;\n            default:\n                newScrollPosition = rowTopPixel;\n                var viewportScrolledPastRow = vRangeTop > rowTopPixel;\n                var viewportScrolledBeforeRow = vRangeBottom < rowBottomPixel;\n                if (viewportScrolledPastRow) {\n                    // if row is before, scroll up with row at top\n                    newScrollPosition = rowTopPixel;\n                }\n                else if (viewportScrolledBeforeRow) {\n                    // if row is below, scroll down with row at bottom\n                    var viewportHeight_1 = vRangeBottom - vRangeTop;\n                    newScrollPosition = rowBottomPixel - viewportHeight_1;\n                }\n                else {\n                    // row already in view, and top/middle/bottom not specified, so do nothing.\n                    newScrollPosition = null;\n                }\n                break;\n        }\n        // this means the row is already in view, and we don't need to scroll\n        if (newScrollPosition === null) {\n            return;\n        }\n        eViewportToScroll.scrollTop = newScrollPosition;\n        this.rowRenderer.redrawAfterScroll();\n    };\n    GridPanel.prototype.getPrimaryScrollViewport = function () {\n        if (this.enableRtl && this.columnController.isPinningLeft()) {\n            return this.ePinnedLeftColsViewport;\n        }\n        else if (!this.enableRtl && this.columnController.isPinningRight()) {\n            return this.ePinnedRightColsViewport;\n        }\n        else {\n            return this.eBodyViewport;\n        }\n    };\n    // + moveColumnController\n    GridPanel.prototype.getCenterWidth = function () {\n        return this.eBodyViewport.clientWidth;\n    };\n    GridPanel.prototype.isHorizontalScrollShowing = function () {\n        var result = utils_1.Utils.isHorizontalScrollShowing(this.eBodyViewport);\n        return result;\n    };\n    GridPanel.prototype.isVerticalScrollShowing = function () {\n        if (this.columnController.isPinningRight()) {\n            return utils_1.Utils.isVerticalScrollShowing(this.ePinnedRightColsViewport);\n        }\n        else {\n            return utils_1.Utils.isVerticalScrollShowing(this.eBodyViewport);\n        }\n    };\n    GridPanel.prototype.isBodyVerticalScrollShowing = function () {\n        // if the scroll is on the pinned panel, then it is never in the center panel.\n        // if LRT, then pinning right means scroll NOT on center\n        if (!this.enableRtl && this.columnController.isPinningRight()) {\n            return false;\n        }\n        // if RTL, then pinning left means scroll NOT on center\n        if (this.enableRtl && this.columnController.isPinningLeft()) {\n            return false;\n        }\n        return utils_1.Utils.isVerticalScrollShowing(this.eBodyViewport);\n    };\n    // gets called every 500 ms. we use this to set padding on right pinned column\n    GridPanel.prototype.periodicallyCheck = function () {\n        if (this.forPrint) {\n            return;\n        }\n        this.setBottomPaddingOnPinnedRight();\n        this.setMarginOnFullWidthCellContainer();\n        this.setScrollShowing();\n    };\n    GridPanel.prototype.setScrollShowing = function () {\n        var params = {\n            vBody: false,\n            hBody: false,\n            vPinnedLeft: false,\n            vPinnedRight: false\n        };\n        if (this.enableRtl) {\n            if (this.columnController.isPinningLeft()) {\n                params.vPinnedLeft = this.forPrint ? false : utils_1.Utils.isVerticalScrollShowing(this.ePinnedLeftColsViewport);\n            }\n            else {\n                params.vBody = utils_1.Utils.isVerticalScrollShowing(this.eBodyViewport);\n            }\n        }\n        else {\n            if (this.columnController.isPinningRight()) {\n                params.vPinnedRight = this.forPrint ? false : utils_1.Utils.isVerticalScrollShowing(this.ePinnedRightColsViewport);\n            }\n            else {\n                params.vBody = utils_1.Utils.isVerticalScrollShowing(this.eBodyViewport);\n            }\n        }\n        params.hBody = utils_1.Utils.isHorizontalScrollShowing(this.eBodyViewport);\n        this.scrollVisibleService.setScrollsVisible(params);\n    };\n    // the pinned container needs extra space at the bottom, some blank space, otherwise when\n    // vertically scrolled all the way down, the last row will be hidden behind the scrolls.\n    // this extra padding allows the last row to be lifted above the bottom scrollbar.\n    GridPanel.prototype.setBottomPaddingOnPinnedRight = function () {\n        if (this.forPrint) {\n            return;\n        }\n        if (this.columnController.isPinningRight()) {\n            var bodyHorizontalScrollShowing = this.eBodyViewport.clientWidth < this.eBodyViewport.scrollWidth;\n            if (bodyHorizontalScrollShowing) {\n                this.ePinnedRightColsContainer.style.marginBottom = this.scrollWidth + 'px';\n            }\n            else {\n                this.ePinnedRightColsContainer.style.marginBottom = '';\n            }\n        }\n    };\n    GridPanel.prototype.setMarginOnFullWidthCellContainer = function () {\n        if (this.forPrint) {\n            return;\n        }\n        // if either right or bottom scrollbars are showing, we need to make sure the\n        // fullWidthCell panel isn't covering the scrollbars. originally i tried to do this using\n        // margin, but the overflow was not getting clipped and going into the margin,\n        // so used border instead. dunno why it works, trial and error found the solution.\n        if (this.enableRtl) {\n            if (this.isVerticalScrollShowing()) {\n                this.eFullWidthCellViewport.style.borderLeft = this.scrollWidth + 'px solid transparent';\n            }\n            else {\n                this.eFullWidthCellViewport.style.borderLeft = '';\n            }\n        }\n        else {\n            if (this.isVerticalScrollShowing()) {\n                this.eFullWidthCellViewport.style.borderRight = this.scrollWidth + 'px solid transparent';\n            }\n            else {\n                this.eFullWidthCellViewport.style.borderRight = '';\n            }\n        }\n        if (this.isHorizontalScrollShowing()) {\n            this.eFullWidthCellViewport.style.borderBottom = this.scrollWidth + 'px solid transparent';\n        }\n        else {\n            this.eFullWidthCellViewport.style.borderBottom = '';\n        }\n    };\n    GridPanel.prototype.ensureColumnVisible = function (key) {\n        // if for print, everything is always visible\n        if (this.gridOptionsWrapper.isForPrint()) {\n            return;\n        }\n        var column = this.columnController.getGridColumn(key);\n        if (!column) {\n            return;\n        }\n        if (column.isPinned()) {\n            console.warn('calling ensureIndexVisible on a ' + column.getPinned() + ' pinned column doesn\\'t make sense for column ' + column.getColId());\n            return;\n        }\n        if (!this.columnController.isColumnDisplayed(column)) {\n            console.warn('column is not currently visible');\n            return;\n        }\n        var colLeftPixel = column.getLeft();\n        var colRightPixel = colLeftPixel + column.getActualWidth();\n        var viewportWidth = this.eBodyViewport.clientWidth;\n        var scrollPosition = this.getBodyViewportScrollLeft();\n        var bodyWidth = this.columnController.getBodyContainerWidth();\n        var viewportLeftPixel;\n        var viewportRightPixel;\n        // the logic of working out left and right viewport px is both here and in the ColumnController,\n        // need to refactor it out to one place\n        if (this.enableRtl) {\n            viewportLeftPixel = bodyWidth - scrollPosition - viewportWidth;\n            viewportRightPixel = bodyWidth - scrollPosition;\n        }\n        else {\n            viewportLeftPixel = scrollPosition;\n            viewportRightPixel = viewportWidth + scrollPosition;\n        }\n        var viewportScrolledPastCol = viewportLeftPixel > colLeftPixel;\n        var viewportScrolledBeforeCol = viewportRightPixel < colRightPixel;\n        var colToSmallForViewport = viewportWidth < column.getActualWidth();\n        var alignColToLeft = viewportScrolledPastCol || colToSmallForViewport;\n        var alignColToRight = viewportScrolledBeforeCol;\n        if (alignColToLeft) {\n            // if viewport's left side is after col's left side, scroll left to pull col into viewport at left\n            if (this.enableRtl) {\n                var newScrollPosition = bodyWidth - viewportWidth - colLeftPixel;\n                this.setBodyViewportScrollLeft(newScrollPosition);\n            }\n            else {\n                this.setBodyViewportScrollLeft(colLeftPixel);\n            }\n        }\n        else if (alignColToRight) {\n            // if viewport's right side is before col's right side, scroll right to pull col into viewport at right\n            if (this.enableRtl) {\n                var newScrollPosition = bodyWidth - colRightPixel;\n                this.setBodyViewportScrollLeft(newScrollPosition);\n            }\n            else {\n                var newScrollPosition = colRightPixel - viewportWidth;\n                this.setBodyViewportScrollLeft(newScrollPosition);\n            }\n        }\n        else {\n            // otherwise, col is already in view, so do nothing\n        }\n        // this will happen anyway, as the move will cause a 'scroll' event on the body, however\n        // it is possible that the ensureColumnVisible method is called from within ag-Grid and\n        // the caller will need to have the columns rendered to continue, which will be before\n        // the event has been worked on (which is the case for cell navigation).\n        this.setLeftAndRightBounds();\n    };\n    GridPanel.prototype.showLoadingOverlay = function () {\n        if (!this.gridOptionsWrapper.isSuppressLoadingOverlay()) {\n            this.layout.showLoadingOverlay();\n        }\n    };\n    GridPanel.prototype.showNoRowsOverlay = function () {\n        if (!this.gridOptionsWrapper.isSuppressNoRowsOverlay()) {\n            this.layout.showNoRowsOverlay();\n        }\n    };\n    GridPanel.prototype.hideOverlay = function () {\n        this.layout.hideOverlay();\n    };\n    GridPanel.prototype.getWidthForSizeColsToFit = function () {\n        var availableWidth = this.eBody.clientWidth;\n        // if pinning right, then the scroll bar can show, however for some reason\n        // it overlays the grid and doesn't take space. so we are only interested\n        // in the body scroll showing.\n        var removeVerticalScrollWidth = this.isVerticalScrollShowing();\n        if (removeVerticalScrollWidth) {\n            availableWidth -= this.scrollWidth;\n        }\n        return availableWidth;\n    };\n    // method will call itself if no available width. this covers if the grid\n    // isn't visible, but is just about to be visible.\n    GridPanel.prototype.sizeColumnsToFit = function (nextTimeout) {\n        var _this = this;\n        var availableWidth = this.getWidthForSizeColsToFit();\n        if (availableWidth > 0) {\n            this.columnController.sizeColumnsToFit(availableWidth);\n        }\n        else {\n            if (nextTimeout === undefined) {\n                setTimeout(function () {\n                    _this.sizeColumnsToFit(100);\n                }, 0);\n            }\n            else if (nextTimeout === 100) {\n                setTimeout(function () {\n                    _this.sizeColumnsToFit(500);\n                }, 100);\n            }\n            else if (nextTimeout === 500) {\n                setTimeout(function () {\n                    _this.sizeColumnsToFit(-1);\n                }, 500);\n            }\n            else {\n                console.log('ag-Grid: tried to call sizeColumnsToFit() but the grid is coming back with ' +\n                    'zero width, maybe the grid is not visible yet on the screen?');\n            }\n        }\n    };\n    GridPanel.prototype.getBodyContainer = function () {\n        return this.eBodyContainer;\n    };\n    GridPanel.prototype.getDropTargetBodyContainers = function () {\n        if (this.forPrint) {\n            return [this.eBodyContainer, this.eFloatingTopContainer, this.eFloatingBottomContainer];\n        }\n        else {\n            return [this.eBodyViewport, this.eFloatingTopViewport, this.eFloatingBottomViewport];\n        }\n    };\n    GridPanel.prototype.getBodyViewport = function () {\n        return this.eBodyViewport;\n    };\n    GridPanel.prototype.getDropTargetLeftContainers = function () {\n        if (this.forPrint) {\n            return [];\n        }\n        else {\n            return [this.ePinnedLeftColsViewport, this.ePinnedLeftFloatingBottom, this.ePinnedLeftFloatingTop];\n        }\n    };\n    GridPanel.prototype.getDropTargetPinnedRightContainers = function () {\n        if (this.forPrint) {\n            return [];\n        }\n        else {\n            return [this.ePinnedRightColsViewport, this.ePinnedRightFloatingBottom, this.ePinnedRightFloatingTop];\n        }\n    };\n    GridPanel.prototype.getHeaderContainer = function () {\n        return this.eHeaderContainer;\n    };\n    GridPanel.prototype.getHeaderOverlay = function () {\n        return this.eHeaderOverlay;\n    };\n    GridPanel.prototype.getRoot = function () {\n        return this.eRoot;\n    };\n    GridPanel.prototype.getPinnedLeftHeader = function () {\n        return this.ePinnedLeftHeader;\n    };\n    GridPanel.prototype.getPinnedRightHeader = function () {\n        return this.ePinnedRightHeader;\n    };\n    GridPanel.prototype.queryHtmlElement = function (selector) {\n        return this.eRoot.querySelector(selector);\n    };\n    GridPanel.prototype.loadTemplate = function () {\n        // the template we use is different when doing 'for print'\n        var template;\n        if (this.forPrint) {\n            template = GRID_PANEL_FOR_PRINT_TEMPLATE;\n        }\n        else if (this.autoHeight) {\n            template = GRID_PANEL_AUTO_HEIGHT_TEMPLATE;\n        }\n        else {\n            template = GRID_PANEL_NORMAL_TEMPLATE;\n        }\n        this.eRoot = utils_1.Utils.loadTemplate(template);\n    };\n    GridPanel.prototype.findElements = function () {\n        var _this = this;\n        if (this.forPrint) {\n            this.eHeaderContainer = this.queryHtmlElement('.ag-header-container');\n            this.eBodyContainer = this.queryHtmlElement('.ag-body-container');\n            this.eFloatingTopContainer = this.queryHtmlElement('.ag-floating-top-container');\n            this.eFloatingBottomContainer = this.queryHtmlElement('.ag-floating-bottom-container');\n            this.eAllCellContainers = [this.eBodyContainer, this.eFloatingTopContainer, this.eFloatingBottomContainer];\n            var containers = {\n                body: new rowContainerComponent_1.RowContainerComponent({ eContainer: this.eBodyContainer }),\n                fullWidth: null,\n                pinnedLeft: null,\n                pinnedRight: null,\n                floatingTop: new rowContainerComponent_1.RowContainerComponent({ eContainer: this.eFloatingTopContainer }),\n                floatingTopPinnedLeft: null,\n                floatingTopPinnedRight: null,\n                floatingTopFullWidth: null,\n                floatingBottom: new rowContainerComponent_1.RowContainerComponent({ eContainer: this.eFloatingBottomContainer }),\n                floatingBottomPinnedLeft: null,\n                floatingBottomPinnedRight: null,\n                floatingBottomFullWith: null\n            };\n            this.rowContainerComponents = containers;\n            // when doing forPrint, we don't have any fullWidth containers, instead we add directly to the main\n            // containers. this works in forPrint only as there are no pinned columns (no need for fullWidth to\n            // span pinned columns) and the rows are already the full width of the grid (the reason for fullWidth)\n            containers.fullWidth = containers.body;\n            containers.floatingBottomFullWith = containers.floatingBottom;\n            containers.floatingTopFullWidth = containers.floatingTop;\n        }\n        else {\n            this.eBody = this.queryHtmlElement('.ag-body');\n            this.eBodyContainer = this.queryHtmlElement('.ag-body-container');\n            this.eBodyViewport = this.queryHtmlElement('.ag-body-viewport');\n            this.eBodyViewportWrapper = this.queryHtmlElement('.ag-body-viewport-wrapper');\n            this.eFullWidthCellContainer = this.queryHtmlElement('.ag-full-width-container');\n            this.eFullWidthCellViewport = this.queryHtmlElement('.ag-full-width-viewport');\n            this.ePinnedLeftColsContainer = this.queryHtmlElement('.ag-pinned-left-cols-container');\n            this.ePinnedRightColsContainer = this.queryHtmlElement('.ag-pinned-right-cols-container');\n            this.ePinnedLeftColsViewport = this.queryHtmlElement('.ag-pinned-left-cols-viewport');\n            this.ePinnedRightColsViewport = this.queryHtmlElement('.ag-pinned-right-cols-viewport');\n            this.ePinnedLeftHeader = this.queryHtmlElement('.ag-pinned-left-header');\n            this.ePinnedRightHeader = this.queryHtmlElement('.ag-pinned-right-header');\n            this.eHeader = this.queryHtmlElement('.ag-header');\n            this.eHeaderContainer = this.queryHtmlElement('.ag-header-container');\n            this.eHeaderOverlay = this.queryHtmlElement('.ag-header-overlay');\n            this.eHeaderViewport = this.queryHtmlElement('.ag-header-viewport');\n            this.eFloatingTop = this.queryHtmlElement('.ag-floating-top');\n            this.ePinnedLeftFloatingTop = this.queryHtmlElement('.ag-pinned-left-floating-top');\n            this.ePinnedRightFloatingTop = this.queryHtmlElement('.ag-pinned-right-floating-top');\n            this.eFloatingTopContainer = this.queryHtmlElement('.ag-floating-top-container');\n            this.eFloatingTopViewport = this.queryHtmlElement('.ag-floating-top-viewport');\n            this.eFloatingTopFullWidthCellContainer = this.queryHtmlElement('.ag-floating-top-full-width-container');\n            this.eFloatingBottom = this.queryHtmlElement('.ag-floating-bottom');\n            this.ePinnedLeftFloatingBottom = this.queryHtmlElement('.ag-pinned-left-floating-bottom');\n            this.ePinnedRightFloatingBottom = this.queryHtmlElement('.ag-pinned-right-floating-bottom');\n            this.eFloatingBottomContainer = this.queryHtmlElement('.ag-floating-bottom-container');\n            this.eFloatingBottomViewport = this.queryHtmlElement('.ag-floating-bottom-viewport');\n            this.eFloatingBottomFullWidthCellContainer = this.queryHtmlElement('.ag-floating-bottom-full-width-container');\n            this.eAllCellContainers = [\n                this.ePinnedLeftColsContainer, this.ePinnedRightColsContainer, this.eBodyContainer,\n                this.eFloatingTop, this.eFloatingBottom, this.eFullWidthCellContainer\n            ];\n            this.rowContainerComponents = {\n                body: new rowContainerComponent_1.RowContainerComponent({ eContainer: this.eBodyContainer, eViewport: this.eBodyViewport, body: true }),\n                fullWidth: new rowContainerComponent_1.RowContainerComponent({ eContainer: this.eFullWidthCellContainer, hideWhenNoChildren: true, eViewport: this.eFullWidthCellViewport }),\n                pinnedLeft: new rowContainerComponent_1.RowContainerComponent({ eContainer: this.ePinnedLeftColsContainer, eViewport: this.ePinnedLeftColsViewport }),\n                pinnedRight: new rowContainerComponent_1.RowContainerComponent({ eContainer: this.ePinnedRightColsContainer, eViewport: this.ePinnedRightColsViewport }),\n                floatingTop: new rowContainerComponent_1.RowContainerComponent({ eContainer: this.eFloatingTopContainer }),\n                floatingTopPinnedLeft: new rowContainerComponent_1.RowContainerComponent({ eContainer: this.ePinnedLeftFloatingTop }),\n                floatingTopPinnedRight: new rowContainerComponent_1.RowContainerComponent({ eContainer: this.ePinnedRightFloatingTop }),\n                floatingTopFullWidth: new rowContainerComponent_1.RowContainerComponent({ eContainer: this.eFloatingTopFullWidthCellContainer, hideWhenNoChildren: true }),\n                floatingBottom: new rowContainerComponent_1.RowContainerComponent({ eContainer: this.eFloatingBottomContainer }),\n                floatingBottomPinnedLeft: new rowContainerComponent_1.RowContainerComponent({ eContainer: this.ePinnedLeftFloatingBottom }),\n                floatingBottomPinnedRight: new rowContainerComponent_1.RowContainerComponent({ eContainer: this.ePinnedRightFloatingBottom }),\n                floatingBottomFullWith: new rowContainerComponent_1.RowContainerComponent({ eContainer: this.eFloatingBottomFullWidthCellContainer, hideWhenNoChildren: true }),\n            };\n            this.addMouseWheelEventListeners();\n            this.suppressScrollOnFloatingRow();\n        }\n        utils_1.Utils.iterateObject(this.rowContainerComponents, function (key, container) {\n            if (container) {\n                _this.context.wireBean(container);\n            }\n        });\n    };\n    // when editing a pinned row, if the cell is half outside the scrollable area, the browser can\n    // scroll the column into view. we do not want this, the pinned sections should never scroll.\n    // so we listen to scrolls on these containers and reset the scroll if we find one.\n    GridPanel.prototype.suppressScrollOnFloatingRow = function () {\n        var _this = this;\n        var resetTopScroll = function () { return _this.eFloatingTopViewport.scrollLeft = 0; };\n        var resetBottomScroll = function () { return _this.eFloatingTopViewport.scrollLeft = 0; };\n        this.addDestroyableEventListener(this.eFloatingTopViewport, 'scroll', resetTopScroll);\n        this.addDestroyableEventListener(this.eFloatingBottomViewport, 'scroll', resetBottomScroll);\n    };\n    GridPanel.prototype.getRowContainers = function () {\n        return this.rowContainerComponents;\n    };\n    GridPanel.prototype.addMouseWheelEventListeners = function () {\n        // IE9, Chrome, Safari, Opera use 'mousewheel', Firefox uses 'DOMMouseScroll'\n        this.addDestroyableEventListener(this.eBodyViewport, 'mousewheel', this.centerMouseWheelListener.bind(this));\n        this.addDestroyableEventListener(this.eBodyViewport, 'DOMMouseScroll', this.centerMouseWheelListener.bind(this));\n        if (this.enableRtl) {\n            this.addDestroyableEventListener(this.ePinnedRightColsViewport, 'mousewheel', this.genericMouseWheelListener.bind(this));\n            this.addDestroyableEventListener(this.ePinnedRightColsViewport, 'DOMMouseScroll', this.genericMouseWheelListener.bind(this));\n        }\n        else {\n            this.addDestroyableEventListener(this.ePinnedLeftColsViewport, 'mousewheel', this.genericMouseWheelListener.bind(this));\n            this.addDestroyableEventListener(this.ePinnedLeftColsViewport, 'DOMMouseScroll', this.genericMouseWheelListener.bind(this));\n        }\n    };\n    GridPanel.prototype.getHeaderViewport = function () {\n        return this.eHeaderViewport;\n    };\n    GridPanel.prototype.centerMouseWheelListener = function (event) {\n        // we are only interested in mimicking the mouse wheel if we are not scrolling on the middle,\n        // otherwise the body has scrolls and the mouse wheel works for free\n        var bodyVScrollShowing = this.isBodyVerticalScrollActive();\n        if (!bodyVScrollShowing) {\n            var targetPanel = this.enableRtl ? this.ePinnedLeftColsViewport : this.ePinnedRightColsViewport;\n            return this.generalMouseWheelListener(event, targetPanel);\n        }\n    };\n    // used for listening to mouse wheel events on 1) left pinned and also the 2) fullWidthCell components.\n    // the fullWidthCell listener is added in renderedRow, hence public.\n    GridPanel.prototype.genericMouseWheelListener = function (event) {\n        var targetPanel;\n        var bodyVScrollActive = this.isBodyVerticalScrollActive();\n        if (bodyVScrollActive) {\n            targetPanel = this.eBodyViewport;\n        }\n        else {\n            targetPanel = this.enableRtl ? this.ePinnedLeftColsViewport : this.ePinnedRightColsViewport;\n        }\n        return this.generalMouseWheelListener(event, targetPanel);\n    };\n    GridPanel.prototype.generalMouseWheelListener = function (event, targetPanel) {\n        var wheelEvent = utils_1.Utils.normalizeWheel(event);\n        // we need to detect in which direction scroll is happening to allow trackpads scroll horizontally\n        // horizontal scroll\n        if (Math.abs(wheelEvent.pixelX) > Math.abs(wheelEvent.pixelY)) {\n            var newLeftPosition = this.eBodyViewport.scrollLeft + wheelEvent.pixelX;\n            this.eBodyViewport.scrollLeft = newLeftPosition;\n        }\n        else {\n            var newTopPosition = targetPanel.scrollTop + wheelEvent.pixelY;\n            targetPanel.scrollTop = newTopPosition;\n        }\n        // allow the option to pass mouse wheel events to the browser\n        // https://github.com/ag-grid/ag-grid/issues/800\n        // in the future, this should be tied in with 'forPrint' option, or have an option 'no vertical scrolls'\n        var shouldPreventDefault = !this.gridOptionsWrapper.isAutoHeight() && !this.gridOptionsWrapper.isSuppressPreventDefaultOnMouseWheel();\n        if (shouldPreventDefault) {\n            // if we don't prevent default, then the whole browser will scroll also as well as the grid\n            event.preventDefault();\n        }\n        return false;\n    };\n    GridPanel.prototype.onDisplayedColumnsChanged = function () {\n        this.setPinnedContainersVisible();\n        this.setBodyAndHeaderHeights();\n        this.setLeftAndRightBounds();\n    };\n    GridPanel.prototype.onDisplayedColumnsWidthChanged = function () {\n        this.setWidthsOfContainers();\n        this.setLeftAndRightBounds();\n        if (this.enableRtl) {\n            // because RTL is all backwards, a change in the width of the row\n            // can cause a change in the scroll position, without a scroll event,\n            // because the scroll position in RTL is a function that depends on\n            // the width. to be convinced of this, take out this line, enable RTL,\n            // scroll all the way to the left and then resize a column\n            this.horizontallyScrollHeaderCenterAndFloatingCenter();\n        }\n    };\n    GridPanel.prototype.onScrollVisibilityChanged = function () {\n        this.setWidthsOfContainers();\n    };\n    GridPanel.prototype.setWidthsOfContainers = function () {\n        var mainRowWidth = this.columnController.getBodyContainerWidth() + 'px';\n        this.eBodyContainer.style.width = mainRowWidth;\n        if (this.forPrint) {\n            // pinned col doesn't exist when doing forPrint\n            return;\n        }\n        this.eFloatingBottomContainer.style.width = mainRowWidth;\n        this.eFloatingTopContainer.style.width = mainRowWidth;\n        this.setPinnedLeftWidth();\n        this.setPinnedRightWidth();\n    };\n    GridPanel.prototype.setPinnedLeftWidth = function () {\n        var pinnedLeftWidth = this.scrollVisibleService.getPinnedLeftWidth() + 'px';\n        var pinnedLeftWidthWithScroll = this.scrollVisibleService.getPinnedLeftWithScrollWidth() + 'px';\n        this.ePinnedLeftColsViewport.style.width = pinnedLeftWidthWithScroll;\n        this.eBodyViewportWrapper.style.marginLeft = pinnedLeftWidthWithScroll;\n        this.ePinnedLeftFloatingBottom.style.width = pinnedLeftWidthWithScroll;\n        this.ePinnedLeftFloatingTop.style.width = pinnedLeftWidthWithScroll;\n        this.ePinnedLeftColsContainer.style.width = pinnedLeftWidth;\n    };\n    GridPanel.prototype.setPinnedRightWidth = function () {\n        var pinnedRightWidth = this.scrollVisibleService.getPinnedRightWidth() + 'px';\n        var pinnedRightWidthWithScroll = this.scrollVisibleService.getPinnedRightWithScrollWidth() + 'px';\n        this.ePinnedRightColsViewport.style.width = pinnedRightWidthWithScroll;\n        this.eBodyViewportWrapper.style.marginRight = pinnedRightWidthWithScroll;\n        this.ePinnedRightFloatingBottom.style.width = pinnedRightWidthWithScroll;\n        this.ePinnedRightFloatingTop.style.width = pinnedRightWidthWithScroll;\n        this.ePinnedRightColsContainer.style.width = pinnedRightWidth;\n    };\n    GridPanel.prototype.setPinnedContainersVisible = function () {\n        // no need to do this if not using scrolls\n        if (this.forPrint) {\n            return;\n        }\n        var changeDetected = false;\n        // if we are v scrolling, then one of these will have the scroll position.\n        // we us this inside the if(changedDetected), so we don't always use it, however\n        // it is changed when we make a pinned panel not visible, so we have to check it\n        // before we change display on the pinned panels\n        var scrollTop = Math.max(this.eBodyViewport.scrollTop, this.ePinnedLeftColsViewport.scrollTop, this.ePinnedRightColsViewport.scrollTop);\n        var showLeftPinned = this.columnController.isPinningLeft();\n        if (showLeftPinned !== this.pinningLeft) {\n            this.pinningLeft = showLeftPinned;\n            this.ePinnedLeftHeader.style.display = showLeftPinned ? 'inline-block' : 'none';\n            this.ePinnedLeftColsViewport.style.display = showLeftPinned ? 'inline' : 'none';\n            changeDetected = true;\n        }\n        var showRightPinned = this.columnController.isPinningRight();\n        if (showRightPinned !== this.pinningRight) {\n            this.pinningRight = showRightPinned;\n            this.ePinnedRightHeader.style.display = showRightPinned ? 'inline-block' : 'none';\n            this.ePinnedRightColsViewport.style.display = showRightPinned ? 'inline' : 'none';\n            changeDetected = true;\n        }\n        if (changeDetected) {\n            var bodyVScrollActive = this.isBodyVerticalScrollActive();\n            this.eBodyViewport.style.overflowY = bodyVScrollActive ? 'auto' : 'hidden';\n            // the body either uses it's scroll (when scrolling) or it's style.top\n            // (when following the scroll of a pinned section), so we need to set it\n            // back when changing from one to the other\n            if (bodyVScrollActive) {\n                this.setFakeScroll(this.eBodyContainer, 0);\n                // this.eBodyContainer.style.top = '0px';\n            }\n            else {\n                this.eBodyViewport.scrollTop = 0;\n            }\n            // when changing the primary scroll viewport, we copy over the scroll position,\n            // eg if body was getting scrolled and we were at position 100px, then we start\n            // pinning and pinned viewport is now the primary, we need to set it to 100px\n            var primaryScrollViewport = this.getPrimaryScrollViewport();\n            primaryScrollViewport.scrollTop = scrollTop;\n            // this adjusts the scroll position of all the faking panels. they should already\n            // be correct except body which has potentially just turned to be fake.\n            this.fakeVerticalScroll(scrollTop);\n        }\n    };\n    // init, layoutChanged, floatingDataChanged, headerHeightChanged\n    GridPanel.prototype.setBodyAndHeaderHeights = function () {\n        if (this.forPrint) {\n            // if doing 'for print' or 'auto height', then the header and footers are laid\n            // out naturally by the browser. it's whatever height that's needed to fit.\n            return;\n        }\n        var heightOfContainer = this.layout.getCentreHeight();\n        if (!heightOfContainer) {\n            return;\n        }\n        var headerRowCount = this.columnController.getHeaderRowCount();\n        var totalHeaderHeight;\n        var numberOfFloating = 0;\n        var groupHeight;\n        var headerHeight;\n        if (!this.columnController.isPivotMode()) {\n            utils_1.Utils.removeCssClass(this.eHeader, 'ag-pivot-on');\n            utils_1.Utils.addCssClass(this.eHeader, 'ag-pivot-off');\n            if (this.gridOptionsWrapper.isFloatingFilter()) {\n                headerRowCount++;\n            }\n            numberOfFloating = (this.gridOptionsWrapper.isFloatingFilter()) ? 1 : 0;\n            groupHeight = this.gridOptionsWrapper.getGroupHeaderHeight();\n            headerHeight = this.gridOptionsWrapper.getHeaderHeight();\n        }\n        else {\n            utils_1.Utils.removeCssClass(this.eHeader, 'ag-pivot-off');\n            utils_1.Utils.addCssClass(this.eHeader, 'ag-pivot-on');\n            numberOfFloating = 0;\n            groupHeight = this.gridOptionsWrapper.getPivotGroupHeaderHeight();\n            headerHeight = this.gridOptionsWrapper.getPivotHeaderHeight();\n        }\n        var numberOfNonGroups = 1 + numberOfFloating;\n        var numberOfGroups = headerRowCount - numberOfNonGroups;\n        totalHeaderHeight = numberOfFloating * this.gridOptionsWrapper.getFloatingFiltersHeight();\n        totalHeaderHeight += numberOfGroups * groupHeight;\n        totalHeaderHeight += headerHeight;\n        this.eHeader.style['height'] = totalHeaderHeight + 'px';\n        // if we are doing auto-height, we only size the header, we don't size the\n        // other parts as we use the normal browser layout for that\n        if (this.autoHeight) {\n            return;\n        }\n        // padding top covers the header and the pinned rows on top\n        var floatingTopHeight = this.pinnedRowModel.getPinnedTopTotalHeight();\n        var paddingTop = totalHeaderHeight + floatingTopHeight;\n        // bottom is just the bottom pinned rows\n        var floatingBottomHeight = this.pinnedRowModel.getPinnedBottomTotalHeight();\n        var floatingBottomTop = heightOfContainer - floatingBottomHeight;\n        var bodyHeight = heightOfContainer - totalHeaderHeight - floatingBottomHeight - floatingTopHeight;\n        this.eBody.style.top = paddingTop + 'px';\n        this.eBody.style.height = bodyHeight + 'px';\n        this.eFloatingTop.style.top = totalHeaderHeight + 'px';\n        this.eFloatingTop.style.height = floatingTopHeight + 'px';\n        this.eFloatingBottom.style.height = floatingBottomHeight + 'px';\n        this.eFloatingBottom.style.top = floatingBottomTop + 'px';\n        this.ePinnedLeftColsViewport.style.height = bodyHeight + 'px';\n        this.ePinnedRightColsViewport.style.height = bodyHeight + 'px';\n        // bodyHeight property is used by pagination service, that may change number of rows\n        // in this page based on the height of the grid\n        if (this.bodyHeight !== bodyHeight) {\n            this.bodyHeight = bodyHeight;\n            var event_3 = {\n                type: events_1.Events.EVENT_BODY_HEIGHT_CHANGED,\n                api: this.gridApi,\n                columnApi: this.columnApi\n            };\n            this.eventService.dispatchEvent(event_3);\n        }\n    };\n    GridPanel.prototype.getBodyHeight = function () {\n        return this.bodyHeight;\n    };\n    GridPanel.prototype.setHorizontalScrollPosition = function (hScrollPosition) {\n        this.eBodyViewport.scrollLeft = hScrollPosition;\n        // we need to manually do the event handling (rather than wait for the event)\n        // for the alignedGridsService, as if we don't, the aligned grid service gets\n        // notified async, and then it's 'consuming' flag doesn't get used right, and\n        // we can end up with an infinite loop\n        if (this.nextScrollLeft !== hScrollPosition) {\n            this.nextScrollLeft = hScrollPosition;\n            this.doHorizontalScroll();\n        }\n    };\n    // tries to scroll by pixels, but returns what the result actually was\n    GridPanel.prototype.scrollHorizontally = function (pixels) {\n        var oldScrollPosition = this.eBodyViewport.scrollLeft;\n        this.setHorizontalScrollPosition(oldScrollPosition + pixels);\n        var newScrollPosition = this.eBodyViewport.scrollLeft;\n        return newScrollPosition - oldScrollPosition;\n    };\n    GridPanel.prototype.addScrollListener = function () {\n        var _this = this;\n        // if printing, then no scrolling, so no point in listening for scroll events\n        if (this.forPrint) {\n            return;\n        }\n        this.addDestroyableEventListener(this.eBodyViewport, 'scroll', this.onBodyScroll.bind(this));\n        // below we add two things:\n        // pinnedScrollListener -> when pinned panel with scrollbar gets scrolled, it updates body and other pinned\n        // suppressScroll -> stops scrolling when pinned panel was moved - which can only happen when user is navigating\n        //     in the pinned container, as the pinned col should never scroll. so we rollback the scroll on the pinned.\n        var onPinnedLeftVerticalScroll = this.onVerticalScroll.bind(this, this.ePinnedLeftColsViewport);\n        var onPinnedRightVerticalScroll = this.onVerticalScroll.bind(this, this.ePinnedRightColsViewport);\n        if (this.enableRtl) {\n            this.addDestroyableEventListener(this.ePinnedLeftColsViewport, 'scroll', onPinnedLeftVerticalScroll);\n            var suppressRightScroll = function () { return _this.ePinnedRightColsViewport.scrollTop = 0; };\n            this.addDestroyableEventListener(this.ePinnedRightColsViewport, 'scroll', suppressRightScroll);\n        }\n        else {\n            this.addDestroyableEventListener(this.ePinnedRightColsViewport, 'scroll', onPinnedRightVerticalScroll);\n            var suppressLeftScroll = function () { return _this.ePinnedLeftColsViewport.scrollTop = 0; };\n            this.addDestroyableEventListener(this.ePinnedLeftColsViewport, 'scroll', suppressLeftScroll);\n        }\n        var suppressCenterScroll = function () {\n            if (_this.getPrimaryScrollViewport() !== _this.eBodyViewport) {\n                _this.eBodyViewport.scrollTop = 0;\n            }\n        };\n        this.addDestroyableEventListener(this.eBodyViewport, 'scroll', suppressCenterScroll);\n        this.addIEPinFix(onPinnedRightVerticalScroll, onPinnedLeftVerticalScroll);\n    };\n    GridPanel.prototype.onBodyScroll = function () {\n        this.onBodyHorizontalScroll();\n        this.onBodyVerticalScroll();\n    };\n    GridPanel.prototype.onBodyHorizontalScroll = function () {\n        var scrollLeft = this.eBodyViewport.scrollLeft;\n        if (this.nextScrollLeft !== scrollLeft) {\n            this.nextScrollLeft = scrollLeft;\n            if (this.useAnimationFrame) {\n                this.animationFrameService.schedule();\n            }\n            else {\n                this.doHorizontalScroll();\n            }\n        }\n    };\n    GridPanel.prototype.doHorizontalScroll = function () {\n        this.scrollLeft = this.nextScrollLeft;\n        var event = {\n            type: events_1.Events.EVENT_BODY_SCROLL,\n            api: this.gridApi,\n            columnApi: this.columnApi,\n            direction: 'horizontal',\n            left: this.scrollLeft,\n            top: this.scrollTop\n        };\n        this.eventService.dispatchEvent(event);\n        this.horizontallyScrollHeaderCenterAndFloatingCenter();\n        this.setLeftAndRightBounds();\n        // this.alignedGridsService.fireHorizontalScrollEvent(this.scrollLeft);\n    };\n    GridPanel.prototype.onBodyVerticalScroll = function () {\n        var bodyVScrollActive = this.isBodyVerticalScrollActive();\n        if (bodyVScrollActive) {\n            this.onVerticalScroll(this.eBodyViewport);\n        }\n    };\n    GridPanel.prototype.onVerticalScroll = function (sourceElement) {\n        var scrollTop = sourceElement.scrollTop;\n        if (this.useAnimationFrame) {\n            if (this.nextScrollTop !== scrollTop) {\n                this.nextScrollTop = scrollTop;\n                this.animationFrameService.schedule();\n            }\n        }\n        else {\n            if (scrollTop !== this.scrollTop) {\n                this.scrollTop = scrollTop;\n                this.fakeVerticalScroll(scrollTop);\n                this.redrawRowsAfterScroll();\n            }\n        }\n    };\n    GridPanel.prototype.executeFrame = function () {\n        if (this.scrollLeft !== this.nextScrollLeft) {\n            this.doHorizontalScroll();\n            return true;\n        }\n        else if (this.scrollTop !== this.nextScrollTop) {\n            this.scrollTop = this.nextScrollTop;\n            this.fakeVerticalScroll(this.scrollTop);\n            this.verticalRedrawNeeded = true;\n            return true;\n        }\n        else if (this.verticalRedrawNeeded) {\n            this.redrawRowsAfterScroll();\n            this.verticalRedrawNeeded = false;\n            return true;\n        }\n        else {\n            return false;\n        }\n    };\n    GridPanel.prototype.redrawRowsAfterScroll = function () {\n        var event = {\n            type: events_1.Events.EVENT_BODY_SCROLL,\n            direction: 'vertical',\n            api: this.gridApi,\n            columnApi: this.columnApi,\n            left: this.scrollLeft,\n            top: this.scrollTop\n        };\n        this.eventService.dispatchEvent(event);\n        this.rowRenderer.redrawAfterScroll();\n    };\n    // if LTR, we hide body scroll if pinning right (as scroll is in right pinned),\n    // if RTL, we hide body scroll if pinning left (as scroll is in left pinned)\n    GridPanel.prototype.isBodyVerticalScrollActive = function () {\n        var pinningRight = this.columnController.isPinningRight();\n        var pinningLeft = this.columnController.isPinningLeft();\n        var centerHasScroll = this.enableRtl ? !pinningLeft : !pinningRight;\n        return centerHasScroll;\n    };\n    // this bit is a fix / hack for IE due to this:\n    // https://www.ag-grid.com/forum/showthread.php?tid=4303\n    // it gets the left panel to reposition itself after a model change\n    GridPanel.prototype.addIEPinFix = function (onPinnedRightScroll, onPinnedLeftScroll) {\n        var _this = this;\n        var listener = function () {\n            if (_this.columnController.isPinningRight()) {\n                setTimeout(function () {\n                    if (_this.enableRtl) {\n                        onPinnedLeftScroll();\n                    }\n                    else {\n                        onPinnedRightScroll();\n                    }\n                }, 0);\n            }\n        };\n        this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_MODEL_UPDATED, listener);\n    };\n    // this gets called whenever a change in the viewport, so we can inform column controller it has to work\n    // out the virtual columns again. gets called from following locations:\n    // + ensureColVisible, scroll, init, layoutChanged, displayedColumnsChanged, API (doLayout)\n    GridPanel.prototype.setLeftAndRightBounds = function () {\n        if (this.gridOptionsWrapper.isForPrint()) {\n            return;\n        }\n        var scrollWidth = this.eBodyViewport.clientWidth;\n        var scrollPosition = this.getBodyViewportScrollLeft();\n        this.columnController.setVirtualViewportPosition(scrollWidth, scrollPosition);\n    };\n    GridPanel.prototype.getBodyViewportScrollLeft = function () {\n        if (this.forPrint) {\n            return 0;\n        }\n        // we defer to a util, as how you calculated scrollLeft when doing RTL depends on the browser\n        return utils_1.Utils.getScrollLeft(this.eBodyViewport, this.enableRtl);\n    };\n    GridPanel.prototype.setBodyViewportScrollLeft = function (value) {\n        if (this.forPrint) {\n            return;\n        }\n        // we defer to a util, as how you calculated scrollLeft when doing RTL depends on the browser\n        utils_1.Utils.setScrollLeft(this.eBodyViewport, value, this.enableRtl);\n    };\n    GridPanel.prototype.horizontallyScrollHeaderCenterAndFloatingCenter = function () {\n        var scrollLeft = this.getBodyViewportScrollLeft();\n        var offset = this.enableRtl ? scrollLeft : -scrollLeft;\n        this.eHeaderContainer.style.left = offset + 'px';\n        this.eFloatingBottomContainer.style.left = offset + 'px';\n        this.eFloatingTopContainer.style.left = offset + 'px';\n    };\n    // we say fake scroll as only one panel (left, right or body) has scrolls,\n    // the other panels mimic the scroll by getting it's top position updated.\n    GridPanel.prototype.fakeVerticalScroll = function (position) {\n        if (this.enableRtl) {\n            // RTL\n            // if pinning left, then body scroll is faking\n            var pinningLeft = this.columnController.isPinningLeft();\n            if (pinningLeft) {\n                this.setFakeScroll(this.eBodyContainer, position);\n            }\n            // right is always faking\n            this.setFakeScroll(this.ePinnedRightColsContainer, position);\n        }\n        else {\n            // LTR\n            // if pinning right, then body scroll is faking\n            var pinningRight = this.columnController.isPinningRight();\n            if (pinningRight) {\n                this.setFakeScroll(this.eBodyContainer, position);\n            }\n            // left is always faking\n            this.setFakeScroll(this.ePinnedLeftColsContainer, position);\n        }\n        // always scroll fullWidth container, as this is never responsible for a scroll\n        this.setFakeScroll(this.eFullWidthCellContainer, position);\n    };\n    GridPanel.prototype.setFakeScroll = function (eContainer, pixels) {\n        eContainer.style.top = -pixels + 'px';\n        // eContainer.style.transform = `translateY(${-pixels}px)`;\n    };\n    GridPanel.prototype.addScrollEventListener = function (listener) {\n        this.eBodyViewport.addEventListener('scroll', listener);\n    };\n    GridPanel.prototype.removeScrollEventListener = function (listener) {\n        this.eBodyViewport.removeEventListener('scroll', listener);\n    };\n    __decorate([\n        context_1.Autowired('alignedGridsService'),\n        __metadata(\"design:type\", alignedGridsService_1.AlignedGridsService)\n    ], GridPanel.prototype, \"alignedGridsService\", void 0);\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], GridPanel.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('columnController'),\n        __metadata(\"design:type\", columnController_1.ColumnController)\n    ], GridPanel.prototype, \"columnController\", void 0);\n    __decorate([\n        context_1.Autowired('rowRenderer'),\n        __metadata(\"design:type\", rowRenderer_1.RowRenderer)\n    ], GridPanel.prototype, \"rowRenderer\", void 0);\n    __decorate([\n        context_1.Autowired('pinnedRowModel'),\n        __metadata(\"design:type\", pinnedRowModel_1.PinnedRowModel)\n    ], GridPanel.prototype, \"pinnedRowModel\", void 0);\n    __decorate([\n        context_1.Autowired('eventService'),\n        __metadata(\"design:type\", eventService_1.EventService)\n    ], GridPanel.prototype, \"eventService\", void 0);\n    __decorate([\n        context_1.Autowired('context'),\n        __metadata(\"design:type\", context_1.Context)\n    ], GridPanel.prototype, \"context\", void 0);\n    __decorate([\n        context_1.Autowired('animationFrameService'),\n        __metadata(\"design:type\", animationFrameService_1.AnimationFrameService)\n    ], GridPanel.prototype, \"animationFrameService\", void 0);\n    __decorate([\n        context_1.Autowired('navigationService'),\n        __metadata(\"design:type\", navigationService_1.NavigationService)\n    ], GridPanel.prototype, \"navigationService\", void 0);\n    __decorate([\n        context_1.Autowired('paginationProxy'),\n        __metadata(\"design:type\", paginationProxy_1.PaginationProxy)\n    ], GridPanel.prototype, \"paginationProxy\", void 0);\n    __decorate([\n        context_1.Autowired('columnApi'),\n        __metadata(\"design:type\", columnController_1.ColumnApi)\n    ], GridPanel.prototype, \"columnApi\", void 0);\n    __decorate([\n        context_1.Autowired('gridApi'),\n        __metadata(\"design:type\", gridApi_1.GridApi)\n    ], GridPanel.prototype, \"gridApi\", void 0);\n    __decorate([\n        context_1.Optional('rangeController'),\n        __metadata(\"design:type\", Object)\n    ], GridPanel.prototype, \"rangeController\", void 0);\n    __decorate([\n        context_1.Autowired('dragService'),\n        __metadata(\"design:type\", dragService_1.DragService)\n    ], GridPanel.prototype, \"dragService\", void 0);\n    __decorate([\n        context_1.Autowired('selectionController'),\n        __metadata(\"design:type\", selectionController_1.SelectionController)\n    ], GridPanel.prototype, \"selectionController\", void 0);\n    __decorate([\n        context_1.Optional('clipboardService'),\n        __metadata(\"design:type\", Object)\n    ], GridPanel.prototype, \"clipboardService\", void 0);\n    __decorate([\n        context_1.Autowired('csvCreator'),\n        __metadata(\"design:type\", csvCreator_1.CsvCreator)\n    ], GridPanel.prototype, \"csvCreator\", void 0);\n    __decorate([\n        context_1.Autowired('mouseEventService'),\n        __metadata(\"design:type\", mouseEventService_1.MouseEventService)\n    ], GridPanel.prototype, \"mouseEventService\", void 0);\n    __decorate([\n        context_1.Autowired('focusedCellController'),\n        __metadata(\"design:type\", focusedCellController_1.FocusedCellController)\n    ], GridPanel.prototype, \"focusedCellController\", void 0);\n    __decorate([\n        context_1.Autowired('$scope'),\n        __metadata(\"design:type\", Object)\n    ], GridPanel.prototype, \"$scope\", void 0);\n    __decorate([\n        context_1.Autowired('scrollVisibleService'),\n        __metadata(\"design:type\", scrollVisibleService_1.ScrollVisibleService)\n    ], GridPanel.prototype, \"scrollVisibleService\", void 0);\n    __decorate([\n        context_1.Optional('contextMenuFactory'),\n        __metadata(\"design:type\", Object)\n    ], GridPanel.prototype, \"contextMenuFactory\", void 0);\n    __decorate([\n        context_1.Autowired('frameworkFactory'),\n        __metadata(\"design:type\", Object)\n    ], GridPanel.prototype, \"frameworkFactory\", void 0);\n    __decorate([\n        context_1.Autowired('valueService'),\n        __metadata(\"design:type\", valueService_1.ValueService)\n    ], GridPanel.prototype, \"valueService\", void 0);\n    __decorate([\n        context_1.Autowired('componentRecipes'),\n        __metadata(\"design:type\", componentRecipes_1.ComponentRecipes)\n    ], GridPanel.prototype, \"componentRecipes\", void 0);\n    __decorate([\n        __param(0, context_1.Qualifier('loggerFactory')),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [logger_1.LoggerFactory]),\n        __metadata(\"design:returntype\", void 0)\n    ], GridPanel.prototype, \"agWire\", null);\n    __decorate([\n        context_1.PreDestroy,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], GridPanel.prototype, \"destroy\", null);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], GridPanel.prototype, \"init\", null);\n    GridPanel = __decorate([\n        context_1.Bean('gridPanel')\n    ], GridPanel);\n    return GridPanel;\n}(beanStub_1.BeanStub));\nexports.GridPanel = GridPanel;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/gridPanel/gridPanel.js\n// module id = 26\n// module chunks = 0","'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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/index.js\n// module id = 27\n// module chunks = 0","export var Size = {\n  LARGE: 'large',\n  SMALL: 'small',\n  XSMALL: 'xsmall'\n};\n\nexport var SIZE_MAP = {\n  large: 'lg',\n  medium: 'md',\n  small: 'sm',\n  xsmall: 'xs',\n  lg: 'lg',\n  md: 'md',\n  sm: 'sm',\n  xs: 'xs'\n};\n\nexport var DEVICE_SIZES = ['lg', 'md', 'sm', 'xs'];\n\nexport var State = {\n  SUCCESS: 'success',\n  WARNING: 'warning',\n  DANGER: 'danger',\n  INFO: 'info'\n};\n\nexport var Style = {\n  DEFAULT: 'default',\n  PRIMARY: 'primary',\n  LINK: 'link',\n  INVERSE: 'inverse'\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/utils/StyleConfig.js\n// module id = 28\n// module chunks = 0","// TODO: This module should be ElementChildren, and should use named exports.\n\nimport React from 'react';\n\n/**\n * Iterates through children that are typically specified as `props.children`,\n * but only maps over children that are \"valid components\".\n *\n * The mapFunction provided index will be normalised to the components mapped,\n * so an invalid component would not increase the index.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func.\n * @param {*} context Context for func.\n * @return {object} Object containing the ordered map of results.\n */\nfunction map(children, func, context) {\n  var index = 0;\n\n  return React.Children.map(children, function (child) {\n    if (!React.isValidElement(child)) {\n      return child;\n    }\n\n    return func.call(context, child, index++);\n  });\n}\n\n/**\n * Iterates through children that are \"valid components\".\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child with the index reflecting the position relative to \"valid components\".\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func.\n * @param {*} context Context for context.\n */\nfunction forEach(children, func, context) {\n  var index = 0;\n\n  React.Children.forEach(children, function (child) {\n    if (!React.isValidElement(child)) {\n      return;\n    }\n\n    func.call(context, child, index++);\n  });\n}\n\n/**\n * Count the number of \"valid components\" in the Children container.\n *\n * @param {?*} children Children tree container.\n * @returns {number}\n */\nfunction count(children) {\n  var result = 0;\n\n  React.Children.forEach(children, function (child) {\n    if (!React.isValidElement(child)) {\n      return;\n    }\n\n    ++result;\n  });\n\n  return result;\n}\n\n/**\n * Finds children that are typically specified as `props.children`,\n * but only iterates over children that are \"valid components\".\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child with the index reflecting the position relative to \"valid components\".\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func.\n * @param {*} context Context for func.\n * @returns {array} of children that meet the func return statement\n */\nfunction filter(children, func, context) {\n  var index = 0;\n  var result = [];\n\n  React.Children.forEach(children, function (child) {\n    if (!React.isValidElement(child)) {\n      return;\n    }\n\n    if (func.call(context, child, index++)) {\n      result.push(child);\n    }\n  });\n\n  return result;\n}\n\nfunction find(children, func, context) {\n  var index = 0;\n  var result = void 0;\n\n  React.Children.forEach(children, function (child) {\n    if (result) {\n      return;\n    }\n    if (!React.isValidElement(child)) {\n      return;\n    }\n\n    if (func.call(context, child, index++)) {\n      result = child;\n    }\n  });\n\n  return result;\n}\n\nfunction every(children, func, context) {\n  var index = 0;\n  var result = true;\n\n  React.Children.forEach(children, function (child) {\n    if (!result) {\n      return;\n    }\n    if (!React.isValidElement(child)) {\n      return;\n    }\n\n    if (!func.call(context, child, index++)) {\n      result = false;\n    }\n  });\n\n  return result;\n}\n\nfunction some(children, func, context) {\n  var index = 0;\n  var result = false;\n\n  React.Children.forEach(children, function (child) {\n    if (result) {\n      return;\n    }\n    if (!React.isValidElement(child)) {\n      return;\n    }\n\n    if (func.call(context, child, index++)) {\n      result = true;\n    }\n  });\n\n  return result;\n}\n\nfunction toArray(children) {\n  var result = [];\n\n  React.Children.forEach(children, function (child) {\n    if (!React.isValidElement(child)) {\n      return;\n    }\n\n    result.push(child);\n  });\n\n  return result;\n}\n\nexport default {\n  map: map,\n  forEach: forEach,\n  count: count,\n  find: find,\n  filter: filter,\n  every: every,\n  some: some,\n  toArray: toArray\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/utils/ValidComponentChildren.js\n// module id = 29\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction QuerySelector(selector) {\n    return querySelectorFunc.bind(this, selector);\n}\nexports.QuerySelector = QuerySelector;\nfunction RefSelector(ref) {\n    return querySelectorFunc.bind(this, '[ref=' + ref + ']');\n}\nexports.RefSelector = RefSelector;\nfunction querySelectorFunc(selector, classPrototype, methodOrAttributeName, index) {\n    if (selector === null) {\n        console.error('ag-Grid: QuerySelector selector should not be null');\n        return;\n    }\n    if (typeof index === 'number') {\n        console.error('ag-Grid: QuerySelector should be on an attribute');\n        return;\n    }\n    // it's an attribute on the class\n    var props = getOrCreateProps(classPrototype, classPrototype.constructor.name);\n    if (!props.querySelectors) {\n        props.querySelectors = [];\n    }\n    props.querySelectors.push({\n        attributeName: methodOrAttributeName,\n        querySelector: selector\n    });\n}\nfunction Listener(eventName) {\n    return listenerFunc.bind(this, eventName);\n}\nexports.Listener = Listener;\nfunction listenerFunc(eventName, target, methodName, descriptor) {\n    if (eventName === null) {\n        console.error('ag-Grid: EventListener eventName should not be null');\n        return;\n    }\n    // it's an attribute on the class\n    var props = getOrCreateProps(target, target.constructor.name);\n    if (!props.listenerMethods) {\n        props.listenerMethods = [];\n    }\n    props.listenerMethods.push({\n        methodName: methodName,\n        eventName: eventName\n    });\n}\nfunction getOrCreateProps(target, instanceName) {\n    if (!target.__agComponentMetaData) {\n        target.__agComponentMetaData = {};\n    }\n    if (!target.__agComponentMetaData[instanceName]) {\n        target.__agComponentMetaData[instanceName] = {};\n    }\n    return target.__agComponentMetaData[instanceName];\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/widgets/componentAnnotations.js\n// module id = 30\n// module chunks = 0","'use strict';\n\nvar bind = require('./helpers/bind');\nvar isBuffer = require('is-buffer');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n  return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n  return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n  return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n  var result;\n  if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n    result = ArrayBuffer.isView(val);\n  } else {\n    result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n  }\n  return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n  return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n  return typeof val === 'number';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n  return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n  return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n  return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n  return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n  return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n  return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n  return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n  return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n  return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n *  typeof window -> undefined\n *  typeof document -> undefined\n *\n * react-native:\n *  navigator.product -> 'ReactNative'\n */\nfunction isStandardBrowserEnv() {\n  if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {\n    return false;\n  }\n  return (\n    typeof window !== 'undefined' &&\n    typeof document !== 'undefined'\n  );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n  // Don't bother if no value provided\n  if (obj === null || typeof obj === 'undefined') {\n    return;\n  }\n\n  // Force an array if not already something iterable\n  if (typeof obj !== 'object' && !isArray(obj)) {\n    /*eslint no-param-reassign:0*/\n    obj = [obj];\n  }\n\n  if (isArray(obj)) {\n    // Iterate over array values\n    for (var i = 0, l = obj.length; i < l; i++) {\n      fn.call(null, obj[i], i, obj);\n    }\n  } else {\n    // Iterate over object keys\n    for (var key in obj) {\n      if (Object.prototype.hasOwnProperty.call(obj, key)) {\n        fn.call(null, obj[key], key, obj);\n      }\n    }\n  }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n  var result = {};\n  function assignValue(val, key) {\n    if (typeof result[key] === 'object' && typeof val === 'object') {\n      result[key] = merge(result[key], val);\n    } else {\n      result[key] = val;\n    }\n  }\n\n  for (var i = 0, l = arguments.length; i < l; i++) {\n    forEach(arguments[i], assignValue);\n  }\n  return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n  forEach(b, function assignValue(val, key) {\n    if (thisArg && typeof val === 'function') {\n      a[key] = bind(val, thisArg);\n    } else {\n      a[key] = val;\n    }\n  });\n  return a;\n}\n\nmodule.exports = {\n  isArray: isArray,\n  isArrayBuffer: isArrayBuffer,\n  isBuffer: isBuffer,\n  isFormData: isFormData,\n  isArrayBufferView: isArrayBufferView,\n  isString: isString,\n  isNumber: isNumber,\n  isObject: isObject,\n  isUndefined: isUndefined,\n  isDate: isDate,\n  isFile: isFile,\n  isBlob: isBlob,\n  isFunction: isFunction,\n  isStream: isStream,\n  isURLSearchParams: isURLSearchParams,\n  isStandardBrowserEnv: isStandardBrowserEnv,\n  forEach: forEach,\n  merge: merge,\n  extend: extend,\n  trim: trim\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/utils.js\n// module id = 31\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar eventService_1 = require(\"../eventService\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar utils_1 = require(\"../utils\");\nvar BeanStub = (function () {\n    function BeanStub() {\n        this.destroyFunctions = [];\n        this.destroyed = false;\n    }\n    BeanStub.prototype.destroy = function () {\n        this.destroyFunctions.forEach(function (func) { return func(); });\n        this.destroyFunctions.length = 0;\n        this.destroyed = true;\n    };\n    BeanStub.prototype.addEventListener = function (eventType, listener) {\n        if (!this.localEventService) {\n            this.localEventService = new eventService_1.EventService();\n        }\n        this.localEventService.addEventListener(eventType, listener);\n    };\n    BeanStub.prototype.removeEventListener = function (eventType, listener) {\n        if (this.localEventService) {\n            this.localEventService.removeEventListener(eventType, listener);\n        }\n    };\n    BeanStub.prototype.dispatchEventAsync = function (event) {\n        var _this = this;\n        setTimeout(function () { return _this.dispatchEvent(event); }, 0);\n    };\n    BeanStub.prototype.dispatchEvent = function (event) {\n        if (this.localEventService) {\n            this.localEventService.dispatchEvent(event);\n        }\n    };\n    BeanStub.prototype.addDestroyableEventListener = function (eElement, event, listener) {\n        if (this.destroyed) {\n            return;\n        }\n        if (eElement instanceof HTMLElement) {\n            utils_1._.addSafePassiveEventListener(eElement, event, listener);\n        }\n        else if (eElement instanceof gridOptionsWrapper_1.GridOptionsWrapper) {\n            eElement.addEventListener(event, listener);\n        }\n        else {\n            eElement.addEventListener(event, listener);\n        }\n        this.destroyFunctions.push(function () {\n            if (eElement instanceof HTMLElement) {\n                eElement.removeEventListener(event, listener);\n            }\n            else if (eElement instanceof gridOptionsWrapper_1.GridOptionsWrapper) {\n                eElement.removeEventListener(event, listener);\n            }\n            else {\n                eElement.removeEventListener(event, listener);\n            }\n        });\n    };\n    BeanStub.prototype.isAlive = function () {\n        return !this.destroyed;\n    };\n    BeanStub.prototype.addDestroyFunc = function (func) {\n        // if we are already destroyed, we execute the func now\n        if (this.isAlive()) {\n            this.destroyFunctions.push(func);\n        }\n        else {\n            func();\n        }\n    };\n    return BeanStub;\n}());\nexports.BeanStub = BeanStub;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/context/beanStub.js\n// module id = 32\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"./utils\");\nvar context_1 = require(\"./context/context\");\nvar context_2 = require(\"./context/context\");\nvar logger_1 = require(\"./logger\");\nvar eventService_1 = require(\"./eventService\");\nvar events_1 = require(\"./events\");\nvar context_3 = require(\"./context/context\");\nvar gridOptionsWrapper_1 = require(\"./gridOptionsWrapper\");\nvar context_4 = require(\"./context/context\");\nvar constants_1 = require(\"./constants\");\nvar columnController_1 = require(\"./columnController/columnController\");\nvar gridApi_1 = require(\"./gridApi\");\nvar SelectionController = (function () {\n    function SelectionController() {\n    }\n    SelectionController.prototype.setBeans = function (loggerFactory) {\n        this.logger = loggerFactory.create('SelectionController');\n        this.reset();\n        if (this.gridOptionsWrapper.isRowModelDefault()) {\n            this.eventService.addEventListener(events_1.Events.EVENT_ROW_DATA_CHANGED, this.reset.bind(this));\n        }\n        else {\n            this.logger.log('dont know what to do here');\n        }\n    };\n    SelectionController.prototype.init = function () {\n        this.groupSelectsChildren = this.gridOptionsWrapper.isGroupSelectsChildren();\n        this.eventService.addEventListener(events_1.Events.EVENT_ROW_SELECTED, this.onRowSelected.bind(this));\n    };\n    SelectionController.prototype.setLastSelectedNode = function (rowNode) {\n        this.lastSelectedNode = rowNode;\n    };\n    SelectionController.prototype.getLastSelectedNode = function () {\n        return this.lastSelectedNode;\n    };\n    SelectionController.prototype.getSelectedNodes = function () {\n        var selectedNodes = [];\n        utils_1.Utils.iterateObject(this.selectedNodes, function (key, rowNode) {\n            if (rowNode) {\n                selectedNodes.push(rowNode);\n            }\n        });\n        return selectedNodes;\n    };\n    SelectionController.prototype.getSelectedRows = function () {\n        var selectedRows = [];\n        utils_1.Utils.iterateObject(this.selectedNodes, function (key, rowNode) {\n            if (rowNode && rowNode.data) {\n                selectedRows.push(rowNode.data);\n            }\n        });\n        return selectedRows;\n    };\n    SelectionController.prototype.removeGroupsFromSelection = function () {\n        var _this = this;\n        utils_1.Utils.iterateObject(this.selectedNodes, function (key, rowNode) {\n            if (rowNode && rowNode.group) {\n                _this.selectedNodes[rowNode.id] = undefined;\n            }\n        });\n    };\n    // should only be called if groupSelectsChildren=true\n    SelectionController.prototype.updateGroupsFromChildrenSelections = function () {\n        if (this.rowModel.getType() !== constants_1.Constants.ROW_MODEL_TYPE_IN_MEMORY) {\n            console.warn('updateGroupsFromChildrenSelections not available when rowModel is not normal');\n        }\n        var inMemoryRowModel = this.rowModel;\n        inMemoryRowModel.getTopLevelNodes().forEach(function (rowNode) {\n            rowNode.depthFirstSearch(function (rowNode) {\n                if (rowNode.group) {\n                    rowNode.calculateSelectedFromChildren();\n                }\n            });\n        });\n    };\n    SelectionController.prototype.getNodeForIdIfSelected = function (id) {\n        return this.selectedNodes[id];\n    };\n    SelectionController.prototype.clearOtherNodes = function (rowNodeToKeepSelected) {\n        var _this = this;\n        var groupsToRefresh = {};\n        var updatedCount = 0;\n        utils_1.Utils.iterateObject(this.selectedNodes, function (key, otherRowNode) {\n            if (otherRowNode && otherRowNode.id !== rowNodeToKeepSelected.id) {\n                var rowNode = _this.selectedNodes[otherRowNode.id];\n                updatedCount += rowNode.setSelectedParams({ newValue: false, clearSelection: false, tailingNodeInSequence: true });\n                if (_this.groupSelectsChildren && otherRowNode.parent) {\n                    groupsToRefresh[otherRowNode.parent.id] = otherRowNode.parent;\n                }\n            }\n        });\n        utils_1.Utils.iterateObject(groupsToRefresh, function (key, group) {\n            group.calculateSelectedFromChildren();\n        });\n        return updatedCount;\n    };\n    SelectionController.prototype.onRowSelected = function (event) {\n        var rowNode = event.node;\n        // we do not store the group rows when the groups select children\n        if (this.groupSelectsChildren && rowNode.group) {\n            return;\n        }\n        if (rowNode.isSelected()) {\n            this.selectedNodes[rowNode.id] = rowNode;\n        }\n        else {\n            this.selectedNodes[rowNode.id] = undefined;\n        }\n    };\n    SelectionController.prototype.syncInRowNode = function (rowNode, oldNode) {\n        this.syncInOldRowNode(rowNode, oldNode);\n        this.syncInNewRowNode(rowNode);\n    };\n    // if the id has changed for the node, then this means the rowNode\n    // is getting used for a different data item, which breaks\n    // our selectedNodes, as the node now is mapped by the old id\n    // which is inconsistent. so to keep the old node as selected,\n    // we swap in the clone (with the old id and old data). this means\n    // the oldNode is effectively a daemon we keep a reference to,\n    // so if client calls api.getSelectedNodes(), it gets the daemon\n    // in the result. when the client un-selects, the reference to the\n    // daemon is removed. the daemon, because it's an oldNode, is not\n    // used by the grid for rendering, it's a copy of what the node used\n    // to be like before the id was changed.\n    SelectionController.prototype.syncInOldRowNode = function (rowNode, oldNode) {\n        var oldNodeHasDifferentId = utils_1.Utils.exists(oldNode) && (rowNode.id !== oldNode.id);\n        if (oldNodeHasDifferentId) {\n            var oldNodeSelected = utils_1.Utils.exists(this.selectedNodes[oldNode.id]);\n            if (oldNodeSelected) {\n                this.selectedNodes[oldNode.id] = oldNode;\n            }\n        }\n    };\n    SelectionController.prototype.syncInNewRowNode = function (rowNode) {\n        if (utils_1.Utils.exists(this.selectedNodes[rowNode.id])) {\n            rowNode.setSelectedInitialValue(true);\n            this.selectedNodes[rowNode.id] = rowNode;\n        }\n        else {\n            rowNode.setSelectedInitialValue(false);\n        }\n    };\n    SelectionController.prototype.reset = function () {\n        this.logger.log('reset');\n        this.selectedNodes = {};\n        this.lastSelectedNode = null;\n    };\n    // returns a list of all nodes at 'best cost' - a feature to be used\n    // with groups / trees. if a group has all it's children selected,\n    // then the group appears in the result, but not the children.\n    // Designed for use with 'children' as the group selection type,\n    // where groups don't actually appear in the selection normally.\n    SelectionController.prototype.getBestCostNodeSelection = function () {\n        if (this.rowModel.getType() !== constants_1.Constants.ROW_MODEL_TYPE_IN_MEMORY) {\n            console.warn('getBestCostNodeSelection is only avilable when using normal row model');\n        }\n        var inMemoryRowModel = this.rowModel;\n        var topLevelNodes = inMemoryRowModel.getTopLevelNodes();\n        if (topLevelNodes === null) {\n            console.warn('selectAll not available doing rowModel=virtual');\n            return;\n        }\n        var result = [];\n        // recursive function, to find the selected nodes\n        function traverse(nodes) {\n            for (var i = 0, l = nodes.length; i < l; i++) {\n                var node = nodes[i];\n                if (node.isSelected()) {\n                    result.push(node);\n                }\n                else {\n                    // if not selected, then if it's a group, and the group\n                    // has children, continue to search for selections\n                    if (node.group && node.children) {\n                        traverse(node.children);\n                    }\n                }\n            }\n        }\n        traverse(topLevelNodes);\n        return result;\n    };\n    SelectionController.prototype.setRowModel = function (rowModel) {\n        this.rowModel = rowModel;\n    };\n    SelectionController.prototype.isEmpty = function () {\n        var count = 0;\n        utils_1.Utils.iterateObject(this.selectedNodes, function (nodeId, rowNode) {\n            if (rowNode) {\n                count++;\n            }\n        });\n        return count === 0;\n    };\n    SelectionController.prototype.deselectAllRowNodes = function (justFiltered) {\n        if (justFiltered === void 0) { justFiltered = false; }\n        var callback = function (rowNode) { return rowNode.selectThisNode(false); };\n        var rowModelInMemory = this.rowModel.getType() === constants_1.Constants.ROW_MODEL_TYPE_IN_MEMORY;\n        if (justFiltered) {\n            if (!rowModelInMemory) {\n                console.error('ag-Grid: selecting just filtered only works with In Memory Row Model');\n                return;\n            }\n            var inMemoryRowModel = this.rowModel;\n            inMemoryRowModel.forEachNodeAfterFilter(callback);\n        }\n        else {\n            utils_1.Utils.iterateObject(this.selectedNodes, function (id, rowNode) {\n                // remember the reference can be to null, as we never 'delete' from the map\n                if (rowNode) {\n                    callback(rowNode);\n                }\n            });\n            // this clears down the map (whereas above only sets the items in map to 'undefined')\n            this.reset();\n        }\n        // the above does not clean up the parent rows if they are selected\n        if (rowModelInMemory && this.groupSelectsChildren) {\n            this.updateGroupsFromChildrenSelections();\n        }\n        var event = {\n            type: events_1.Events.EVENT_SELECTION_CHANGED,\n            api: this.gridApi,\n            columnApi: this.columnApi\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    SelectionController.prototype.selectAllRowNodes = function (justFiltered) {\n        if (justFiltered === void 0) { justFiltered = false; }\n        if (this.rowModel.getType() !== constants_1.Constants.ROW_MODEL_TYPE_IN_MEMORY) {\n            throw \"selectAll only available with normal row model, ie not \" + this.rowModel.getType();\n        }\n        var inMemoryRowModel = this.rowModel;\n        var callback = function (rowNode) { return rowNode.selectThisNode(true); };\n        if (justFiltered) {\n            inMemoryRowModel.forEachNodeAfterFilter(callback);\n        }\n        else {\n            inMemoryRowModel.forEachNode(callback);\n        }\n        // the above does not clean up the parent rows if they are selected\n        if (this.rowModel.getType() === constants_1.Constants.ROW_MODEL_TYPE_IN_MEMORY && this.groupSelectsChildren) {\n            this.updateGroupsFromChildrenSelections();\n        }\n        var event = {\n            type: events_1.Events.EVENT_SELECTION_CHANGED,\n            api: this.gridApi,\n            columnApi: this.columnApi\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    // Deprecated method\n    SelectionController.prototype.selectNode = function (rowNode, tryMulti) {\n        rowNode.setSelectedParams({ newValue: true, clearSelection: !tryMulti });\n    };\n    // Deprecated method\n    SelectionController.prototype.deselectIndex = function (rowIndex) {\n        var node = this.rowModel.getRow(rowIndex);\n        this.deselectNode(node);\n    };\n    // Deprecated method\n    SelectionController.prototype.deselectNode = function (rowNode) {\n        rowNode.setSelectedParams({ newValue: false, clearSelection: false });\n    };\n    // Deprecated method\n    SelectionController.prototype.selectIndex = function (index, tryMulti) {\n        var node = this.rowModel.getRow(index);\n        this.selectNode(node, tryMulti);\n    };\n    __decorate([\n        context_3.Autowired('eventService'),\n        __metadata(\"design:type\", eventService_1.EventService)\n    ], SelectionController.prototype, \"eventService\", void 0);\n    __decorate([\n        context_3.Autowired('rowModel'),\n        __metadata(\"design:type\", Object)\n    ], SelectionController.prototype, \"rowModel\", void 0);\n    __decorate([\n        context_3.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], SelectionController.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_3.Autowired('columnApi'),\n        __metadata(\"design:type\", columnController_1.ColumnApi)\n    ], SelectionController.prototype, \"columnApi\", void 0);\n    __decorate([\n        context_3.Autowired('gridApi'),\n        __metadata(\"design:type\", gridApi_1.GridApi)\n    ], SelectionController.prototype, \"gridApi\", void 0);\n    __decorate([\n        __param(0, context_2.Qualifier('loggerFactory')),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [logger_1.LoggerFactory]),\n        __metadata(\"design:returntype\", void 0)\n    ], SelectionController.prototype, \"setBeans\", null);\n    __decorate([\n        context_4.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], SelectionController.prototype, \"init\", null);\n    SelectionController = __decorate([\n        context_1.Bean('selectionController')\n    ], SelectionController);\n    return SelectionController;\n}());\nexports.SelectionController = SelectionController;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/selectionController.js\n// module id = 33\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar eventService_1 = require(\"../eventService\");\nvar events_1 = require(\"../events\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar selectionController_1 = require(\"../selectionController\");\nvar valueService_1 = require(\"../valueService/valueService\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar context_1 = require(\"../context/context\");\nvar constants_1 = require(\"../constants\");\nvar utils_1 = require(\"../utils\");\nvar valueCache_1 = require(\"../valueService/valueCache\");\nvar gridApi_1 = require(\"../gridApi\");\nvar RowNode = (function () {\n    function RowNode() {\n        /** Children mapped by the pivot columns */\n        this.childrenMapped = {};\n        this.selected = false;\n    }\n    RowNode.prototype.setData = function (data) {\n        var oldData = this.data;\n        this.data = data;\n        this.valueCache.onDataChanged();\n        var event = this.createDataChangedEvent(data, oldData, false);\n        this.dispatchLocalEvent(event);\n    };\n    RowNode.prototype.createDataChangedEvent = function (newData, oldData, update) {\n        return {\n            type: RowNode.EVENT_DATA_CHANGED,\n            node: this,\n            oldData: oldData,\n            newData: newData,\n            update: update\n        };\n    };\n    RowNode.prototype.createLocalRowEvent = function (type) {\n        return {\n            type: type,\n            node: this\n        };\n    };\n    // similar to setRowData, however it is expected that the data is the same data item. this\n    // is intended to be used with Redux type stores, where the whole data can be changed. we are\n    // guaranteed that the data is the same entity (so grid doesn't need to worry about the id of the\n    // underlying data changing, hence doesn't need to worry about selection). the grid, upon receiving\n    // dataChanged event, will refresh the cells rather than rip them all out (so user can show transitions).\n    RowNode.prototype.updateData = function (data) {\n        var oldData = this.data;\n        this.data = data;\n        var event = this.createDataChangedEvent(data, oldData, true);\n        this.dispatchLocalEvent(event);\n    };\n    RowNode.prototype.getRowIndexString = function () {\n        if (this.rowPinned === constants_1.Constants.PINNED_TOP) {\n            return 't-' + this.rowIndex;\n        }\n        else if (this.rowPinned === constants_1.Constants.PINNED_BOTTOM) {\n            return 'b-' + this.rowIndex;\n        }\n        else {\n            return this.rowIndex.toString();\n        }\n    };\n    RowNode.prototype.createDaemonNode = function () {\n        var oldNode = new RowNode();\n        this.context.wireBean(oldNode);\n        // just copy the id and data, this is enough for the node to be used\n        // in the selection controller (the selection controller is the only\n        // place where daemon nodes can live).\n        oldNode.id = this.id;\n        oldNode.data = this.data;\n        oldNode.daemon = true;\n        oldNode.selected = this.selected;\n        oldNode.level = this.level;\n        return oldNode;\n    };\n    RowNode.prototype.setDataAndId = function (data, id) {\n        var oldNode = utils_1.Utils.exists(this.id) ? this.createDaemonNode() : null;\n        var oldData = this.data;\n        this.data = data;\n        this.setId(id);\n        this.selectionController.syncInRowNode(this, oldNode);\n        var event = this.createDataChangedEvent(data, oldData, false);\n        this.dispatchLocalEvent(event);\n    };\n    RowNode.prototype.setId = function (id) {\n        // see if user is providing the id's\n        var getRowNodeId = this.gridOptionsWrapper.getRowNodeIdFunc();\n        if (getRowNodeId) {\n            // if user is providing the id's, then we set the id only after the data has been set.\n            // this is important for virtual pagination and viewport, where empty rows exist.\n            if (this.data) {\n                this.id = getRowNodeId(this.data);\n            }\n            else {\n                // this can happen if user has set blank into the rowNode after the row previously\n                // having data. this happens in virtual page row model, when data is delete and\n                // the page is refreshed.\n                this.id = undefined;\n            }\n        }\n        else {\n            this.id = id;\n        }\n    };\n    RowNode.prototype.isPixelInRange = function (pixel) {\n        return pixel >= this.rowTop && pixel < (this.rowTop + this.rowHeight);\n    };\n    RowNode.prototype.clearRowTop = function () {\n        this.oldRowTop = this.rowTop;\n        this.setRowTop(null);\n    };\n    RowNode.prototype.setFirstChild = function (firstChild) {\n        if (this.firstChild === firstChild) {\n            return;\n        }\n        this.firstChild = firstChild;\n        if (this.eventService) {\n            this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_FIRST_CHILD_CHANGED));\n        }\n    };\n    RowNode.prototype.setLastChild = function (lastChild) {\n        if (this.lastChild === lastChild) {\n            return;\n        }\n        this.lastChild = lastChild;\n        if (this.eventService) {\n            this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_LAST_CHILD_CHANGED));\n        }\n    };\n    RowNode.prototype.setChildIndex = function (childIndex) {\n        if (this.childIndex === childIndex) {\n            return;\n        }\n        this.childIndex = childIndex;\n        if (this.eventService) {\n            this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_CHILD_INDEX_CHANGED));\n        }\n    };\n    RowNode.prototype.setRowTop = function (rowTop) {\n        if (this.rowTop === rowTop) {\n            return;\n        }\n        this.rowTop = rowTop;\n        if (this.eventService) {\n            this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_TOP_CHANGED));\n        }\n    };\n    RowNode.prototype.setAllChildrenCount = function (allChildrenCount) {\n        if (this.allChildrenCount === allChildrenCount) {\n            return;\n        }\n        this.allChildrenCount = allChildrenCount;\n        if (this.eventService) {\n            this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED));\n        }\n    };\n    RowNode.prototype.setRowHeight = function (rowHeight) {\n        this.rowHeight = rowHeight;\n        if (this.eventService) {\n            this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_HEIGHT_CHANGED));\n        }\n    };\n    RowNode.prototype.setRowIndex = function (rowIndex) {\n        this.rowIndex = rowIndex;\n        if (this.eventService) {\n            this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_ROW_INDEX_CHANGED));\n        }\n    };\n    RowNode.prototype.setUiLevel = function (uiLevel) {\n        if (this.uiLevel === uiLevel) {\n            return;\n        }\n        this.uiLevel = uiLevel;\n        if (this.eventService) {\n            this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_UI_LEVEL_CHANGED));\n        }\n    };\n    RowNode.prototype.setExpanded = function (expanded) {\n        if (this.expanded === expanded) {\n            return;\n        }\n        this.expanded = expanded;\n        if (this.eventService) {\n            this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_EXPANDED_CHANGED));\n        }\n        var event = this.createGlobalRowEvent(events_1.Events.EVENT_ROW_GROUP_OPENED);\n        this.mainEventService.dispatchEvent(event);\n    };\n    RowNode.prototype.createGlobalRowEvent = function (type) {\n        var event = {\n            type: type,\n            node: this,\n            data: this.data,\n            rowIndex: this.rowIndex,\n            rowPinned: this.rowPinned,\n            context: this.gridOptionsWrapper.getContext(),\n            api: this.gridOptionsWrapper.getApi(),\n            columnApi: this.gridOptionsWrapper.getColumnApi()\n        };\n        return event;\n    };\n    RowNode.prototype.dispatchLocalEvent = function (event) {\n        if (this.eventService) {\n            this.eventService.dispatchEvent(event);\n        }\n    };\n    // we also allow editing the value via the editors. when it is done via\n    // the editors, no 'cell changed' event gets fired, as it's assumed that\n    // the cell knows about the change given it's in charge of the editing.\n    // this method is for the client to call, so the cell listens for the change\n    // event, and also flashes the cell when the change occurs.\n    RowNode.prototype.setDataValue = function (colKey, newValue) {\n        var column = this.columnController.getPrimaryColumn(colKey);\n        this.valueService.setValue(this, column, newValue);\n        this.dispatchCellChangedEvent(column, newValue);\n    };\n    RowNode.prototype.setGroupValue = function (colKey, newValue) {\n        var column = this.columnController.getGridColumn(colKey);\n        if (utils_1.Utils.missing(this.groupData)) {\n            this.groupData = {};\n        }\n        this.groupData[column.getColId()] = newValue;\n        this.dispatchCellChangedEvent(column, newValue);\n    };\n    // sets the data for an aggregation\n    RowNode.prototype.setAggData = function (newAggData) {\n        var _this = this;\n        // find out all keys that could potentially change\n        var colIds = utils_1.Utils.getAllKeysInObjects([this.aggData, newAggData]);\n        this.aggData = newAggData;\n        // if no event service, nobody has registered for events, so no need fire event\n        if (this.eventService) {\n            colIds.forEach(function (colId) {\n                var column = _this.columnController.getGridColumn(colId);\n                var value = _this.aggData ? _this.aggData[colId] : undefined;\n                _this.dispatchCellChangedEvent(column, value);\n            });\n        }\n    };\n    RowNode.prototype.hasChildren = function () {\n        // we need to return true when this.group=true, as this is used by enterprise row model\n        // (as children are lazy loaded and stored in a cache anyway). otherwise we return true\n        // if children exist.\n        return this.group || (this.childrenAfterGroup && this.childrenAfterGroup.length > 0);\n    };\n    RowNode.prototype.isEmptyFillerNode = function () {\n        return this.group && utils_1.Utils.missingOrEmpty(this.childrenAfterGroup);\n    };\n    RowNode.prototype.dispatchCellChangedEvent = function (column, newValue) {\n        var cellChangedEvent = {\n            type: RowNode.EVENT_CELL_CHANGED,\n            node: this,\n            column: column,\n            newValue: newValue\n        };\n        this.dispatchLocalEvent(cellChangedEvent);\n    };\n    RowNode.prototype.resetQuickFilterAggregateText = function () {\n        this.quickFilterAggregateText = null;\n    };\n    RowNode.prototype.isExpandable = function () {\n        return this.hasChildren() || this.master;\n    };\n    RowNode.prototype.isSelected = function () {\n        // for footers, we just return what our sibling selected state is, as cannot select a footer\n        if (this.footer) {\n            return this.sibling.isSelected();\n        }\n        return this.selected;\n    };\n    RowNode.prototype.depthFirstSearch = function (callback) {\n        if (this.childrenAfterGroup) {\n            this.childrenAfterGroup.forEach(function (child) { return child.depthFirstSearch(callback); });\n        }\n        callback(this);\n    };\n    // + rowController.updateGroupsInSelection()\n    RowNode.prototype.calculateSelectedFromChildren = function () {\n        var atLeastOneSelected = false;\n        var atLeastOneDeSelected = false;\n        var atLeastOneMixed = false;\n        var newSelectedValue;\n        if (this.childrenAfterGroup) {\n            for (var i = 0; i < this.childrenAfterGroup.length; i++) {\n                var childState = this.childrenAfterGroup[i].isSelected();\n                switch (childState) {\n                    case true:\n                        atLeastOneSelected = true;\n                        break;\n                    case false:\n                        atLeastOneDeSelected = true;\n                        break;\n                    default:\n                        atLeastOneMixed = true;\n                        break;\n                }\n            }\n        }\n        if (atLeastOneMixed) {\n            newSelectedValue = undefined;\n        }\n        else if (atLeastOneSelected && !atLeastOneDeSelected) {\n            newSelectedValue = true;\n        }\n        else if (!atLeastOneSelected && atLeastOneDeSelected) {\n            newSelectedValue = false;\n        }\n        else {\n            newSelectedValue = undefined;\n        }\n        this.selectThisNode(newSelectedValue);\n    };\n    RowNode.prototype.calculateSelectedFromChildrenBubbleUp = function () {\n        this.calculateSelectedFromChildren();\n        if (this.parent) {\n            this.parent.calculateSelectedFromChildrenBubbleUp();\n        }\n    };\n    RowNode.prototype.setSelectedInitialValue = function (selected) {\n        this.selected = selected;\n    };\n    RowNode.prototype.setSelected = function (newValue, clearSelection, tailingNodeInSequence) {\n        if (clearSelection === void 0) { clearSelection = false; }\n        if (tailingNodeInSequence === void 0) { tailingNodeInSequence = false; }\n        this.setSelectedParams({\n            newValue: newValue,\n            clearSelection: clearSelection,\n            tailingNodeInSequence: tailingNodeInSequence,\n            rangeSelect: false\n        });\n    };\n    RowNode.prototype.isRowPinned = function () {\n        return this.rowPinned === constants_1.Constants.PINNED_TOP || this.rowPinned === constants_1.Constants.PINNED_BOTTOM;\n    };\n    // to make calling code more readable, this is the same method as setSelected except it takes names parameters\n    RowNode.prototype.setSelectedParams = function (params) {\n        var groupSelectsChildren = this.gridOptionsWrapper.isGroupSelectsChildren();\n        var newValue = params.newValue === true;\n        var clearSelection = params.clearSelection === true;\n        var tailingNodeInSequence = params.tailingNodeInSequence === true;\n        var rangeSelect = params.rangeSelect === true;\n        // groupSelectsFiltered only makes sense when group selects children\n        var groupSelectsFiltered = groupSelectsChildren && (params.groupSelectsFiltered === true);\n        if (this.id === undefined) {\n            console.warn('ag-Grid: cannot select node until id for node is known');\n            return 0;\n        }\n        if (this.rowPinned) {\n            console.log('ag-Grid: cannot select pinned rows');\n            return 0;\n        }\n        // if we are a footer, we don't do selection, just pass the info\n        // to the sibling (the parent of the group)\n        if (this.footer) {\n            var count = this.sibling.setSelectedParams(params);\n            return count;\n        }\n        if (rangeSelect) {\n            var newRowClicked = this.selectionController.getLastSelectedNode() !== this;\n            var allowMultiSelect = this.gridOptionsWrapper.isRowSelectionMulti();\n            if (newRowClicked && allowMultiSelect) {\n                return this.doRowRangeSelection();\n            }\n        }\n        var updatedCount = 0;\n        // when groupSelectsFiltered, then this node may end up intermediate despite\n        // trying to set it to true / false. this group will be calculated further on\n        // down when we call calculatedSelectedForAllGroupNodes(). we need to skip it\n        // here, otherwise the updatedCount would include it.\n        var skipThisNode = groupSelectsFiltered && this.group;\n        if (!skipThisNode) {\n            var thisNodeWasSelected = this.selectThisNode(newValue);\n            if (thisNodeWasSelected) {\n                updatedCount++;\n            }\n        }\n        if (groupSelectsChildren && this.group) {\n            updatedCount += this.selectChildNodes(newValue, groupSelectsFiltered);\n        }\n        // clear other nodes if not doing multi select\n        var actionWasOnThisNode = !tailingNodeInSequence;\n        if (actionWasOnThisNode) {\n            if (newValue && (clearSelection || !this.gridOptionsWrapper.isRowSelectionMulti())) {\n                updatedCount += this.selectionController.clearOtherNodes(this);\n            }\n            // only if we selected something, then update groups and fire events\n            if (updatedCount > 0) {\n                // update groups\n                if (groupSelectsFiltered) {\n                    // if the group was selecting filtered, then all nodes above and or below\n                    // this node could have check, unchecked or intermediate, so easiest is to\n                    // recalculate selected state for all group nodes\n                    this.calculatedSelectedForAllGroupNodes();\n                }\n                else {\n                    // if no selecting filtered, then everything below the group node was either\n                    // selected or not selected, no intermediate, so no need to check items below\n                    // this one, just the parents all the way up to the root\n                    if (groupSelectsChildren && this.parent) {\n                        this.parent.calculateSelectedFromChildrenBubbleUp();\n                    }\n                }\n                // fire events\n                // this is the very end of the 'action node', so we are finished all the updates,\n                // include any parent / child changes that this method caused\n                var event_1 = {\n                    type: events_1.Events.EVENT_SELECTION_CHANGED,\n                    api: this.gridApi,\n                    columnApi: this.columnApi\n                };\n                this.mainEventService.dispatchEvent(event_1);\n            }\n            // so if user next does shift-select, we know where to start the selection from\n            if (newValue) {\n                this.selectionController.setLastSelectedNode(this);\n            }\n        }\n        return updatedCount;\n    };\n    // selects all rows between this node and the last selected node (or the top if this is the first selection).\n    // not to be mixed up with 'cell range selection' where you drag the mouse, this is row range selection, by\n    // holding down 'shift'.\n    RowNode.prototype.doRowRangeSelection = function () {\n        var updatedCount = 0;\n        var groupsSelectChildren = this.gridOptionsWrapper.isGroupSelectsChildren();\n        var lastSelectedNode = this.selectionController.getLastSelectedNode();\n        var nodesToSelect = this.rowModel.getNodesInRangeForSelection(lastSelectedNode, this);\n        nodesToSelect.forEach(function (rowNode) {\n            if (rowNode.group && groupsSelectChildren) {\n                return;\n            }\n            var nodeWasSelected = rowNode.selectThisNode(true);\n            if (nodeWasSelected) {\n                updatedCount++;\n            }\n        });\n        if (groupsSelectChildren) {\n            this.calculatedSelectedForAllGroupNodes();\n        }\n        var event = {\n            type: events_1.Events.EVENT_SELECTION_CHANGED,\n            api: this.gridApi,\n            columnApi: this.columnApi\n        };\n        this.mainEventService.dispatchEvent(event);\n        return updatedCount;\n    };\n    RowNode.prototype.isParentOfNode = function (potentialParent) {\n        var parentNode = this.parent;\n        while (parentNode) {\n            if (parentNode === potentialParent) {\n                return true;\n            }\n            parentNode = parentNode.parent;\n        }\n        return false;\n    };\n    RowNode.prototype.calculatedSelectedForAllGroupNodes = function () {\n        // we have to make sure we do this dept first, as parent nodes\n        // will have dependencies on the children having correct values\n        var inMemoryRowModel = this.rowModel;\n        inMemoryRowModel.getTopLevelNodes().forEach(function (topLevelNode) {\n            if (topLevelNode.group) {\n                topLevelNode.depthFirstSearch(function (childNode) {\n                    if (childNode.group) {\n                        childNode.calculateSelectedFromChildren();\n                    }\n                });\n                topLevelNode.calculateSelectedFromChildren();\n            }\n        });\n    };\n    RowNode.prototype.selectThisNode = function (newValue) {\n        if (this.selected === newValue) {\n            return false;\n        }\n        this.selected = newValue;\n        if (this.eventService) {\n            this.dispatchLocalEvent(this.createLocalRowEvent(RowNode.EVENT_ROW_SELECTED));\n        }\n        var event = this.createGlobalRowEvent(events_1.Events.EVENT_ROW_SELECTED);\n        this.mainEventService.dispatchEvent(event);\n        return true;\n    };\n    RowNode.prototype.selectChildNodes = function (newValue, groupSelectsFiltered) {\n        var children = groupSelectsFiltered ? this.childrenAfterFilter : this.childrenAfterGroup;\n        var updatedCount = 0;\n        if (utils_1.Utils.missing(children)) {\n            return;\n        }\n        for (var i = 0; i < children.length; i++) {\n            updatedCount += children[i].setSelectedParams({\n                newValue: newValue,\n                clearSelection: false,\n                tailingNodeInSequence: true\n            });\n        }\n        return updatedCount;\n    };\n    RowNode.prototype.addEventListener = function (eventType, listener) {\n        if (!this.eventService) {\n            this.eventService = new eventService_1.EventService();\n        }\n        this.eventService.addEventListener(eventType, listener);\n    };\n    RowNode.prototype.removeEventListener = function (eventType, listener) {\n        this.eventService.removeEventListener(eventType, listener);\n    };\n    RowNode.prototype.onMouseEnter = function () {\n        this.dispatchLocalEvent(this.createLocalRowEvent(RowNode.EVENT_MOUSE_ENTER));\n    };\n    RowNode.prototype.onMouseLeave = function () {\n        this.dispatchLocalEvent(this.createLocalRowEvent(RowNode.EVENT_MOUSE_LEAVE));\n    };\n    RowNode.prototype.getFirstChildOfFirstChild = function (rowGroupColumn) {\n        var currentRowNode = this;\n        // if we are hiding groups, then if we are the first child, of the first child,\n        // all the way up to the column we are interested in, then we show the group cell.\n        var isCandidate = true;\n        var foundFirstChildPath = false;\n        var nodeToSwapIn;\n        while (isCandidate && !foundFirstChildPath) {\n            var parentRowNode = currentRowNode.parent;\n            var firstChild = utils_1.Utils.exists(parentRowNode) && currentRowNode.firstChild;\n            if (firstChild) {\n                if (parentRowNode.rowGroupColumn === rowGroupColumn) {\n                    foundFirstChildPath = true;\n                    nodeToSwapIn = parentRowNode;\n                }\n            }\n            else {\n                isCandidate = false;\n            }\n            currentRowNode = parentRowNode;\n        }\n        return foundFirstChildPath ? nodeToSwapIn : null;\n    };\n    RowNode.EVENT_ROW_SELECTED = 'rowSelected';\n    RowNode.EVENT_DATA_CHANGED = 'dataChanged';\n    RowNode.EVENT_CELL_CHANGED = 'cellChanged';\n    RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED = 'allChildrenCountChanged';\n    RowNode.EVENT_MOUSE_ENTER = 'mouseEnter';\n    RowNode.EVENT_MOUSE_LEAVE = 'mouseLeave';\n    RowNode.EVENT_HEIGHT_CHANGED = 'heightChanged';\n    RowNode.EVENT_TOP_CHANGED = 'topChanged';\n    RowNode.EVENT_FIRST_CHILD_CHANGED = 'firstChildChanged';\n    RowNode.EVENT_LAST_CHILD_CHANGED = 'lastChildChanged';\n    RowNode.EVENT_CHILD_INDEX_CHANGED = 'childIndexChanged';\n    RowNode.EVENT_ROW_INDEX_CHANGED = 'rowIndexChanged';\n    RowNode.EVENT_EXPANDED_CHANGED = 'expandedChanged';\n    RowNode.EVENT_UI_LEVEL_CHANGED = 'uiLevelChanged';\n    __decorate([\n        context_1.Autowired('eventService'),\n        __metadata(\"design:type\", eventService_1.EventService)\n    ], RowNode.prototype, \"mainEventService\", void 0);\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], RowNode.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('selectionController'),\n        __metadata(\"design:type\", selectionController_1.SelectionController)\n    ], RowNode.prototype, \"selectionController\", void 0);\n    __decorate([\n        context_1.Autowired('columnController'),\n        __metadata(\"design:type\", columnController_1.ColumnController)\n    ], RowNode.prototype, \"columnController\", void 0);\n    __decorate([\n        context_1.Autowired('valueService'),\n        __metadata(\"design:type\", valueService_1.ValueService)\n    ], RowNode.prototype, \"valueService\", void 0);\n    __decorate([\n        context_1.Autowired('rowModel'),\n        __metadata(\"design:type\", Object)\n    ], RowNode.prototype, \"rowModel\", void 0);\n    __decorate([\n        context_1.Autowired('context'),\n        __metadata(\"design:type\", context_1.Context)\n    ], RowNode.prototype, \"context\", void 0);\n    __decorate([\n        context_1.Autowired('valueCache'),\n        __metadata(\"design:type\", valueCache_1.ValueCache)\n    ], RowNode.prototype, \"valueCache\", void 0);\n    __decorate([\n        context_1.Autowired('columnApi'),\n        __metadata(\"design:type\", columnController_1.ColumnApi)\n    ], RowNode.prototype, \"columnApi\", void 0);\n    __decorate([\n        context_1.Autowired('gridApi'),\n        __metadata(\"design:type\", gridApi_1.GridApi)\n    ], RowNode.prototype, \"gridApi\", void 0);\n    return RowNode;\n}());\nexports.RowNode = RowNode;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/entities/rowNode.js\n// module id = 34\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar expressionService_1 = require(\"./expressionService\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar context_1 = require(\"../context/context\");\nvar utils_1 = require(\"../utils\");\nvar events_1 = require(\"../events\");\nvar eventService_1 = require(\"../eventService\");\nvar valueCache_1 = require(\"./valueCache\");\nvar ValueService = (function () {\n    function ValueService() {\n        this.initialised = false;\n    }\n    ValueService.prototype.init = function () {\n        this.cellExpressions = this.gridOptionsWrapper.isEnableCellExpressions();\n        this.initialised = true;\n    };\n    ValueService.prototype.getValue = function (column, rowNode, ignoreAggData) {\n        // console.log(`turnActive = ${this.turnActive}`);\n        if (ignoreAggData === void 0) { ignoreAggData = false; }\n        // hack - the grid is getting refreshed before this bean gets initialised, race condition.\n        // really should have a way so they get initialised in the right order???\n        if (!this.initialised) {\n            this.init();\n        }\n        // pull these out to make code below easier to read\n        var colDef = column.getColDef();\n        var field = colDef.field;\n        var colId = column.getId();\n        var data = rowNode.data;\n        var result;\n        // if there is a value getter, this gets precedence over a field\n        var groupDataExists = rowNode.groupData && rowNode.groupData[colId] !== undefined;\n        var aggDataExists = !ignoreAggData && rowNode.aggData && rowNode.aggData[colId] !== undefined;\n        if (groupDataExists) {\n            result = rowNode.groupData[colId];\n        }\n        else if (aggDataExists) {\n            result = rowNode.aggData[colId];\n        }\n        else if (colDef.valueGetter) {\n            result = this.executeValueGetter(colDef.valueGetter, data, column, rowNode);\n        }\n        else if (field && data) {\n            result = utils_1._.getValueUsingField(data, field, column.isFieldContainsDots());\n        }\n        else {\n            result = undefined;\n        }\n        // the result could be an expression itself, if we are allowing cell values to be expressions\n        if (this.cellExpressions && (typeof result === 'string') && result.indexOf('=') === 0) {\n            var cellValueGetter = result.substring(1);\n            result = this.executeValueGetter(cellValueGetter, data, column, rowNode);\n        }\n        return result;\n    };\n    ValueService.prototype.setValue = function (rowNode, colKey, newValue) {\n        var column = this.columnController.getPrimaryColumn(colKey);\n        if (!rowNode || !column) {\n            return;\n        }\n        // this will only happen if user is trying to paste into a group row, which doesn't make sense\n        // the user should not be trying to paste into group rows\n        var data = rowNode.data;\n        if (utils_1._.missing(data)) {\n            rowNode.data = {};\n        }\n        // for backwards compatibility we are also retrieving the newValueHandler as well as the valueSetter\n        var _a = column.getColDef(), field = _a.field, newValueHandler = _a.newValueHandler, valueSetter = _a.valueSetter;\n        // need either a field or a newValueHandler for this to work\n        if (utils_1._.missing(field) && utils_1._.missing(newValueHandler) && utils_1._.missing(valueSetter)) {\n            // we don't tell user about newValueHandler, as that is deprecated\n            console.warn(\"ag-Grid: you need either field or valueSetter set on colDef for editing to work\");\n            return;\n        }\n        var params = {\n            node: rowNode,\n            data: rowNode.data,\n            oldValue: this.getValue(column, rowNode),\n            newValue: newValue,\n            colDef: column.getColDef(),\n            column: column,\n            api: this.gridOptionsWrapper.getApi(),\n            columnApi: this.gridOptionsWrapper.getColumnApi(),\n            context: this.gridOptionsWrapper.getContext()\n        };\n        params.newValue = newValue;\n        var valueWasDifferent;\n        if (utils_1._.exists(newValueHandler)) {\n            valueWasDifferent = newValueHandler(params);\n        }\n        else if (utils_1._.exists(valueSetter)) {\n            valueWasDifferent = this.expressionService.evaluate(valueSetter, params);\n        }\n        else {\n            valueWasDifferent = this.setValueUsingField(data, field, newValue, column.isFieldContainsDots());\n        }\n        // in case user forgot to return something (possible if they are not using TypeScript\n        // and just forgot, or using an old newValueHandler we didn't always expect a return\n        // value here), we default the return value to true, so we always refresh.\n        if (valueWasDifferent === undefined) {\n            valueWasDifferent = true;\n        }\n        // if no change to the value, then no need to do the updating, or notifying via events.\n        // otherwise the user could be tabbing around the grid, and cellValueChange would get called\n        // all the time.\n        if (!valueWasDifferent) {\n            return;\n        }\n        // reset quick filter on this row\n        rowNode.resetQuickFilterAggregateText();\n        this.valueCache.onDataChanged();\n        params.newValue = this.getValue(column, rowNode);\n        if (typeof column.getColDef().onCellValueChanged === 'function') {\n            column.getColDef().onCellValueChanged(params);\n        }\n        var event = {\n            type: events_1.Events.EVENT_CELL_VALUE_CHANGED,\n            event: null,\n            rowIndex: rowNode.rowIndex,\n            rowPinned: rowNode.rowPinned,\n            column: params.column,\n            api: params.api,\n            colDef: params.colDef,\n            columnApi: params.columnApi,\n            context: params.context,\n            data: rowNode.data,\n            node: rowNode,\n            oldValue: params.oldValue,\n            newValue: params.newValue,\n            value: params.newValue\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    ValueService.prototype.setValueUsingField = function (data, field, newValue, isFieldContainsDots) {\n        // if no '.', then it's not a deep value\n        var valuesAreSame;\n        if (!isFieldContainsDots) {\n            data[field] = newValue;\n        }\n        else {\n            // otherwise it is a deep value, so need to dig for it\n            var fieldPieces = field.split('.');\n            var currentObject = data;\n            while (fieldPieces.length > 0 && currentObject) {\n                var fieldPiece = fieldPieces.shift();\n                if (fieldPieces.length === 0) {\n                    currentObject[fieldPiece] = newValue;\n                }\n                else {\n                    currentObject = currentObject[fieldPiece];\n                }\n            }\n        }\n        return !valuesAreSame;\n    };\n    ValueService.prototype.executeValueGetter = function (valueGetter, data, column, rowNode) {\n        var colId = column.getId();\n        // if inside the same turn, just return back the value we got last time\n        var valueFromCache = this.valueCache.getValue(rowNode, colId);\n        if (valueFromCache !== undefined) {\n            return valueFromCache;\n        }\n        var params = {\n            data: data,\n            node: rowNode,\n            column: column,\n            colDef: column.getColDef(),\n            api: this.gridOptionsWrapper.getApi(),\n            columnApi: this.gridOptionsWrapper.getColumnApi(),\n            context: this.gridOptionsWrapper.getContext(),\n            getValue: this.getValueCallback.bind(this, rowNode)\n        };\n        var result = this.expressionService.evaluate(valueGetter, params);\n        // if a turn is active, store the value in case the grid asks for it again\n        this.valueCache.setValue(rowNode, colId, result);\n        return result;\n    };\n    ValueService.prototype.getValueCallback = function (node, field) {\n        var otherColumn = this.columnController.getPrimaryColumn(field);\n        if (otherColumn) {\n            return this.getValue(otherColumn, node);\n        }\n        else {\n            return null;\n        }\n    };\n    // used by row grouping and pivot, to get key for a row. col can be a pivot col or a row grouping col\n    ValueService.prototype.getKeyForNode = function (col, rowNode) {\n        var value = this.getValue(col, rowNode);\n        var result;\n        var keyCreator = col.getColDef().keyCreator;\n        if (keyCreator) {\n            result = keyCreator({ value: value });\n        }\n        else {\n            result = value;\n        }\n        // if already a string, or missing, just return it\n        if (typeof result === 'string' || result === null || result === undefined) {\n            return result;\n        }\n        result = String(result);\n        if (result === '[object Object]') {\n            utils_1._.doOnce(function () {\n                console.warn('ag-Grid: a column you are grouping or pivoting by has objects as values. If you want to group by complex objects then either a) use a colDef.keyCreator (se ag-Grid docs) or b) to toString() on the object to return a key');\n            }, 'getKeyForNode - warn about [object,object]');\n        }\n        return result;\n    };\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], ValueService.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('expressionService'),\n        __metadata(\"design:type\", expressionService_1.ExpressionService)\n    ], ValueService.prototype, \"expressionService\", void 0);\n    __decorate([\n        context_1.Autowired('columnController'),\n        __metadata(\"design:type\", columnController_1.ColumnController)\n    ], ValueService.prototype, \"columnController\", void 0);\n    __decorate([\n        context_1.Autowired('eventService'),\n        __metadata(\"design:type\", eventService_1.EventService)\n    ], ValueService.prototype, \"eventService\", void 0);\n    __decorate([\n        context_1.Autowired('valueCache'),\n        __metadata(\"design:type\", valueCache_1.ValueCache)\n    ], ValueService.prototype, \"valueCache\", void 0);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], ValueService.prototype, \"init\", null);\n    ValueService = __decorate([\n        context_1.Bean('valueService')\n    ], ValueService);\n    return ValueService;\n}());\nexports.ValueService = ValueService;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/valueService/valueService.js\n// module id = 35\n// module chunks = 0","import _BrowserRouter from './BrowserRouter';\nexport { _BrowserRouter as BrowserRouter };\nimport _HashRouter from './HashRouter';\nexport { _HashRouter as HashRouter };\nimport _Link from './Link';\nexport { _Link as Link };\nimport _MemoryRouter from './MemoryRouter';\nexport { _MemoryRouter as MemoryRouter };\nimport _NavLink from './NavLink';\nexport { _NavLink as NavLink };\nimport _Prompt from './Prompt';\nexport { _Prompt as Prompt };\nimport _Redirect from './Redirect';\nexport { _Redirect as Redirect };\nimport _Route from './Route';\nexport { _Route as Route };\nimport _Router from './Router';\nexport { _Router as Router };\nimport _StaticRouter from './StaticRouter';\nexport { _StaticRouter as StaticRouter };\nimport _Switch from './Switch';\nexport { _Switch as Switch };\nimport _matchPath from './matchPath';\nexport { _matchPath as matchPath };\nimport _withRouter from './withRouter';\nexport { _withRouter as withRouter };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router-dom/es/index.js\n// module id = 36\n// module chunks = 0","var core = module.exports = { version: '2.5.1' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_core.js\n// module id = 37\n// module chunks = 0","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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks.js\n// module id = 38\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport elementType from 'prop-types-extra/lib/elementType';\n\nimport createChainedFunction from './utils/createChainedFunction';\n\nvar propTypes = {\n  href: PropTypes.string,\n  onClick: PropTypes.func,\n  onKeyDown: PropTypes.func,\n  disabled: PropTypes.bool,\n  role: PropTypes.string,\n  tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * this is sort of silly but needed for Button\n   */\n  componentClass: elementType\n};\n\nvar defaultProps = {\n  componentClass: 'a'\n};\n\nfunction isTrivialHref(href) {\n  return !href || href.trim() === '#';\n}\n\n/**\n * There are situations due to browser quirks or Bootstrap CSS where\n * an anchor tag is needed, when semantically a button tag is the\n * better choice. SafeAnchor ensures that when an anchor is used like a\n * button its accessible. It also emulates input `disabled` behavior for\n * links, which is usually desirable for Buttons, NavItems, MenuItems, etc.\n */\n\nvar SafeAnchor = function (_React$Component) {\n  _inherits(SafeAnchor, _React$Component);\n\n  function SafeAnchor(props, context) {\n    _classCallCheck(this, SafeAnchor);\n\n    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n\n    _this.handleClick = _this.handleClick.bind(_this);\n    _this.handleKeyDown = _this.handleKeyDown.bind(_this);\n    return _this;\n  }\n\n  SafeAnchor.prototype.handleClick = function handleClick(event) {\n    var _props = this.props,\n        disabled = _props.disabled,\n        href = _props.href,\n        onClick = _props.onClick;\n\n\n    if (disabled || isTrivialHref(href)) {\n      event.preventDefault();\n    }\n\n    if (disabled) {\n      event.stopPropagation();\n      return;\n    }\n\n    if (onClick) {\n      onClick(event);\n    }\n  };\n\n  SafeAnchor.prototype.handleKeyDown = function handleKeyDown(event) {\n    if (event.key === ' ') {\n      event.preventDefault();\n      this.handleClick(event);\n    }\n  };\n\n  SafeAnchor.prototype.render = function render() {\n    var _props2 = this.props,\n        Component = _props2.componentClass,\n        disabled = _props2.disabled,\n        onKeyDown = _props2.onKeyDown,\n        props = _objectWithoutProperties(_props2, ['componentClass', 'disabled', 'onKeyDown']);\n\n    if (isTrivialHref(props.href)) {\n      props.role = props.role || 'button';\n      // we want to make sure there is a href attribute on the node\n      // otherwise, the cursor incorrectly styled (except with role='button')\n      props.href = props.href || '#';\n    }\n\n    if (disabled) {\n      props.tabIndex = -1;\n      props.style = _extends({ pointerEvents: 'none' }, props.style);\n    }\n\n    return React.createElement(Component, _extends({}, props, {\n      onClick: this.handleClick,\n      onKeyDown: createChainedFunction(this.handleKeyDown, onKeyDown)\n    }));\n  };\n\n  return SafeAnchor;\n}(React.Component);\n\nSafeAnchor.propTypes = propTypes;\nSafeAnchor.defaultProps = defaultProps;\n\nexport default SafeAnchor;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/SafeAnchor.js\n// module id = 39\n// module chunks = 0","/* eslint-disable no-param-reassign */\n/* eslint-disable no-restricted-syntax */\n/* eslint-disable guard-for-in */\n\nvar assert = require('./assert');\nvar objectAssign = require('./object-assign');\n\nfunction pick(object, keys) {\n  return keys.reduce(function(prev, key) {\n    if (object[key]) {\n      prev[key] = object[key];\n    }\n    return prev;\n  }, {});\n}\n\nfunction getKeysNotIn(obj, allowedKeys) {\n  var notAllowed = [];\n  for (var key in obj) {\n    if (allowedKeys.indexOf(key) === -1) {\n      notAllowed.push(key);\n    }\n  }\n  return notAllowed;\n}\n\nfunction objectValues(obj) {\n  var values = [];\n  for (var key in obj) {\n    values.push(obj[key]);\n  }\n  return values;\n}\n\nfunction extend() {\n  var params = objectValues(arguments);\n  params.unshift({});\n  return objectAssign.get().apply(undefined, params);\n}\n\nfunction merge(object, keys) {\n  return {\n    base: keys ? pick(object, keys) : object,\n    with: function(object2, keys2) {\n      object2 = keys2 ? pick(object2, keys2) : object2;\n      return extend(this.base, object2);\n    }\n  };\n}\n\nfunction blacklist(object, blacklistedKeys) {\n  return Object.keys(object).reduce(function(p, key) {\n    if (blacklistedKeys.indexOf(key) === -1) {\n      p[key] = object[key];\n    }\n    return p;\n  }, {});\n}\n\nfunction camelToSnake(str) {\n  var newKey = '';\n  var index = 0;\n  var code;\n  var wasPrevNumber = true;\n  var wasPrevUppercase = true;\n\n  while (index < str.length) {\n    code = str.charCodeAt(index);\n    if (\n      (!wasPrevUppercase && code >= 65 && code <= 90) ||\n      (!wasPrevNumber && code >= 48 && code <= 57)\n    ) {\n      newKey += '_';\n      newKey += str[index].toLowerCase();\n    } else {\n      newKey += str[index].toLowerCase();\n    }\n    wasPrevNumber = code >= 48 && code <= 57;\n    wasPrevUppercase = code >= 65 && code <= 90;\n    index++;\n  }\n\n  return newKey;\n}\n\nfunction snakeToCamel(str) {\n  var parts = str.split('_');\n  return parts.reduce(function(p, c) {\n    return p + c.charAt(0).toUpperCase() + c.slice(1);\n  }, parts.shift());\n}\n\nfunction toSnakeCase(object, exceptions) {\n  if (typeof object !== 'object' || assert.isArray(object) || object === null) {\n    return object;\n  }\n  exceptions = exceptions || [];\n\n  return Object.keys(object).reduce(function(p, key) {\n    var newKey = exceptions.indexOf(key) === -1 ? camelToSnake(key) : key;\n    p[newKey] = toSnakeCase(object[key]);\n    return p;\n  }, {});\n}\n\nfunction toCamelCase(object, exceptions) {\n  if (typeof object !== 'object' || assert.isArray(object) || object === null) {\n    return object;\n  }\n\n  exceptions = exceptions || [];\n\n  return Object.keys(object).reduce(function(p, key) {\n    var newKey = exceptions.indexOf(key) === -1 ? snakeToCamel(key) : key;\n    p[newKey] = toCamelCase(object[key]);\n    return p;\n  }, {});\n}\n\nmodule.exports = {\n  toSnakeCase: toSnakeCase,\n  toCamelCase: toCamelCase,\n  blacklist: blacklist,\n  merge: merge,\n  pick: pick,\n  getKeysNotIn: getKeysNotIn,\n  extend: extend\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/auth0-js/src/helper/object.js\n// module id = 40\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar logger_1 = require(\"../logger\");\nvar context_1 = require(\"../context/context\");\nvar context_2 = require(\"../context/context\");\nvar ExpressionService = (function () {\n    function ExpressionService() {\n        this.expressionToFunctionCache = {};\n    }\n    ExpressionService.prototype.setBeans = function (loggerFactory) {\n        this.logger = loggerFactory.create('ExpressionService');\n    };\n    ExpressionService.prototype.evaluate = function (expressionOrFunc, params) {\n        if (typeof expressionOrFunc === 'function') {\n            // valueGetter is a function, so just call it\n            var func = expressionOrFunc;\n            return func(params);\n        }\n        else if (typeof expressionOrFunc === 'string') {\n            // valueGetter is an expression, so execute the expression\n            var expression = expressionOrFunc;\n            return this.evaluateExpression(expression, params);\n        }\n        else {\n            console.error('ag-Grid: value should be either a string or a function', expressionOrFunc);\n        }\n    };\n    ExpressionService.prototype.evaluateExpression = function (expression, params) {\n        try {\n            var javaScriptFunction = this.createExpressionFunction(expression);\n            // the params don't have all these values, rather we add every possible\n            // value a params can have, which makes whatever is in the params available.\n            var result = javaScriptFunction(params.value, params.context, params.oldValue, params.newValue, params.value, params.node, params.data, params.colDef, params.rowIndex, params.api, params.columnApi, params.getValue, params.column, params.columnGroup);\n            return result;\n        }\n        catch (e) {\n            // the expression failed, which can happen, as it's the client that\n            // provides the expression. so print a nice message\n            console.log('Processing of the expression failed');\n            console.log('Expression = ' + expression);\n            console.log('Exception = ' + e);\n            return null;\n        }\n    };\n    ExpressionService.prototype.createExpressionFunction = function (expression) {\n        // check cache first\n        if (this.expressionToFunctionCache[expression]) {\n            return this.expressionToFunctionCache[expression];\n        }\n        // if not found in cache, return the function\n        var functionBody = this.createFunctionBody(expression);\n        var theFunction = new Function('x, ctx, oldValue, newValue, value, node, data, colDef, rowIndex, api, columnApi, getValue, column, columnGroup', functionBody);\n        // store in cache\n        this.expressionToFunctionCache[expression] = theFunction;\n        return theFunction;\n    };\n    ExpressionService.prototype.createFunctionBody = function (expression) {\n        // if the expression has the 'return' word in it, then use as is,\n        // if not, then wrap it with return and ';' to make a function\n        if (expression.indexOf('return') >= 0) {\n            return expression;\n        }\n        else {\n            return 'return ' + expression + ';';\n        }\n    };\n    __decorate([\n        __param(0, context_2.Qualifier('loggerFactory')),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [logger_1.LoggerFactory]),\n        __metadata(\"design:returntype\", void 0)\n    ], ExpressionService.prototype, \"setBeans\", null);\n    ExpressionService = __decorate([\n        context_1.Bean('expressionService')\n    ], ExpressionService);\n    return ExpressionService;\n}());\nexports.ExpressionService = ExpressionService;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/valueService/expressionService.js\n// module id = 41\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar gridPanel_1 = require(\"../gridPanel/gridPanel\");\nvar expressionService_1 = require(\"../valueService/expressionService\");\nvar templateService_1 = require(\"../templateService\");\nvar valueService_1 = require(\"../valueService/valueService\");\nvar eventService_1 = require(\"../eventService\");\nvar rowComp_1 = require(\"./rowComp\");\nvar events_1 = require(\"../events\");\nvar constants_1 = require(\"../constants\");\nvar cellComp_1 = require(\"./cellComp\");\nvar context_1 = require(\"../context/context\");\nvar gridCore_1 = require(\"../gridCore\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar logger_1 = require(\"../logger\");\nvar focusedCellController_1 = require(\"../focusedCellController\");\nvar cellNavigationService_1 = require(\"../cellNavigationService\");\nvar gridCell_1 = require(\"../entities/gridCell\");\nvar beanStub_1 = require(\"../context/beanStub\");\nvar paginationProxy_1 = require(\"../rowModels/paginationProxy\");\nvar gridApi_1 = require(\"../gridApi\");\nvar pinnedRowModel_1 = require(\"../rowModels/pinnedRowModel\");\nvar beans_1 = require(\"./beans\");\nvar animationFrameService_1 = require(\"../misc/animationFrameService\");\nvar RowRenderer = (function (_super) {\n    __extends(RowRenderer, _super);\n    function RowRenderer() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        // map of row ids to row objects. keeps track of which elements\n        // are rendered for which rows in the dom.\n        _this.rowCompsByIndex = {};\n        _this.floatingTopRowComps = [];\n        _this.floatingBottomRowComps = [];\n        // we only allow one refresh at a time, otherwise the internal memory structure here\n        // will get messed up. this can happen if the user has a cellRenderer, and inside the\n        // renderer they call an API method that results in another pass of the refresh,\n        // then it will be trying to draw rows in the middle of a refresh.\n        _this.refreshInProgress = false;\n        return _this;\n    }\n    RowRenderer.prototype.agWire = function (loggerFactory) {\n        this.logger = loggerFactory.create('RowRenderer');\n    };\n    RowRenderer.prototype.init = function () {\n        this.forPrint = this.gridOptionsWrapper.isForPrint();\n        this.autoHeight = this.gridOptionsWrapper.isAutoHeight();\n        this.rowContainers = this.gridPanel.getRowContainers();\n        this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_PAGINATION_CHANGED, this.onPageLoaded.bind(this));\n        this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_PINNED_ROW_DATA_CHANGED, this.onPinnedRowDataChanged.bind(this));\n        this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n        this.redrawAfterModelUpdate();\n    };\n    RowRenderer.prototype.onPageLoaded = function (refreshEvent) {\n        if (utils_1.Utils.missing(refreshEvent)) {\n            refreshEvent = {\n                type: events_1.Events.EVENT_MODEL_UPDATED,\n                api: this.gridApi,\n                columnApi: this.columnApi,\n                animate: false,\n                keepRenderedRows: false,\n                newData: false,\n                newPage: false\n            };\n        }\n        this.onModelUpdated(refreshEvent);\n    };\n    RowRenderer.prototype.getAllCellsForColumn = function (column) {\n        var eCells = [];\n        utils_1.Utils.iterateObject(this.rowCompsByIndex, callback);\n        utils_1.Utils.iterateObject(this.floatingBottomRowComps, callback);\n        utils_1.Utils.iterateObject(this.floatingTopRowComps, callback);\n        function callback(key, rowComp) {\n            var eCell = rowComp.getCellForCol(column);\n            if (eCell) {\n                eCells.push(eCell);\n            }\n        }\n        return eCells;\n    };\n    RowRenderer.prototype.refreshFloatingRowComps = function () {\n        this.refreshFloatingRows(this.floatingTopRowComps, this.pinnedRowModel.getPinnedTopRowData(), this.rowContainers.floatingTopPinnedLeft, this.rowContainers.floatingTopPinnedRight, this.rowContainers.floatingTop, this.rowContainers.floatingTopFullWidth);\n        this.refreshFloatingRows(this.floatingBottomRowComps, this.pinnedRowModel.getPinnedBottomRowData(), this.rowContainers.floatingBottomPinnedLeft, this.rowContainers.floatingBottomPinnedRight, this.rowContainers.floatingBottom, this.rowContainers.floatingBottomFullWith);\n    };\n    RowRenderer.prototype.refreshFloatingRows = function (rowComps, rowNodes, pinnedLeftContainerComp, pinnedRightContainerComp, bodyContainerComp, fullWidthContainerComp) {\n        var _this = this;\n        rowComps.forEach(function (row) {\n            row.destroy();\n        });\n        rowComps.length = 0;\n        // if no cols, don't draw row - can we get rid of this???\n        var columns = this.columnController.getAllDisplayedColumns();\n        if (utils_1.Utils.missingOrEmpty(columns)) {\n            return;\n        }\n        if (rowNodes) {\n            rowNodes.forEach(function (node) {\n                var rowComp = new rowComp_1.RowComp(_this.$scope, bodyContainerComp, pinnedLeftContainerComp, pinnedRightContainerComp, fullWidthContainerComp, node, _this.beans, false, false);\n                rowComp.init();\n                rowComps.push(rowComp);\n            });\n        }\n        this.flushContainers(rowComps);\n    };\n    RowRenderer.prototype.onPinnedRowDataChanged = function () {\n        this.redrawAfterModelUpdate();\n    };\n    RowRenderer.prototype.onModelUpdated = function (refreshEvent) {\n        var params = {\n            recycleRows: refreshEvent.keepRenderedRows,\n            animate: refreshEvent.animate,\n            newData: refreshEvent.newData,\n            newPage: refreshEvent.newPage\n        };\n        this.redrawAfterModelUpdate(params);\n        // this.eventService.dispatchEvent(Events.DEPRECATED_EVENT_PAGINATION_PAGE_LOADED);\n    };\n    // if the row nodes are not rendered, no index is returned\n    RowRenderer.prototype.getRenderedIndexesForRowNodes = function (rowNodes) {\n        var result = [];\n        if (utils_1.Utils.missing(rowNodes)) {\n            return result;\n        }\n        utils_1.Utils.iterateObject(this.rowCompsByIndex, function (index, renderedRow) {\n            var rowNode = renderedRow.getRowNode();\n            if (rowNodes.indexOf(rowNode) >= 0) {\n                result.push(index);\n            }\n        });\n        return result;\n    };\n    RowRenderer.prototype.redrawRows = function (rowNodes) {\n        if (!rowNodes || rowNodes.length == 0) {\n            return;\n        }\n        // we only need to be worried about rendered rows, as this method is\n        // called to whats rendered. if the row isn't rendered, we don't care\n        var indexesToRemove = this.getRenderedIndexesForRowNodes(rowNodes);\n        // remove the rows\n        this.removeRowComps(indexesToRemove);\n        // add draw them again\n        this.redrawAfterModelUpdate({\n            recycleRows: true\n        });\n    };\n    RowRenderer.prototype.getCellToRestoreFocusToAfterRefresh = function (params) {\n        var focusedCell = params.suppressKeepFocus ? null : this.focusedCellController.getFocusCellToUseAfterRefresh();\n        if (utils_1.Utils.missing(focusedCell)) {\n            return null;\n        }\n        // if the dom is not actually focused on a cell, then we don't try to refocus. the problem this\n        // solves is with editing - if the user is editing, eg focus is on a text field, and not on the\n        // cell itself, then the cell can be registered as having focus, however it's the text field that\n        // has the focus and not the cell div. therefore, when the refresh is finished, the grid will focus\n        // the cell, and not the textfield. that means if the user is in a text field, and the grid refreshes,\n        // the focus is lost from the text field. we do not want this.\n        var activeElement = document.activeElement;\n        var domData = this.gridOptionsWrapper.getDomData(activeElement, cellComp_1.CellComp.DOM_DATA_KEY_CELL_COMP);\n        var elementIsNotACellDev = utils_1.Utils.missing(domData);\n        if (elementIsNotACellDev) {\n            return null;\n        }\n        return focusedCell;\n    };\n    // gets called after changes to the model.\n    RowRenderer.prototype.redrawAfterModelUpdate = function (params) {\n        if (params === void 0) { params = {}; }\n        this.getLockOnRefresh();\n        var focusedCell = this.getCellToRestoreFocusToAfterRefresh(params);\n        if (!this.forPrint) {\n            this.sizeContainerToPageHeight();\n        }\n        this.scrollToTopIfNewData(params);\n        // never keep rendered rows if doing forPrint or autoHeight, as we do not use 'top' to\n        // position the rows (it uses normal flow), so we have to remove\n        // all rows and insert them again from scratch\n        var rowsUsingFlow = this.forPrint || this.autoHeight;\n        var recycleRows = rowsUsingFlow ? false : params.recycleRows;\n        var animate = rowsUsingFlow ? false : (params.animate && this.gridOptionsWrapper.isAnimateRows());\n        var rowsToRecycle = this.binRowComps(recycleRows);\n        this.redraw(rowsToRecycle, animate);\n        if (!params.onlyBody) {\n            this.refreshFloatingRowComps();\n        }\n        this.restoreFocusedCell(focusedCell);\n        this.releaseLockOnRefresh();\n    };\n    RowRenderer.prototype.scrollToTopIfNewData = function (params) {\n        var scrollToTop = params.newData || params.newPage;\n        var suppressScrollToTop = this.gridOptionsWrapper.isSuppressScrollOnNewData();\n        if (scrollToTop && !suppressScrollToTop) {\n            this.gridPanel.scrollToTop();\n        }\n    };\n    RowRenderer.prototype.sizeContainerToPageHeight = function () {\n        var containerHeight = this.paginationProxy.getCurrentPageHeight();\n        // we need at least 1 pixel for the horizontal scroll to work. so if there are now rows,\n        // we still want the scroll to be present, otherwise there would be no way to access the columns\n        // on the RHS - and if that was where the filter was that cause no rows to be presented, there\n        // is no way to remove the filter.\n        if (containerHeight === 0) {\n            containerHeight = 1;\n        }\n        this.rowContainers.body.setHeight(containerHeight);\n        this.rowContainers.fullWidth.setHeight(containerHeight);\n        this.rowContainers.pinnedLeft.setHeight(containerHeight);\n        this.rowContainers.pinnedRight.setHeight(containerHeight);\n    };\n    RowRenderer.prototype.getLockOnRefresh = function () {\n        if (this.refreshInProgress) {\n            throw 'ag-Grid: cannot get grid to draw rows when it is in the middle of drawing rows. ' +\n                'Your code probably called a grid API method while the grid was in the render stage. To overcome ' +\n                'this, put the API call into a timeout, eg instead of api.refreshView(), ' +\n                'call setTimeout(function(){api.refreshView(),0}). To see what part of your code ' +\n                'that caused the refresh check this stacktrace.';\n        }\n        this.refreshInProgress = true;\n    };\n    RowRenderer.prototype.releaseLockOnRefresh = function () {\n        this.refreshInProgress = false;\n    };\n    // sets the focus to the provided cell, if the cell is provided. this way, the user can call refresh without\n    // worry about the focus been lost. this is important when the user is using keyboard navigation to do edits\n    // and the cellEditor is calling 'refresh' to get other cells to update (as other cells might depend on the\n    // edited cell).\n    RowRenderer.prototype.restoreFocusedCell = function (gridCell) {\n        if (gridCell) {\n            this.focusedCellController.setFocusedCell(gridCell.rowIndex, gridCell.column, gridCell.floating, true);\n        }\n    };\n    RowRenderer.prototype.stopEditing = function (cancel) {\n        if (cancel === void 0) { cancel = false; }\n        this.forEachRowComp(function (key, renderedRow) {\n            renderedRow.stopEditing(cancel);\n        });\n    };\n    RowRenderer.prototype.forEachCellComp = function (callback) {\n        utils_1.Utils.iterateObject(this.rowCompsByIndex, function (index, renderedRow) {\n            renderedRow.forEachCellComp(callback);\n        });\n    };\n    RowRenderer.prototype.forEachRowComp = function (callback) {\n        utils_1.Utils.iterateObject(this.rowCompsByIndex, callback);\n        utils_1.Utils.iterateObject(this.floatingTopRowComps, callback);\n        utils_1.Utils.iterateObject(this.floatingBottomRowComps, callback);\n    };\n    RowRenderer.prototype.addRenderedRowListener = function (eventName, rowIndex, callback) {\n        var rowComp = this.rowCompsByIndex[rowIndex];\n        if (rowComp) {\n            rowComp.addEventListener(eventName, callback);\n        }\n    };\n    RowRenderer.prototype.refreshCells = function (params) {\n        var _this = this;\n        if (params === void 0) { params = {}; }\n        var rowIdsMap;\n        if (utils_1.Utils.exists(params.rowNodes)) {\n            rowIdsMap = {\n                top: {},\n                bottom: {},\n                normal: {}\n            };\n            params.rowNodes.forEach(function (rowNode) {\n                if (rowNode.rowPinned === constants_1.Constants.PINNED_TOP) {\n                    rowIdsMap.top[rowNode.id] = true;\n                }\n                else if (rowNode.rowPinned === constants_1.Constants.PINNED_BOTTOM) {\n                    rowIdsMap.bottom[rowNode.id] = true;\n                }\n                else {\n                    rowIdsMap.normal[rowNode.id] = true;\n                }\n            });\n        }\n        var colIdsMap;\n        if (utils_1.Utils.exists(params.columns)) {\n            colIdsMap = {};\n            params.columns.forEach(function (colKey) {\n                var column = _this.columnController.getGridColumn(colKey);\n                if (utils_1.Utils.exists(column)) {\n                    colIdsMap[column.getId()] = true;\n                }\n            });\n        }\n        var processRow = function (rowComp) {\n            var rowNode = rowComp.getRowNode();\n            var id = rowNode.id;\n            var floating = rowNode.rowPinned;\n            // skip this row if it is missing from the provided list\n            if (utils_1.Utils.exists(rowIdsMap)) {\n                if (floating === constants_1.Constants.PINNED_BOTTOM) {\n                    if (!rowIdsMap.bottom[id]) {\n                        return;\n                    }\n                }\n                else if (floating === constants_1.Constants.PINNED_TOP) {\n                    if (!rowIdsMap.top[id]) {\n                        return;\n                    }\n                }\n                else {\n                    if (!rowIdsMap.normal[id]) {\n                        return;\n                    }\n                }\n            }\n            rowComp.forEachCellComp(function (cellComp) {\n                var colId = cellComp.getColumn().getId();\n                var excludeColFromRefresh = colIdsMap && !colIdsMap[colId];\n                if (excludeColFromRefresh) {\n                    return;\n                }\n                cellComp.refreshCell({\n                    forceRefresh: params.force,\n                    volatile: params.volatile,\n                    newData: false\n                });\n            });\n        };\n        utils_1.Utils.iterateObject(this.rowCompsByIndex, function (index, rowComp) {\n            processRow(rowComp);\n        });\n        if (this.floatingTopRowComps) {\n            this.floatingTopRowComps.forEach(processRow);\n        }\n        if (this.floatingBottomRowComps) {\n            this.floatingBottomRowComps.forEach(processRow);\n        }\n    };\n    RowRenderer.prototype.destroy = function () {\n        _super.prototype.destroy.call(this);\n        var rowIndexesToRemove = Object.keys(this.rowCompsByIndex);\n        this.removeRowComps(rowIndexesToRemove);\n    };\n    RowRenderer.prototype.binRowComps = function (recycleRows) {\n        var _this = this;\n        var indexesToRemove;\n        var rowsToRecycle = {};\n        if (recycleRows) {\n            indexesToRemove = [];\n            utils_1.Utils.iterateObject(this.rowCompsByIndex, function (index, rowComp) {\n                var rowNode = rowComp.getRowNode();\n                if (utils_1.Utils.exists(rowNode.id)) {\n                    rowsToRecycle[rowNode.id] = rowComp;\n                    delete _this.rowCompsByIndex[index];\n                }\n                else {\n                    indexesToRemove.push(index);\n                }\n            });\n        }\n        else {\n            indexesToRemove = Object.keys(this.rowCompsByIndex);\n        }\n        this.removeRowComps(indexesToRemove);\n        return rowsToRecycle;\n    };\n    // takes array of row indexes\n    RowRenderer.prototype.removeRowComps = function (rowsToRemove) {\n        var _this = this;\n        // if no fromIndex then set to -1, which will refresh everything\n        // let realFromIndex = -1;\n        rowsToRemove.forEach(function (indexToRemove) {\n            var renderedRow = _this.rowCompsByIndex[indexToRemove];\n            renderedRow.destroy();\n            delete _this.rowCompsByIndex[indexToRemove];\n        });\n    };\n    // gets called when rows don't change, but viewport does, so after:\n    // 1) size of grid changed\n    // 2) grid scrolled to new position\n    // 3) ensure index visible (which is a scroll)\n    RowRenderer.prototype.redrawAfterScroll = function () {\n        this.getLockOnRefresh();\n        this.redraw(null, false, true);\n        this.releaseLockOnRefresh();\n    };\n    RowRenderer.prototype.removeRowCompsNotToDraw = function (indexesToDraw) {\n        // for speedy lookup, dump into map\n        var indexesToDrawMap = {};\n        indexesToDraw.forEach(function (index) { return indexesToDrawMap[index] = true; });\n        var existingIndexes = Object.keys(this.rowCompsByIndex);\n        var indexesNotToDraw = utils_1.Utils.filter(existingIndexes, function (index) { return !indexesToDrawMap[index]; });\n        this.removeRowComps(indexesNotToDraw);\n    };\n    RowRenderer.prototype.calculateIndexesToDraw = function () {\n        var _this = this;\n        // all in all indexes in the viewport\n        var indexesToDraw = utils_1.Utils.createArrayOfNumbers(this.firstRenderedRow, this.lastRenderedRow);\n        // add in indexes of rows we want to keep, because they are currently editing\n        utils_1.Utils.iterateObject(this.rowCompsByIndex, function (indexStr, rowComp) {\n            var index = Number(indexStr);\n            if (index < _this.firstRenderedRow || index > _this.lastRenderedRow) {\n                if (_this.keepRowBecauseEditing(rowComp)) {\n                    indexesToDraw.push(index);\n                }\n            }\n        });\n        indexesToDraw.sort(function (a, b) { return a - b; });\n        return indexesToDraw;\n    };\n    RowRenderer.prototype.redraw = function (rowsToRecycle, animate, afterScroll) {\n        var _this = this;\n        if (animate === void 0) { animate = false; }\n        if (afterScroll === void 0) { afterScroll = false; }\n        this.workOutFirstAndLastRowsToRender();\n        // the row can already exist and be in the following:\n        // rowsToRecycle -> if model change, then the index may be different, however row may\n        //                         exist here from previous time (mapped by id).\n        // this.rowCompsByIndex -> if just a scroll, then this will contain what is currently in the viewport\n        // this is all the indexes we want, including those that already exist, so this method\n        // will end up going through each index and drawing only if the row doesn't already exist\n        var indexesToDraw = this.calculateIndexesToDraw();\n        this.removeRowCompsNotToDraw(indexesToDraw);\n        // add in new rows\n        var nextVmTurnFunctions = [];\n        var rowComps = [];\n        indexesToDraw.forEach(function (rowIndex) {\n            var rowComp = _this.createOrUpdateRowComp(rowIndex, rowsToRecycle, animate, afterScroll);\n            if (utils_1.Utils.exists(rowComp)) {\n                rowComps.push(rowComp);\n                utils_1.Utils.pushAll(nextVmTurnFunctions, rowComp.getAndClearNextVMTurnFunctions());\n            }\n        });\n        this.flushContainers(rowComps);\n        utils_1.Utils.executeNextVMTurn(nextVmTurnFunctions);\n        if (afterScroll && !this.gridOptionsWrapper.isSuppressAnimationFrame()) {\n            this.beans.taskQueue.addP2Task(this.destroyRowComps.bind(this, rowsToRecycle, animate));\n        }\n        else {\n            this.destroyRowComps(rowsToRecycle, animate);\n        }\n        this.checkAngularCompile();\n    };\n    RowRenderer.prototype.flushContainers = function (rowComps) {\n        utils_1.Utils.iterateObject(this.rowContainers, function (key, rowContainerComp) {\n            if (rowContainerComp) {\n                rowContainerComp.flushRowTemplates();\n            }\n        });\n        rowComps.forEach(function (rowComp) { return rowComp.afterFlush(); });\n    };\n    RowRenderer.prototype.onDisplayedColumnsChanged = function () {\n        var pinningLeft = this.columnController.isPinningLeft();\n        var pinningRight = this.columnController.isPinningRight();\n        var atLeastOneChanged = this.pinningLeft !== pinningLeft || pinningRight !== this.pinningRight;\n        if (atLeastOneChanged) {\n            this.pinningLeft = pinningLeft;\n            this.pinningRight = pinningRight;\n            if (this.gridOptionsWrapper.isEmbedFullWidthRows()) {\n                this.redrawFullWidthEmbeddedRows();\n            }\n        }\n    };\n    // when embedding, what gets showed in each section depends on what is pinned. eg if embedding group expand / collapse,\n    // then it should go into the pinned left area if pinning left, or the center area if not pinning.\n    RowRenderer.prototype.redrawFullWidthEmbeddedRows = function () {\n        // if either of the pinned panels has shown / hidden, then need to redraw the fullWidth bits when\n        // embedded, as what appears in each section depends on whether we are pinned or not\n        var rowsToRemove = [];\n        this.forEachRowComp(function (id, rowComp) {\n            if (rowComp.isFullWidth()) {\n                var rowIndex = rowComp.getRowNode().rowIndex;\n                rowsToRemove.push(rowIndex.toString());\n            }\n        });\n        this.removeRowComps(rowsToRemove);\n        this.redrawAfterScroll();\n    };\n    RowRenderer.prototype.createOrUpdateRowComp = function (rowIndex, rowsToRecycle, animate, afterScroll) {\n        var rowNode;\n        var rowComp = this.rowCompsByIndex[rowIndex];\n        // if no row comp, see if we can get it from the previous rowComps\n        if (!rowComp) {\n            rowNode = this.paginationProxy.getRow(rowIndex);\n            if (utils_1.Utils.exists(rowNode) && utils_1.Utils.exists(rowsToRecycle) && rowsToRecycle[rowNode.id]) {\n                rowComp = rowsToRecycle[rowNode.id];\n                rowsToRecycle[rowNode.id] = null;\n            }\n        }\n        var creatingNewRowComp = !rowComp;\n        if (creatingNewRowComp) {\n            // create a new one\n            if (!rowNode) {\n                rowNode = this.paginationProxy.getRow(rowIndex);\n            }\n            if (utils_1.Utils.exists(rowNode)) {\n                rowComp = this.createRowComp(rowNode, animate, afterScroll);\n            }\n            else {\n                // this should never happen - if somehow we are trying to create\n                // a row for a rowNode that does not exist.\n                return;\n            }\n        }\n        else {\n            // ensure row comp is in right position in DOM\n            rowComp.ensureDomOrder();\n        }\n        this.rowCompsByIndex[rowIndex] = rowComp;\n        return rowComp;\n    };\n    RowRenderer.prototype.destroyRowComps = function (rowCompsMap, animate) {\n        var delayedFuncs = [];\n        utils_1.Utils.iterateObject(rowCompsMap, function (nodeId, rowComp) {\n            // if row was used, then it's null\n            if (!rowComp) {\n                return;\n            }\n            rowComp.destroy(animate);\n            utils_1.Utils.pushAll(delayedFuncs, rowComp.getAndClearDelayedDestroyFunctions());\n        });\n        utils_1.Utils.executeInAWhile(delayedFuncs);\n    };\n    RowRenderer.prototype.checkAngularCompile = function () {\n        var _this = this;\n        // if we are doing angular compiling, then do digest the scope here\n        if (this.gridOptionsWrapper.isAngularCompileRows()) {\n            // we do it in a timeout, in case we are already in an apply\n            setTimeout(function () { _this.$scope.$apply(); }, 0);\n        }\n    };\n    RowRenderer.prototype.workOutFirstAndLastRowsToRender = function () {\n        var newFirst;\n        var newLast;\n        if (!this.paginationProxy.isRowsToRender()) {\n            newFirst = 0;\n            newLast = -1; // setting to -1 means nothing in range\n        }\n        else {\n            var pageFirstRow = this.paginationProxy.getPageFirstRow();\n            var pageLastRow = this.paginationProxy.getPageLastRow();\n            if (this.forPrint) {\n                newFirst = pageFirstRow;\n                newLast = pageLastRow;\n            }\n            else {\n                var pixelOffset = this.paginationProxy ? this.paginationProxy.getPixelOffset() : 0;\n                var bodyVRange = this.gridPanel.getVerticalPixelRange();\n                var topPixel = bodyVRange.top;\n                var bottomPixel = bodyVRange.bottom;\n                var first = this.paginationProxy.getRowIndexAtPixel(topPixel + pixelOffset);\n                var last = this.paginationProxy.getRowIndexAtPixel(bottomPixel + pixelOffset);\n                //add in buffer\n                var buffer = this.gridOptionsWrapper.getRowBuffer();\n                first = first - buffer;\n                last = last + buffer;\n                // adjust, in case buffer extended actual size\n                if (first < pageFirstRow) {\n                    first = pageFirstRow;\n                }\n                if (last > pageLastRow) {\n                    last = pageLastRow;\n                }\n                newFirst = first;\n                newLast = last;\n            }\n        }\n        var firstDiffers = newFirst !== this.firstRenderedRow;\n        var lastDiffers = newLast !== this.lastRenderedRow;\n        if (firstDiffers || lastDiffers) {\n            this.firstRenderedRow = newFirst;\n            this.lastRenderedRow = newLast;\n            var event_1 = {\n                type: events_1.Events.EVENT_VIEWPORT_CHANGED,\n                firstRow: newFirst,\n                lastRow: newLast,\n                api: this.gridApi,\n                columnApi: this.columnApi\n            };\n            this.eventService.dispatchEvent(event_1);\n        }\n    };\n    RowRenderer.prototype.getFirstVirtualRenderedRow = function () {\n        return this.firstRenderedRow;\n    };\n    RowRenderer.prototype.getLastVirtualRenderedRow = function () {\n        return this.lastRenderedRow;\n    };\n    // check that none of the rows to remove are editing or focused as:\n    // a) if editing, we want to keep them, otherwise the user will loose the context of the edit,\n    //    eg user starts editing, enters some text, then scrolls down and then up, next time row rendered\n    //    the edit is reset - so we want to keep it rendered.\n    // b) if focused, we want ot keep keyboard focus, so if user ctrl+c, it goes to clipboard,\n    //    otherwise the user can range select and drag (with focus cell going out of the viewport)\n    //    and then ctrl+c, nothing will happen if cell is removed from dom.\n    RowRenderer.prototype.keepRowBecauseEditing = function (rowComp) {\n        var REMOVE_ROW = false;\n        var KEEP_ROW = true;\n        var rowNode = rowComp.getRowNode();\n        var rowHasFocus = this.focusedCellController.isRowNodeFocused(rowNode);\n        var rowIsEditing = rowComp.isEditing();\n        var mightWantToKeepRow = rowHasFocus || rowIsEditing;\n        // if we deffo don't want to keep it,\n        if (!mightWantToKeepRow) {\n            return REMOVE_ROW;\n        }\n        // editing row, only remove if it is no longer rendered, eg filtered out or new data set.\n        // the reason we want to keep is if user is scrolling up and down, we don't want to loose\n        // the context of the editing in process.\n        var rowNodePresent = this.paginationProxy.isRowPresent(rowNode);\n        return rowNodePresent ? KEEP_ROW : REMOVE_ROW;\n    };\n    RowRenderer.prototype.createRowComp = function (rowNode, animate, afterScroll) {\n        var useAnimationFrameForCreate = afterScroll && !this.gridOptionsWrapper.isSuppressAnimationFrame();\n        var rowComp = new rowComp_1.RowComp(this.$scope, this.rowContainers.body, this.rowContainers.pinnedLeft, this.rowContainers.pinnedRight, this.rowContainers.fullWidth, rowNode, this.beans, animate, useAnimationFrameForCreate);\n        rowComp.init();\n        return rowComp;\n    };\n    RowRenderer.prototype.getRenderedNodes = function () {\n        var renderedRows = this.rowCompsByIndex;\n        return Object.keys(renderedRows).map(function (key) {\n            return renderedRows[key].getRowNode();\n        });\n    };\n    // we use index for rows, but column object for columns, as the next column (by index) might not\n    // be visible (header grouping) so it's not reliable, so using the column object instead.\n    RowRenderer.prototype.navigateToNextCell = function (event, key, rowIndex, column, floating) {\n        var previousCell = new gridCell_1.GridCell({ rowIndex: rowIndex, floating: floating, column: column });\n        var nextCell = previousCell;\n        // we keep searching for a next cell until we find one. this is how the group rows get skipped\n        while (true) {\n            nextCell = this.cellNavigationService.getNextCellToFocus(key, nextCell);\n            if (utils_1.Utils.missing(nextCell)) {\n                break;\n            }\n            var skipGroupRows = this.gridOptionsWrapper.isGroupUseEntireRow();\n            if (skipGroupRows) {\n                var rowNode = this.paginationProxy.getRow(nextCell.rowIndex);\n                if (!rowNode.group) {\n                    break;\n                }\n            }\n            else {\n                break;\n            }\n        }\n        // allow user to override what cell to go to next\n        var userFunc = this.gridOptionsWrapper.getNavigateToNextCellFunc();\n        if (utils_1.Utils.exists(userFunc)) {\n            var params = {\n                key: key,\n                previousCellDef: previousCell,\n                nextCellDef: nextCell ? nextCell.getGridCellDef() : null,\n                event: event\n            };\n            var nextCellDef = userFunc(params);\n            if (utils_1.Utils.exists(nextCellDef)) {\n                nextCell = new gridCell_1.GridCell(nextCellDef);\n            }\n            else {\n                nextCell = null;\n            }\n        }\n        // no next cell means we have reached a grid boundary, eg left, right, top or bottom of grid\n        if (!nextCell) {\n            return;\n        }\n        // this scrolls the row into view\n        if (utils_1.Utils.missing(nextCell.floating)) {\n            this.gridPanel.ensureIndexVisible(nextCell.rowIndex);\n        }\n        if (!nextCell.column.isPinned()) {\n            this.gridPanel.ensureColumnVisible(nextCell.column);\n        }\n        // need to nudge the scrolls for the floating items. otherwise when we set focus on a non-visible\n        // floating cell, the scrolls get out of sync\n        this.gridPanel.horizontallyScrollHeaderCenterAndFloatingCenter();\n        // need to flush frames, to make sure the correct cells are rendered\n        this.animationFrameService.flushAllFrames();\n        this.focusedCellController.setFocusedCell(nextCell.rowIndex, nextCell.column, nextCell.floating, true);\n        if (this.rangeController) {\n            var gridCell = new gridCell_1.GridCell({ rowIndex: nextCell.rowIndex, floating: nextCell.floating, column: nextCell.column });\n            this.rangeController.setRangeToCell(gridCell);\n        }\n    };\n    RowRenderer.prototype.startEditingCell = function (gridCell, keyPress, charPress) {\n        var cell = this.getComponentForCell(gridCell);\n        if (cell) {\n            cell.startRowOrCellEdit(keyPress, charPress);\n        }\n    };\n    RowRenderer.prototype.getComponentForCell = function (gridCell) {\n        var rowComponent;\n        switch (gridCell.floating) {\n            case constants_1.Constants.PINNED_TOP:\n                rowComponent = this.floatingTopRowComps[gridCell.rowIndex];\n                break;\n            case constants_1.Constants.PINNED_BOTTOM:\n                rowComponent = this.floatingBottomRowComps[gridCell.rowIndex];\n                break;\n            default:\n                rowComponent = this.rowCompsByIndex[gridCell.rowIndex];\n                break;\n        }\n        if (!rowComponent) {\n            return null;\n        }\n        var cellComponent = rowComponent.getRenderedCellForColumn(gridCell.column);\n        return cellComponent;\n    };\n    RowRenderer.prototype.onTabKeyDown = function (previousRenderedCell, keyboardEvent) {\n        var backwards = keyboardEvent.shiftKey;\n        var success = this.moveToCellAfter(previousRenderedCell, backwards);\n        if (success) {\n            keyboardEvent.preventDefault();\n        }\n    };\n    RowRenderer.prototype.tabToNextCell = function (backwards) {\n        var focusedCell = this.focusedCellController.getFocusedCell();\n        // if no focus, then cannot navigate\n        if (utils_1.Utils.missing(focusedCell)) {\n            return false;\n        }\n        var renderedCell = this.getComponentForCell(focusedCell);\n        // if cell is not rendered, means user has scrolled away from the cell\n        if (utils_1.Utils.missing(renderedCell)) {\n            return false;\n        }\n        var result = this.moveToCellAfter(renderedCell, backwards);\n        return result;\n    };\n    // returns true if moving to next cell was successful\n    RowRenderer.prototype.moveToCellAfter = function (previousRenderedCell, backwards) {\n        var editing = previousRenderedCell.isEditing();\n        var gridCell = previousRenderedCell.getGridCell();\n        // find the next cell to start editing\n        var nextRenderedCell = this.findNextCellToFocusOn(gridCell, backwards, editing);\n        var foundCell = utils_1.Utils.exists(nextRenderedCell);\n        // only prevent default if we found a cell. so if user is on last cell and hits tab, then we default\n        // to the normal tabbing so user can exit the grid.\n        if (foundCell) {\n            if (editing) {\n                if (this.gridOptionsWrapper.isFullRowEdit()) {\n                    this.moveEditToNextCellOrRow(previousRenderedCell, nextRenderedCell);\n                }\n                else {\n                    this.moveEditToNextCell(previousRenderedCell, nextRenderedCell);\n                }\n            }\n            else {\n                nextRenderedCell.focusCell(true);\n            }\n            return true;\n        }\n        else {\n            return false;\n        }\n    };\n    RowRenderer.prototype.moveEditToNextCell = function (previousRenderedCell, nextRenderedCell) {\n        previousRenderedCell.stopEditing();\n        nextRenderedCell.startEditingIfEnabled(null, null, true);\n        nextRenderedCell.focusCell(false);\n    };\n    RowRenderer.prototype.moveEditToNextCellOrRow = function (previousRenderedCell, nextRenderedCell) {\n        var pGridCell = previousRenderedCell.getGridCell();\n        var nGridCell = nextRenderedCell.getGridCell();\n        var rowsMatch = (pGridCell.rowIndex === nGridCell.rowIndex)\n            && (pGridCell.floating === nGridCell.floating);\n        if (rowsMatch) {\n            // same row, so we don't start / stop editing, we just move the focus along\n            previousRenderedCell.setFocusOutOnEditor();\n            nextRenderedCell.setFocusInOnEditor();\n        }\n        else {\n            var pRow = previousRenderedCell.getRenderedRow();\n            var nRow = nextRenderedCell.getRenderedRow();\n            previousRenderedCell.setFocusOutOnEditor();\n            pRow.stopEditing();\n            nRow.startRowEditing();\n            nextRenderedCell.setFocusInOnEditor();\n        }\n        nextRenderedCell.focusCell();\n    };\n    // called by the cell, when tab is pressed while editing.\n    // @return: RenderedCell when navigation successful, otherwise null\n    RowRenderer.prototype.findNextCellToFocusOn = function (gridCell, backwards, startEditing) {\n        var nextCell = gridCell;\n        while (true) {\n            nextCell = this.cellNavigationService.getNextTabbedCell(nextCell, backwards);\n            // allow user to override what cell to go to next\n            var userFunc = this.gridOptionsWrapper.getTabToNextCellFunc();\n            if (utils_1.Utils.exists(userFunc)) {\n                var params = {\n                    backwards: backwards,\n                    editing: startEditing,\n                    previousCellDef: gridCell.getGridCellDef(),\n                    nextCellDef: nextCell ? nextCell.getGridCellDef() : null\n                };\n                var nextCellDef = userFunc(params);\n                if (utils_1.Utils.exists(nextCellDef)) {\n                    nextCell = new gridCell_1.GridCell(nextCellDef);\n                }\n                else {\n                    nextCell = null;\n                }\n            }\n            // if no 'next cell', means we have got to last cell of grid, so nothing to move to,\n            // so bottom right cell going forwards, or top left going backwards\n            if (!nextCell) {\n                return null;\n            }\n            // this scrolls the row into view\n            var cellIsNotFloating = utils_1.Utils.missing(nextCell.floating);\n            if (cellIsNotFloating) {\n                this.gridPanel.ensureIndexVisible(nextCell.rowIndex);\n            }\n            // pinned columns don't scroll, so no need to ensure index visible\n            if (!nextCell.column.isPinned()) {\n                this.gridPanel.ensureColumnVisible(nextCell.column);\n            }\n            // need to nudge the scrolls for the floating items. otherwise when we set focus on a non-visible\n            // floating cell, the scrolls get out of sync\n            this.gridPanel.horizontallyScrollHeaderCenterAndFloatingCenter();\n            // get the grid panel to flush all animation frames - otherwise the call below to get the cellComp\n            // could fail, if we just scrolled the grid (to make a cell visible) and the rendering hasn't finished.\n            this.animationFrameService.flushAllFrames();\n            // we have to call this after ensureColumnVisible - otherwise it could be a virtual column\n            // or row that is not currently in view, hence the renderedCell would not exist\n            var nextCellComp = this.getComponentForCell(nextCell);\n            // if next cell is fullWidth row, then no rendered cell,\n            // as fullWidth rows have no cells, so we skip it\n            if (utils_1.Utils.missing(nextCellComp)) {\n                continue;\n            }\n            // if editing, but cell not editable, skip cell\n            if (startEditing && !nextCellComp.isCellEditable()) {\n                continue;\n            }\n            if (nextCellComp.isSuppressNavigable()) {\n                continue;\n            }\n            // by default, when we click a cell, it gets selected into a range, so to keep keyboard navigation\n            // consistent, we set into range here also.\n            if (this.rangeController) {\n                var gridCell_2 = new gridCell_1.GridCell({ rowIndex: nextCell.rowIndex, floating: nextCell.floating, column: nextCell.column });\n                this.rangeController.setRangeToCell(gridCell_2);\n            }\n            // we successfully tabbed onto a grid cell, so return true\n            return nextCellComp;\n        }\n    };\n    __decorate([\n        context_1.Autowired('paginationProxy'),\n        __metadata(\"design:type\", paginationProxy_1.PaginationProxy)\n    ], RowRenderer.prototype, \"paginationProxy\", void 0);\n    __decorate([\n        context_1.Autowired('columnController'),\n        __metadata(\"design:type\", columnController_1.ColumnController)\n    ], RowRenderer.prototype, \"columnController\", void 0);\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], RowRenderer.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('gridCore'),\n        __metadata(\"design:type\", gridCore_1.GridCore)\n    ], RowRenderer.prototype, \"gridCore\", void 0);\n    __decorate([\n        context_1.Autowired('gridPanel'),\n        __metadata(\"design:type\", gridPanel_1.GridPanel)\n    ], RowRenderer.prototype, \"gridPanel\", void 0);\n    __decorate([\n        context_1.Autowired('$scope'),\n        __metadata(\"design:type\", Object)\n    ], RowRenderer.prototype, \"$scope\", void 0);\n    __decorate([\n        context_1.Autowired('expressionService'),\n        __metadata(\"design:type\", expressionService_1.ExpressionService)\n    ], RowRenderer.prototype, \"expressionService\", void 0);\n    __decorate([\n        context_1.Autowired('templateService'),\n        __metadata(\"design:type\", templateService_1.TemplateService)\n    ], RowRenderer.prototype, \"templateService\", void 0);\n    __decorate([\n        context_1.Autowired('valueService'),\n        __metadata(\"design:type\", valueService_1.ValueService)\n    ], RowRenderer.prototype, \"valueService\", void 0);\n    __decorate([\n        context_1.Autowired('eventService'),\n        __metadata(\"design:type\", eventService_1.EventService)\n    ], RowRenderer.prototype, \"eventService\", void 0);\n    __decorate([\n        context_1.Autowired('pinnedRowModel'),\n        __metadata(\"design:type\", pinnedRowModel_1.PinnedRowModel)\n    ], RowRenderer.prototype, \"pinnedRowModel\", void 0);\n    __decorate([\n        context_1.Autowired('context'),\n        __metadata(\"design:type\", context_1.Context)\n    ], RowRenderer.prototype, \"context\", void 0);\n    __decorate([\n        context_1.Autowired('loggerFactory'),\n        __metadata(\"design:type\", logger_1.LoggerFactory)\n    ], RowRenderer.prototype, \"loggerFactory\", void 0);\n    __decorate([\n        context_1.Autowired('focusedCellController'),\n        __metadata(\"design:type\", focusedCellController_1.FocusedCellController)\n    ], RowRenderer.prototype, \"focusedCellController\", void 0);\n    __decorate([\n        context_1.Autowired('cellNavigationService'),\n        __metadata(\"design:type\", cellNavigationService_1.CellNavigationService)\n    ], RowRenderer.prototype, \"cellNavigationService\", void 0);\n    __decorate([\n        context_1.Autowired('columnApi'),\n        __metadata(\"design:type\", columnController_1.ColumnApi)\n    ], RowRenderer.prototype, \"columnApi\", void 0);\n    __decorate([\n        context_1.Autowired('gridApi'),\n        __metadata(\"design:type\", gridApi_1.GridApi)\n    ], RowRenderer.prototype, \"gridApi\", void 0);\n    __decorate([\n        context_1.Autowired('beans'),\n        __metadata(\"design:type\", beans_1.Beans)\n    ], RowRenderer.prototype, \"beans\", void 0);\n    __decorate([\n        context_1.Autowired('animationFrameService'),\n        __metadata(\"design:type\", animationFrameService_1.AnimationFrameService)\n    ], RowRenderer.prototype, \"animationFrameService\", void 0);\n    __decorate([\n        context_1.Optional('rangeController'),\n        __metadata(\"design:type\", Object)\n    ], RowRenderer.prototype, \"rangeController\", void 0);\n    __decorate([\n        __param(0, context_1.Qualifier('loggerFactory')),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [logger_1.LoggerFactory]),\n        __metadata(\"design:returntype\", void 0)\n    ], RowRenderer.prototype, \"agWire\", null);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], RowRenderer.prototype, \"init\", null);\n    __decorate([\n        context_1.PreDestroy,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], RowRenderer.prototype, \"destroy\", null);\n    RowRenderer = __decorate([\n        context_1.Bean('rowRenderer')\n    ], RowRenderer);\n    return RowRenderer;\n}(beanStub_1.BeanStub));\nexports.RowRenderer = RowRenderer;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rendering/rowRenderer.js\n// module id = 42\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar popupService_1 = require(\"../widgets/popupService\");\nvar valueService_1 = require(\"../valueService/valueService\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar context_1 = require(\"../context/context\");\nvar eventService_1 = require(\"../eventService\");\nvar events_1 = require(\"../events\");\nvar gridApi_1 = require(\"../gridApi\");\nvar componentResolver_1 = require(\"../components/framework/componentResolver\");\nvar FilterManager = (function () {\n    function FilterManager() {\n        this.allFilters = {};\n        this.quickFilter = null;\n    }\n    FilterManager_1 = FilterManager;\n    FilterManager.prototype.init = function () {\n        this.eventService.addEventListener(events_1.Events.EVENT_ROW_DATA_CHANGED, this.onNewRowsLoaded.bind(this));\n        this.eventService.addEventListener(events_1.Events.EVENT_NEW_COLUMNS_LOADED, this.onNewColumnsLoaded.bind(this));\n        this.quickFilter = this.parseQuickFilter(this.gridOptionsWrapper.getQuickFilterText());\n        // check this here, in case there is a filter from the start\n        this.checkExternalFilter();\n    };\n    FilterManager.prototype.setFilterModel = function (model) {\n        var _this = this;\n        var allPromises = [];\n        if (model) {\n            // mark the filters as we set them, so any active filters left over we stop\n            var modelKeys_1 = Object.keys(model);\n            utils_1.Utils.iterateObject(this.allFilters, function (colId, filterWrapper) {\n                utils_1.Utils.removeFromArray(modelKeys_1, colId);\n                var newModel = model[colId];\n                _this.setModelOnFilterWrapper(filterWrapper.filterPromise, newModel);\n                allPromises.push(filterWrapper.filterPromise);\n            });\n            // at this point, processedFields contains data for which we don't have a filter working yet\n            utils_1.Utils.iterateArray(modelKeys_1, function (colId) {\n                var column = _this.columnController.getPrimaryColumn(colId);\n                if (!column) {\n                    console.warn('Warning ag-grid setFilterModel - no column found for colId ' + colId);\n                    return;\n                }\n                var filterWrapper = _this.getOrCreateFilterWrapper(column);\n                _this.setModelOnFilterWrapper(filterWrapper.filterPromise, model[colId]);\n                allPromises.push(filterWrapper.filterPromise);\n            });\n        }\n        else {\n            utils_1.Utils.iterateObject(this.allFilters, function (key, filterWrapper) {\n                _this.setModelOnFilterWrapper(filterWrapper.filterPromise, null);\n                allPromises.push(filterWrapper.filterPromise);\n            });\n        }\n        utils_1.Promise.all(allPromises).then(function (whatever) {\n            _this.onFilterChanged();\n        });\n    };\n    FilterManager.prototype.setModelOnFilterWrapper = function (filterPromise, newModel) {\n        filterPromise.then(function (filter) {\n            if (typeof filter.setModel !== 'function') {\n                console.warn('Warning ag-grid - filter missing setModel method, which is needed for setFilterModel');\n                return;\n            }\n            filter.setModel(newModel);\n        });\n    };\n    FilterManager.prototype.getFilterModel = function () {\n        var result = {};\n        utils_1.Utils.iterateObject(this.allFilters, function (key, filterWrapper) {\n            // because user can provide filters, we provide useful error checking and messages\n            var filterPromise = filterWrapper.filterPromise;\n            var filter = filterPromise.resolveNow(null, function (filter) { return filter; });\n            if (filter == null)\n                return null;\n            if (typeof filter.getModel !== 'function') {\n                console.warn('Warning ag-grid - filter API missing getModel method, which is needed for getFilterModel');\n                return;\n            }\n            var model = filter.getModel();\n            if (utils_1.Utils.exists(model)) {\n                result[key] = model;\n            }\n        });\n        return result;\n    };\n    // returns true if any advanced filter (ie not quick filter) active\n    FilterManager.prototype.isAdvancedFilterPresent = function () {\n        return this.advancedFilterPresent;\n    };\n    FilterManager.prototype.setAdvancedFilterPresent = function () {\n        var atLeastOneActive = false;\n        utils_1.Utils.iterateObject(this.allFilters, function (key, filterWrapper) {\n            if (filterWrapper.filterPromise.resolveNow(false, function (filter) { return filter.isFilterActive(); })) {\n                atLeastOneActive = true;\n            }\n        });\n        this.advancedFilterPresent = atLeastOneActive;\n    };\n    FilterManager.prototype.updateFilterFlagInColumns = function () {\n        utils_1.Utils.iterateObject(this.allFilters, function (key, filterWrapper) {\n            var filterActive = filterWrapper.filterPromise.resolveNow(false, function (filter) { return filter.isFilterActive(); });\n            filterWrapper.column.setFilterActive(filterActive);\n        });\n    };\n    // returns true if quickFilter or advancedFilter\n    FilterManager.prototype.isAnyFilterPresent = function () {\n        return this.isQuickFilterPresent() || this.advancedFilterPresent || this.externalFilterPresent;\n    };\n    FilterManager.prototype.doesFilterPass = function (node, filterToSkip) {\n        var data = node.data;\n        var colKeys = Object.keys(this.allFilters);\n        for (var i = 0, l = colKeys.length; i < l; i++) {\n            var colId = colKeys[i];\n            var filterWrapper = this.allFilters[colId];\n            // if no filter, always pass\n            if (filterWrapper === undefined) {\n                continue;\n            }\n            var filter = filterWrapper.filterPromise.resolveNow(undefined, function (filter) { return filter; });\n            // if filter not yet there, continue\n            if (filter === undefined) {\n                continue;\n            }\n            if (filter === filterToSkip) {\n                continue;\n            }\n            // don't bother with filters that are not active\n            if (!filter.isFilterActive()) {\n                continue;\n            }\n            if (!filter.doesFilterPass) {\n                console.error('Filter is missing method doesFilterPass');\n            }\n            var params = {\n                node: node,\n                data: data\n            };\n            if (!filter.doesFilterPass(params)) {\n                return false;\n            }\n        }\n        // all filters passed\n        return true;\n    };\n    FilterManager.prototype.parseQuickFilter = function (newFilter) {\n        if (utils_1.Utils.missing(newFilter) || newFilter === \"\") {\n            return null;\n        }\n        if (this.gridOptionsWrapper.isRowModelInfinite()) {\n            console.warn('ag-grid: cannot do quick filtering when doing virtual paging');\n            return null;\n        }\n        return newFilter.toUpperCase();\n    };\n    // returns true if it has changed (not just same value again)\n    FilterManager.prototype.setQuickFilter = function (newFilter) {\n        var parsedFilter = this.parseQuickFilter(newFilter);\n        if (this.quickFilter !== parsedFilter) {\n            this.quickFilter = parsedFilter;\n            this.onFilterChanged();\n        }\n    };\n    FilterManager.prototype.checkExternalFilter = function () {\n        this.externalFilterPresent = this.gridOptionsWrapper.isExternalFilterPresent();\n    };\n    FilterManager.prototype.onFilterChanged = function () {\n        this.setAdvancedFilterPresent();\n        this.updateFilterFlagInColumns();\n        this.checkExternalFilter();\n        utils_1.Utils.iterateObject(this.allFilters, function (key, filterWrapper) {\n            filterWrapper.filterPromise.then(function (filter) {\n                if (filter.onAnyFilterChanged) {\n                    filter.onAnyFilterChanged();\n                }\n            });\n        });\n        var event = {\n            type: events_1.Events.EVENT_FILTER_CHANGED,\n            api: this.gridApi,\n            columnApi: this.columnApi\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    FilterManager.prototype.isQuickFilterPresent = function () {\n        return this.quickFilter !== null;\n    };\n    FilterManager.prototype.doesRowPassOtherFilters = function (filterToSkip, node) {\n        return this.doesRowPassFilter(node, filterToSkip);\n    };\n    FilterManager.prototype.doesRowPassQuickFilterNoCache = function (node) {\n        var _this = this;\n        var columns = this.columnController.getAllPrimaryColumns();\n        var filterPasses = false;\n        columns.forEach(function (column) {\n            if (filterPasses) {\n                return;\n            }\n            var part = _this.getQuickFilterTextForColumn(column, node);\n            if (utils_1.Utils.exists(part)) {\n                if (part.indexOf(_this.quickFilter) >= 0) {\n                    filterPasses = true;\n                }\n            }\n        });\n        return filterPasses;\n    };\n    FilterManager.prototype.doesRowPassQuickFilterCache = function (node) {\n        if (!node.quickFilterAggregateText) {\n            this.aggregateRowForQuickFilter(node);\n        }\n        var filterPasses = node.quickFilterAggregateText.indexOf(this.quickFilter) >= 0;\n        return filterPasses;\n    };\n    FilterManager.prototype.doesRowPassQuickFilter = function (node) {\n        var filterPasses;\n        if (this.gridOptionsWrapper.isCacheQuickFilter()) {\n            filterPasses = this.doesRowPassQuickFilterCache(node);\n        }\n        else {\n            filterPasses = this.doesRowPassQuickFilterNoCache(node);\n        }\n        return filterPasses;\n    };\n    FilterManager.prototype.doesRowPassFilter = function (node, filterToSkip) {\n        // the row must pass ALL of the filters, so if any of them fail,\n        // we return true. that means if a row passes the quick filter,\n        // but fails the column filter, it fails overall\n        // first up, check quick filter\n        if (this.isQuickFilterPresent()) {\n            if (!this.doesRowPassQuickFilter(node)) {\n                return false;\n            }\n        }\n        // secondly, give the client a chance to reject this row\n        if (this.externalFilterPresent) {\n            if (!this.gridOptionsWrapper.doesExternalFilterPass(node)) {\n                return false;\n            }\n        }\n        // lastly, check our internal advanced filter\n        if (this.advancedFilterPresent) {\n            if (!this.doesFilterPass(node, filterToSkip)) {\n                return false;\n            }\n        }\n        // got this far, all filters pass\n        return true;\n    };\n    FilterManager.prototype.getQuickFilterTextForColumn = function (column, rowNode) {\n        var value = this.valueService.getValue(column, rowNode);\n        var valueAfterCallback;\n        var colDef = column.getColDef();\n        if (column.getColDef().getQuickFilterText) {\n            var params = {\n                value: value,\n                node: rowNode,\n                data: rowNode.data,\n                column: column,\n                colDef: colDef\n            };\n            valueAfterCallback = column.getColDef().getQuickFilterText(params);\n        }\n        else {\n            valueAfterCallback = value;\n        }\n        if (valueAfterCallback && valueAfterCallback !== '') {\n            return valueAfterCallback.toString().toUpperCase();\n        }\n        else {\n            return null;\n        }\n    };\n    FilterManager.prototype.aggregateRowForQuickFilter = function (node) {\n        var _this = this;\n        var stringParts = [];\n        var columns = this.columnController.getAllPrimaryColumns();\n        columns.forEach(function (column) {\n            var part = _this.getQuickFilterTextForColumn(column, node);\n            if (utils_1.Utils.exists(part)) {\n                stringParts.push(part);\n            }\n        });\n        node.quickFilterAggregateText = stringParts.join(FilterManager_1.QUICK_FILTER_SEPARATOR);\n    };\n    FilterManager.prototype.onNewRowsLoaded = function () {\n        utils_1.Utils.iterateObject(this.allFilters, function (key, filterWrapper) {\n            filterWrapper.filterPromise.then(function (filter) {\n                if (filter.onNewRowsLoaded) {\n                    filter.onNewRowsLoaded();\n                }\n            });\n        });\n        this.updateFilterFlagInColumns();\n        this.setAdvancedFilterPresent();\n    };\n    FilterManager.prototype.createValueGetter = function (column) {\n        var that = this;\n        return function valueGetter(node) {\n            return that.valueService.getValue(column, node);\n        };\n    };\n    FilterManager.prototype.getFilterComponent = function (column) {\n        var filterWrapper = this.getOrCreateFilterWrapper(column);\n        return filterWrapper.filterPromise;\n    };\n    FilterManager.prototype.getOrCreateFilterWrapper = function (column) {\n        var filterWrapper = this.cachedFilter(column);\n        if (!filterWrapper) {\n            filterWrapper = this.createFilterWrapper(column);\n            this.allFilters[column.getColId()] = filterWrapper;\n        }\n        return filterWrapper;\n    };\n    FilterManager.prototype.cachedFilter = function (column) {\n        return this.allFilters[column.getColId()];\n    };\n    FilterManager.prototype.createFilterInstance = function (column, $scope) {\n        var _this = this;\n        var defaultFilter = 'agTextColumnFilter';\n        if (this.gridOptionsWrapper.isEnterprise()) {\n            defaultFilter = 'agSetColumnFilter';\n        }\n        var sanitisedColDef = utils_1.Utils.cloneObject(column.getColDef());\n        var event = {\n            type: events_1.Events.EVENT_FILTER_MODIFIED,\n            api: this.gridApi,\n            columnApi: this.columnApi\n        };\n        var filterChangedCallback = this.onFilterChanged.bind(this);\n        var filterModifiedCallback = function () { return _this.eventService.dispatchEvent(event); };\n        var params = {\n            column: column,\n            colDef: sanitisedColDef,\n            rowModel: this.rowModel,\n            filterChangedCallback: filterChangedCallback,\n            filterModifiedCallback: filterModifiedCallback,\n            valueGetter: this.createValueGetter(column),\n            context: this.gridOptionsWrapper.getContext(),\n            doesRowPassOtherFilter: null,\n            $scope: $scope\n        };\n        return this.componentResolver.createAgGridComponent(sanitisedColDef, params, 'filter', defaultFilter, true, function (params, filter) { return utils_1.Utils.assign(params, {\n            doesRowPassOtherFilter: _this.doesRowPassOtherFilters.bind(_this, filter),\n        }); });\n    };\n    FilterManager.prototype.createFilterWrapper = function (column) {\n        var filterWrapper = {\n            column: column,\n            filterPromise: null,\n            scope: null,\n            guiPromise: utils_1.Promise.external()\n        };\n        filterWrapper.scope = this.gridOptionsWrapper.isAngularCompileFilters() ? this.$scope.$new() : null;\n        filterWrapper.filterPromise = this.createFilterInstance(column, filterWrapper.scope);\n        this.putIntoGui(filterWrapper);\n        return filterWrapper;\n    };\n    FilterManager.prototype.putIntoGui = function (filterWrapper) {\n        var _this = this;\n        var eFilterGui = document.createElement('div');\n        eFilterGui.className = 'ag-filter';\n        filterWrapper.filterPromise.then(function (filter) {\n            var guiFromFilter = filter.getGui();\n            // for backwards compatibility with Angular 1 - we\n            // used to allow providing back HTML from getGui().\n            // once we move away from supporting Angular 1\n            // directly, we can change this.\n            if (typeof guiFromFilter === 'string') {\n                guiFromFilter = utils_1.Utils.loadTemplate(guiFromFilter);\n            }\n            eFilterGui.appendChild(guiFromFilter);\n            if (filterWrapper.scope) {\n                _this.$compile(eFilterGui)(filterWrapper.scope);\n                setTimeout(function () { return filterWrapper.scope.$apply(); }, 0);\n            }\n            filterWrapper.guiPromise.resolve(eFilterGui);\n        });\n    };\n    FilterManager.prototype.onNewColumnsLoaded = function () {\n        this.destroy();\n    };\n    // destroys the filter, so it not longer takes part\n    FilterManager.prototype.destroyFilter = function (column) {\n        var filterWrapper = this.allFilters[column.getColId()];\n        if (filterWrapper) {\n            this.disposeFilterWrapper(filterWrapper);\n            this.onFilterChanged();\n        }\n    };\n    FilterManager.prototype.disposeFilterWrapper = function (filterWrapper) {\n        var _this = this;\n        filterWrapper.filterPromise.then(function (filter) {\n            filter.setModel(null);\n            if (filter.destroy) {\n                filter.destroy();\n            }\n            filterWrapper.column.setFilterActive(false);\n            if (filterWrapper.scope) {\n                filterWrapper.scope.$destroy();\n            }\n            delete _this.allFilters[filterWrapper.column.getColId()];\n        });\n    };\n    FilterManager.prototype.destroy = function () {\n        var _this = this;\n        utils_1.Utils.iterateObject(this.allFilters, function (key, filterWrapper) {\n            _this.disposeFilterWrapper(filterWrapper);\n        });\n    };\n    FilterManager.QUICK_FILTER_SEPARATOR = '\\n';\n    __decorate([\n        context_1.Autowired('$compile'),\n        __metadata(\"design:type\", Object)\n    ], FilterManager.prototype, \"$compile\", void 0);\n    __decorate([\n        context_1.Autowired('$scope'),\n        __metadata(\"design:type\", Object)\n    ], FilterManager.prototype, \"$scope\", void 0);\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], FilterManager.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('gridCore'),\n        __metadata(\"design:type\", Object)\n    ], FilterManager.prototype, \"gridCore\", void 0);\n    __decorate([\n        context_1.Autowired('popupService'),\n        __metadata(\"design:type\", popupService_1.PopupService)\n    ], FilterManager.prototype, \"popupService\", void 0);\n    __decorate([\n        context_1.Autowired('valueService'),\n        __metadata(\"design:type\", valueService_1.ValueService)\n    ], FilterManager.prototype, \"valueService\", void 0);\n    __decorate([\n        context_1.Autowired('columnController'),\n        __metadata(\"design:type\", columnController_1.ColumnController)\n    ], FilterManager.prototype, \"columnController\", void 0);\n    __decorate([\n        context_1.Autowired('rowModel'),\n        __metadata(\"design:type\", Object)\n    ], FilterManager.prototype, \"rowModel\", void 0);\n    __decorate([\n        context_1.Autowired('eventService'),\n        __metadata(\"design:type\", eventService_1.EventService)\n    ], FilterManager.prototype, \"eventService\", void 0);\n    __decorate([\n        context_1.Autowired('enterprise'),\n        __metadata(\"design:type\", Boolean)\n    ], FilterManager.prototype, \"enterprise\", void 0);\n    __decorate([\n        context_1.Autowired('context'),\n        __metadata(\"design:type\", context_1.Context)\n    ], FilterManager.prototype, \"context\", void 0);\n    __decorate([\n        context_1.Autowired('columnApi'),\n        __metadata(\"design:type\", columnController_1.ColumnApi)\n    ], FilterManager.prototype, \"columnApi\", void 0);\n    __decorate([\n        context_1.Autowired('gridApi'),\n        __metadata(\"design:type\", gridApi_1.GridApi)\n    ], FilterManager.prototype, \"gridApi\", void 0);\n    __decorate([\n        context_1.Autowired('componentResolver'),\n        __metadata(\"design:type\", componentResolver_1.ComponentResolver)\n    ], FilterManager.prototype, \"componentResolver\", void 0);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], FilterManager.prototype, \"init\", null);\n    __decorate([\n        context_1.PreDestroy,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], FilterManager.prototype, \"destroy\", null);\n    FilterManager = FilterManager_1 = __decorate([\n        context_1.Bean('filterManager')\n    ], FilterManager);\n    return FilterManager;\n    var FilterManager_1;\n}());\nexports.FilterManager = FilterManager;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/filter/filterManager.js\n// module id = 43\n// module chunks = 0","function redirect(url) {\n  global.window.location = url;\n}\n\nfunction getDocument() {\n  return global.window.document;\n}\n\nfunction getWindow() {\n  return global.window;\n}\n\nmodule.exports = {\n  redirect: redirect,\n  getDocument: getDocument,\n  getWindow: getWindow\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/auth0-js/src/helper/window.js\n// module id = 44\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../../context/context\");\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar filterManager_1 = require(\"../../filter/filterManager\");\nvar componentResolver_1 = require(\"./componentResolver\");\nvar ComponentType;\n(function (ComponentType) {\n    ComponentType[ComponentType[\"AG_GRID\"] = 0] = \"AG_GRID\";\n    ComponentType[ComponentType[\"FRAMEWORK\"] = 1] = \"FRAMEWORK\";\n})(ComponentType || (ComponentType = {}));\nvar ComponentRecipes = (function () {\n    function ComponentRecipes() {\n    }\n    ComponentRecipes.prototype.newDateComponent = function (params) {\n        return this.componentResolver.createAgGridComponent(this.gridOptions, params, \"dateComponent\", \"agDateInput\");\n    };\n    ComponentRecipes.prototype.newHeaderComponent = function (params) {\n        return this.componentResolver.createAgGridComponent(params.column.getColDef(), params, \"headerComponent\", \"agColumnHeader\");\n    };\n    ComponentRecipes.prototype.newHeaderGroupComponent = function (params) {\n        return this.componentResolver.createAgGridComponent(params.columnGroup.getColGroupDef(), params, \"headerGroupComponent\", \"agColumnGroupHeader\");\n    };\n    ComponentRecipes.prototype.newFloatingFilterComponent = function (typeRaw, colDef, params) {\n        var type = typeRaw;\n        //type if populated must be one of ['set','number','text','date']\n        if (typeRaw.indexOf('ag') === 0) {\n            var filterPos = typeRaw.length - \"Filter\".length;\n            if (typeRaw.indexOf('Filter') === filterPos) {\n                type = typeRaw.substr(0, filterPos);\n            }\n        }\n        var floatingFilterName = type + \"FloatingFilter\";\n        return this.componentResolver.createAgGridComponent(colDef, params, \"floatingFilterComponent\", floatingFilterName, false);\n    };\n    ComponentRecipes.prototype.newFloatingFilterWrapperComponent = function (column, params) {\n        var _this = this;\n        var colDef = column.getColDef();\n        if (colDef.suppressFilter) {\n            return this.newEmptyFloatingFilterWrapperComponent(column);\n        }\n        var floatingFilterType;\n        if (typeof colDef.filter === 'string' && this.isBasicFilterType(colDef.filter)) {\n            floatingFilterType = colDef.filter;\n        }\n        else if (!colDef.filter) {\n            floatingFilterType = this.gridOptionsWrapper.isEnterprise() ? 'agSetColumnFilter' : 'agTextColumnFilter';\n        }\n        else {\n            floatingFilterType = 'agCustomColumn';\n        }\n        var floatingFilter = this.newFloatingFilterComponent(floatingFilterType, colDef, params);\n        var floatingFilterWrapperComponentParams = {\n            column: column,\n            floatingFilterComp: floatingFilter,\n            suppressFilterButton: this.componentResolver.mergeParams(colDef, 'floatingFilterComponent', params).suppressFilterButton\n        };\n        if (!floatingFilter) {\n            var filterComponent = this.getFilterComponentPrototype(colDef);\n            if (filterComponent && !filterComponent.component.prototype.getModelAsString) {\n                return this.newEmptyFloatingFilterWrapperComponent(column);\n            }\n            var rawModelFn_1 = params.currentParentModel;\n            params.currentParentModel = function () {\n                var parentPromise = _this.filterManager.getFilterComponent(column);\n                return parentPromise.resolveNow(null, function (parent) { return parent.getModelAsString ? parent.getModelAsString(rawModelFn_1()) : null; });\n            };\n            floatingFilterWrapperComponentParams.floatingFilterComp = this.newFloatingFilterComponent('agReadModelAsString', colDef, params);\n        }\n        return this.componentResolver.createAgGridComponent(colDef, floatingFilterWrapperComponentParams, \"floatingFilterWrapper\", \"agFloatingFilterWrapper\");\n    };\n    ComponentRecipes.prototype.isBasicFilterType = function (type) {\n        switch (type) {\n            case 'text':\n            case 'agTextColumnFilter':\n            case 'number':\n            case 'agNumberColumnFilter':\n            case 'date':\n            case 'agDateColumnFilter':\n            case 'set':\n            case 'agSetColumnFilter':\n                return true;\n            default:\n                return false;\n        }\n    };\n    ComponentRecipes.prototype.newFullWidthGroupRowInnerCellRenderer = function (params) {\n        return this.componentResolver.createAgGridComponent(this.gridOptions, params, \"groupRowInnerRenderer\", \"agGroupRowInnerCellRenderer\", false);\n    };\n    ComponentRecipes.prototype.newCellRenderer = function (target, params) {\n        return this.componentResolver.createAgGridComponent(target, params, \"cellRenderer\", \"agCellRenderer\", false);\n    };\n    ComponentRecipes.prototype.newInnerCellRenderer = function (target, params) {\n        return this.componentResolver.createAgGridComponent(target, params, \"innerRenderer\", \"agInnerCellRenderer\");\n    };\n    ComponentRecipes.prototype.newFullRowGroupRenderer = function (params) {\n        return this.componentResolver.createAgGridComponent(this.gridOptionsWrapper, params, \"fullWidthCellRenderer\", \"agFullWidthCellRenderer\");\n    };\n    ComponentRecipes.prototype.newOverlayWrapperComponent = function () {\n        return this.componentResolver.createAgGridComponent(this.gridOptions, null, \"overlayWrapperComponent\", \"agOverlayWrapper\");\n    };\n    ComponentRecipes.prototype.newLoadingOverlayComponent = function () {\n        return this.componentResolver.createAgGridComponent(this.gridOptions, null, \"loadingOverlayComponent\", \"agLoadingOverlay\");\n    };\n    ComponentRecipes.prototype.newNoRowsOverlayComponent = function () {\n        return this.componentResolver.createAgGridComponent(this.gridOptions, null, \"noRowsOverlayComponent\", \"agNoRowsOverlay\");\n    };\n    ComponentRecipes.prototype.getFilterComponentPrototype = function (colDef) {\n        return this.componentResolver.getComponentToUse(colDef, \"filter\", \"agFilter\");\n    };\n    ComponentRecipes.prototype.newEmptyFloatingFilterWrapperComponent = function (column) {\n        var floatingFilterWrapperComponentParams = {\n            column: column,\n            floatingFilterComp: null\n        };\n        return this.componentResolver.createAgGridComponent(column.getColDef(), floatingFilterWrapperComponentParams, \"floatingFilterWrapper\", \"agEmptyFloatingFilterWrapper\");\n    };\n    __decorate([\n        context_1.Autowired(\"componentResolver\"),\n        __metadata(\"design:type\", componentResolver_1.ComponentResolver)\n    ], ComponentRecipes.prototype, \"componentResolver\", void 0);\n    __decorate([\n        context_1.Autowired(\"gridOptions\"),\n        __metadata(\"design:type\", Object)\n    ], ComponentRecipes.prototype, \"gridOptions\", void 0);\n    __decorate([\n        context_1.Autowired(\"gridOptionsWrapper\"),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], ComponentRecipes.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('filterManager'),\n        __metadata(\"design:type\", filterManager_1.FilterManager)\n    ], ComponentRecipes.prototype, \"filterManager\", void 0);\n    ComponentRecipes = __decorate([\n        context_1.Bean('componentRecipes')\n    ], ComponentRecipes);\n    return ComponentRecipes;\n}());\nexports.ComponentRecipes = ComponentRecipes;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/components/framework/componentRecipes.js\n// module id = 45\n// module chunks = 0","\"use strict\";\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 */\n\nfunction makeEmptyFunction(arg) {\n  return function () {\n    return arg;\n  };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n  return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n  return arg;\n};\n\nmodule.exports = emptyFunction;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/emptyFunction.js\n// module id = 46\n// module chunks = 0","import Provider, { createProvider } from './components/Provider';\nimport connectAdvanced from './components/connectAdvanced';\nimport connect from './connect/connect';\n\nexport { Provider, createProvider, connectAdvanced, connect };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-redux/es/index.js\n// module id = 47\n// module chunks = 0","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n  var IS_FORCED = type & $export.F;\n  var IS_GLOBAL = type & $export.G;\n  var IS_STATIC = type & $export.S;\n  var IS_PROTO = type & $export.P;\n  var IS_BIND = type & $export.B;\n  var IS_WRAP = type & $export.W;\n  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n  var expProto = exports[PROTOTYPE];\n  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n  var key, own, out;\n  if (IS_GLOBAL) source = name;\n  for (key in source) {\n    // contains in native\n    own = !IS_FORCED && target && target[key] !== undefined;\n    if (own && key in exports) continue;\n    // export native or passed\n    out = own ? target[key] : source[key];\n    // prevent global pollution for namespaces\n    exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n    // bind timers to global for call from export context\n    : IS_BIND && own ? ctx(out, global)\n    // wrap global constructors for prevent change them in library\n    : IS_WRAP && target[key] == out ? (function (C) {\n      var F = function (a, b, c) {\n        if (this instanceof C) {\n          switch (arguments.length) {\n            case 0: return new C();\n            case 1: return new C(a);\n            case 2: return new C(a, b);\n          } return new C(a, b, c);\n        } return C.apply(this, arguments);\n      };\n      F[PROTOTYPE] = C[PROTOTYPE];\n      return F;\n    // make static versions for prototype methods\n    })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n    if (IS_PROTO) {\n      (exports.virtual || (exports.virtual = {}))[key] = out;\n      // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n      if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n    }\n  }\n};\n// type bitmap\n$export.F = 1;   // forced\n$export.G = 2;   // global\n$export.S = 4;   // static\n$export.P = 8;   // proto\n$export.B = 16;  // bind\n$export.W = 32;  // wrap\n$export.U = 64;  // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_export.js\n// module id = 48\n// module chunks = 0","// 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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_global.js\n// module id = 49\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-helpers/util/inDOM.js\n// module id = 50\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar gridRow_1 = require(\"./gridRow\");\nvar GridCell = (function () {\n    function GridCell(gridCellDef) {\n        this.rowIndex = gridCellDef.rowIndex;\n        this.column = gridCellDef.column;\n        this.floating = utils_1.Utils.makeNull(gridCellDef.floating);\n    }\n    GridCell.prototype.getGridCellDef = function () {\n        return {\n            rowIndex: this.rowIndex,\n            column: this.column,\n            floating: this.floating\n        };\n    };\n    GridCell.prototype.getGridRow = function () {\n        return new gridRow_1.GridRow(this.rowIndex, this.floating);\n    };\n    GridCell.prototype.toString = function () {\n        return \"rowIndex = \" + this.rowIndex + \", floating = \" + this.floating + \", column = \" + (this.column ? this.column.getId() : null);\n    };\n    GridCell.prototype.createId = function () {\n        return this.rowIndex + \".\" + this.floating + \".\" + this.column.getId();\n    };\n    return GridCell;\n}());\nexports.GridCell = GridCell;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/entities/gridCell.js\n// module id = 51\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"./context/context\");\nvar eventService_1 = require(\"./eventService\");\nvar events_1 = require(\"./events\");\nvar gridOptionsWrapper_1 = require(\"./gridOptionsWrapper\");\nvar columnController_1 = require(\"./columnController/columnController\");\nvar utils_1 = require(\"./utils\");\nvar gridCell_1 = require(\"./entities/gridCell\");\nvar gridApi_1 = require(\"./gridApi\");\nvar cellComp_1 = require(\"./rendering/cellComp\");\nvar FocusedCellController = (function () {\n    function FocusedCellController() {\n    }\n    FocusedCellController.prototype.init = function () {\n        this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.clearFocusedCell.bind(this));\n        this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_EVERYTHING_CHANGED, this.clearFocusedCell.bind(this));\n        this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_GROUP_OPENED, this.clearFocusedCell.bind(this));\n        this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_MOVED, this.clearFocusedCell.bind(this));\n        this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_PINNED, this.clearFocusedCell.bind(this));\n        this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.clearFocusedCell.bind(this));\n        this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_VISIBLE, this.clearFocusedCell.bind(this));\n    };\n    FocusedCellController.prototype.clearFocusedCell = function () {\n        this.focusedCell = null;\n        this.onCellFocused(false);\n    };\n    FocusedCellController.prototype.getFocusedCell = function () {\n        return this.focusedCell;\n    };\n    // we check if the browser is focusing something, and if it is, and\n    // it's the cell we think is focused, then return the cell. so this\n    // methods returns the cell if a) we think it has focus and b) the\n    // browser thinks it has focus. this then returns nothing if we\n    // first focus a cell, then second click outside the grid, as then the\n    // grid cell will still be focused as far as the grid is concerned,\n    // however the browser focus will have moved somewhere else.\n    FocusedCellController.prototype.getFocusCellToUseAfterRefresh = function () {\n        if (this.gridOptionsWrapper.isSuppressFocusAfterRefresh()) {\n            return null;\n        }\n        if (!this.focusedCell) {\n            return null;\n        }\n        var browserFocusedCell = this.getGridCellForDomElement(document.activeElement);\n        if (!browserFocusedCell) {\n            return null;\n        }\n        var gridFocusId = this.focusedCell.createId();\n        var browserFocusId = browserFocusedCell.createId();\n        if (gridFocusId === browserFocusId) {\n            return this.focusedCell;\n        }\n        else {\n            return null;\n        }\n    };\n    FocusedCellController.prototype.getGridCellForDomElement = function (eBrowserCell) {\n        var ePointer = eBrowserCell;\n        while (ePointer) {\n            var cellComp = this.gridOptionsWrapper.getDomData(ePointer, cellComp_1.CellComp.DOM_DATA_KEY_CELL_COMP);\n            if (cellComp) {\n                return cellComp.getGridCell();\n            }\n            ePointer = ePointer.parentNode;\n        }\n        return null;\n    };\n    FocusedCellController.prototype.setFocusedCell = function (rowIndex, colKey, floating, forceBrowserFocus) {\n        if (forceBrowserFocus === void 0) { forceBrowserFocus = false; }\n        if (this.gridOptionsWrapper.isSuppressCellSelection()) {\n            return;\n        }\n        var column = utils_1.Utils.makeNull(this.columnController.getGridColumn(colKey));\n        this.focusedCell = new gridCell_1.GridCell({ rowIndex: rowIndex,\n            floating: utils_1.Utils.makeNull(floating),\n            column: column });\n        this.onCellFocused(forceBrowserFocus);\n    };\n    FocusedCellController.prototype.isCellFocused = function (gridCell) {\n        if (utils_1.Utils.missing(this.focusedCell)) {\n            return false;\n        }\n        return this.focusedCell.column === gridCell.column && this.isRowFocused(gridCell.rowIndex, gridCell.floating);\n    };\n    FocusedCellController.prototype.isRowNodeFocused = function (rowNode) {\n        return this.isRowFocused(rowNode.rowIndex, rowNode.rowPinned);\n    };\n    FocusedCellController.prototype.isAnyCellFocused = function () {\n        return !!this.focusedCell;\n    };\n    FocusedCellController.prototype.isRowFocused = function (rowIndex, floating) {\n        if (utils_1.Utils.missing(this.focusedCell)) {\n            return false;\n        }\n        var floatingOrNull = utils_1.Utils.makeNull(floating);\n        return this.focusedCell.rowIndex === rowIndex && this.focusedCell.floating === floatingOrNull;\n    };\n    FocusedCellController.prototype.onCellFocused = function (forceBrowserFocus) {\n        var event = {\n            type: events_1.Events.EVENT_CELL_FOCUSED,\n            forceBrowserFocus: forceBrowserFocus,\n            rowIndex: null,\n            column: null,\n            floating: null,\n            api: this.gridApi,\n            columnApi: this.columnApi,\n            rowPinned: null\n        };\n        if (this.focusedCell) {\n            event.rowIndex = this.focusedCell.rowIndex;\n            event.column = this.focusedCell.column;\n            event.rowPinned = this.focusedCell.floating;\n        }\n        this.eventService.dispatchEvent(event);\n    };\n    __decorate([\n        context_1.Autowired('eventService'),\n        __metadata(\"design:type\", eventService_1.EventService)\n    ], FocusedCellController.prototype, \"eventService\", void 0);\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], FocusedCellController.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('columnController'),\n        __metadata(\"design:type\", columnController_1.ColumnController)\n    ], FocusedCellController.prototype, \"columnController\", void 0);\n    __decorate([\n        context_1.Autowired('columnApi'),\n        __metadata(\"design:type\", columnController_1.ColumnApi)\n    ], FocusedCellController.prototype, \"columnApi\", void 0);\n    __decorate([\n        context_1.Autowired('gridApi'),\n        __metadata(\"design:type\", gridApi_1.GridApi)\n    ], FocusedCellController.prototype, \"gridApi\", void 0);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], FocusedCellController.prototype, \"init\", null);\n    FocusedCellController = __decorate([\n        context_1.Bean('focusedCellController')\n    ], FocusedCellController);\n    return FocusedCellController;\n}());\nexports.FocusedCellController = FocusedCellController;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/focusedCellController.js\n// module id = 52\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../../context/context\");\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar utils_1 = require(\"../../utils\");\nvar namedComponentResolver_1 = require(\"./namedComponentResolver\");\nvar agComponentUtils_1 = require(\"./agComponentUtils\");\nvar componentMetadataProvider_1 = require(\"./componentMetadataProvider\");\nvar ComponentType;\n(function (ComponentType) {\n    ComponentType[ComponentType[\"AG_GRID\"] = 0] = \"AG_GRID\";\n    ComponentType[ComponentType[\"FRAMEWORK\"] = 1] = \"FRAMEWORK\";\n})(ComponentType = exports.ComponentType || (exports.ComponentType = {}));\nvar ComponentSource;\n(function (ComponentSource) {\n    ComponentSource[ComponentSource[\"DEFAULT\"] = 0] = \"DEFAULT\";\n    ComponentSource[ComponentSource[\"REGISTERED_BY_NAME\"] = 1] = \"REGISTERED_BY_NAME\";\n    ComponentSource[ComponentSource[\"HARDCODED\"] = 2] = \"HARDCODED\";\n})(ComponentSource = exports.ComponentSource || (exports.ComponentSource = {}));\nvar ComponentResolver = (function () {\n    function ComponentResolver() {\n    }\n    /**\n     * This method returns the underlying representation of the component to be created. ie for Javascript the\n     * underlying function where we should be calling new into. In case of the frameworks, the framework class\n     * object that represents the component to be created.\n     *\n     * This method is handy for different reasons, for example if you want to check if a component has a particular\n     * method implemented without having to create the component, just by inspecting the source component\n     *\n     * It takes\n     *  @param holder: This is the context for which this component needs to be created, it can be gridOptions\n     *      (global) or columnDef mostly.\n     *  @param propertyName: The name of the property used in ag-grid as a convention to refer to the component, it can be:\n     *      'floatingFilter', 'cellRenderer', is used to find if the user is specifying a custom component\n     *  @param componentNameOpt: The actual name of the component to instantiate, this is usually the same as propertyName, but in\n     *      some cases is not, like floatingFilter, if it is the same is not necessary to specify\n     *  @param mandatory: Handy method to tell if this should return a component ALWAYS. if that is the case, but there is no\n     *      component found, it throws an error, by default all components are MANDATORY\n     */\n    ComponentResolver.prototype.getComponentToUse = function (holder, propertyName, componentNameOpt) {\n        var componentName = componentNameOpt == null ? propertyName : componentNameOpt;\n        /**\n         * There are five things that can happen when resolving a component.\n         *  a) HardcodedFwComponent: That holder[propertyName]Framework has associated a Framework native component\n         *  b) HardcodedJsComponent: That holder[propertyName] has associate a JS component\n         *  c) hardcodedJsFunction: That holder[propertyName] has associate a JS function\n         *  d) hardcodedNameComponent: That holder[propertyName] has associate a string that represents a component to load\n         *  e) That none of the three previous are specified, then we need to use the DefaultRegisteredComponent\n         */\n        var hardcodedNameComponent = null;\n        var HardcodedJsComponent = null;\n        var hardcodedJsFunction = null;\n        var HardcodedFwComponent = null;\n        if (holder != null) {\n            var componentPropertyValue = holder[propertyName];\n            if (componentPropertyValue != null) {\n                if (typeof componentPropertyValue === 'string') {\n                    hardcodedNameComponent = componentPropertyValue;\n                }\n                else if (this.agComponentUtils.doesImplementIComponent(componentPropertyValue)) {\n                    HardcodedJsComponent = componentPropertyValue;\n                }\n                else {\n                    hardcodedJsFunction = componentPropertyValue;\n                }\n            }\n            HardcodedFwComponent = holder[propertyName + \"Framework\"];\n        }\n        /**\n         * Since we allow many types of flavors for specifying the components, let's make sure this is not an illegal\n         * combination\n         */\n        if ((HardcodedJsComponent && HardcodedFwComponent) ||\n            (hardcodedNameComponent && HardcodedFwComponent) ||\n            (hardcodedJsFunction && HardcodedFwComponent)) {\n            throw Error(\"You are trying to specify: \" + propertyName + \" twice as a component.\");\n        }\n        if (HardcodedFwComponent && !this.frameworkComponentWrapper) {\n            throw Error(\"You are specifying a framework component but you are not using a framework version of ag-grid for : \" + propertyName);\n        }\n        /**\n         * At this stage we are guaranteed to either have,\n         * DEPRECATED\n         * - A unique HardcodedFwComponent\n         * - A unique HardcodedJsComponent\n         * - A unique hardcodedJsFunction\n         * BY NAME- FAVOURED APPROACH\n         * - A unique hardcodedNameComponent\n         * - None of the previous, hence we revert to: RegisteredComponent\n         */\n        if (HardcodedFwComponent) {\n            // console.warn(`ag-grid: Since version 12.1.0 specifying a component directly is deprecated, you should register the component by name`);\n            // console.warn(`${HardcodedFwComponent}`);\n            return {\n                type: ComponentType.FRAMEWORK,\n                component: HardcodedFwComponent,\n                source: ComponentSource.HARDCODED\n            };\n        }\n        if (HardcodedJsComponent) {\n            // console.warn(`ag-grid: Since version 12.1.0 specifying a component directly is deprecated, you should register the component by name`);\n            // console.warn(`${HardcodedJsComponent}`);\n            return {\n                type: ComponentType.AG_GRID,\n                component: HardcodedJsComponent,\n                source: ComponentSource.HARDCODED\n            };\n        }\n        if (hardcodedJsFunction) {\n            // console.warn(`ag-grid: Since version 12.1.0 specifying a function directly is deprecated, you should register the component by name`);\n            // console.warn(`${hardcodedJsFunction}`);\n            return this.agComponentUtils.adaptFunction(propertyName, hardcodedJsFunction, ComponentType.AG_GRID, ComponentSource.HARDCODED);\n        }\n        //^^^^^ABOVE DEPRECATED\n        var componentNameToUse;\n        if (hardcodedNameComponent) {\n            componentNameToUse = hardcodedNameComponent;\n        }\n        else {\n            componentNameToUse = componentName;\n        }\n        return this.namedComponentResolver.resolve(propertyName, componentNameToUse);\n    };\n    /**\n     * Useful to check what would be the resultant params for a given object\n     *  @param holder: This is the context for which this component needs to be created, it can be gridOptions\n     *      (global) or columnDef mostly.\n     *  @param propertyName: The name of the property used in ag-grid as a convention to refer to the component, it can be:\n     *      'floatingFilter', 'cellRenderer', is used to find if the user is specifying a custom component\n     *  @param agGridParams: Params to be passed to the component and passed by ag-Grid. This will get merged with any params\n     *      specified by the user in the configuration\n     * @returns {any} It merges the user agGridParams with the actual params specified by the user.\n     */\n    ComponentResolver.prototype.mergeParams = function (holder, propertyName, agGridParams) {\n        var customParams = holder ? holder[propertyName + \"Params\"] : null;\n        var finalParams = {};\n        utils_1._.mergeDeep(finalParams, agGridParams);\n        utils_1._.mergeDeep(finalParams, customParams);\n        if (!finalParams.api) {\n            finalParams.api = this.gridOptions.api;\n        }\n        return finalParams;\n    };\n    /**\n     * This method creates a component given everything needed to guess what sort of component needs to be instantiated\n     * It takes\n     *  @param holderOpt: This is the context for which this component needs to be created, it can be gridOptions\n     *      (global) or columnDef mostly.\n     *  @param agGridParams: Params to be passed to the component and passed by ag-Grid. This will get merged with any params\n     *      specified by the user in the configuration\n     *  @param propertyName: The name of the property used in ag-grid as a convention to refer to the component, it can be:\n     *      'floatingFilter', 'cellRenderer', is used to find if the user is specifying a custom component\n     *  @param componentNameOpt: The actual name of the component to instantiate, this is usually the same as propertyName, but in\n     *      some cases is not, like floatingFilter, if it is the same is not necessary to specify\n     *  @param mandatory: Handy method to tell if this should return a component ALWAYS. if that is the case, but there is no\n     *      component found, it throws an error, by default all components are MANDATORY\n     *  @param customInitParamsCb: A chance to customise the params passed to the init method. It receives what the current\n     *  params are and the component that init is about to get called for\n     */\n    ComponentResolver.prototype.createAgGridComponent = function (holderOpt, agGridParams, propertyName, componentNameOpt, mandatory, customInitParamsCb) {\n        if (mandatory === void 0) { mandatory = true; }\n        var holder = holderOpt == null ? this.gridOptions : holderOpt;\n        var componentName = componentNameOpt == null ? propertyName : componentNameOpt;\n        //Create the component instance\n        var component = this.newAgGridComponent(holder, propertyName, componentName, mandatory);\n        if (!component)\n            return null;\n        //Wire the component and call the init method with the correct params\n        var finalParams = this.mergeParams(holder, propertyName, agGridParams);\n        this.context.wireBean(component);\n        var deferredInit;\n        if (customInitParamsCb == null) {\n            deferredInit = component.init(finalParams);\n        }\n        else {\n            deferredInit = component.init(customInitParamsCb(finalParams, component));\n        }\n        if (deferredInit == null) {\n            return utils_1.Promise.resolve(component);\n            // return new Promise<A> (resolve=>{\n            //     setTimeout(\n            //         ()=>resolve(component),\n            //         500\n            //     )\n            // })\n        }\n        else {\n            var asPromise = deferredInit;\n            return asPromise.map(function (notRelevant) { return component; });\n        }\n    };\n    ComponentResolver.prototype.newAgGridComponent = function (holder, propertyName, componentName, mandatory) {\n        if (mandatory === void 0) { mandatory = true; }\n        var componentToUse = this.getComponentToUse(holder, propertyName, componentName);\n        if (!componentToUse || !componentToUse.component) {\n            if (mandatory) {\n                console.error(\"Error creating component \" + propertyName + \"=>\" + componentName);\n            }\n            return null;\n        }\n        if (componentToUse.type === ComponentType.AG_GRID) {\n            return new componentToUse.component();\n        }\n        //Using framework component\n        var FrameworkComponentRaw = componentToUse.component;\n        var thisComponentConfig = this.componentMetadataProvider.retrieve(propertyName);\n        return this.frameworkComponentWrapper.wrap(FrameworkComponentRaw, thisComponentConfig.mandatoryMethodList, thisComponentConfig.optionalMethodList, componentName);\n    };\n    __decorate([\n        context_1.Autowired(\"gridOptions\"),\n        __metadata(\"design:type\", Object)\n    ], ComponentResolver.prototype, \"gridOptions\", void 0);\n    __decorate([\n        context_1.Autowired(\"gridOptionsWrapper\"),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], ComponentResolver.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired(\"context\"),\n        __metadata(\"design:type\", context_1.Context)\n    ], ComponentResolver.prototype, \"context\", void 0);\n    __decorate([\n        context_1.Autowired(\"namedComponentResolver\"),\n        __metadata(\"design:type\", namedComponentResolver_1.NamedComponentResolver)\n    ], ComponentResolver.prototype, \"namedComponentResolver\", void 0);\n    __decorate([\n        context_1.Autowired(\"agComponentUtils\"),\n        __metadata(\"design:type\", agComponentUtils_1.AgComponentUtils)\n    ], ComponentResolver.prototype, \"agComponentUtils\", void 0);\n    __decorate([\n        context_1.Autowired(\"componentMetadataProvider\"),\n        __metadata(\"design:type\", componentMetadataProvider_1.ComponentMetadataProvider)\n    ], ComponentResolver.prototype, \"componentMetadataProvider\", void 0);\n    __decorate([\n        context_1.Optional(\"frameworkComponentWrapper\"),\n        __metadata(\"design:type\", Object)\n    ], ComponentResolver.prototype, \"frameworkComponentWrapper\", void 0);\n    ComponentResolver = __decorate([\n        context_1.Bean('componentResolver')\n    ], ComponentResolver);\n    return ComponentResolver;\n}());\nexports.ComponentResolver = ComponentResolver;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/components/framework/componentResolver.js\n// module id = 53\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar logger_1 = require(\"../logger\");\nvar context_1 = require(\"../context/context\");\nvar utils_1 = require(\"../utils\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar dragService_1 = require(\"./dragService\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar environment_1 = require(\"../environment\");\nvar DragSourceType;\n(function (DragSourceType) {\n    DragSourceType[DragSourceType[\"ToolPanel\"] = 0] = \"ToolPanel\";\n    DragSourceType[DragSourceType[\"HeaderCell\"] = 1] = \"HeaderCell\";\n})(DragSourceType = exports.DragSourceType || (exports.DragSourceType = {}));\nvar VDirection;\n(function (VDirection) {\n    VDirection[VDirection[\"Up\"] = 0] = \"Up\";\n    VDirection[VDirection[\"Down\"] = 1] = \"Down\";\n})(VDirection = exports.VDirection || (exports.VDirection = {}));\nvar HDirection;\n(function (HDirection) {\n    HDirection[HDirection[\"Left\"] = 0] = \"Left\";\n    HDirection[HDirection[\"Right\"] = 1] = \"Right\";\n})(HDirection = exports.HDirection || (exports.HDirection = {}));\nvar DragAndDropService = (function () {\n    function DragAndDropService() {\n        this.dragSourceAndParamsList = [];\n        this.dropTargets = [];\n    }\n    DragAndDropService_1 = DragAndDropService;\n    DragAndDropService.prototype.init = function () {\n        this.ePinnedIcon = utils_1.Utils.createIcon('columnMovePin', this.gridOptionsWrapper, null);\n        this.ePlusIcon = utils_1.Utils.createIcon('columnMoveAdd', this.gridOptionsWrapper, null);\n        this.eHiddenIcon = utils_1.Utils.createIcon('columnMoveHide', this.gridOptionsWrapper, null);\n        this.eMoveIcon = utils_1.Utils.createIcon('columnMoveMove', this.gridOptionsWrapper, null);\n        this.eLeftIcon = utils_1.Utils.createIcon('columnMoveLeft', this.gridOptionsWrapper, null);\n        this.eRightIcon = utils_1.Utils.createIcon('columnMoveRight', this.gridOptionsWrapper, null);\n        this.eGroupIcon = utils_1.Utils.createIcon('columnMoveGroup', this.gridOptionsWrapper, null);\n        this.eAggregateIcon = utils_1.Utils.createIcon('columnMoveValue', this.gridOptionsWrapper, null);\n        this.ePivotIcon = utils_1.Utils.createIcon('columnMovePivot', this.gridOptionsWrapper, null);\n        this.eDropNotAllowedIcon = utils_1.Utils.createIcon('dropNotAllowed', this.gridOptionsWrapper, null);\n    };\n    DragAndDropService.prototype.setBeans = function (loggerFactory) {\n        this.logger = loggerFactory.create('OldToolPanelDragAndDropService');\n    };\n    DragAndDropService.prototype.addDragSource = function (dragSource, allowTouch) {\n        if (allowTouch === void 0) { allowTouch = false; }\n        var params = {\n            eElement: dragSource.eElement,\n            onDragStart: this.onDragStart.bind(this, dragSource),\n            onDragStop: this.onDragStop.bind(this),\n            onDragging: this.onDragging.bind(this)\n        };\n        this.dragSourceAndParamsList.push({ params: params, dragSource: dragSource });\n        this.dragService.addDragSource(params, allowTouch);\n    };\n    DragAndDropService.prototype.removeDragSource = function (dragSource) {\n        var sourceAndParams = utils_1.Utils.find(this.dragSourceAndParamsList, function (item) { return item.dragSource === dragSource; });\n        if (sourceAndParams) {\n            this.dragService.removeDragSource(sourceAndParams.params);\n            utils_1.Utils.removeFromArray(this.dragSourceAndParamsList, sourceAndParams);\n        }\n    };\n    DragAndDropService.prototype.destroy = function () {\n        var _this = this;\n        this.dragSourceAndParamsList.forEach(function (sourceAndParams) {\n            _this.dragService.removeDragSource(sourceAndParams.params);\n        });\n        this.dragSourceAndParamsList.length = 0;\n    };\n    DragAndDropService.prototype.nudge = function () {\n        if (this.dragging) {\n            this.onDragging(this.eventLastTime, true);\n        }\n    };\n    DragAndDropService.prototype.onDragStart = function (dragSource, mouseEvent) {\n        this.dragging = true;\n        this.dragSource = dragSource;\n        this.eventLastTime = mouseEvent;\n        this.dragItem = this.dragSource.dragItemCallback();\n        this.dragItem.columns.forEach(function (column) { return column.setMoving(true); });\n        this.lastDropTarget = this.dragSource.dragSourceDropTarget;\n        this.createGhost();\n    };\n    DragAndDropService.prototype.onDragStop = function (mouseEvent) {\n        this.eventLastTime = null;\n        this.dragging = false;\n        this.dragItem.columns.forEach(function (column) { return column.setMoving(false); });\n        if (this.lastDropTarget && this.lastDropTarget.onDragStop) {\n            var draggingEvent = this.createDropTargetEvent(this.lastDropTarget, mouseEvent, null, null, false);\n            this.lastDropTarget.onDragStop(draggingEvent);\n        }\n        this.lastDropTarget = null;\n        this.dragItem = null;\n        this.removeGhost();\n    };\n    DragAndDropService.prototype.onDragging = function (mouseEvent, fromNudge) {\n        var hDirection = this.workOutHDirection(mouseEvent);\n        var vDirection = this.workOutVDirection(mouseEvent);\n        this.eventLastTime = mouseEvent;\n        this.positionGhost(mouseEvent);\n        // check if mouseEvent intersects with any of the drop targets\n        var dropTarget = utils_1.Utils.find(this.dropTargets, this.isMouseOnDropTarget.bind(this, mouseEvent));\n        if (dropTarget !== this.lastDropTarget) {\n            this.leaveLastTargetIfExists(mouseEvent, hDirection, vDirection, fromNudge);\n            this.enterDragTargetIfExists(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n            this.lastDropTarget = dropTarget;\n        }\n        else if (dropTarget) {\n            var draggingEvent = this.createDropTargetEvent(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n            dropTarget.onDragging(draggingEvent);\n        }\n    };\n    DragAndDropService.prototype.enterDragTargetIfExists = function (dropTarget, mouseEvent, hDirection, vDirection, fromNudge) {\n        if (!dropTarget) {\n            return;\n        }\n        var dragEnterEvent = this.createDropTargetEvent(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n        dropTarget.onDragEnter(dragEnterEvent);\n        this.setGhostIcon(dropTarget.getIconName ? dropTarget.getIconName() : null);\n    };\n    DragAndDropService.prototype.leaveLastTargetIfExists = function (mouseEvent, hDirection, vDirection, fromNudge) {\n        if (!this.lastDropTarget) {\n            return;\n        }\n        var dragLeaveEvent = this.createDropTargetEvent(this.lastDropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n        this.lastDropTarget.onDragLeave(dragLeaveEvent);\n        this.setGhostIcon(null);\n    };\n    DragAndDropService.prototype.getAllContainersFromDropTarget = function (dropTarget) {\n        var containers = [dropTarget.getContainer()];\n        var secondaryContainers = dropTarget.getSecondaryContainers ? dropTarget.getSecondaryContainers() : null;\n        if (secondaryContainers) {\n            containers = containers.concat(secondaryContainers);\n        }\n        return containers;\n    };\n    // checks if the mouse is on the drop target. it checks eContainer and eSecondaryContainers\n    DragAndDropService.prototype.isMouseOnDropTarget = function (mouseEvent, dropTarget) {\n        var allContainers = this.getAllContainersFromDropTarget(dropTarget);\n        var gotMatch = false;\n        allContainers.forEach(function (eContainer) {\n            if (!eContainer) {\n                return;\n            } // secondary can be missing\n            var rect = eContainer.getBoundingClientRect();\n            // if element is not visible, then width and height are zero\n            if (rect.width === 0 || rect.height === 0) {\n                return;\n            }\n            var horizontalFit = mouseEvent.clientX >= rect.left && mouseEvent.clientX <= rect.right;\n            var verticalFit = mouseEvent.clientY >= rect.top && mouseEvent.clientY <= rect.bottom;\n            //console.log(`rect.width = ${rect.width} || rect.height = ${rect.height} ## verticalFit = ${verticalFit}, horizontalFit = ${horizontalFit}, `);\n            if (horizontalFit && verticalFit) {\n                gotMatch = true;\n            }\n        });\n        return gotMatch;\n    };\n    DragAndDropService.prototype.addDropTarget = function (dropTarget) {\n        this.dropTargets.push(dropTarget);\n    };\n    DragAndDropService.prototype.workOutHDirection = function (event) {\n        if (this.eventLastTime.clientX > event.clientX) {\n            return HDirection.Left;\n        }\n        else if (this.eventLastTime.clientX < event.clientX) {\n            return HDirection.Right;\n        }\n        else {\n            return null;\n        }\n    };\n    DragAndDropService.prototype.workOutVDirection = function (event) {\n        if (this.eventLastTime.clientY > event.clientY) {\n            return VDirection.Up;\n        }\n        else if (this.eventLastTime.clientY < event.clientY) {\n            return VDirection.Down;\n        }\n        else {\n            return null;\n        }\n    };\n    DragAndDropService.prototype.createDropTargetEvent = function (dropTarget, event, hDirection, vDirection, fromNudge) {\n        // localise x and y to the target component\n        var rect = dropTarget.getContainer().getBoundingClientRect();\n        var x = event.clientX - rect.left;\n        var y = event.clientY - rect.top;\n        var dropTargetEvent = {\n            event: event,\n            x: x,\n            y: y,\n            vDirection: vDirection,\n            hDirection: hDirection,\n            dragSource: this.dragSource,\n            fromNudge: fromNudge,\n            dragItem: this.dragItem\n        };\n        return dropTargetEvent;\n    };\n    DragAndDropService.prototype.positionGhost = function (event) {\n        var ghostRect = this.eGhost.getBoundingClientRect();\n        var ghostHeight = ghostRect.height;\n        // for some reason, without the '-2', it still overlapped by 1 or 2 pixels, which\n        // then brought in scrollbars to the browser. no idea why, but putting in -2 here\n        // works around it which is good enough for me.\n        var browserWidth = utils_1.Utils.getBodyWidth() - 2;\n        var browserHeight = utils_1.Utils.getBodyHeight() - 2;\n        // put ghost vertically in middle of cursor\n        var top = event.pageY - (ghostHeight / 2);\n        // horizontally, place cursor just right of icon\n        var left = event.pageX - 30;\n        var usrDocument = this.gridOptionsWrapper.getDocument();\n        var windowScrollY = window.pageYOffset || usrDocument.documentElement.scrollTop;\n        var windowScrollX = window.pageXOffset || usrDocument.documentElement.scrollLeft;\n        // check ghost is not positioned outside of the browser\n        if (browserWidth > 0) {\n            if ((left + this.eGhost.clientWidth) > (browserWidth + windowScrollX)) {\n                left = browserWidth + windowScrollX - this.eGhost.clientWidth;\n            }\n        }\n        if (left < 0) {\n            left = 0;\n        }\n        if (browserHeight > 0) {\n            if ((top + this.eGhost.clientHeight) > (browserHeight + windowScrollY)) {\n                top = browserHeight + windowScrollY - this.eGhost.clientHeight;\n            }\n        }\n        if (top < 0) {\n            top = 0;\n        }\n        this.eGhost.style.left = left + 'px';\n        this.eGhost.style.top = top + 'px';\n    };\n    DragAndDropService.prototype.removeGhost = function () {\n        if (this.eGhost && this.eGhostParent) {\n            this.eGhostParent.removeChild(this.eGhost);\n        }\n        this.eGhost = null;\n    };\n    DragAndDropService.prototype.createGhost = function () {\n        this.eGhost = utils_1.Utils.loadTemplate(DragAndDropService_1.GHOST_TEMPLATE);\n        this.eGhost.classList.add(this.environment.getTheme());\n        this.eGhostIcon = this.eGhost.querySelector('.ag-dnd-ghost-icon');\n        this.setGhostIcon(null);\n        var eText = this.eGhost.querySelector('.ag-dnd-ghost-label');\n        eText.innerHTML = this.dragSource.dragItemName;\n        this.eGhost.style.height = '25px';\n        this.eGhost.style.top = '20px';\n        this.eGhost.style.left = '20px';\n        var usrDocument = this.gridOptionsWrapper.getDocument();\n        this.eGhostParent = usrDocument.querySelector('body');\n        if (!this.eGhostParent) {\n            console.warn('ag-Grid: could not find document body, it is needed for dragging columns');\n        }\n        else {\n            this.eGhostParent.appendChild(this.eGhost);\n        }\n    };\n    DragAndDropService.prototype.setGhostIcon = function (iconName, shake) {\n        if (shake === void 0) { shake = false; }\n        utils_1.Utils.removeAllChildren(this.eGhostIcon);\n        var eIcon;\n        switch (iconName) {\n            case DragAndDropService_1.ICON_ADD:\n                eIcon = this.ePlusIcon;\n                break;\n            case DragAndDropService_1.ICON_PINNED:\n                eIcon = this.ePinnedIcon;\n                break;\n            case DragAndDropService_1.ICON_MOVE:\n                eIcon = this.eMoveIcon;\n                break;\n            case DragAndDropService_1.ICON_LEFT:\n                eIcon = this.eLeftIcon;\n                break;\n            case DragAndDropService_1.ICON_RIGHT:\n                eIcon = this.eRightIcon;\n                break;\n            case DragAndDropService_1.ICON_GROUP:\n                eIcon = this.eGroupIcon;\n                break;\n            case DragAndDropService_1.ICON_AGGREGATE:\n                eIcon = this.eAggregateIcon;\n                break;\n            case DragAndDropService_1.ICON_PIVOT:\n                eIcon = this.ePivotIcon;\n                break;\n            case DragAndDropService_1.ICON_NOT_ALLOWED:\n                eIcon = this.eDropNotAllowedIcon;\n                break;\n            default:\n                eIcon = this.eHiddenIcon;\n                break;\n        }\n        this.eGhostIcon.appendChild(eIcon);\n        utils_1.Utils.addOrRemoveCssClass(this.eGhostIcon, 'ag-shake-left-to-right', shake);\n    };\n    DragAndDropService.ICON_PINNED = 'pinned';\n    DragAndDropService.ICON_ADD = 'add';\n    DragAndDropService.ICON_MOVE = 'move';\n    DragAndDropService.ICON_LEFT = 'left';\n    DragAndDropService.ICON_RIGHT = 'right';\n    DragAndDropService.ICON_GROUP = 'group';\n    DragAndDropService.ICON_AGGREGATE = 'aggregate';\n    DragAndDropService.ICON_PIVOT = 'pivot';\n    DragAndDropService.ICON_NOT_ALLOWED = 'notAllowed';\n    DragAndDropService.GHOST_TEMPLATE = '<div class=\"ag-dnd-ghost\">' +\n        '  <span class=\"ag-dnd-ghost-icon ag-shake-left-to-right\"></span>' +\n        '  <div class=\"ag-dnd-ghost-label\">' +\n        '  </div>' +\n        '</div>';\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], DragAndDropService.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('dragService'),\n        __metadata(\"design:type\", dragService_1.DragService)\n    ], DragAndDropService.prototype, \"dragService\", void 0);\n    __decorate([\n        context_1.Autowired('environment'),\n        __metadata(\"design:type\", environment_1.Environment)\n    ], DragAndDropService.prototype, \"environment\", void 0);\n    __decorate([\n        context_1.Autowired('columnController'),\n        __metadata(\"design:type\", columnController_1.ColumnController)\n    ], DragAndDropService.prototype, \"columnController\", void 0);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], DragAndDropService.prototype, \"init\", null);\n    __decorate([\n        __param(0, context_1.Qualifier('loggerFactory')),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [logger_1.LoggerFactory]),\n        __metadata(\"design:returntype\", void 0)\n    ], DragAndDropService.prototype, \"setBeans\", null);\n    __decorate([\n        context_1.PreDestroy,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], DragAndDropService.prototype, \"destroy\", null);\n    DragAndDropService = DragAndDropService_1 = __decorate([\n        context_1.Bean('dragAndDropService')\n    ], DragAndDropService);\n    return DragAndDropService;\n    var DragAndDropService_1;\n}());\nexports.DragAndDropService = DragAndDropService;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/dragAndDrop/dragAndDropService.js\n// module id = 54\n// module chunks = 0","/**\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\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n  validateFormat = function validateFormat(format) {\n    if (format === undefined) {\n      throw new Error('invariant requires an error message argument');\n    }\n  };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n  validateFormat(format);\n\n  if (!condition) {\n    var error;\n    if (format === undefined) {\n      error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n    } else {\n      var args = [a, b, c, d, e, f];\n      var argIndex = 0;\n      error = new Error(format.replace(/%s/g, function () {\n        return args[argIndex++];\n      }));\n      error.name = 'Invariant Violation';\n    }\n\n    error.framesToPop = 1; // we don't care about invariant's own frame\n    throw error;\n  }\n}\n\nmodule.exports = invariant;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/invariant.js\n// module id = 55\n// module chunks = 0","const aux = (props) => props.children;\n\nexport default aux;\n\n\n// WEBPACK FOOTER //\n// src/hoc/Aux/Aux.js","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\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-dp.js\n// module id = 57\n// module chunks = 0","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_has.js\n// module id = 58\n// module chunks = 0","// 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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-iobject.js\n// module id = 59\n// module chunks = 0","import history from '../history';\nimport auth0 from 'auth0-js';\nimport { AUTH_CONFIG } from './auth_variables';\n\nexport default class Auth {\n    auth0 = new auth0.WebAuth({\n        domain: AUTH_CONFIG.domain,\n        clientID: AUTH_CONFIG.clientId,\n        redirectUri: AUTH_CONFIG.loginCallbackUrl,\n        audience: AUTH_CONFIG.audience,\n        responseType: AUTH_CONFIG.responseType,\n        scope: AUTH_CONFIG.scope\n    });\n\n\n    constructor() {\n        this.login = this.login.bind(this);\n        this.logout = this.logout.bind(this);\n        this.handleAuthentication = this.handleAuthentication.bind(this);\n        this.isAuthenticated = this.isAuthenticated.bind(this);\n    }\n\n    login() {\n        this.auth0.authorize();\n    }\n\n    handleAuthentication() {\n        this.auth0.parseHash((err, authResult) => {\n            if (authResult && authResult.accessToken && authResult.idToken) {\n                this.setSession(authResult);\n                // console.log('authResult', authResult);\n            } else if (err) {\n                history.replace('/');\n                console.log('error is here', err);\n                alert(`Error: ${err.error}. Check the console for further details.`);\n            }\n        });\n\n    }\n\n    getAccessToken() {\n        const accessToken = localStorage.getItem('access_token');\n        if (!accessToken) {\n            throw new Error('No access token found');\n        }\n        return accessToken;\n    }\n\n    getIdToken() {\n        const id_token = localStorage.getItem('id_token');\n        if (!id_token) {\n            throw new Error('No id token found');\n        }\n        return id_token;\n    }\n\n    getProfile(cb) {\n        let accessToken = this.getAccessToken();\n\n        this.auth0.client.userInfo(accessToken, (err, profile) => {\n            if (profile) {\n                this.userProfile = profile;\n\n            }\n            cb(err, profile);\n        });\n    }\n\n    setSession(authResult) {\n        // Set the time that the access token will expire at\n        let expiresAt = JSON.stringify((authResult.expiresIn * 1000) + new Date().getTime());\n        localStorage.setItem('access_token', authResult.accessToken);\n        localStorage.setItem('id_token', authResult.idToken);\n        localStorage.setItem('expires_at', expiresAt);\n\n\n        // navigate to the home route\n//        history.replace('/home');\n    }\n\n    logout() {\n\n        // Clear access token and ID token from local storage\n        localStorage.removeItem('access_token');\n        localStorage.removeItem('id_token');\n        localStorage.removeItem('expires_at');\n        localStorage.removeItem('glp_token');\n        localStorage.removeItem('auth0.ssodata');\n        // navigate to the home route\n        history.replace('/');\n    }\n\n    isAuthenticated() {\n        // console.log('[isAuthenticated()] -- Auth.js');\n\n        // access token's expiry time\n        let expiresAt = JSON.parse(localStorage.getItem('expires_at'));\n\n        return new Date().getTime() < expiresAt;\n    }\n}\n\n\n\n\n// WEBPACK FOOTER //\n// src/Auth/Auth.js","(function (name, context, definition) {\n  if (typeof module !== 'undefined' && module.exports) module.exports = definition();\n  else if (typeof define === 'function' && define.amd) define(definition);\n  else context[name] = definition();\n})('urljoin', this, function () {\n\n  function normalize (str, options) {\n\n    // make sure protocol is followed by two slashes\n    str = str.replace(/:\\//g, '://');\n\n    // remove consecutive slashes\n    str = str.replace(/([^:\\s])\\/+/g, '$1/');\n\n    // remove trailing slash before parameters or hash\n    str = str.replace(/\\/(\\?|&|#[^!])/g, '$1');\n\n    // replace ? in parameters with &\n    str = str.replace(/(\\?.+)\\?/g, '$1&');\n\n    return str;\n  }\n\n  return function () {\n    var input = arguments;\n    var options = {};\n\n    if (typeof arguments[0] === 'object') {\n      // new syntax with array and options\n      input = arguments[0];\n      options = arguments[1] || {};\n    }\n\n    var joined = [].slice.call(input, 0).join('/');\n    return normalize(joined, options);\n  };\n\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/url-join/lib/url-join.js\n// module id = 61\n// module chunks = 0","var toString = Object.prototype.toString;\n\nfunction attribute(o, attr, type, text) {\n  type = type === 'array' ? 'object' : type;\n  if (o && typeof o[attr] !== type) {\n    throw new Error(text);\n  }\n}\n\nfunction variable(o, type, text) {\n  if (typeof o !== type) {\n    throw new Error(text);\n  }\n}\n\nfunction value(o, values, text) {\n  if (values.indexOf(o) === -1) {\n    throw new Error(text);\n  }\n}\n\nfunction check(o, config, attributes) {\n  if (!config.optional || o) {\n    variable(o, config.type, config.message);\n  }\n  if (config.type === 'object' && attributes) {\n    var keys = Object.keys(attributes);\n\n    for (var index = 0; index < keys.length; index++) {\n      var a = keys[index];\n      if (!attributes[a].optional || o[a]) {\n        if (!attributes[a].condition || attributes[a].condition(o)) {\n          attribute(o, a, attributes[a].type, attributes[a].message);\n          if (attributes[a].values) {\n            value(o[a], attributes[a].values, attributes[a].value_message);\n          }\n        }\n      }\n    }\n  }\n}\n\n/**\n * Wrap `Array.isArray` Polyfill for IE9\n * source: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray\n *\n * @param {Array} array\n * @private\n */\nfunction isArray(array) {\n  if (this.supportsIsArray()) {\n    return Array.isArray(array);\n  }\n\n  return toString.call(array) === '[object Array]';\n}\n\nfunction supportsIsArray() {\n  return Array.isArray != null;\n}\n\nmodule.exports = {\n  check: check,\n  attribute: attribute,\n  variable: variable,\n  value: value,\n  isArray: isArray,\n  supportsIsArray: supportsIsArray\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/auth0-js/src/helper/assert.js\n// module id = 62\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar column_1 = require(\"./column\");\nvar eventService_1 = require(\"../eventService\");\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar gridApi_1 = require(\"../gridApi\");\nvar ColumnGroup = (function () {\n    function ColumnGroup(originalColumnGroup, groupId, instanceId) {\n        // depends on the open/closed state of the group, only displaying columns are stored here\n        this.displayedChildren = [];\n        this.localEventService = new eventService_1.EventService();\n        this.groupId = groupId;\n        this.instanceId = instanceId;\n        this.originalColumnGroup = originalColumnGroup;\n    }\n    // this is static, a it is used outside of this class\n    ColumnGroup.createUniqueId = function (groupId, instanceId) {\n        return groupId + '_' + instanceId;\n    };\n    // as the user is adding and removing columns, the groups are recalculated.\n    // this reset clears out all children, ready for children to be added again\n    ColumnGroup.prototype.reset = function () {\n        this.parent = null;\n        this.children = null;\n        this.displayedChildren = null;\n    };\n    ColumnGroup.prototype.getParent = function () {\n        return this.parent;\n    };\n    ColumnGroup.prototype.setParent = function (parent) {\n        this.parent = parent;\n    };\n    ColumnGroup.prototype.getUniqueId = function () {\n        return ColumnGroup.createUniqueId(this.groupId, this.instanceId);\n    };\n    ColumnGroup.prototype.isEmptyGroup = function () {\n        return this.displayedChildren.length === 0;\n    };\n    ColumnGroup.prototype.checkLeft = function () {\n        // first get all children to setLeft, as it impacts our decision below\n        this.displayedChildren.forEach(function (child) {\n            if (child instanceof ColumnGroup) {\n                child.checkLeft();\n            }\n        });\n        // set our left based on first displayed column\n        if (this.displayedChildren.length > 0) {\n            if (this.gridOptionsWrapper.isEnableRtl()) {\n                var lastChild = this.displayedChildren[this.displayedChildren.length - 1];\n                var lastChildLeft = lastChild.getLeft();\n                this.setLeft(lastChildLeft);\n            }\n            else {\n                var firstChildLeft = this.displayedChildren[0].getLeft();\n                this.setLeft(firstChildLeft);\n            }\n        }\n        else {\n            // this should never happen, as if we have no displayed columns, then\n            // this groups should not even exist.\n            this.setLeft(null);\n        }\n    };\n    ColumnGroup.prototype.getLeft = function () {\n        return this.left;\n    };\n    ColumnGroup.prototype.getOldLeft = function () {\n        return this.oldLeft;\n    };\n    ColumnGroup.prototype.setLeft = function (left) {\n        this.oldLeft = left;\n        if (this.left !== left) {\n            this.left = left;\n            this.localEventService.dispatchEvent(this.createAgEvent(ColumnGroup.EVENT_LEFT_CHANGED));\n        }\n    };\n    ColumnGroup.prototype.createAgEvent = function (type) {\n        return {\n            type: type,\n        };\n    };\n    ColumnGroup.prototype.addEventListener = function (eventType, listener) {\n        this.localEventService.addEventListener(eventType, listener);\n    };\n    ColumnGroup.prototype.removeEventListener = function (eventType, listener) {\n        this.localEventService.removeEventListener(eventType, listener);\n    };\n    ColumnGroup.prototype.getGroupId = function () {\n        return this.groupId;\n    };\n    ColumnGroup.prototype.getInstanceId = function () {\n        return this.instanceId;\n    };\n    ColumnGroup.prototype.isChildInThisGroupDeepSearch = function (wantedChild) {\n        var result = false;\n        this.children.forEach(function (foundChild) {\n            if (wantedChild === foundChild) {\n                result = true;\n            }\n            if (foundChild instanceof ColumnGroup) {\n                if (foundChild.isChildInThisGroupDeepSearch(wantedChild)) {\n                    result = true;\n                }\n            }\n        });\n        return result;\n    };\n    ColumnGroup.prototype.getActualWidth = function () {\n        var groupActualWidth = 0;\n        if (this.displayedChildren) {\n            this.displayedChildren.forEach(function (child) {\n                groupActualWidth += child.getActualWidth();\n            });\n        }\n        return groupActualWidth;\n    };\n    ColumnGroup.prototype.isResizable = function () {\n        if (!this.displayedChildren) {\n            return false;\n        }\n        // if at least one child is resizable, then the group is resizable\n        var result = false;\n        this.displayedChildren.forEach(function (child) {\n            if (child.isResizable()) {\n                result = true;\n            }\n        });\n        return result;\n    };\n    ColumnGroup.prototype.getMinWidth = function () {\n        var result = 0;\n        this.displayedChildren.forEach(function (groupChild) {\n            result += groupChild.getMinWidth();\n        });\n        return result;\n    };\n    ColumnGroup.prototype.addChild = function (child) {\n        if (!this.children) {\n            this.children = [];\n        }\n        this.children.push(child);\n    };\n    ColumnGroup.prototype.getDisplayedChildren = function () {\n        return this.displayedChildren;\n    };\n    ColumnGroup.prototype.getLeafColumns = function () {\n        var result = [];\n        this.addLeafColumns(result);\n        return result;\n    };\n    ColumnGroup.prototype.getDisplayedLeafColumns = function () {\n        var result = [];\n        this.addDisplayedLeafColumns(result);\n        return result;\n    };\n    // why two methods here doing the same thing?\n    ColumnGroup.prototype.getDefinition = function () {\n        return this.originalColumnGroup.getColGroupDef();\n    };\n    ColumnGroup.prototype.getColGroupDef = function () {\n        return this.originalColumnGroup.getColGroupDef();\n    };\n    ColumnGroup.prototype.isPadding = function () {\n        return this.originalColumnGroup.isPadding();\n    };\n    ColumnGroup.prototype.isExpandable = function () {\n        return this.originalColumnGroup.isExpandable();\n    };\n    ColumnGroup.prototype.isExpanded = function () {\n        return this.originalColumnGroup.isExpanded();\n    };\n    ColumnGroup.prototype.setExpanded = function (expanded) {\n        this.originalColumnGroup.setExpanded(expanded);\n    };\n    ColumnGroup.prototype.addDisplayedLeafColumns = function (leafColumns) {\n        this.displayedChildren.forEach(function (child) {\n            if (child instanceof column_1.Column) {\n                leafColumns.push(child);\n            }\n            else if (child instanceof ColumnGroup) {\n                child.addDisplayedLeafColumns(leafColumns);\n            }\n        });\n    };\n    ColumnGroup.prototype.addLeafColumns = function (leafColumns) {\n        this.children.forEach(function (child) {\n            if (child instanceof column_1.Column) {\n                leafColumns.push(child);\n            }\n            else if (child instanceof ColumnGroup) {\n                child.addLeafColumns(leafColumns);\n            }\n        });\n    };\n    ColumnGroup.prototype.getChildren = function () {\n        return this.children;\n    };\n    ColumnGroup.prototype.getColumnGroupShow = function () {\n        return this.originalColumnGroup.getColumnGroupShow();\n    };\n    ColumnGroup.prototype.getOriginalColumnGroup = function () {\n        return this.originalColumnGroup;\n    };\n    ColumnGroup.prototype.calculateDisplayedColumns = function () {\n        var _this = this;\n        // clear out last time we calculated\n        this.displayedChildren = [];\n        // it not expandable, everything is visible\n        if (!this.originalColumnGroup.isExpandable()) {\n            this.displayedChildren = this.children;\n        }\n        else {\n            // and calculate again\n            this.children.forEach(function (abstractColumn) {\n                var headerGroupShow = abstractColumn.getColumnGroupShow();\n                switch (headerGroupShow) {\n                    case ColumnGroup.HEADER_GROUP_SHOW_OPEN:\n                        // when set to open, only show col if group is open\n                        if (_this.originalColumnGroup.isExpanded()) {\n                            _this.displayedChildren.push(abstractColumn);\n                        }\n                        break;\n                    case ColumnGroup.HEADER_GROUP_SHOW_CLOSED:\n                        // when set to open, only show col if group is open\n                        if (!_this.originalColumnGroup.isExpanded()) {\n                            _this.displayedChildren.push(abstractColumn);\n                        }\n                        break;\n                    default:\n                        // default is always show the column\n                        _this.displayedChildren.push(abstractColumn);\n                        break;\n                }\n            });\n        }\n        this.localEventService.dispatchEvent(this.createAgEvent(ColumnGroup.EVENT_DISPLAYED_CHILDREN_CHANGED));\n    };\n    ColumnGroup.HEADER_GROUP_SHOW_OPEN = 'open';\n    ColumnGroup.HEADER_GROUP_SHOW_CLOSED = 'closed';\n    ColumnGroup.EVENT_LEFT_CHANGED = 'leftChanged';\n    ColumnGroup.EVENT_DISPLAYED_CHILDREN_CHANGED = 'leftChanged';\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], ColumnGroup.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('columnApi'),\n        __metadata(\"design:type\", columnController_1.ColumnApi)\n    ], ColumnGroup.prototype, \"columnApi\", void 0);\n    __decorate([\n        context_1.Autowired('gridApi'),\n        __metadata(\"design:type\", gridApi_1.GridApi)\n    ], ColumnGroup.prototype, \"gridApi\", void 0);\n    return ColumnGroup;\n}());\nexports.ColumnGroup = ColumnGroup;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/entities/columnGroup.js\n// module id = 63\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar beanStub_1 = require(\"../context/beanStub\");\nvar eventService_1 = require(\"../eventService\");\nvar events_1 = require(\"../events\");\nvar utils_1 = require(\"../utils\");\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar gridPanel_1 = require(\"../gridPanel/gridPanel\");\nvar scrollVisibleService_1 = require(\"../gridPanel/scrollVisibleService\");\nvar selectionController_1 = require(\"../selectionController\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar gridApi_1 = require(\"../gridApi\");\nvar PaginationAutoPageSizeService = (function (_super) {\n    __extends(PaginationAutoPageSizeService, _super);\n    function PaginationAutoPageSizeService() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    PaginationAutoPageSizeService.prototype.notActive = function () {\n        return !this.gridOptionsWrapper.isPaginationAutoPageSize();\n    };\n    PaginationAutoPageSizeService.prototype.postConstruct = function () {\n        this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_BODY_HEIGHT_CHANGED, this.onBodyHeightChanged.bind(this));\n        this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_SCROLL_VISIBILITY_CHANGED, this.onScrollVisibilityChanged.bind(this));\n        this.checkPageSize();\n    };\n    PaginationAutoPageSizeService.prototype.onScrollVisibilityChanged = function () {\n        this.checkPageSize();\n    };\n    PaginationAutoPageSizeService.prototype.onBodyHeightChanged = function () {\n        this.checkPageSize();\n    };\n    PaginationAutoPageSizeService.prototype.checkPageSize = function () {\n        if (this.notActive()) {\n            return;\n        }\n        var rowHeight = this.gridOptionsWrapper.getRowHeightAsNumber();\n        var bodyHeight = this.gridPanel.getBodyHeight();\n        if (this.scrollVisibleService.isHBodyShowing()) {\n            bodyHeight = bodyHeight - this.gridOptionsWrapper.getScrollbarWidth();\n        }\n        if (bodyHeight > 0) {\n            var newPageSize = Math.floor(bodyHeight / rowHeight);\n            this.gridOptionsWrapper.setProperty('paginationPageSize', newPageSize);\n        }\n    };\n    __decorate([\n        context_1.Autowired('gridPanel'),\n        __metadata(\"design:type\", gridPanel_1.GridPanel)\n    ], PaginationAutoPageSizeService.prototype, \"gridPanel\", void 0);\n    __decorate([\n        context_1.Autowired('eventService'),\n        __metadata(\"design:type\", eventService_1.EventService)\n    ], PaginationAutoPageSizeService.prototype, \"eventService\", void 0);\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], PaginationAutoPageSizeService.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('scrollVisibleService'),\n        __metadata(\"design:type\", scrollVisibleService_1.ScrollVisibleService)\n    ], PaginationAutoPageSizeService.prototype, \"scrollVisibleService\", void 0);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], PaginationAutoPageSizeService.prototype, \"postConstruct\", null);\n    PaginationAutoPageSizeService = __decorate([\n        context_1.Bean('paginationAutoPageSizeService')\n    ], PaginationAutoPageSizeService);\n    return PaginationAutoPageSizeService;\n}(beanStub_1.BeanStub));\nexports.PaginationAutoPageSizeService = PaginationAutoPageSizeService;\nvar PaginationProxy = (function (_super) {\n    __extends(PaginationProxy, _super);\n    function PaginationProxy() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.currentPage = 0;\n        _this.topRowIndex = 0;\n        _this.bottomRowIndex = 0;\n        _this.pixelOffset = 0;\n        return _this;\n    }\n    PaginationProxy.prototype.postConstruct = function () {\n        this.active = this.gridOptionsWrapper.isPagination();\n        this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_MODEL_UPDATED, this.onModelUpdated.bind(this));\n        this.addDestroyableEventListener(this.gridOptionsWrapper, 'paginationPageSize', this.onModelUpdated.bind(this));\n        this.onModelUpdated();\n    };\n    PaginationProxy.prototype.isLastRowFound = function () {\n        return this.rowModel.isLastRowFound();\n    };\n    PaginationProxy.prototype.onModelUpdated = function (modelUpdatedEvent) {\n        this.setIndexesAndBounds();\n        var paginationChangedEvent = {\n            type: events_1.Events.EVENT_PAGINATION_CHANGED,\n            animate: modelUpdatedEvent ? modelUpdatedEvent.animate : false,\n            newData: modelUpdatedEvent ? modelUpdatedEvent.newData : false,\n            newPage: modelUpdatedEvent ? modelUpdatedEvent.newPage : false,\n            keepRenderedRows: modelUpdatedEvent ? modelUpdatedEvent.keepRenderedRows : false,\n            api: this.gridApi,\n            columnApi: this.columnApi\n        };\n        this.eventService.dispatchEvent(paginationChangedEvent);\n    };\n    PaginationProxy.prototype.goToPage = function (page) {\n        if (!this.active) {\n            return;\n        }\n        if (this.currentPage === page) {\n            return;\n        }\n        this.currentPage = page;\n        var event = {\n            type: events_1.Events.EVENT_MODEL_UPDATED,\n            animate: false,\n            keepRenderedRows: false,\n            newData: false,\n            newPage: true,\n            api: this.gridApi,\n            columnApi: this.columnApi\n        };\n        this.onModelUpdated(event);\n    };\n    PaginationProxy.prototype.getPixelOffset = function () {\n        return this.pixelOffset;\n    };\n    PaginationProxy.prototype.getRow = function (index) {\n        return this.rowModel.getRow(index);\n    };\n    PaginationProxy.prototype.getRowIndexAtPixel = function (pixel) {\n        return this.rowModel.getRowIndexAtPixel(pixel);\n    };\n    PaginationProxy.prototype.getCurrentPageHeight = function () {\n        if (utils_1._.missing(this.topRowBounds) || utils_1._.missing(this.bottomRowBounds)) {\n            return 0;\n        }\n        return this.bottomRowBounds.rowTop + this.bottomRowBounds.rowHeight - this.topRowBounds.rowTop;\n    };\n    PaginationProxy.prototype.isRowPresent = function (rowNode) {\n        if (!this.rowModel.isRowPresent(rowNode)) {\n            return false;\n        }\n        var nodeIsInPage = rowNode.rowIndex >= this.topRowIndex && rowNode.rowIndex <= this.bottomRowIndex;\n        return nodeIsInPage;\n    };\n    PaginationProxy.prototype.isEmpty = function () {\n        return this.rowModel.isEmpty();\n    };\n    PaginationProxy.prototype.isRowsToRender = function () {\n        return this.rowModel.isRowsToRender();\n    };\n    PaginationProxy.prototype.getNodesInRangeForSelection = function (firstInRange, lastInRange) {\n        return this.rowModel.getNodesInRangeForSelection(firstInRange, lastInRange);\n    };\n    PaginationProxy.prototype.forEachNode = function (callback) {\n        return this.rowModel.forEachNode(callback);\n    };\n    PaginationProxy.prototype.getType = function () {\n        return this.rowModel.getType();\n    };\n    PaginationProxy.prototype.getRowBounds = function (index) {\n        return this.rowModel.getRowBounds(index);\n    };\n    PaginationProxy.prototype.getPageFirstRow = function () {\n        return this.pageSize * this.currentPage;\n    };\n    PaginationProxy.prototype.getPageLastRow = function () {\n        var totalLastRow = (this.pageSize * (this.currentPage + 1)) - 1;\n        var pageLastRow = this.rowModel.getPageLastRow();\n        if (pageLastRow > totalLastRow) {\n            return totalLastRow;\n        }\n        else {\n            return pageLastRow;\n        }\n    };\n    PaginationProxy.prototype.getRowCount = function () {\n        return this.rowModel.getRowCount();\n    };\n    PaginationProxy.prototype.goToPageWithIndex = function (index) {\n        if (!this.active) {\n            return;\n        }\n        var pageNumber = Math.floor(index / this.pageSize);\n        this.goToPage(pageNumber);\n    };\n    PaginationProxy.prototype.getTotalRowCount = function () {\n        return this.rowModel.getPageLastRow() + 1;\n    };\n    PaginationProxy.prototype.isLastPageFound = function () {\n        return this.rowModel.isLastRowFound();\n    };\n    PaginationProxy.prototype.getCurrentPage = function () {\n        return this.currentPage;\n    };\n    PaginationProxy.prototype.goToNextPage = function () {\n        this.goToPage(this.currentPage + 1);\n    };\n    PaginationProxy.prototype.goToPreviousPage = function () {\n        this.goToPage(this.currentPage - 1);\n    };\n    PaginationProxy.prototype.goToFirstPage = function () {\n        this.goToPage(0);\n    };\n    PaginationProxy.prototype.goToLastPage = function () {\n        var rowCount = this.rowModel.getPageLastRow() + 1;\n        var lastPage = Math.floor(rowCount / this.pageSize);\n        this.goToPage(lastPage);\n    };\n    PaginationProxy.prototype.getPageSize = function () {\n        return this.pageSize;\n    };\n    PaginationProxy.prototype.getTotalPages = function () {\n        return this.totalPages;\n    };\n    PaginationProxy.prototype.setPageSize = function () {\n        // show put this into super class\n        this.pageSize = this.gridOptionsWrapper.getPaginationPageSize();\n        if (!(this.pageSize >= 1)) {\n            this.pageSize = 100;\n        }\n    };\n    PaginationProxy.prototype.setIndexesAndBounds = function () {\n        if (this.active) {\n            this.setPageSize();\n            var totalRowCount = this.getTotalRowCount();\n            this.totalPages = Math.floor((totalRowCount - 1) / this.pageSize) + 1;\n            if (this.currentPage >= this.totalPages) {\n                this.currentPage = this.totalPages - 1;\n            }\n            if (!utils_1._.isNumeric(this.currentPage) || this.currentPage < 0) {\n                this.currentPage = 0;\n            }\n            this.topRowIndex = this.pageSize * this.currentPage;\n            this.bottomRowIndex = (this.pageSize * (this.currentPage + 1)) - 1;\n            var maxRowAllowed = this.rowModel.getPageLastRow();\n            if (this.bottomRowIndex > maxRowAllowed) {\n                this.bottomRowIndex = maxRowAllowed;\n            }\n        }\n        else {\n            this.pageSize = this.rowModel.getPageLastRow() + 1;\n            this.totalPages = 1;\n            this.currentPage = 0;\n            this.topRowIndex = 0;\n            this.bottomRowIndex = this.rowModel.getPageLastRow();\n        }\n        this.topRowBounds = this.rowModel.getRowBounds(this.topRowIndex);\n        this.bottomRowBounds = this.rowModel.getRowBounds(this.bottomRowIndex);\n        this.pixelOffset = utils_1._.exists(this.topRowBounds) ? this.topRowBounds.rowTop : 0;\n    };\n    __decorate([\n        context_1.Autowired('rowModel'),\n        __metadata(\"design:type\", Object)\n    ], PaginationProxy.prototype, \"rowModel\", void 0);\n    __decorate([\n        context_1.Autowired('gridPanel'),\n        __metadata(\"design:type\", gridPanel_1.GridPanel)\n    ], PaginationProxy.prototype, \"gridPanel\", void 0);\n    __decorate([\n        context_1.Autowired('eventService'),\n        __metadata(\"design:type\", eventService_1.EventService)\n    ], PaginationProxy.prototype, \"eventService\", void 0);\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], PaginationProxy.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('selectionController'),\n        __metadata(\"design:type\", selectionController_1.SelectionController)\n    ], PaginationProxy.prototype, \"selectionController\", void 0);\n    __decorate([\n        context_1.Autowired('columnApi'),\n        __metadata(\"design:type\", columnController_1.ColumnApi)\n    ], PaginationProxy.prototype, \"columnApi\", void 0);\n    __decorate([\n        context_1.Autowired('gridApi'),\n        __metadata(\"design:type\", gridApi_1.GridApi)\n    ], PaginationProxy.prototype, \"gridApi\", void 0);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], PaginationProxy.prototype, \"postConstruct\", null);\n    PaginationProxy = __decorate([\n        context_1.Bean('paginationProxy')\n    ], PaginationProxy);\n    return PaginationProxy;\n}(beanStub_1.BeanStub));\nexports.PaginationProxy = PaginationProxy;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rowModels/paginationProxy.js\n// module id = 64\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar rowNode_1 = require(\"../entities/rowNode\");\nvar context_1 = require(\"../context/context\");\nvar eventService_1 = require(\"../eventService\");\nvar context_2 = require(\"../context/context\");\nvar events_1 = require(\"../events\");\nvar context_3 = require(\"../context/context\");\nvar constants_1 = require(\"../constants\");\nvar utils_1 = require(\"../utils\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar gridApi_1 = require(\"../gridApi\");\nvar PinnedRowModel = (function () {\n    function PinnedRowModel() {\n    }\n    PinnedRowModel.prototype.init = function () {\n        this.setPinnedTopRowData(this.gridOptionsWrapper.getPinnedTopRowData());\n        this.setPinnedBottomRowData(this.gridOptionsWrapper.getPinnedBottomRowData());\n    };\n    PinnedRowModel.prototype.isEmpty = function (floating) {\n        var rows = floating === constants_1.Constants.PINNED_TOP ? this.pinnedTopRows : this.pinnedBottomRows;\n        return utils_1.Utils.missingOrEmpty(rows);\n    };\n    PinnedRowModel.prototype.isRowsToRender = function (floating) {\n        return !this.isEmpty(floating);\n    };\n    PinnedRowModel.prototype.getRowAtPixel = function (pixel, floating) {\n        var rows = floating === constants_1.Constants.PINNED_TOP ? this.pinnedTopRows : this.pinnedBottomRows;\n        if (utils_1.Utils.missingOrEmpty(rows)) {\n            return 0; // this should never happen, just in case, 0 is graceful failure\n        }\n        for (var i = 0; i < rows.length; i++) {\n            var rowNode = rows[i];\n            var rowTopPixel = rowNode.rowTop + rowNode.rowHeight - 1;\n            // only need to range check against the top pixel, as we are going through the list\n            // in order, first row to hit the pixel wins\n            if (rowTopPixel >= pixel) {\n                return i;\n            }\n        }\n        return rows.length - 1;\n    };\n    PinnedRowModel.prototype.setPinnedTopRowData = function (rowData) {\n        this.pinnedTopRows = this.createNodesFromData(rowData, true);\n        var event = {\n            type: events_1.Events.EVENT_PINNED_ROW_DATA_CHANGED,\n            api: this.gridApi,\n            columnApi: this.columnApi\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    PinnedRowModel.prototype.setPinnedBottomRowData = function (rowData) {\n        this.pinnedBottomRows = this.createNodesFromData(rowData, false);\n        var event = {\n            type: events_1.Events.EVENT_PINNED_ROW_DATA_CHANGED,\n            api: this.gridApi,\n            columnApi: this.columnApi\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    PinnedRowModel.prototype.createNodesFromData = function (allData, isTop) {\n        var _this = this;\n        var rowNodes = [];\n        if (allData) {\n            var nextRowTop_1 = 0;\n            allData.forEach(function (dataItem, index) {\n                var rowNode = new rowNode_1.RowNode();\n                _this.context.wireBean(rowNode);\n                rowNode.data = dataItem;\n                rowNode.rowPinned = isTop ? constants_1.Constants.PINNED_TOP : constants_1.Constants.PINNED_BOTTOM;\n                rowNode.setRowTop(nextRowTop_1);\n                rowNode.setRowHeight(_this.gridOptionsWrapper.getRowHeightForNode(rowNode));\n                rowNode.setRowIndex(index);\n                nextRowTop_1 += rowNode.rowHeight;\n                rowNodes.push(rowNode);\n            });\n        }\n        return rowNodes;\n    };\n    PinnedRowModel.prototype.getPinnedTopRowData = function () {\n        return this.pinnedTopRows;\n    };\n    PinnedRowModel.prototype.getPinnedBottomRowData = function () {\n        return this.pinnedBottomRows;\n    };\n    PinnedRowModel.prototype.getPinnedTopTotalHeight = function () {\n        return this.getTotalHeight(this.pinnedTopRows);\n    };\n    PinnedRowModel.prototype.getPinnedTopRowCount = function () {\n        return this.pinnedTopRows ? this.pinnedTopRows.length : 0;\n    };\n    PinnedRowModel.prototype.getPinnedBottomRowCount = function () {\n        return this.pinnedBottomRows ? this.pinnedBottomRows.length : 0;\n    };\n    PinnedRowModel.prototype.getPinnedTopRow = function (index) {\n        return this.pinnedTopRows[index];\n    };\n    PinnedRowModel.prototype.getPinnedBottomRow = function (index) {\n        return this.pinnedBottomRows[index];\n    };\n    PinnedRowModel.prototype.forEachPinnedTopRow = function (callback) {\n        if (utils_1.Utils.missingOrEmpty(this.pinnedTopRows)) {\n            return;\n        }\n        this.pinnedTopRows.forEach(callback);\n    };\n    PinnedRowModel.prototype.forEachPinnedBottomRow = function (callback) {\n        if (utils_1.Utils.missingOrEmpty(this.pinnedBottomRows)) {\n            return;\n        }\n        this.pinnedBottomRows.forEach(callback);\n    };\n    PinnedRowModel.prototype.getPinnedBottomTotalHeight = function () {\n        return this.getTotalHeight(this.pinnedBottomRows);\n    };\n    PinnedRowModel.prototype.getTotalHeight = function (rowNodes) {\n        if (!rowNodes || rowNodes.length === 0) {\n            return 0;\n        }\n        else {\n            var lastNode = rowNodes[rowNodes.length - 1];\n            return lastNode.rowTop + lastNode.rowHeight;\n        }\n    };\n    __decorate([\n        context_2.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], PinnedRowModel.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_2.Autowired('eventService'),\n        __metadata(\"design:type\", eventService_1.EventService)\n    ], PinnedRowModel.prototype, \"eventService\", void 0);\n    __decorate([\n        context_2.Autowired('context'),\n        __metadata(\"design:type\", context_1.Context)\n    ], PinnedRowModel.prototype, \"context\", void 0);\n    __decorate([\n        context_2.Autowired('columnApi'),\n        __metadata(\"design:type\", columnController_1.ColumnApi)\n    ], PinnedRowModel.prototype, \"columnApi\", void 0);\n    __decorate([\n        context_2.Autowired('gridApi'),\n        __metadata(\"design:type\", gridApi_1.GridApi)\n    ], PinnedRowModel.prototype, \"gridApi\", void 0);\n    __decorate([\n        context_3.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], PinnedRowModel.prototype, \"init\", null);\n    PinnedRowModel = __decorate([\n        context_1.Bean('pinnedRowModel')\n    ], PinnedRowModel);\n    return PinnedRowModel;\n}());\nexports.PinnedRowModel = PinnedRowModel;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rowModels/pinnedRowModel.js\n// module id = 65\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar column_1 = require(\"./entities/column\");\nvar context_1 = require(\"./context/context\");\nvar gridOptionsWrapper_1 = require(\"./gridOptionsWrapper\");\nvar columnController_1 = require(\"./columnController/columnController\");\nvar eventService_1 = require(\"./eventService\");\nvar events_1 = require(\"./events\");\nvar context_2 = require(\"./context/context\");\nvar utils_1 = require(\"./utils\");\nvar gridApi_1 = require(\"./gridApi\");\nvar SortController = (function () {\n    function SortController() {\n    }\n    SortController_1 = SortController;\n    SortController.prototype.progressSort = function (column, multiSort) {\n        var nextDirection = this.getNextSortDirection(column);\n        this.setSortForColumn(column, nextDirection, multiSort);\n    };\n    SortController.prototype.setSortForColumn = function (column, sort, multiSort) {\n        // auto correct - if sort not legal value, then set it to 'no sort' (which is null)\n        if (sort !== column_1.Column.SORT_ASC && sort !== column_1.Column.SORT_DESC) {\n            sort = null;\n        }\n        // update sort on current col\n        column.setSort(sort);\n        // sortedAt used for knowing order of cols when multi-col sort\n        if (column.getSort()) {\n            var sortedAt = Number(new Date().valueOf());\n            column.setSortedAt(sortedAt);\n        }\n        else {\n            column.setSortedAt(null);\n        }\n        var doingMultiSort = multiSort && !this.gridOptionsWrapper.isSuppressMultiSort();\n        // clear sort on all columns except this one, and update the icons\n        if (!doingMultiSort) {\n            this.clearSortBarThisColumn(column);\n        }\n        this.dispatchSortChangedEvents();\n    };\n    // gets called by API, so if data changes, use can call this, which will end up\n    // working out the sort order again of the rows.\n    SortController.prototype.onSortChanged = function () {\n        this.dispatchSortChangedEvents();\n    };\n    SortController.prototype.dispatchSortChangedEvents = function () {\n        var event = {\n            type: events_1.Events.EVENT_SORT_CHANGED,\n            api: this.gridApi,\n            columnApi: this.columnApi\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    SortController.prototype.clearSortBarThisColumn = function (columnToSkip) {\n        this.columnController.getPrimaryAndSecondaryAndAutoColumns().forEach(function (columnToClear) {\n            // Do not clear if either holding shift, or if column in question was clicked\n            if (!(columnToClear === columnToSkip)) {\n                columnToClear.setSort(null);\n            }\n        });\n    };\n    SortController.prototype.getNextSortDirection = function (column) {\n        var sortingOrder;\n        if (column.getColDef().sortingOrder) {\n            sortingOrder = column.getColDef().sortingOrder;\n        }\n        else if (this.gridOptionsWrapper.getSortingOrder()) {\n            sortingOrder = this.gridOptionsWrapper.getSortingOrder();\n        }\n        else {\n            sortingOrder = SortController_1.DEFAULT_SORTING_ORDER;\n        }\n        if (!Array.isArray(sortingOrder) || sortingOrder.length <= 0) {\n            console.warn('ag-grid: sortingOrder must be an array with at least one element, currently it\\'s ' + sortingOrder);\n            return;\n        }\n        var currentIndex = sortingOrder.indexOf(column.getSort());\n        var notInArray = currentIndex < 0;\n        var lastItemInArray = currentIndex == sortingOrder.length - 1;\n        var result;\n        if (notInArray || lastItemInArray) {\n            result = sortingOrder[0];\n        }\n        else {\n            result = sortingOrder[currentIndex + 1];\n        }\n        // verify the sort type exists, as the user could provide the sortingOrder, need to make sure it's valid\n        if (SortController_1.DEFAULT_SORTING_ORDER.indexOf(result) < 0) {\n            console.warn('ag-grid: invalid sort type ' + result);\n            return null;\n        }\n        return result;\n    };\n    // used by the public api, for saving the sort model\n    SortController.prototype.getSortModel = function () {\n        var columnsWithSorting = this.getColumnsWithSortingOrdered();\n        return utils_1.Utils.map(columnsWithSorting, function (column) {\n            return {\n                colId: column.getColId(),\n                sort: column.getSort()\n            };\n        });\n    };\n    SortController.prototype.setSortModel = function (sortModel) {\n        var _this = this;\n        if (!this.gridOptionsWrapper.isEnableSorting()) {\n            console.warn('ag-grid: You are setting the sort model on a grid that does not have sorting enabled');\n            return;\n        }\n        // first up, clear any previous sort\n        var sortModelProvided = sortModel && sortModel.length > 0;\n        var allColumnsIncludingAuto = this.columnController.getPrimaryAndSecondaryAndAutoColumns();\n        allColumnsIncludingAuto.forEach(function (column) {\n            var sortForCol = null;\n            var sortedAt = -1;\n            if (sortModelProvided && !column.getColDef().suppressSorting) {\n                for (var j = 0; j < sortModel.length; j++) {\n                    var sortModelEntry = sortModel[j];\n                    if (typeof sortModelEntry.colId === 'string'\n                        && typeof column.getColId() === 'string'\n                        && _this.compareColIds(sortModelEntry, column)) {\n                        sortForCol = sortModelEntry.sort;\n                        sortedAt = j;\n                    }\n                }\n            }\n            if (sortForCol) {\n                column.setSort(sortForCol);\n                column.setSortedAt(sortedAt);\n            }\n            else {\n                column.setSort(null);\n                column.setSortedAt(null);\n            }\n        });\n        this.dispatchSortChangedEvents();\n    };\n    SortController.prototype.compareColIds = function (sortModelEntry, column) {\n        return sortModelEntry.colId === column.getColId();\n    };\n    SortController.prototype.getColumnsWithSortingOrdered = function () {\n        // pull out all the columns that have sorting set\n        var allColumnsIncludingAuto = this.columnController.getPrimaryAndSecondaryAndAutoColumns();\n        var columnsWithSorting = utils_1.Utils.filter(allColumnsIncludingAuto, function (column) { return !!column.getSort(); });\n        // put the columns in order of which one got sorted first\n        columnsWithSorting.sort(function (a, b) { return a.sortedAt - b.sortedAt; });\n        return columnsWithSorting;\n    };\n    // used by row controller, when doing the sorting\n    SortController.prototype.getSortForRowController = function () {\n        var columnsWithSorting = this.getColumnsWithSortingOrdered();\n        return utils_1.Utils.map(columnsWithSorting, function (column) {\n            var ascending = column.getSort() === column_1.Column.SORT_ASC;\n            return {\n                inverter: ascending ? 1 : -1,\n                column: column\n            };\n        });\n    };\n    SortController.DEFAULT_SORTING_ORDER = [column_1.Column.SORT_ASC, column_1.Column.SORT_DESC, null];\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], SortController.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('columnController'),\n        __metadata(\"design:type\", columnController_1.ColumnController)\n    ], SortController.prototype, \"columnController\", void 0);\n    __decorate([\n        context_1.Autowired('eventService'),\n        __metadata(\"design:type\", eventService_1.EventService)\n    ], SortController.prototype, \"eventService\", void 0);\n    __decorate([\n        context_1.Autowired('columnApi'),\n        __metadata(\"design:type\", columnController_1.ColumnApi)\n    ], SortController.prototype, \"columnApi\", void 0);\n    __decorate([\n        context_1.Autowired('gridApi'),\n        __metadata(\"design:type\", gridApi_1.GridApi)\n    ], SortController.prototype, \"gridApi\", void 0);\n    SortController = SortController_1 = __decorate([\n        context_2.Bean('sortController')\n    ], SortController);\n    return SortController;\n    var SortController_1;\n}());\nexports.SortController = SortController;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/sortController.js\n// module id = 66\n// module chunks = 0","/*\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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/object-assign/index.js\n// module id = 67\n// module chunks = 0","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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_hide.js\n// module id = 68\n// module chunks = 0","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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_an-object.js\n// module id = 69\n// module chunks = 0","// 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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_descriptors.js\n// module id = 70\n// module chunks = 0","module.exports = { \"default\": require(\"core-js/library/fn/object/values\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/core-js/object/values.js\n// module id = 71\n// module chunks = 0","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = ownerDocument;\nfunction ownerDocument(node) {\n  return node && node.ownerDocument || document;\n}\nmodule.exports = exports[\"default\"];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-helpers/ownerDocument.js\n// module id = 72\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _inDOM = require('../util/inDOM');\n\nvar _inDOM2 = _interopRequireDefault(_inDOM);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n  // HTML DOM and SVG DOM may have different support levels,\n  // so we need to check on context instead of a document root element.\n  return _inDOM2.default ? function (context, node) {\n    if (context.contains) {\n      return context.contains(node);\n    } else if (context.compareDocumentPosition) {\n      return context === node || !!(context.compareDocumentPosition(node) & 16);\n    } else {\n      return fallback(context, node);\n    }\n  } : fallback;\n}();\n\nfunction fallback(context, node) {\n  if (node) do {\n    if (node === context) return true;\n  } while (node = node.parentNode);\n\n  return false;\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-helpers/query/contains.js\n// module id = 73\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nexports.default = function (componentOrElement) {\n  return (0, _ownerDocument2.default)(_reactDom2.default.findDOMNode(componentOrElement));\n};\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _ownerDocument = require('dom-helpers/ownerDocument');\n\nvar _ownerDocument2 = _interopRequireDefault(_ownerDocument);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-overlays/lib/utils/ownerDocument.js\n// module id = 74\n// module chunks = 0","module.exports = require('./lib/axios');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/index.js\n// module id = 75\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar columnGroup_1 = require(\"../entities/columnGroup\");\nvar originalColumnGroup_1 = require(\"../entities/originalColumnGroup\");\nvar context_1 = require(\"../context/context\");\nvar context_2 = require(\"../context/context\");\n// takes in a list of columns, as specified by the column definitions, and returns column groups\nvar ColumnUtils = (function () {\n    function ColumnUtils() {\n    }\n    ColumnUtils.prototype.calculateColInitialWidth = function (colDef) {\n        if (!colDef.width) {\n            // if no width defined in colDef, use default\n            return this.gridOptionsWrapper.getColWidth();\n        }\n        else if (colDef.width < this.gridOptionsWrapper.getMinColWidth()) {\n            // if width in col def to small, set to min width\n            return this.gridOptionsWrapper.getMinColWidth();\n        }\n        else {\n            // otherwise use the provided width\n            return colDef.width;\n        }\n    };\n    ColumnUtils.prototype.getOriginalPathForColumn = function (column, originalBalancedTree) {\n        var result = [];\n        var found = false;\n        recursePath(originalBalancedTree, 0);\n        // we should always find the path, but in case there is a bug somewhere, returning null\n        // will make it fail rather than provide a 'hard to track down' bug\n        if (found) {\n            return result;\n        }\n        else {\n            return null;\n        }\n        function recursePath(balancedColumnTree, dept) {\n            for (var i = 0; i < balancedColumnTree.length; i++) {\n                if (found) {\n                    // quit the search, so 'result' is kept with the found result\n                    return;\n                }\n                var node = balancedColumnTree[i];\n                if (node instanceof originalColumnGroup_1.OriginalColumnGroup) {\n                    var nextNode = node;\n                    recursePath(nextNode.getChildren(), dept + 1);\n                    result[dept] = node;\n                }\n                else {\n                    if (node === column) {\n                        found = true;\n                    }\n                }\n            }\n        }\n    };\n    /*    public getPathForColumn(column: Column, allDisplayedColumnGroups: ColumnGroupChild[]): ColumnGroup[] {\n            let result: ColumnGroup[] = [];\n            let found = false;\n    \n            recursePath(allDisplayedColumnGroups, 0);\n    \n            // we should always find the path, but in case there is a bug somewhere, returning null\n            // will make it fail rather than provide a 'hard to track down' bug\n            if (found) {\n                return result;\n            } else {\n                return null;\n            }\n    \n            function recursePath(balancedColumnTree: ColumnGroupChild[], dept: number): void {\n    \n                for (let i = 0; i<balancedColumnTree.length; i++) {\n                    if (found) {\n                        // quit the search, so 'result' is kept with the found result\n                        return;\n                    }\n                    let node = balancedColumnTree[i];\n                    if (node instanceof ColumnGroup) {\n                        let nextNode = <ColumnGroup> node;\n                        recursePath(nextNode.getChildren(), dept+1);\n                        result[dept] = node;\n                    } else {\n                        if (node === column) {\n                            found = true;\n                        }\n                    }\n                }\n            }\n        }*/\n    ColumnUtils.prototype.depthFirstOriginalTreeSearch = function (tree, callback) {\n        var _this = this;\n        if (!tree) {\n            return;\n        }\n        tree.forEach(function (child) {\n            if (child instanceof originalColumnGroup_1.OriginalColumnGroup) {\n                _this.depthFirstOriginalTreeSearch(child.getChildren(), callback);\n            }\n            callback(child);\n        });\n    };\n    ColumnUtils.prototype.depthFirstAllColumnTreeSearch = function (tree, callback) {\n        var _this = this;\n        if (!tree) {\n            return;\n        }\n        tree.forEach(function (child) {\n            if (child instanceof columnGroup_1.ColumnGroup) {\n                _this.depthFirstAllColumnTreeSearch(child.getChildren(), callback);\n            }\n            callback(child);\n        });\n    };\n    ColumnUtils.prototype.depthFirstDisplayedColumnTreeSearch = function (tree, callback) {\n        var _this = this;\n        if (!tree) {\n            return;\n        }\n        tree.forEach(function (child) {\n            if (child instanceof columnGroup_1.ColumnGroup) {\n                _this.depthFirstDisplayedColumnTreeSearch(child.getDisplayedChildren(), callback);\n            }\n            callback(child);\n        });\n    };\n    __decorate([\n        context_2.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], ColumnUtils.prototype, \"gridOptionsWrapper\", void 0);\n    ColumnUtils = __decorate([\n        context_1.Bean('columnUtils')\n    ], ColumnUtils);\n    return ColumnUtils;\n}());\nexports.ColumnUtils = ColumnUtils;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/columnController/columnUtils.js\n// module id = 76\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar columnGroup_1 = require(\"./columnGroup\");\nvar column_1 = require(\"./column\");\nvar eventService_1 = require(\"../eventService\");\nvar context_1 = require(\"../context/context\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar gridApi_1 = require(\"../gridApi\");\nvar OriginalColumnGroup = (function () {\n    function OriginalColumnGroup(colGroupDef, groupId, padding) {\n        this.localEventService = new eventService_1.EventService();\n        this.expandable = false;\n        this.colGroupDef = colGroupDef;\n        this.groupId = groupId;\n        this.expanded = colGroupDef && !!colGroupDef.openByDefault;\n        this.padding = padding;\n    }\n    OriginalColumnGroup.prototype.isVisible = function () {\n        // return true if at least one child is visible\n        if (this.children) {\n            return this.children.some(function (child) { return child.isVisible(); });\n        }\n        else {\n            return false;\n        }\n    };\n    OriginalColumnGroup.prototype.isPadding = function () {\n        return this.padding;\n    };\n    OriginalColumnGroup.prototype.setExpanded = function (expanded) {\n        this.expanded = expanded;\n        var event = {\n            type: OriginalColumnGroup.EVENT_EXPANDED_CHANGED\n        };\n        this.localEventService.dispatchEvent(event);\n    };\n    OriginalColumnGroup.prototype.isExpandable = function () {\n        return this.expandable;\n    };\n    OriginalColumnGroup.prototype.isExpanded = function () {\n        return this.expanded;\n    };\n    OriginalColumnGroup.prototype.getGroupId = function () {\n        return this.groupId;\n    };\n    OriginalColumnGroup.prototype.getId = function () {\n        return this.getGroupId();\n    };\n    OriginalColumnGroup.prototype.setChildren = function (children) {\n        this.children = children;\n    };\n    OriginalColumnGroup.prototype.getChildren = function () {\n        return this.children;\n    };\n    OriginalColumnGroup.prototype.getColGroupDef = function () {\n        return this.colGroupDef;\n    };\n    OriginalColumnGroup.prototype.getLeafColumns = function () {\n        var result = [];\n        this.addLeafColumns(result);\n        return result;\n    };\n    OriginalColumnGroup.prototype.addLeafColumns = function (leafColumns) {\n        this.children.forEach(function (child) {\n            if (child instanceof column_1.Column) {\n                leafColumns.push(child);\n            }\n            else if (child instanceof OriginalColumnGroup) {\n                child.addLeafColumns(leafColumns);\n            }\n        });\n    };\n    OriginalColumnGroup.prototype.getColumnGroupShow = function () {\n        if (!this.padding) {\n            return this.colGroupDef.columnGroupShow;\n        }\n        else {\n            // if this is padding we have exactly only child. we then\n            // take the value from the child and push it up, making\n            // this group 'invisible'.\n            return this.children[0].getColumnGroupShow();\n        }\n    };\n    // need to check that this group has at least one col showing when both expanded and contracted.\n    // if not, then we don't allow expanding and contracting on this group\n    OriginalColumnGroup.prototype.setupExpandable = function () {\n        var _this = this;\n        this.setExpandable();\n        // note - we should be removing this event listener\n        this.getLeafColumns().forEach(function (col) { return col.addEventListener(column_1.Column.EVENT_VISIBLE_CHANGED, _this.onColumnVisibilityChanged.bind(_this)); });\n    };\n    OriginalColumnGroup.prototype.setExpandable = function () {\n        // want to make sure the group doesn't disappear when it's open\n        var atLeastOneShowingWhenOpen = false;\n        // want to make sure the group doesn't disappear when it's closed\n        var atLeastOneShowingWhenClosed = false;\n        // want to make sure the group has something to show / hide\n        var atLeastOneChangeable = false;\n        for (var i = 0, j = this.children.length; i < j; i++) {\n            var abstractColumn = this.children[i];\n            if (!abstractColumn.isVisible()) {\n                continue;\n            }\n            // if the abstractColumn is a grid generated group, there will be no colDef\n            var headerGroupShow = abstractColumn.getColumnGroupShow();\n            if (headerGroupShow === columnGroup_1.ColumnGroup.HEADER_GROUP_SHOW_OPEN) {\n                atLeastOneShowingWhenOpen = true;\n                atLeastOneChangeable = true;\n            }\n            else if (headerGroupShow === columnGroup_1.ColumnGroup.HEADER_GROUP_SHOW_CLOSED) {\n                atLeastOneShowingWhenClosed = true;\n                atLeastOneChangeable = true;\n            }\n            else {\n                atLeastOneShowingWhenOpen = true;\n                atLeastOneShowingWhenClosed = true;\n            }\n        }\n        var expandable = atLeastOneShowingWhenOpen && atLeastOneShowingWhenClosed && atLeastOneChangeable;\n        if (this.expandable !== expandable) {\n            this.expandable = expandable;\n            var event_1 = {\n                type: OriginalColumnGroup.EVENT_EXPANDABLE_CHANGED\n            };\n            this.localEventService.dispatchEvent(event_1);\n        }\n    };\n    OriginalColumnGroup.prototype.onColumnVisibilityChanged = function () {\n        this.setExpandable();\n    };\n    OriginalColumnGroup.prototype.addEventListener = function (eventType, listener) {\n        this.localEventService.addEventListener(eventType, listener);\n    };\n    OriginalColumnGroup.prototype.removeEventListener = function (eventType, listener) {\n        this.localEventService.removeEventListener(eventType, listener);\n    };\n    OriginalColumnGroup.EVENT_EXPANDED_CHANGED = 'expandedChanged';\n    OriginalColumnGroup.EVENT_EXPANDABLE_CHANGED = 'expandableChanged';\n    __decorate([\n        context_1.Autowired('columnApi'),\n        __metadata(\"design:type\", columnController_1.ColumnApi)\n    ], OriginalColumnGroup.prototype, \"columnApi\", void 0);\n    __decorate([\n        context_1.Autowired('gridApi'),\n        __metadata(\"design:type\", gridApi_1.GridApi)\n    ], OriginalColumnGroup.prototype, \"gridApi\", void 0);\n    return OriginalColumnGroup;\n}());\nexports.OriginalColumnGroup = OriginalColumnGroup;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/entities/originalColumnGroup.js\n// module id = 77\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar ValueCache = (function () {\n    function ValueCache() {\n        this.cacheVersion = 0;\n    }\n    ValueCache.prototype.init = function () {\n        this.active = this.gridOptionsWrapper.isValueCache();\n        this.neverExpires = this.gridOptionsWrapper.isValueCacheNeverExpires();\n    };\n    ValueCache.prototype.onDataChanged = function () {\n        if (this.neverExpires) {\n            return;\n        }\n        this.expire();\n    };\n    ValueCache.prototype.expire = function () {\n        this.cacheVersion++;\n    };\n    ValueCache.prototype.setValue = function (rowNode, colId, value) {\n        if (this.active) {\n            if (rowNode.__cacheVersion !== this.cacheVersion) {\n                rowNode.__cacheVersion = this.cacheVersion;\n                rowNode.__cacheData = {};\n            }\n            rowNode.__cacheData[colId] = value;\n        }\n    };\n    ValueCache.prototype.getValue = function (rowNode, colId) {\n        var valueInCache = this.active\n            && rowNode.__cacheVersion === this.cacheVersion\n            && rowNode.__cacheData[colId] !== undefined;\n        if (valueInCache) {\n            return rowNode.__cacheData[colId];\n        }\n        else {\n            return undefined;\n        }\n    };\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], ValueCache.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], ValueCache.prototype, \"init\", null);\n    ValueCache = __decorate([\n        context_1.Bean('valueCache')\n    ], ValueCache);\n    return ValueCache;\n}());\nexports.ValueCache = ValueCache;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/valueService/valueCache.js\n// module id = 78\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar utils_1 = require(\"../utils\");\nvar eventService_1 = require(\"../eventService\");\nvar events_1 = require(\"../events\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar gridApi_1 = require(\"../gridApi\");\nvar ScrollVisibleService = (function () {\n    function ScrollVisibleService() {\n    }\n    ScrollVisibleService.prototype.setScrollsVisible = function (params) {\n        var atLeastOneDifferent = this.vBody !== params.vBody\n            || this.hBody !== params.hBody\n            || this.vPinnedLeft !== params.vPinnedLeft\n            || this.vPinnedRight !== params.vPinnedRight;\n        if (atLeastOneDifferent) {\n            this.vBody = params.vBody;\n            this.hBody = params.hBody;\n            this.vPinnedLeft = params.vPinnedLeft;\n            this.vPinnedRight = params.vPinnedRight;\n            var event_1 = {\n                type: events_1.Events.EVENT_SCROLL_VISIBILITY_CHANGED,\n                api: this.gridApi,\n                columnApi: this.columnApi\n            };\n            this.eventService.dispatchEvent(event_1);\n        }\n    };\n    ScrollVisibleService.prototype.isVBodyShowing = function () {\n        return this.vBody;\n    };\n    ScrollVisibleService.prototype.isHBodyShowing = function () {\n        return this.hBody;\n    };\n    ScrollVisibleService.prototype.isVPinnedLeftShowing = function () {\n        return this.vPinnedLeft;\n    };\n    ScrollVisibleService.prototype.isVPinnedRightShowing = function () {\n        return this.vPinnedRight;\n    };\n    ScrollVisibleService.prototype.getPinnedLeftWidth = function () {\n        return this.columnController.getPinnedLeftContainerWidth();\n    };\n    ScrollVisibleService.prototype.getPinnedLeftWithScrollWidth = function () {\n        var result = this.getPinnedLeftWidth();\n        if (this.vPinnedLeft) {\n            result += utils_1.Utils.getScrollbarWidth();\n        }\n        return result;\n    };\n    ScrollVisibleService.prototype.getPinnedRightWidth = function () {\n        return this.columnController.getPinnedRightContainerWidth();\n    };\n    ScrollVisibleService.prototype.getPinnedRightWithScrollWidth = function () {\n        var result = this.getPinnedRightWidth();\n        if (this.vPinnedRight) {\n            result += utils_1.Utils.getScrollbarWidth();\n        }\n        return result;\n    };\n    __decorate([\n        context_1.Autowired('eventService'),\n        __metadata(\"design:type\", eventService_1.EventService)\n    ], ScrollVisibleService.prototype, \"eventService\", void 0);\n    __decorate([\n        context_1.Autowired('columnController'),\n        __metadata(\"design:type\", columnController_1.ColumnController)\n    ], ScrollVisibleService.prototype, \"columnController\", void 0);\n    __decorate([\n        context_1.Autowired('columnApi'),\n        __metadata(\"design:type\", columnController_1.ColumnApi)\n    ], ScrollVisibleService.prototype, \"columnApi\", void 0);\n    __decorate([\n        context_1.Autowired('gridApi'),\n        __metadata(\"design:type\", gridApi_1.GridApi)\n    ], ScrollVisibleService.prototype, \"gridApi\", void 0);\n    ScrollVisibleService = __decorate([\n        context_1.Bean('scrollVisibleService')\n    ], ScrollVisibleService);\n    return ScrollVisibleService;\n}());\nexports.ScrollVisibleService = ScrollVisibleService;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/gridPanel/scrollVisibleService.js\n// module id = 79\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar constants_1 = require(\"../constants\");\nvar context_1 = require(\"../context/context\");\nvar gridCore_1 = require(\"../gridCore\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar PopupService = (function () {\n    function PopupService() {\n        // this.popupService.setPopupParent(this.eRootPanel.getGui());\n        this.activePopupElements = [];\n    }\n    PopupService.prototype.getPopupParent = function () {\n        return this.gridCore.getRootGui();\n    };\n    PopupService.prototype.positionPopupForMenu = function (params) {\n        var sourceRect = params.eventSource.getBoundingClientRect();\n        var parentRect = this.getPopupParent().getBoundingClientRect();\n        var y = sourceRect.top - parentRect.top;\n        y = this.keepYWithinBounds(params, y);\n        var minWidth = (params.ePopup.clientWidth > 0) ? params.ePopup.clientWidth : 200;\n        var widthOfParent = parentRect.right - parentRect.left;\n        var maxX = widthOfParent - minWidth;\n        // the x position of the popup depends on RTL or LTR. for normal cases, LTR, we put the child popup\n        // to the right, unless it doesn't fit and we then put it to the left. for RTL it's the other way around,\n        // we try place it first to the left, and then if not to the right.\n        var x;\n        if (this.gridOptionsWrapper.isEnableRtl()) {\n            // for RTL, try left first\n            x = xLeftPosition();\n            if (x < 0) {\n                x = xRightPosition();\n            }\n            if (x > maxX) {\n                x = 0;\n            }\n        }\n        else {\n            // for LTR, try right first\n            x = xRightPosition();\n            if (x > maxX) {\n                x = xLeftPosition();\n            }\n            if (x < 0) {\n                x = 0;\n            }\n        }\n        params.ePopup.style.left = x + \"px\";\n        params.ePopup.style.top = y + \"px\";\n        function xRightPosition() {\n            return sourceRect.right - parentRect.left - 2;\n        }\n        function xLeftPosition() {\n            return sourceRect.left - parentRect.left - minWidth;\n        }\n    };\n    PopupService.prototype.positionPopupUnderMouseEvent = function (params) {\n        var parentRect = this.getPopupParent().getBoundingClientRect();\n        this.positionPopup({\n            ePopup: params.ePopup,\n            x: params.mouseEvent.clientX - parentRect.left,\n            y: params.mouseEvent.clientY - parentRect.top,\n            keepWithinBounds: true\n        });\n        this.callPostProcessPopup(params.ePopup, null, params.mouseEvent, params.type, params.column, params.rowNode);\n    };\n    PopupService.prototype.positionPopupUnderComponent = function (params) {\n        var sourceRect = params.eventSource.getBoundingClientRect();\n        var parentRect = this.getPopupParent().getBoundingClientRect();\n        this.positionPopup({\n            ePopup: params.ePopup,\n            minWidth: params.minWidth,\n            nudgeX: params.nudgeX,\n            nudgeY: params.nudgeY,\n            x: sourceRect.left - parentRect.left,\n            y: sourceRect.top - parentRect.top + sourceRect.height,\n            keepWithinBounds: params.keepWithinBounds\n        });\n        this.callPostProcessPopup(params.ePopup, params.eventSource, null, params.type, params.column, params.rowNode);\n    };\n    PopupService.prototype.callPostProcessPopup = function (ePopup, eventSource, mouseEvent, type, column, rowNode) {\n        var callback = this.gridOptionsWrapper.getPostProcessPopupFunc();\n        if (callback) {\n            var params = {\n                column: column,\n                rowNode: rowNode,\n                ePopup: ePopup,\n                type: type,\n                eventSource: eventSource,\n                mouseEvent: mouseEvent\n            };\n            callback(params);\n        }\n    };\n    PopupService.prototype.positionPopupOverComponent = function (params) {\n        var sourceRect = params.eventSource.getBoundingClientRect();\n        var parentRect = this.getPopupParent().getBoundingClientRect();\n        this.positionPopup({\n            ePopup: params.ePopup,\n            minWidth: params.minWidth,\n            nudgeX: params.nudgeX,\n            nudgeY: params.nudgeY,\n            x: sourceRect.left - parentRect.left,\n            y: sourceRect.top - parentRect.top,\n            keepWithinBounds: params.keepWithinBounds\n        });\n        this.callPostProcessPopup(params.ePopup, params.eventSource, null, params.type, params.column, params.rowNode);\n    };\n    PopupService.prototype.positionPopup = function (params) {\n        var x = params.x;\n        var y = params.y;\n        if (params.nudgeX) {\n            x += params.nudgeX;\n        }\n        if (params.nudgeY) {\n            y += params.nudgeY;\n        }\n        // if popup is overflowing to the bottom, move it up\n        if (params.keepWithinBounds) {\n            x = this.keepXWithinBounds(params, x);\n            y = this.keepYWithinBounds(params, y);\n        }\n        params.ePopup.style.left = x + \"px\";\n        params.ePopup.style.top = y + \"px\";\n    };\n    PopupService.prototype.keepYWithinBounds = function (params, y) {\n        var parentRect = this.getPopupParent().getBoundingClientRect();\n        var minHeight;\n        if (params.ePopup.clientHeight > 0) {\n            minHeight = params.ePopup.clientHeight;\n        }\n        else {\n            minHeight = 200;\n        }\n        var heightOfParent = parentRect.bottom - parentRect.top;\n        var maxY = heightOfParent - minHeight - 5;\n        if (y > maxY) {\n            return maxY;\n        }\n        else if (y < 0) {\n            return 0;\n        }\n        else {\n            return y;\n        }\n    };\n    PopupService.prototype.keepXWithinBounds = function (params, x) {\n        var parentRect = this.getPopupParent().getBoundingClientRect();\n        var minWidth;\n        if (params.minWidth > 0) {\n            minWidth = params.minWidth;\n        }\n        else if (params.ePopup.clientWidth > 0) {\n            minWidth = params.ePopup.clientWidth;\n        }\n        else {\n            minWidth = 200;\n        }\n        var widthOfParent = parentRect.right - parentRect.left;\n        var maxX = widthOfParent - minWidth - 5;\n        if (x > maxX) {\n            return maxX;\n        }\n        else if (x < 0) {\n            return 0;\n        }\n        else {\n            return x;\n        }\n    };\n    //adds an element to a div, but also listens to background checking for clicks,\n    //so that when the background is clicked, the child is removed again, giving\n    //a model look to popups.\n    PopupService.prototype.addAsModalPopup = function (eChild, closeOnEsc, closedCallback, click) {\n        var _this = this;\n        var eBody = this.gridOptionsWrapper.getDocument();\n        if (!eBody) {\n            console.warn('ag-grid: could not find the body of the document, document.body is empty');\n            return;\n        }\n        eChild.style.top = '0px';\n        eChild.style.left = '0px';\n        var popupAlreadyShown = utils_1.Utils.isVisible(eChild);\n        if (popupAlreadyShown) {\n            return;\n        }\n        var ePopupParent = this.getPopupParent();\n        ePopupParent.appendChild(eChild);\n        this.activePopupElements.push(eChild);\n        var popupHidden = false;\n        var hidePopupOnKeyboardEvent = function (event) {\n            var key = event.which || event.keyCode;\n            if (key === constants_1.Constants.KEY_ESCAPE) {\n                hidePopup(null);\n            }\n        };\n        var hidePopupOnMouseEvent = function (event) {\n            hidePopup(event);\n        };\n        var hidePopupOnTouchEvent = function (event) {\n            hidePopup(null, event);\n        };\n        var hidePopup = function (mouseEvent, touchEvent) {\n            // we don't hide popup if the event was on the child, or any\n            // children of this child\n            if (_this.isEventFromCurrentPopup(mouseEvent, touchEvent, eChild)) {\n                return;\n            }\n            // if the event to close is actually the open event, then ignore it\n            if (_this.isEventSameChainAsOriginalEvent(click, mouseEvent, touchEvent)) {\n                return;\n            }\n            // this method should only be called once. the client can have different\n            // paths, each one wanting to close, so this method may be called multiple times.\n            if (popupHidden) {\n                return;\n            }\n            popupHidden = true;\n            ePopupParent.removeChild(eChild);\n            utils_1.Utils.removeFromArray(_this.activePopupElements, eChild);\n            eBody.removeEventListener('keydown', hidePopupOnKeyboardEvent);\n            eBody.removeEventListener('click', hidePopupOnMouseEvent);\n            eBody.removeEventListener('touchstart', hidePopupOnTouchEvent);\n            eBody.removeEventListener('contextmenu', hidePopupOnMouseEvent);\n            if (closedCallback) {\n                closedCallback();\n            }\n        };\n        // if we add these listeners now, then the current mouse\n        // click will be included, which we don't want\n        setTimeout(function () {\n            if (closeOnEsc) {\n                eBody.addEventListener('keydown', hidePopupOnKeyboardEvent);\n            }\n            eBody.addEventListener('click', hidePopupOnMouseEvent);\n            eBody.addEventListener('touchstart', hidePopupOnTouchEvent);\n            eBody.addEventListener('contextmenu', hidePopupOnMouseEvent);\n        }, 0);\n        return hidePopup;\n    };\n    PopupService.prototype.isEventFromCurrentPopup = function (mouseEvent, touchEvent, eChild) {\n        var event = mouseEvent ? mouseEvent : touchEvent;\n        if (event) {\n            var indexOfThisChild = this.activePopupElements.indexOf(eChild);\n            for (var i = indexOfThisChild; i < this.activePopupElements.length; i++) {\n                var element = this.activePopupElements[i];\n                if (utils_1.Utils.isElementInEventPath(element, event)) {\n                    return true;\n                }\n            }\n        }\n        return false;\n    };\n    // in some browsers, the context menu event can be fired before the click event, which means\n    // the context menu event could open the popup, but then the click event closes it straight away.\n    PopupService.prototype.isEventSameChainAsOriginalEvent = function (originalClick, mouseEvent, touchEvent) {\n        // we check the coordinates of the event, to see if it's the same event. there is a 1 / 1000 chance that\n        // the event is a different event, however that is an edge case that is not very relevant (the user clicking\n        // twice on the same location isn't a normal path).\n        // event could be mouse event or touch event.\n        var mouseEventOrTouch;\n        if (mouseEvent) {\n            // mouse event can be used direction, it has coordinates\n            mouseEventOrTouch = mouseEvent;\n        }\n        else if (touchEvent) {\n            // touch event doesn't have coordinates, need it's touch object\n            mouseEventOrTouch = touchEvent.touches[0];\n        }\n        if (mouseEventOrTouch && originalClick) {\n            // for x, allow 4px margin, to cover iPads, where touch (which opens menu) is followed\n            // by browser click (when you life finger up, touch is interrupted as click in browser)\n            var xMatch = Math.abs(originalClick.screenX - mouseEvent.screenX) < 5;\n            var yMatch = Math.abs(originalClick.screenY - mouseEvent.screenY) < 5;\n            if (xMatch && yMatch) {\n                return true;\n            }\n        }\n        return false;\n    };\n    __decorate([\n        context_1.Autowired('gridCore'),\n        __metadata(\"design:type\", gridCore_1.GridCore)\n    ], PopupService.prototype, \"gridCore\", void 0);\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], PopupService.prototype, \"gridOptionsWrapper\", void 0);\n    PopupService = __decorate([\n        context_1.Bean('popupService')\n    ], PopupService);\n    return PopupService;\n}());\nexports.PopupService = PopupService;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/widgets/popupService.js\n// module id = 80\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\nvar addLeadingSlash = exports.addLeadingSlash = function addLeadingSlash(path) {\n  return path.charAt(0) === '/' ? path : '/' + path;\n};\n\nvar stripLeadingSlash = exports.stripLeadingSlash = function stripLeadingSlash(path) {\n  return path.charAt(0) === '/' ? path.substr(1) : path;\n};\n\nvar hasBasename = exports.hasBasename = function hasBasename(path, prefix) {\n  return new RegExp('^' + prefix + '(\\\\/|\\\\?|#|$)', 'i').test(path);\n};\n\nvar stripBasename = exports.stripBasename = function stripBasename(path, prefix) {\n  return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n};\n\nvar stripTrailingSlash = exports.stripTrailingSlash = function stripTrailingSlash(path) {\n  return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n};\n\nvar parsePath = exports.parsePath = function parsePath(path) {\n  var pathname = path || '/';\n  var search = '';\n  var hash = '';\n\n  var hashIndex = pathname.indexOf('#');\n  if (hashIndex !== -1) {\n    hash = pathname.substr(hashIndex);\n    pathname = pathname.substr(0, hashIndex);\n  }\n\n  var searchIndex = pathname.indexOf('?');\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};\n\nvar createPath = exports.createPath = function createPath(location) {\n  var pathname = location.pathname,\n      search = location.search,\n      hash = location.hash;\n\n\n  var path = pathname || '/';\n\n  if (search && search !== '?') path += search.charAt(0) === '?' ? search : '?' + search;\n\n  if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : '#' + hash;\n\n  return path;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/history/PathUtils.js\n// module id = 81\n// module chunks = 0","export var addLeadingSlash = function addLeadingSlash(path) {\n  return path.charAt(0) === '/' ? path : '/' + path;\n};\n\nexport var stripLeadingSlash = function stripLeadingSlash(path) {\n  return path.charAt(0) === '/' ? path.substr(1) : path;\n};\n\nexport var hasBasename = function hasBasename(path, prefix) {\n  return new RegExp('^' + prefix + '(\\\\/|\\\\?|#|$)', 'i').test(path);\n};\n\nexport var stripBasename = function stripBasename(path, prefix) {\n  return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n};\n\nexport var stripTrailingSlash = function stripTrailingSlash(path) {\n  return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n};\n\nexport var parsePath = function parsePath(path) {\n  var pathname = path || '/';\n  var search = '';\n  var hash = '';\n\n  var hashIndex = pathname.indexOf('#');\n  if (hashIndex !== -1) {\n    hash = pathname.substr(hashIndex);\n    pathname = pathname.substr(0, hashIndex);\n  }\n\n  var searchIndex = pathname.indexOf('?');\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};\n\nexport var createPath = function createPath(location) {\n  var pathname = location.pathname,\n      search = location.search,\n      hash = location.hash;\n\n\n  var path = pathname || '/';\n\n  if (search && search !== '?') path += search.charAt(0) === '?' ? search : '?' + search;\n\n  if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : '#' + hash;\n\n  return path;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/history/es/PathUtils.js\n// module id = 82\n// module chunks = 0","module.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_is-object.js\n// module id = 83\n// module chunks = 0","module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (e) {\n    return true;\n  }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_fails.js\n// module id = 84\n// module chunks = 0","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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_property-desc.js\n// module id = 85\n// module chunks = 0","// 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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-keys.js\n// module id = 86\n// module chunks = 0","exports.f = {}.propertyIsEnumerable;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-pie.js\n// module id = 87\n// module chunks = 0","module.exports = {};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_iterators.js\n// module id = 88\n// module chunks = 0","import _Object$values from 'babel-runtime/core-js/object/values';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _extends from 'babel-runtime/helpers/extends';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport elementType from 'prop-types-extra/lib/elementType';\n\nimport { bsClass, bsSizes, bsStyles, getClassSet, prefix, splitBsProps } from './utils/bootstrapUtils';\nimport { Size, State, Style } from './utils/StyleConfig';\n\nimport SafeAnchor from './SafeAnchor';\n\nvar propTypes = {\n  active: PropTypes.bool,\n  disabled: PropTypes.bool,\n  block: PropTypes.bool,\n  onClick: PropTypes.func,\n  componentClass: elementType,\n  href: PropTypes.string,\n  /**\n   * Defines HTML button type attribute\n   * @defaultValue 'button'\n   */\n  type: PropTypes.oneOf(['button', 'reset', 'submit'])\n};\n\nvar defaultProps = {\n  active: false,\n  block: false,\n  disabled: false\n};\n\nvar Button = function (_React$Component) {\n  _inherits(Button, _React$Component);\n\n  function Button() {\n    _classCallCheck(this, Button);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  Button.prototype.renderAnchor = function renderAnchor(elementProps, className) {\n    return React.createElement(SafeAnchor, _extends({}, elementProps, {\n      className: classNames(className, elementProps.disabled && 'disabled')\n    }));\n  };\n\n  Button.prototype.renderButton = function renderButton(_ref, className) {\n    var componentClass = _ref.componentClass,\n        elementProps = _objectWithoutProperties(_ref, ['componentClass']);\n\n    var Component = componentClass || 'button';\n\n    return React.createElement(Component, _extends({}, elementProps, {\n      type: elementProps.type || 'button',\n      className: className\n    }));\n  };\n\n  Button.prototype.render = function render() {\n    var _extends2;\n\n    var _props = this.props,\n        active = _props.active,\n        block = _props.block,\n        className = _props.className,\n        props = _objectWithoutProperties(_props, ['active', 'block', 'className']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = _extends({}, getClassSet(bsProps), (_extends2 = {\n      active: active\n    }, _extends2[prefix(bsProps, 'block')] = block, _extends2));\n    var fullClassName = classNames(className, classes);\n\n    if (elementProps.href) {\n      return this.renderAnchor(elementProps, fullClassName);\n    }\n\n    return this.renderButton(elementProps, fullClassName);\n  };\n\n  return Button;\n}(React.Component);\n\nButton.propTypes = propTypes;\nButton.defaultProps = defaultProps;\n\nexport default bsClass('btn', bsSizes([Size.LARGE, Size.SMALL, Size.XSMALL], bsStyles([].concat(_Object$values(State), [Style.DEFAULT, Style.PRIMARY, Style.LINK]), Style.DEFAULT, Button)));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/Button.js\n// module id = 89\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _createUncontrollable = require('./createUncontrollable');\n\nvar _createUncontrollable2 = _interopRequireDefault(_createUncontrollable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar mixin = {\n  shouldComponentUpdate: function shouldComponentUpdate() {\n    //let the forceUpdate trigger the update\n    return !this._notifying;\n  }\n};\n\nfunction set(component, propName, handler, value, args) {\n  if (handler) {\n    component._notifying = true;\n    handler.call.apply(handler, [component, value].concat(args));\n    component._notifying = false;\n  }\n\n  component._values[propName] = value;\n\n  if (!component.unmounted) component.forceUpdate();\n}\n\nexports.default = (0, _createUncontrollable2.default)(mixin, set);\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/uncontrollable/index.js\n// module id = 90\n// module chunks = 0","var error = require('./error');\nvar objectHelper = require('./object');\n\nfunction wrapCallback(cb, options) {\n  options = options || {};\n  options.ignoreCasing = options.ignoreCasing ? options.ignoreCasing : false;\n\n  return function(err, data) {\n    var errObj;\n\n    if (!err && !data) {\n      return cb(error.buildResponse('generic_error', 'Something went wrong'));\n    }\n\n    if (!err && data.err) {\n      err = data.err;\n      data = null;\n    }\n\n    if (!err && data.error) {\n      err = data;\n      data = null;\n    }\n\n    if (err) {\n      errObj = {\n        original: err\n      };\n\n      if (err.response && err.response.statusCode) {\n        errObj.statusCode = err.response.statusCode;\n      }\n\n      if (err.response && err.response.statusText) {\n        errObj.statusText = err.response.statusText;\n      }\n\n      if (err.response && err.response.body) {\n        err = err.response.body;\n      }\n\n      if (err.err) {\n        err = err.err;\n      }\n\n      errObj.code = err.error || err.code || err.error_code || err.status || null;\n      errObj.description =\n        err.errorDescription ||\n        err.error_description ||\n        err.description ||\n        err.error ||\n        err.details ||\n        err.err ||\n        null;\n\n      if (err.name) {\n        errObj.name = err.name;\n      }\n\n      if (err.policy) {\n        errObj.policy = err.policy;\n      }\n\n      return cb(errObj);\n    }\n\n    if (data.type && (data.type === 'text/html' || data.type === 'text/plain')) {\n      return cb(null, data.text);\n    }\n\n    if (options.ignoreCasing) {\n      return cb(null, data.body || data);\n    }\n\n    return cb(null, objectHelper.toCamelCase(data.body || data));\n  };\n}\n\nmodule.exports = wrapCallback;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/auth0-js/src/helper/response-handler.js\n// module id = 91\n// module chunks = 0","export const ADD_CATEGORY = 'ADD_CATEGORY';\nexport const GET_CATEGORIES = 'GET_CATEGORIES';\nexport const REMOVE_CATEGORY = 'REMOVE_CATEGORY';\n\nexport const REGISTRATION_START = 'REGISTRATION_START';\nexport const REGISTRATION_SUCCESS = 'REGISTRATION_SUCCESS';\nexport const REGISTRATION_FAIL = 'REGISTRATION_FAIL';\n\nexport const AUTH_SET_PROFILE = 'AUTH_SET_PROFILE';\nexport const AUTH_START = 'AUTH_START';\nexport const AUTH_SUCCESS = 'AUTH_SUCCESS';\nexport const AUTH_FAIL = 'AUTH_FAIL';\nexport const AUTH_LOGOUT = 'AUTH_LOGOUT';\n\nexport const WALMART_GET_ALL_CATEGORIES = 'WALMART_GET_ALL_CATEGORIES';\n\n\n\n\n// WEBPACK FOOTER //\n// src/store/actions/actionTypes.js","import React, {Component} from 'react';\n\nclass Blank extends Component {\n\n    render() {\n        return (\n            <div>\n                {this.props.children}\n            </div>\n        )\n    }\n\n    componentDidMount(){\n        $('body').addClass('gray-bg');\n    }\n\n    componentWillUnmount(){\n        $('body').removeClass('gray-bg');\n    }\n}\n\nexport default Blank\n\n\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/hoc/layouts/Blank.js","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\n// to satisfy server side compilation\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar globalObj = typeof global === 'undefined' ? {} : global;\nglobalObj.HTMLElement = typeof HTMLElement === 'undefined' ? {} : HTMLElement;\nglobalObj.HTMLButtonElement = typeof HTMLButtonElement === 'undefined' ? {} : HTMLButtonElement;\nglobalObj.HTMLSelectElement = typeof HTMLSelectElement === 'undefined' ? {} : HTMLSelectElement;\nglobalObj.HTMLInputElement = typeof HTMLInputElement === 'undefined' ? {} : HTMLInputElement;\nglobalObj.Node = typeof Node === 'undefined' ? {} : Node;\n// columnController\nvar balancedColumnTreeBuilder_1 = require(\"./dist/lib/columnController/balancedColumnTreeBuilder\");\nexports.BalancedColumnTreeBuilder = balancedColumnTreeBuilder_1.BalancedColumnTreeBuilder;\nvar columnController_1 = require(\"./dist/lib/columnController/columnController\");\nexports.ColumnController = columnController_1.ColumnController;\nvar columnKeyCreator_1 = require(\"./dist/lib/columnController/columnKeyCreator\");\nexports.ColumnKeyCreator = columnKeyCreator_1.ColumnKeyCreator;\nvar columnUtils_1 = require(\"./dist/lib/columnController/columnUtils\");\nexports.ColumnUtils = columnUtils_1.ColumnUtils;\nvar displayedGroupCreator_1 = require(\"./dist/lib/columnController/displayedGroupCreator\");\nexports.DisplayedGroupCreator = displayedGroupCreator_1.DisplayedGroupCreator;\nvar groupInstanceIdCreator_1 = require(\"./dist/lib/columnController/groupInstanceIdCreator\");\nexports.GroupInstanceIdCreator = groupInstanceIdCreator_1.GroupInstanceIdCreator;\n// components\nvar componentUtil_1 = require(\"./dist/lib/components/componentUtil\");\nexports.ComponentUtil = componentUtil_1.ComponentUtil;\nvar colDefUtil_1 = require(\"./dist/lib/components/colDefUtil\");\nexports.ColDefUtil = colDefUtil_1.ColDefUtil;\nvar componentProvider_1 = require(\"./dist/lib/components/framework/componentProvider\");\nexports.ComponentProvider = componentProvider_1.ComponentProvider;\nvar agGridNg1_1 = require(\"./dist/lib/components/agGridNg1\");\nexports.initialiseAgGridWithAngular1 = agGridNg1_1.initialiseAgGridWithAngular1;\nvar agGridWebComponent_1 = require(\"./dist/lib/components/agGridWebComponent\");\nexports.initialiseAgGridWithWebComponents = agGridWebComponent_1.initialiseAgGridWithWebComponents;\n// context\nvar beanStub_1 = require(\"./dist/lib/context/beanStub\");\nexports.BeanStub = beanStub_1.BeanStub;\nvar context_1 = require(\"./dist/lib/context/context\");\nexports.Context = context_1.Context;\nexports.Autowired = context_1.Autowired;\nexports.PostConstruct = context_1.PostConstruct;\nexports.PreConstruct = context_1.PreConstruct;\nexports.Optional = context_1.Optional;\nexports.Bean = context_1.Bean;\nexports.Qualifier = context_1.Qualifier;\nexports.PreDestroy = context_1.PreDestroy;\nvar componentAnnotations_1 = require(\"./dist/lib/widgets/componentAnnotations\");\nexports.QuerySelector = componentAnnotations_1.QuerySelector;\nexports.Listener = componentAnnotations_1.Listener;\nexports.RefSelector = componentAnnotations_1.RefSelector;\n// dragAndDrop\nvar dragAndDropService_1 = require(\"./dist/lib/dragAndDrop/dragAndDropService\");\nexports.DragAndDropService = dragAndDropService_1.DragAndDropService;\nexports.DragSourceType = dragAndDropService_1.DragSourceType;\nexports.HDirection = dragAndDropService_1.HDirection;\nexports.VDirection = dragAndDropService_1.VDirection;\nvar dragService_1 = require(\"./dist/lib/dragAndDrop/dragService\");\nexports.DragService = dragService_1.DragService;\n// entities\nvar column_1 = require(\"./dist/lib/entities/column\");\nexports.Column = column_1.Column;\nvar columnGroup_1 = require(\"./dist/lib/entities/columnGroup\");\nexports.ColumnGroup = columnGroup_1.ColumnGroup;\nvar gridCell_1 = require(\"./dist/lib/entities/gridCell\");\nexports.GridCell = gridCell_1.GridCell;\nvar gridRow_1 = require(\"./dist/lib/entities/gridRow\");\nexports.GridRow = gridRow_1.GridRow;\nvar originalColumnGroup_1 = require(\"./dist/lib/entities/originalColumnGroup\");\nexports.OriginalColumnGroup = originalColumnGroup_1.OriginalColumnGroup;\nvar rowNode_1 = require(\"./dist/lib/entities/rowNode\");\nexports.RowNode = rowNode_1.RowNode;\n// filter\nvar baseFilter_1 = require(\"./dist/lib/filter/baseFilter\");\nexports.BaseFilter = baseFilter_1.BaseFilter;\nvar dateFilter_1 = require(\"./dist/lib/filter/dateFilter\");\nexports.DateFilter = dateFilter_1.DateFilter;\nvar filterManager_1 = require(\"./dist/lib/filter/filterManager\");\nexports.FilterManager = filterManager_1.FilterManager;\nvar numberFilter_1 = require(\"./dist/lib/filter/numberFilter\");\nexports.NumberFilter = numberFilter_1.NumberFilter;\nvar textFilter_1 = require(\"./dist/lib/filter/textFilter\");\nexports.TextFilter = textFilter_1.TextFilter;\n// gridPanel\nvar gridPanel_1 = require(\"./dist/lib/gridPanel/gridPanel\");\nexports.GridPanel = gridPanel_1.GridPanel;\nvar scrollVisibleService_1 = require(\"./dist/lib/gridPanel/scrollVisibleService\");\nexports.ScrollVisibleService = scrollVisibleService_1.ScrollVisibleService;\nvar mouseEventService_1 = require(\"./dist/lib/gridPanel/mouseEventService\");\nexports.MouseEventService = mouseEventService_1.MouseEventService;\n// headerRendering\nvar bodyDropPivotTarget_1 = require(\"./dist/lib/headerRendering/bodyDropPivotTarget\");\nexports.BodyDropPivotTarget = bodyDropPivotTarget_1.BodyDropPivotTarget;\nvar bodyDropTarget_1 = require(\"./dist/lib/headerRendering/bodyDropTarget\");\nexports.BodyDropTarget = bodyDropTarget_1.BodyDropTarget;\nvar cssClassApplier_1 = require(\"./dist/lib/headerRendering/cssClassApplier\");\nexports.CssClassApplier = cssClassApplier_1.CssClassApplier;\nvar headerContainer_1 = require(\"./dist/lib/headerRendering/headerContainer\");\nexports.HeaderContainer = headerContainer_1.HeaderContainer;\nvar headerRenderer_1 = require(\"./dist/lib/headerRendering/headerRenderer\");\nexports.HeaderRenderer = headerRenderer_1.HeaderRenderer;\nvar headerRowComp_1 = require(\"./dist/lib/headerRendering/headerRowComp\");\nexports.HeaderRowComp = headerRowComp_1.HeaderRowComp;\nvar horizontalDragService_1 = require(\"./dist/lib/headerRendering/horizontalDragService\");\nexports.HorizontalDragService = horizontalDragService_1.HorizontalDragService;\nvar moveColumnController_1 = require(\"./dist/lib/headerRendering/moveColumnController\");\nexports.MoveColumnController = moveColumnController_1.MoveColumnController;\nvar standardMenu_1 = require(\"./dist/lib/headerRendering/standardMenu\");\nexports.StandardMenuFactory = standardMenu_1.StandardMenuFactory;\n// layout\nvar borderLayout_1 = require(\"./dist/lib/layout/borderLayout\");\nexports.BorderLayout = borderLayout_1.BorderLayout;\nvar tabbedLayout_1 = require(\"./dist/lib/layout/tabbedLayout\");\nexports.TabbedLayout = tabbedLayout_1.TabbedLayout;\nvar verticalStack_1 = require(\"./dist/lib/layout/verticalStack\");\nexports.VerticalStack = verticalStack_1.VerticalStack;\n// misc\nvar simpleHttpRequest_1 = require(\"./dist/lib/misc/simpleHttpRequest\");\nexports.simpleHttpRequest = simpleHttpRequest_1.simpleHttpRequest;\nvar largeTextCellEditor_1 = require(\"./dist/lib/rendering/cellEditors/largeTextCellEditor\");\nexports.LargeTextCellEditor = largeTextCellEditor_1.LargeTextCellEditor;\nvar popupEditorWrapper_1 = require(\"./dist/lib/rendering/cellEditors/popupEditorWrapper\");\nexports.PopupEditorWrapper = popupEditorWrapper_1.PopupEditorWrapper;\nvar popupSelectCellEditor_1 = require(\"./dist/lib/rendering/cellEditors/popupSelectCellEditor\");\nexports.PopupSelectCellEditor = popupSelectCellEditor_1.PopupSelectCellEditor;\nvar popupTextCellEditor_1 = require(\"./dist/lib/rendering/cellEditors/popupTextCellEditor\");\nexports.PopupTextCellEditor = popupTextCellEditor_1.PopupTextCellEditor;\nvar selectCellEditor_1 = require(\"./dist/lib/rendering/cellEditors/selectCellEditor\");\nexports.SelectCellEditor = selectCellEditor_1.SelectCellEditor;\nvar textCellEditor_1 = require(\"./dist/lib/rendering/cellEditors/textCellEditor\");\nexports.TextCellEditor = textCellEditor_1.TextCellEditor;\nvar animateShowChangeCellRenderer_1 = require(\"./dist/lib/rendering/cellRenderers/animateShowChangeCellRenderer\");\nexports.AnimateShowChangeCellRenderer = animateShowChangeCellRenderer_1.AnimateShowChangeCellRenderer;\nvar animateSlideCellRenderer_1 = require(\"./dist/lib/rendering/cellRenderers/animateSlideCellRenderer\");\nexports.AnimateSlideCellRenderer = animateSlideCellRenderer_1.AnimateSlideCellRenderer;\nvar groupCellRenderer_1 = require(\"./dist/lib/rendering/cellRenderers/groupCellRenderer\");\nexports.GroupCellRenderer = groupCellRenderer_1.GroupCellRenderer;\n// features\nvar setLeftFeature_1 = require(\"./dist/lib/rendering/features/setLeftFeature\");\nexports.SetLeftFeature = setLeftFeature_1.SetLeftFeature;\n// rendering\nvar autoWidthCalculator_1 = require(\"./dist/lib/rendering/autoWidthCalculator\");\nexports.AutoWidthCalculator = autoWidthCalculator_1.AutoWidthCalculator;\nvar cellEditorFactory_1 = require(\"./dist/lib/rendering/cellEditorFactory\");\nexports.CellEditorFactory = cellEditorFactory_1.CellEditorFactory;\nvar cellRendererFactory_1 = require(\"./dist/lib/rendering/cellRendererFactory\");\nexports.CellRendererFactory = cellRendererFactory_1.CellRendererFactory;\nvar cellRendererService_1 = require(\"./dist/lib/rendering/cellRendererService\");\nexports.CellRendererService = cellRendererService_1.CellRendererService;\nvar checkboxSelectionComponent_1 = require(\"./dist/lib/rendering/checkboxSelectionComponent\");\nexports.CheckboxSelectionComponent = checkboxSelectionComponent_1.CheckboxSelectionComponent;\nvar cellComp_1 = require(\"./dist/lib/rendering/cellComp\");\nexports.CellComp = cellComp_1.CellComp;\nvar rowComp_1 = require(\"./dist/lib/rendering/rowComp\");\nexports.RowComp = rowComp_1.RowComp;\nvar rowRenderer_1 = require(\"./dist/lib/rendering/rowRenderer\");\nexports.RowRenderer = rowRenderer_1.RowRenderer;\nvar valueFormatterService_1 = require(\"./dist/lib/rendering/valueFormatterService\");\nexports.ValueFormatterService = valueFormatterService_1.ValueFormatterService;\n// rowControllers/inMemory\nvar filterStage_1 = require(\"./dist/lib/rowModels/inMemory/filterStage\");\nexports.FilterStage = filterStage_1.FilterStage;\nvar flattenStage_1 = require(\"./dist/lib/rowModels/inMemory/flattenStage\");\nexports.FlattenStage = flattenStage_1.FlattenStage;\nvar sortStage_1 = require(\"./dist/lib/rowModels/inMemory/sortStage\");\nexports.SortStage = sortStage_1.SortStage;\n// row models\nvar pinnedRowModel_1 = require(\"./dist/lib/rowModels/pinnedRowModel\");\nexports.PinnedRowModel = pinnedRowModel_1.PinnedRowModel;\nvar inMemoryRowModel_1 = require(\"./dist/lib/rowModels/inMemory/inMemoryRowModel\");\nexports.InMemoryRowModel = inMemoryRowModel_1.InMemoryRowModel;\nvar changedPath_1 = require(\"./dist/lib/rowModels/inMemory/changedPath\");\nexports.ChangedPath = changedPath_1.ChangedPath;\nvar inMemoryNodeManager_1 = require(\"./dist/lib/rowModels/inMemory/inMemoryNodeManager\");\nexports.InMemoryNodeManager = inMemoryNodeManager_1.InMemoryNodeManager;\nvar infiniteRowModel_1 = require(\"./dist/lib/rowModels/infinite/infiniteRowModel\");\nexports.InfiniteRowModel = infiniteRowModel_1.InfiniteRowModel;\nvar rowNodeBlock_1 = require(\"./dist/lib/rowModels/cache/rowNodeBlock\");\nexports.RowNodeBlock = rowNodeBlock_1.RowNodeBlock;\nvar rowNodeBlockLoader_1 = require(\"./dist/lib/rowModels/cache/rowNodeBlockLoader\");\nexports.RowNodeBlockLoader = rowNodeBlockLoader_1.RowNodeBlockLoader;\nvar rowNodeCache_1 = require(\"./dist/lib/rowModels/cache/rowNodeCache\");\nexports.RowNodeCache = rowNodeCache_1.RowNodeCache;\n//styling\nvar stylingService_1 = require(\"./dist/lib/styling/stylingService\");\nexports.StylingService = stylingService_1.StylingService;\n// widgets\nvar agCheckbox_1 = require(\"./dist/lib/widgets/agCheckbox\");\nexports.AgCheckbox = agCheckbox_1.AgCheckbox;\nvar component_1 = require(\"./dist/lib/widgets/component\");\nexports.Component = component_1.Component;\nvar popupService_1 = require(\"./dist/lib/widgets/popupService\");\nexports.PopupService = popupService_1.PopupService;\nvar touchListener_1 = require(\"./dist/lib/widgets/touchListener\");\nexports.TouchListener = touchListener_1.TouchListener;\n// root\nvar baseFrameworkFactory_1 = require(\"./dist/lib/baseFrameworkFactory\");\nexports.BaseFrameworkFactory = baseFrameworkFactory_1.BaseFrameworkFactory;\nvar cellNavigationService_1 = require(\"./dist/lib/cellNavigationService\");\nexports.CellNavigationService = cellNavigationService_1.CellNavigationService;\nvar alignedGridsService_1 = require(\"./dist/lib/alignedGridsService\");\nexports.AlignedGridsService = alignedGridsService_1.AlignedGridsService;\nvar constants_1 = require(\"./dist/lib/constants\");\nexports.Constants = constants_1.Constants;\nvar csvCreator_1 = require(\"./dist/lib/csvCreator\");\nexports.CsvCreator = csvCreator_1.CsvCreator;\nexports.BaseCreator = csvCreator_1.BaseCreator;\nvar downloader_1 = require(\"./dist/lib/downloader\");\nexports.Downloader = downloader_1.Downloader;\nvar grid_1 = require(\"./dist/lib/grid\");\nexports.Grid = grid_1.Grid;\nvar gridApi_1 = require(\"./dist/lib/gridApi\");\nexports.GridApi = gridApi_1.GridApi;\nvar events_1 = require(\"./dist/lib/events\");\nexports.Events = events_1.Events;\nvar focusedCellController_1 = require(\"./dist/lib/focusedCellController\");\nexports.FocusedCellController = focusedCellController_1.FocusedCellController;\nvar functions_1 = require(\"./dist/lib/functions\");\nexports.defaultGroupComparator = functions_1.defaultGroupComparator;\nvar gridOptionsWrapper_1 = require(\"./dist/lib/gridOptionsWrapper\");\nexports.GridOptionsWrapper = gridOptionsWrapper_1.GridOptionsWrapper;\nvar eventService_1 = require(\"./dist/lib/eventService\");\nexports.EventService = eventService_1.EventService;\nvar gridCore_1 = require(\"./dist/lib/gridCore\");\nexports.GridCore = gridCore_1.GridCore;\nvar logger_1 = require(\"./dist/lib/logger\");\nexports.Logger = logger_1.Logger;\nvar selectionController_1 = require(\"./dist/lib/selectionController\");\nexports.SelectionController = selectionController_1.SelectionController;\nvar sortController_1 = require(\"./dist/lib/sortController\");\nexports.SortController = sortController_1.SortController;\nvar templateService_1 = require(\"./dist/lib/templateService\");\nexports.TemplateService = templateService_1.TemplateService;\nvar utils_1 = require(\"./dist/lib/utils\");\nexports.Utils = utils_1.Utils;\nexports.NumberSequence = utils_1.NumberSequence;\nexports._ = utils_1._;\nexports.Promise = utils_1.Promise;\nvar valueService_1 = require(\"./dist/lib/valueService/valueService\");\nexports.ValueService = valueService_1.ValueService;\nvar expressionService_1 = require(\"./dist/lib/valueService/expressionService\");\nexports.ExpressionService = expressionService_1.ExpressionService;\nvar xmlFactory_1 = require(\"./dist/lib/xmlFactory\");\nexports.XmlFactory = xmlFactory_1.XmlFactory;\nvar gridSerializer_1 = require(\"./dist/lib/gridSerializer\");\nexports.GridSerializer = gridSerializer_1.GridSerializer;\nexports.BaseGridSerializingSession = gridSerializer_1.BaseGridSerializingSession;\nexports.RowType = gridSerializer_1.RowType;\nvar logger_2 = require(\"./dist/lib/logger\");\nexports.LoggerFactory = logger_2.LoggerFactory;\nvar columnController_2 = require(\"./dist/lib/columnController/columnController\");\nexports.ColumnApi = columnController_2.ColumnApi;\nvar frameworkComponentWrapper_1 = require(\"./dist/lib/components/framework/frameworkComponentWrapper\");\nexports.BaseComponentWrapper = frameworkComponentWrapper_1.BaseComponentWrapper;\nvar environment_1 = require(\"./dist/lib/environment\");\nexports.Environment = environment_1.Environment;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/main.js\n// module id = 94\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar context_2 = require(\"../context/context\");\nvar utils_1 = require(\"../utils\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar cellComp_1 = require(\"../rendering/cellComp\");\nvar MouseEventService = (function () {\n    function MouseEventService() {\n        this.gridInstanceId = MouseEventService_1.gridInstanceSequence.next();\n    }\n    MouseEventService_1 = MouseEventService;\n    MouseEventService.prototype.init = function () {\n        this.stampDomElementWithGridInstance();\n    };\n    // we put the instance id onto the main DOM element. this is used for events, when grids are inside grids,\n    // so the grid can work out if the even came from this grid or a grid inside this one. see the ctrl+v logic\n    // for where this is used.\n    MouseEventService.prototype.stampDomElementWithGridInstance = function () {\n        this.eGridDiv[MouseEventService_1.GRID_DOM_KEY] = this.gridInstanceId;\n    };\n    MouseEventService.prototype.getRenderedCellForEvent = function (event) {\n        var sourceElement = utils_1.Utils.getTarget(event);\n        while (sourceElement) {\n            var renderedCell = this.gridOptionsWrapper.getDomData(sourceElement, cellComp_1.CellComp.DOM_DATA_KEY_CELL_COMP);\n            if (renderedCell) {\n                return renderedCell;\n            }\n            sourceElement = sourceElement.parentElement;\n        }\n        return null;\n    };\n    // walks the path of the event, and returns true if this grid is the first one that it finds. if doing\n    // master / detail grids, and a child grid is found, then it returns false. this stops things like copy/paste\n    // getting executed on many grids at the same time.\n    MouseEventService.prototype.isEventFromThisGrid = function (event) {\n        var path = utils_1.Utils.getEventPath(event);\n        for (var i = 0; i < path.length; i++) {\n            var element = path[i];\n            var instanceId = element[MouseEventService_1.GRID_DOM_KEY];\n            if (utils_1.Utils.exists(instanceId)) {\n                var eventFromThisGrid = instanceId === this.gridInstanceId;\n                return eventFromThisGrid;\n            }\n        }\n        return false;\n    };\n    MouseEventService.prototype.getGridCellForEvent = function (event) {\n        var cellComp = this.getRenderedCellForEvent(event);\n        return cellComp ? cellComp.getGridCell() : null;\n    };\n    MouseEventService.gridInstanceSequence = new utils_1.NumberSequence();\n    MouseEventService.GRID_DOM_KEY = '__ag_grid_instance';\n    __decorate([\n        context_2.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], MouseEventService.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_2.Autowired('eGridDiv'),\n        __metadata(\"design:type\", HTMLElement)\n    ], MouseEventService.prototype, \"eGridDiv\", void 0);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], MouseEventService.prototype, \"init\", null);\n    MouseEventService = MouseEventService_1 = __decorate([\n        context_1.Bean('mouseEventService')\n    ], MouseEventService);\n    return MouseEventService;\n    var MouseEventService_1;\n}());\nexports.MouseEventService = MouseEventService;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/gridPanel/mouseEventService.js\n// module id = 95\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar column_1 = require(\"../entities/column\");\nvar rowNode_1 = require(\"../entities/rowNode\");\nvar constants_1 = require(\"../constants\");\nvar events_1 = require(\"../events\");\nvar gridCell_1 = require(\"../entities/gridCell\");\nvar component_1 = require(\"../widgets/component\");\nvar checkboxSelectionComponent_1 = require(\"./checkboxSelectionComponent\");\nvar CellComp = (function (_super) {\n    __extends(CellComp, _super);\n    function CellComp(scope, beans, column, rowNode, rowComp) {\n        var _this = _super.call(this) || this;\n        _this.editingCell = false;\n        // every time we go into edit mode, or back again, this gets incremented.\n        // it's the components way of dealing with the async nature of framework components,\n        // so if a framework component takes a while to be created, we know if the object\n        // is still relevant when creating is finished. eg we could click edit / unedit 20\n        // times before the first React edit component comes back - we should discard\n        // the first 19.\n        _this.cellEditorVersion = 0;\n        _this.cellRendererVersion = 0;\n        _this.scope = scope;\n        _this.beans = beans;\n        _this.column = column;\n        _this.rowNode = rowNode;\n        _this.rowComp = rowComp;\n        _this.createGridCellVo();\n        _this.rangeSelectionEnabled = beans.enterprise && beans.gridOptionsWrapper.isEnableRangeSelection();\n        _this.cellFocused = _this.beans.focusedCellController.isCellFocused(_this.gridCell);\n        _this.firstRightPinned = _this.column.isFirstRightPinned();\n        _this.lastLeftPinned = _this.column.isLastLeftPinned();\n        if (_this.rangeSelectionEnabled) {\n            _this.rangeCount = _this.beans.rangeController.getCellRangeCount(_this.gridCell);\n        }\n        _this.value = _this.getValue();\n        _this.setUsingWrapper();\n        _this.chooseCellRenderer();\n        _this.setupColSpan();\n        return _this;\n    }\n    CellComp.prototype.getCreateTemplate = function () {\n        var templateParts = [];\n        var col = this.column;\n        var width = this.getCellWidth();\n        var left = col.getLeft();\n        var valueToRender = this.getInitialValueToRender();\n        var valueSanitised = utils_1._.get(this.column, 'colDef.template', null) ? valueToRender : utils_1._.escape(valueToRender);\n        var tooltip = this.getToolTip();\n        var tooltipSanitised = utils_1._.escape(tooltip);\n        var wrapperStartTemplate;\n        var wrapperEndTemplate;\n        var stylesFromColDef = this.preProcessStylesFromColDef();\n        var cssClasses = this.getInitialCssClasses();\n        if (this.usingWrapper) {\n            wrapperStartTemplate = '<span ref=\"eCellWrapper\" class=\"ag-cell-wrapper\"><span ref=\"eCellValue\" class=\"ag-cell-value\">';\n            wrapperEndTemplate = '</span></span>';\n        }\n        // hey, this looks like React!!!\n        templateParts.push(\"<div\");\n        templateParts.push(\" tabindex=\\\"-1\\\"\");\n        templateParts.push(\" role=\\\"gridcell\\\"\");\n        templateParts.push(\" comp-id=\\\"\" + this.getCompId() + \"\\\" \");\n        templateParts.push(\" col-id=\\\"\" + col.getId() + \"\\\"\");\n        templateParts.push(\" class=\\\"\" + cssClasses.join(' ') + \"\\\"\");\n        templateParts.push(tooltipSanitised ? \" title=\\\"\" + tooltipSanitised + \"\\\"\" : \"\");\n        templateParts.push(\" style=\\\"width: \" + width + \"px; left: \" + left + \"px; \" + stylesFromColDef + \"\\\" >\");\n        templateParts.push(wrapperStartTemplate);\n        templateParts.push(valueSanitised);\n        templateParts.push(wrapperEndTemplate);\n        templateParts.push(\"</div>\");\n        return templateParts.join('');\n    };\n    CellComp.prototype.afterAttached = function () {\n        var querySelector = \"[comp-id=\\\"\" + this.getCompId() + \"\\\"]\";\n        var eGui = this.eParentRow.querySelector(querySelector);\n        this.setGui(eGui);\n        // all of these have dependencies on the eGui, so only do them after eGui is set\n        this.addDomData();\n        this.addSelectionCheckbox();\n        this.attachCellRenderer();\n        this.angular1Compile();\n        this.addDestroyableEventListener(this.beans.eventService, events_1.Events.EVENT_CELL_FOCUSED, this.onCellFocused.bind(this));\n        this.addDestroyableEventListener(this.beans.eventService, events_1.Events.EVENT_FLASH_CELLS, this.onFlashCells.bind(this));\n        this.addDestroyableEventListener(this.beans.eventService, events_1.Events.EVENT_COLUMN_HOVER_CHANGED, this.onColumnHover.bind(this));\n        this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_ROW_INDEX_CHANGED, this.onRowIndexChanged.bind(this));\n        this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_CELL_CHANGED, this.onCellChanged.bind(this));\n        this.addDestroyableEventListener(this.column, column_1.Column.EVENT_LEFT_CHANGED, this.onLeftChanged.bind(this));\n        this.addDestroyableEventListener(this.column, column_1.Column.EVENT_WIDTH_CHANGED, this.onWidthChanged.bind(this));\n        this.addDestroyableEventListener(this.column, column_1.Column.EVENT_FIRST_RIGHT_PINNED_CHANGED, this.onFirstRightPinnedChanged.bind(this));\n        this.addDestroyableEventListener(this.column, column_1.Column.EVENT_LAST_LEFT_PINNED_CHANGED, this.onLastLeftPinnedChanged.bind(this));\n        // if not doing enterprise, then range selection service would be missing\n        // so need to check before trying to use it\n        if (this.rangeSelectionEnabled) {\n            this.addDestroyableEventListener(this.beans.eventService, events_1.Events.EVENT_RANGE_SELECTION_CHANGED, this.onRangeSelectionChanged.bind(this));\n        }\n    };\n    CellComp.prototype.onColumnHover = function () {\n        var isHovered = this.beans.columnHoverService.isHovered(this.column);\n        utils_1._.addOrRemoveCssClass(this.getGui(), 'ag-column-hover', isHovered);\n    };\n    CellComp.prototype.onCellChanged = function (event) {\n        var eventImpactsThisCell = event.column === this.column;\n        if (eventImpactsThisCell) {\n            this.refreshCell({});\n        }\n    };\n    CellComp.prototype.getCellLeft = function () {\n        var mostLeftCol;\n        if (this.beans.gridOptionsWrapper.isEnableRtl() && this.colsSpanning) {\n            mostLeftCol = this.colsSpanning[this.colsSpanning.length - 1];\n        }\n        else {\n            mostLeftCol = this.column;\n        }\n        return mostLeftCol.getLeft();\n    };\n    CellComp.prototype.getCellWidth = function () {\n        if (this.colsSpanning) {\n            var result_1 = 0;\n            this.colsSpanning.forEach(function (col) { return result_1 += col.getActualWidth(); });\n            return result_1;\n        }\n        else {\n            return this.column.getActualWidth();\n        }\n    };\n    CellComp.prototype.onFlashCells = function (event) {\n        var cellId = this.gridCell.createId();\n        var shouldFlash = event.cells[cellId];\n        if (shouldFlash) {\n            this.animateCell('highlight');\n        }\n    };\n    CellComp.prototype.setupColSpan = function () {\n        // if no col span is active, then we don't set it up, as it would be wasteful of CPU\n        if (utils_1._.missing(this.column.getColDef().colSpan)) {\n            return;\n        }\n        // because we are col spanning, a reorder of the cols can change what cols we are spanning over\n        this.addDestroyableEventListener(this.beans.eventService, events_1.Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayColumnsChanged.bind(this));\n        // because we are spanning over multiple cols, we check for width any time any cols width changes.\n        // this is expensive - really we should be explicitly checking only the cols we are spanning over\n        // instead of every col, however it would be tricky code to track the cols we are spanning over, so\n        // because hardly anyone will be using colSpan, am favoring this easier way for more maintainable code.\n        this.addDestroyableEventListener(this.beans.eventService, events_1.Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onWidthChanged.bind(this));\n        this.colsSpanning = this.getColSpanningList();\n    };\n    CellComp.prototype.getColSpanningList = function () {\n        var colSpan = this.column.getColSpan(this.rowNode);\n        var colsSpanning = [];\n        // if just one col, the col span is just the column we are in\n        if (colSpan === 1) {\n            colsSpanning.push(this.column);\n        }\n        else {\n            var pointer = this.column;\n            var pinned = this.column.getPinned();\n            for (var i = 0; i < colSpan; i++) {\n                colsSpanning.push(pointer);\n                pointer = this.beans.columnController.getDisplayedColAfter(pointer);\n                if (utils_1._.missing(pointer)) {\n                    break;\n                }\n                // we do not allow col spanning to span outside of pinned areas\n                if (pinned !== pointer.getPinned()) {\n                    break;\n                }\n            }\n        }\n        return colsSpanning;\n    };\n    CellComp.prototype.onDisplayColumnsChanged = function () {\n        var colsSpanning = this.getColSpanningList();\n        if (!utils_1._.compareArrays(this.colsSpanning, colsSpanning)) {\n            this.colsSpanning = colsSpanning;\n            this.onWidthChanged();\n            this.onLeftChanged(); // left changes when doing RTL\n        }\n    };\n    CellComp.prototype.getInitialCssClasses = function () {\n        var cssClasses = [\"ag-cell\", \"ag-cell-not-inline-editing\"];\n        cssClasses.push(this.cellFocused ? 'ag-cell-focus' : 'ag-cell-no-focus');\n        if (this.firstRightPinned) {\n            cssClasses.push('ag-cell-first-right-pinned');\n        }\n        if (this.lastLeftPinned) {\n            cssClasses.push('ag-cell-last-left-pinned');\n        }\n        if (this.beans.columnHoverService.isHovered(this.column)) {\n            cssClasses.push('ag-column-hover');\n        }\n        utils_1._.pushAll(cssClasses, this.preProcessClassesFromColDef());\n        utils_1._.pushAll(cssClasses, this.preProcessCellClassRules());\n        utils_1._.pushAll(cssClasses, this.getRangeClasses());\n        // if using the wrapper, this class goes on the wrapper instead\n        if (!this.usingWrapper) {\n            cssClasses.push('ag-cell-value');\n        }\n        return cssClasses;\n    };\n    CellComp.prototype.getInitialValueToRender = function () {\n        // if using a cellRenderer, then render the html from the cell renderer if it exists\n        if (this.usingCellRenderer) {\n            if (typeof this.cellRendererGui === 'string') {\n                return this.cellRendererGui;\n            }\n            else {\n                return '';\n            }\n        }\n        var colDef = this.column.getColDef();\n        if (colDef.template) {\n            // template is really only used for angular 1 - as people using ng1 are used to providing templates with\n            // bindings in it. in ng2, people will hopefully want to provide components, not templates.\n            return colDef.template;\n        }\n        else if (colDef.templateUrl) {\n            // likewise for templateUrl - it's for ng1 really - when we move away from ng1, we can take these out.\n            // niall was pro angular 1 when writing template and templateUrl, if writing from scratch now, would\n            // not do these, but would follow a pattern that was friendly towards components, not templates.\n            var template = this.beans.templateService.getTemplate(colDef.templateUrl, this.refreshCell.bind(this, true));\n            if (template) {\n                return template;\n            }\n            else {\n                return '';\n            }\n        }\n        else {\n            var valueFormatted = this.beans.valueFormatterService.formatValue(this.column, this.rowNode, null, this.value);\n            var valueFormattedExits = valueFormatted !== null && valueFormatted !== undefined;\n            return valueFormattedExits ? valueFormatted : this.value;\n        }\n    };\n    CellComp.prototype.getRenderedRow = function () {\n        return this.rowComp;\n    };\n    CellComp.prototype.isSuppressNavigable = function () {\n        return this.column.isSuppressNavigable(this.rowNode);\n    };\n    // + stop editing {forceRefresh: true, suppressFlash: true}\n    // + event cellChanged {}\n    // + cellRenderer.params.refresh() {} -> method passes 'as is' to the cellRenderer, so params could be anything\n    // + rowComp: event dataChanged {animate: update, newData: !update}\n    // + rowComp: api refreshCells() {animate: true/false}\n    // + rowRenderer: api softRefreshView() {}\n    CellComp.prototype.refreshCell = function (params) {\n        if (this.editingCell) {\n            return;\n        }\n        var newData = params && params.newData;\n        var suppressFlash = params && params.suppressFlash;\n        var volatile = params && params.volatile;\n        var forceRefresh = params && params.forceRefresh;\n        // if only refreshing volatile cells, then skip the refresh if we are not volatile\n        if (volatile && !this.isVolatile()) {\n            return;\n        }\n        var oldValue = this.value;\n        this.value = this.getValue();\n        // for simple values only (not pojo's), see if the value is the same, and if it is, skip the refresh.\n        // when never allow skipping after an edit, as after editing, we need to put the GUI back to the way\n        // if was before the edit.\n        var skipRefresh = !forceRefresh && this.valuesAreEqual(oldValue, this.value);\n        if (skipRefresh) {\n            return;\n        }\n        var cellRendererRefreshed;\n        // if it's 'new data', then we don't refresh the cellRenderer, even if refresh method is available.\n        // this is because if the whole data is new (ie we are showing stock price 'BBA' now and not 'SSD')\n        // then we are not showing a movement in the stock price, rather we are showing different stock.\n        if (newData || suppressFlash) {\n            cellRendererRefreshed = false;\n        }\n        else {\n            cellRendererRefreshed = this.attemptCellRendererRefresh();\n        }\n        // we do the replace if not doing refresh, or if refresh was unsuccessful.\n        // the refresh can be unsuccessful if we are using a framework (eg ng2 or react) and the framework\n        // wrapper has the refresh method, but the underlying component doesn't\n        if (!cellRendererRefreshed) {\n            this.replaceContentsAfterRefresh();\n        }\n        this.refreshToolTip();\n        if (!suppressFlash) {\n            this.flashCell();\n        }\n        // need to check rules. note, we ignore colDef classes and styles, these are assumed to be static\n        this.postProcessStylesFromColDef();\n        this.postProcessClassesFromColDef();\n        this.postProcessCellClassRules();\n    };\n    CellComp.prototype.flashCell = function () {\n        if (this.beans.gridOptionsWrapper.isEnableCellChangeFlash() || this.column.getColDef().enableCellChangeFlash) {\n            this.animateCell('data-changed');\n        }\n    };\n    CellComp.prototype.animateCell = function (cssName) {\n        var fullName = 'ag-cell-' + cssName;\n        var animationFullName = 'ag-cell-' + cssName + '-animation';\n        var element = this.getGui();\n        // we want to highlight the cells, without any animation\n        utils_1._.addCssClass(element, fullName);\n        utils_1._.removeCssClass(element, animationFullName);\n        // then once that is applied, we remove the highlight with animation\n        setTimeout(function () {\n            utils_1._.removeCssClass(element, fullName);\n            utils_1._.addCssClass(element, animationFullName);\n            setTimeout(function () {\n                // and then to leave things as we got them, we remove the animation\n                utils_1._.removeCssClass(element, animationFullName);\n            }, 1000);\n        }, 500);\n    };\n    CellComp.prototype.replaceContentsAfterRefresh = function () {\n        // otherwise we rip out the cell and replace it\n        utils_1._.removeAllChildren(this.eParentOfValue);\n        // remove old renderer component if it exists\n        if (this.cellRenderer && this.cellRenderer.destroy) {\n            this.cellRenderer.destroy();\n        }\n        this.cellRenderer = null;\n        this.cellRendererGui = null;\n        // populate\n        this.putDataIntoCellAfterRefresh();\n        this.angular1Compile();\n    };\n    CellComp.prototype.angular1Compile = function () {\n        // if angular compiling, then need to also compile the cell again (angular compiling sucks, please wait...)\n        if (this.beans.gridOptionsWrapper.isAngularCompileRows()) {\n            var eGui = this.getGui();\n            this.beans.$compile(eGui)(this.scope);\n        }\n    };\n    CellComp.prototype.postProcessStylesFromColDef = function () {\n        var stylesToUse = this.processStylesFromColDef();\n        if (stylesToUse) {\n            utils_1._.addStylesToElement(this.getGui(), stylesToUse);\n        }\n    };\n    CellComp.prototype.preProcessStylesFromColDef = function () {\n        var stylesToUse = this.processStylesFromColDef();\n        return utils_1._.cssStyleObjectToMarkup(stylesToUse);\n    };\n    CellComp.prototype.processStylesFromColDef = function () {\n        var colDef = this.column.getColDef();\n        if (colDef.cellStyle) {\n            var cssToUse = void 0;\n            if (typeof colDef.cellStyle === 'function') {\n                var cellStyleParams = {\n                    value: this.value,\n                    data: this.rowNode.data,\n                    node: this.rowNode,\n                    colDef: colDef,\n                    column: this.column,\n                    $scope: this.scope,\n                    context: this.beans.gridOptionsWrapper.getContext(),\n                    api: this.beans.gridOptionsWrapper.getApi()\n                };\n                var cellStyleFunc = colDef.cellStyle;\n                cssToUse = cellStyleFunc(cellStyleParams);\n            }\n            else {\n                cssToUse = colDef.cellStyle;\n            }\n            return cssToUse;\n        }\n    };\n    CellComp.prototype.postProcessClassesFromColDef = function () {\n        var _this = this;\n        this.processClassesFromColDef(function (className) { return utils_1._.addCssClass(_this.getGui(), className); });\n    };\n    CellComp.prototype.preProcessClassesFromColDef = function () {\n        var res = [];\n        this.processClassesFromColDef(function (className) { return res.push(className); });\n        return res;\n    };\n    CellComp.prototype.processClassesFromColDef = function (onApplicableClass) {\n        this.beans.stylingService.processStaticCellClasses(this.column.getColDef(), {\n            value: this.value,\n            data: this.rowNode.data,\n            node: this.rowNode,\n            colDef: this.column.getColDef(),\n            rowIndex: this.rowNode.rowIndex,\n            $scope: this.scope,\n            api: this.beans.gridOptionsWrapper.getApi(),\n            context: this.beans.gridOptionsWrapper.getContext()\n        }, onApplicableClass);\n    };\n    CellComp.prototype.putDataIntoCellAfterRefresh = function () {\n        // template gets preference, then cellRenderer, then do it ourselves\n        var colDef = this.column.getColDef();\n        if (colDef.template) {\n            // template is really only used for angular 1 - as people using ng1 are used to providing templates with\n            // bindings in it. in ng2, people will hopefully want to provide components, not templates.\n            this.eParentOfValue.innerHTML = colDef.template;\n        }\n        else if (colDef.templateUrl) {\n            // likewise for templateUrl - it's for ng1 really - when we move away from ng1, we can take these out.\n            // niall was pro angular 1 when writing template and templateUrl, if writing from scratch now, would\n            // not do these, but would follow a pattern that was friendly towards components, not templates.\n            var template = this.beans.templateService.getTemplate(colDef.templateUrl, this.refreshCell.bind(this, true));\n            if (template) {\n                this.eParentOfValue.innerHTML = template;\n            }\n            // use cell renderer if it exists\n        }\n        else if (this.usingCellRenderer) {\n            this.attachCellRenderer();\n        }\n        else {\n            var valueFormatted = this.beans.valueFormatterService.formatValue(this.column, this.rowNode, this.scope, this.value);\n            var valueFormattedExits = valueFormatted !== null && valueFormatted !== undefined;\n            var valueToRender = valueFormattedExits ? valueFormatted : this.value;\n            if (valueToRender !== null && valueToRender !== undefined) {\n                this.eParentOfValue.innerText = valueToRender;\n            }\n        }\n    };\n    CellComp.prototype.attemptCellRendererRefresh = function () {\n        if (utils_1._.missing(this.cellRenderer) || utils_1._.missing(this.cellRenderer.refresh)) {\n            return false;\n        }\n        // if the cell renderer has a refresh method, we call this instead of doing a refresh\n        // note: should pass in params here instead of value?? so that client has formattedValue\n        var valueFormatted = this.formatValue(this.value);\n        var params = this.createCellRendererParams(valueFormatted);\n        var result = this.cellRenderer.refresh(params);\n        // NOTE on undefined: previous version of the cellRenderer.refresh() interface\n        // returned nothing, if the method existed, we assumed it refreshed. so for\n        // backwards compatibility, we assume if method exists and returns nothing,\n        // that it was successful.\n        return result === true || result === undefined;\n    };\n    CellComp.prototype.isVolatile = function () {\n        return this.column.getColDef().volatile;\n    };\n    CellComp.prototype.refreshToolTip = function () {\n        if (this.column.getColDef().tooltipField) {\n            var data = this.rowNode.data;\n            if (utils_1._.exists(data)) {\n                var tooltip = utils_1._.getValueUsingField(data, this.column.getColDef().tooltipField, this.column.isTooltipFieldContainsDots());\n                if (utils_1._.exists(tooltip)) {\n                    this.eParentOfValue.setAttribute('title', tooltip);\n                }\n                else {\n                    this.eParentOfValue.removeAttribute('title');\n                }\n            }\n        }\n    };\n    CellComp.prototype.valuesAreEqual = function (val1, val2) {\n        // if the user provided an equals method, use that, otherwise do simple comparison\n        var colDef = this.column.getColDef();\n        var equalsMethod = colDef ? colDef.equals : null;\n        if (equalsMethod) {\n            return equalsMethod(val1, val2);\n        }\n        else {\n            return val1 === val2;\n        }\n    };\n    CellComp.prototype.getToolTip = function () {\n        var colDef = this.column.getColDef();\n        var data = this.rowNode.data;\n        if (colDef.tooltipField && utils_1._.exists(data)) {\n            return utils_1._.getValueUsingField(data, colDef.tooltipField, this.column.isTooltipFieldContainsDots());\n        }\n        else {\n            return null;\n        }\n    };\n    CellComp.prototype.processCellClassRules = function (onApplicableClass, onNotApplicableClass) {\n        this.beans.stylingService.processClassRules(this.column.getColDef().cellClassRules, {\n            value: this.value,\n            data: this.rowNode.data,\n            node: this.rowNode,\n            colDef: this.column.getColDef(),\n            rowIndex: this.gridCell.rowIndex,\n            api: this.beans.gridOptionsWrapper.getApi(),\n            context: this.beans.gridOptionsWrapper.getContext()\n        }, onApplicableClass, onNotApplicableClass);\n    };\n    CellComp.prototype.postProcessCellClassRules = function () {\n        var _this = this;\n        this.processCellClassRules(function (className) {\n            utils_1._.addCssClass(_this.getGui(), className);\n        }, function (className) {\n            utils_1._.removeCssClass(_this.getGui(), className);\n        });\n    };\n    CellComp.prototype.preProcessCellClassRules = function () {\n        var res = [];\n        this.processCellClassRules(function (className) {\n            res.push(className);\n        }, function (className) {\n            // not catered for, if creating, no need\n            // to remove class as it was never there\n        });\n        return res;\n    };\n    // a wrapper is used when we are putting a selection checkbox in the cell with the value\n    CellComp.prototype.setUsingWrapper = function () {\n        var colDef = this.column.getColDef();\n        // never allow selection on pinned rows\n        if (this.rowNode.rowPinned) {\n            this.usingWrapper = false;\n        }\n        else if (typeof colDef.checkboxSelection === 'boolean') {\n            this.usingWrapper = colDef.checkboxSelection;\n        }\n        else if (typeof colDef.checkboxSelection === 'function') {\n            // if checkboxSelection is a function, then the checkbox may or may not be present,\n            // so we include the HTML wrapper to cater for either case\n            this.usingWrapper = true;\n        }\n        else {\n            this.usingWrapper = false;\n        }\n    };\n    CellComp.prototype.chooseCellRenderer = function () {\n        // template gets preference, then cellRenderer, then do it ourselves\n        var colDef = this.column.getColDef();\n        // templates are for ng1, ideally we wouldn't have these, they are ng1 support\n        // inside the core which is bad\n        if (colDef.template || colDef.templateUrl) {\n            this.usingCellRenderer = false;\n            return;\n        }\n        var cellRenderer = this.beans.componentResolver.getComponentToUse(colDef, 'cellRenderer', 'agCellRenderer');\n        var pinnedRowCellRenderer = this.beans.componentResolver.getComponentToUse(colDef, 'pinnedRowCellRenderer', 'agPinnedRowCellRenderer');\n        if (pinnedRowCellRenderer && this.rowNode.rowPinned) {\n            this.cellRendererType = 'pinnedRowCellRenderer';\n            this.cellRendererComponentName = 'agPinnedRowCellRenderer';\n            this.usingCellRenderer = true;\n        }\n        else if (cellRenderer) {\n            this.cellRendererType = 'cellRenderer';\n            this.cellRendererComponentName = 'agCellRenderer';\n            this.usingCellRenderer = true;\n        }\n        else {\n            this.usingCellRenderer = false;\n        }\n    };\n    CellComp.prototype.createCellRendererInstance = function () {\n        var valueToRender = this.formatValue(this.value);\n        var params = this.createCellRendererParams(valueToRender);\n        this.cellRendererVersion++;\n        var callback = this.afterCellRendererCreated.bind(this, this.cellRendererVersion);\n        this.beans.componentResolver.createAgGridComponent(this.column.getColDef(), params, this.cellRendererType, this.cellRendererComponentName).then(callback);\n    };\n    CellComp.prototype.afterCellRendererCreated = function (cellRendererVersion, cellRenderer) {\n        // see if daemon\n        if (cellRendererVersion !== this.cellRendererVersion) {\n            if (cellRenderer.destroy) {\n                cellRenderer.destroy();\n            }\n            return;\n        }\n        this.cellRenderer = cellRenderer;\n        this.cellRendererGui = this.cellRenderer.getGui();\n        if (utils_1._.missing(this.cellRendererGui)) {\n            return;\n        }\n        // if async components, then it's possible the user started editing since\n        // this call was made\n        if (!this.editingCell) {\n            this.eParentOfValue.appendChild(this.cellRendererGui);\n        }\n    };\n    CellComp.prototype.attachCellRenderer = function () {\n        if (!this.usingCellRenderer) {\n            return;\n        }\n        this.createCellRendererInstance();\n    };\n    CellComp.prototype.createCellRendererParams = function (valueFormatted) {\n        var _this = this;\n        var params = {\n            value: this.value,\n            valueFormatted: valueFormatted,\n            getValue: this.getValue.bind(this),\n            setValue: function (value) { _this.beans.valueService.setValue(_this.rowNode, _this.column, value); },\n            formatValue: this.formatValue.bind(this),\n            data: this.rowNode.data,\n            node: this.rowNode,\n            colDef: this.column.getColDef(),\n            column: this.column,\n            $scope: this.scope,\n            rowIndex: this.gridCell.rowIndex,\n            api: this.beans.gridOptionsWrapper.getApi(),\n            columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n            context: this.beans.gridOptionsWrapper.getContext(),\n            refreshCell: this.refreshCell.bind(this),\n            eGridCell: this.getGui(),\n            eParentOfValue: this.eParentOfValue,\n            // these bits are not documented anywhere, so we could drop them?\n            // it was in the olden days to allow user to register for when rendered\n            // row was removed (the row comp was removed), however now that the user\n            // can provide components for cells, the destroy method gets call when this\n            // happens so no longer need to fire event.\n            addRowCompListener: this.rowComp.addEventListener.bind(this.rowComp),\n            addRenderedRowListener: function (eventType, listener) {\n                console.warn('ag-Grid: since ag-Grid .v11, params.addRenderedRowListener() is now params.addRowCompListener()');\n                _this.rowComp.addEventListener(eventType, listener);\n            }\n        };\n        return params;\n    };\n    CellComp.prototype.formatValue = function (value) {\n        var valueFormatted = this.beans.valueFormatterService.formatValue(this.column, this.rowNode, this.scope, value);\n        var valueFormattedExists = valueFormatted !== null && valueFormatted !== undefined;\n        return valueFormattedExists ? valueFormatted : value;\n    };\n    CellComp.prototype.getValue = function () {\n        // if we don't check this, then the grid will render leaf groups as open even if we are not\n        // allowing the user to open leaf groups. confused? remember for pivot mode we don't allow\n        // opening leaf groups, so we have to force leafGroups to be closed in case the user expanded\n        // them via the API, or user user expanded them in the UI before turning on pivot mode\n        var lockedClosedGroup = this.rowNode.leafGroup && this.beans.columnController.isPivotMode();\n        var isOpenGroup = this.rowNode.group && this.rowNode.expanded && !this.rowNode.footer && !lockedClosedGroup;\n        if (isOpenGroup && this.beans.gridOptionsWrapper.isGroupIncludeFooter()) {\n            // if doing grouping and footers, we don't want to include the agg value\n            // in the header when the group is open\n            return this.beans.valueService.getValue(this.column, this.rowNode, true);\n        }\n        else {\n            return this.beans.valueService.getValue(this.column, this.rowNode);\n        }\n    };\n    CellComp.prototype.onMouseEvent = function (eventName, mouseEvent) {\n        if (utils_1._.isStopPropagationForAgGrid(mouseEvent)) {\n            return;\n        }\n        switch (eventName) {\n            case 'click':\n                this.onCellClicked(mouseEvent);\n                break;\n            case 'mousedown':\n                this.onMouseDown();\n                break;\n            case 'dblclick':\n                this.onCellDoubleClicked(mouseEvent);\n                break;\n            case 'mouseout':\n                this.onMouseOut(mouseEvent);\n                break;\n            case 'mouseover':\n                this.onMouseOver(mouseEvent);\n                break;\n        }\n    };\n    CellComp.prototype.dispatchCellContextMenuEvent = function (event) {\n        var colDef = this.column.getColDef();\n        var cellContextMenuEvent = this.createEvent(event, events_1.Events.EVENT_CELL_CONTEXT_MENU);\n        this.beans.eventService.dispatchEvent(cellContextMenuEvent);\n        if (colDef.onCellContextMenu) {\n            colDef.onCellContextMenu(cellContextMenuEvent);\n        }\n    };\n    CellComp.prototype.createEvent = function (domEvent, eventType) {\n        var event = {\n            node: this.rowNode,\n            data: this.rowNode.data,\n            value: this.value,\n            column: this.column,\n            colDef: this.column.getColDef(),\n            context: this.beans.gridOptionsWrapper.getContext(),\n            api: this.beans.gridApi,\n            columnApi: this.beans.columnApi,\n            rowPinned: this.rowNode.rowPinned,\n            event: domEvent,\n            type: eventType,\n            rowIndex: this.rowNode.rowIndex\n        };\n        // because we are hacking in $scope for angular 1, we have to de-reference\n        if (this.scope) {\n            event.$scope = this.scope;\n        }\n        return event;\n    };\n    CellComp.prototype.onMouseOut = function (mouseEvent) {\n        var cellMouseOutEvent = this.createEvent(mouseEvent, events_1.Events.EVENT_CELL_MOUSE_OUT);\n        this.beans.eventService.dispatchEvent(cellMouseOutEvent);\n    };\n    CellComp.prototype.onMouseOver = function (mouseEvent) {\n        var cellMouseOverEvent = this.createEvent(mouseEvent, events_1.Events.EVENT_CELL_MOUSE_OVER);\n        this.beans.eventService.dispatchEvent(cellMouseOverEvent);\n    };\n    CellComp.prototype.onCellDoubleClicked = function (mouseEvent) {\n        var colDef = this.column.getColDef();\n        // always dispatch event to eventService\n        var cellDoubleClickedEvent = this.createEvent(mouseEvent, events_1.Events.EVENT_CELL_DOUBLE_CLICKED);\n        this.beans.eventService.dispatchEvent(cellDoubleClickedEvent);\n        // check if colDef also wants to handle event\n        if (typeof colDef.onCellDoubleClicked === 'function') {\n            colDef.onCellDoubleClicked(cellDoubleClickedEvent);\n        }\n        var editOnDoubleClick = !this.beans.gridOptionsWrapper.isSingleClickEdit()\n            && !this.beans.gridOptionsWrapper.isSuppressClickEdit();\n        if (editOnDoubleClick) {\n            this.startRowOrCellEdit();\n        }\n    };\n    // called by rowRenderer when user navigates via tab key\n    CellComp.prototype.startRowOrCellEdit = function (keyPress, charPress) {\n        if (this.beans.gridOptionsWrapper.isFullRowEdit()) {\n            this.rowComp.startRowEditing(keyPress, charPress, this);\n        }\n        else {\n            this.startEditingIfEnabled(keyPress, charPress, true);\n        }\n    };\n    CellComp.prototype.isCellEditable = function () {\n        return this.column.isCellEditable(this.rowNode);\n    };\n    // either called internally if single cell editing, or called by rowRenderer if row editing\n    CellComp.prototype.startEditingIfEnabled = function (keyPress, charPress, cellStartedEdit) {\n        if (keyPress === void 0) { keyPress = null; }\n        if (charPress === void 0) { charPress = null; }\n        if (cellStartedEdit === void 0) { cellStartedEdit = false; }\n        // don't do it if not editable\n        if (!this.isCellEditable()) {\n            return;\n        }\n        // don't do it if already editing\n        if (this.editingCell) {\n            return;\n        }\n        this.editingCell = true;\n        this.cellEditorVersion++;\n        var callback = this.afterCellEditorCreated.bind(this, this.cellEditorVersion);\n        var params = this.createCellEditorParams(keyPress, charPress, cellStartedEdit);\n        this.beans.cellEditorFactory.createCellEditor(this.column.getColDef(), params).then(callback);\n        // if we don't do this, and editor component is async, then there will be a period\n        // when the component isn't present and keyboard navigation won't work - so example\n        // of user hitting tab quickly (more quickly than renderers getting created) won't work\n        var cellEditorAsync = utils_1._.missing(this.cellEditor);\n        if (cellEditorAsync && cellStartedEdit) {\n            this.focusCell(true);\n        }\n    };\n    CellComp.prototype.afterCellEditorCreated = function (cellEditorVersion, cellEditor) {\n        // if editingCell=false, means user cancelled the editor before component was ready.\n        // if versionMismatch, then user cancelled the edit, then started the edit again, and this\n        //   is the first editor which is now stale.\n        var versionMismatch = cellEditorVersion !== this.cellEditorVersion;\n        if (versionMismatch || !this.editingCell) {\n            if (cellEditor.destroy) {\n                cellEditor.destroy();\n            }\n            return;\n        }\n        if (cellEditor.isCancelBeforeStart && cellEditor.isCancelBeforeStart()) {\n            if (cellEditor.destroy) {\n                cellEditor.destroy();\n            }\n            this.editingCell = false;\n            return;\n        }\n        if (!cellEditor.getGui) {\n            console.warn(\"ag-Grid: cellEditor for column \" + this.column.getId() + \" is missing getGui() method\");\n            // no getGui, for React guys, see if they attached a react component directly\n            if (cellEditor.render) {\n                console.warn(\"ag-Grid: we found 'render' on the component, are you trying to set a React renderer but added it as colDef.cellEditor instead of colDef.cellEditorFmk?\");\n            }\n            if (cellEditor.destroy) {\n                cellEditor.destroy();\n            }\n            this.editingCell = false;\n            return;\n        }\n        this.cellEditor = cellEditor;\n        this.cellEditorInPopup = cellEditor.isPopup && cellEditor.isPopup();\n        this.setInlineEditingClass();\n        if (this.cellEditorInPopup) {\n            this.addPopupCellEditor();\n        }\n        else {\n            this.addInCellEditor();\n        }\n        if (cellEditor.afterGuiAttached) {\n            cellEditor.afterGuiAttached();\n        }\n        var event = this.createEvent(null, events_1.Events.EVENT_CELL_EDITING_STARTED);\n        this.beans.eventService.dispatchEvent(event);\n    };\n    CellComp.prototype.addInCellEditor = function () {\n        utils_1._.removeAllChildren(this.getGui());\n        this.getGui().appendChild(this.cellEditor.getGui());\n        this.angular1Compile();\n    };\n    CellComp.prototype.addPopupCellEditor = function () {\n        var _this = this;\n        var ePopupGui = this.cellEditor.getGui();\n        this.hideEditorPopup = this.beans.popupService.addAsModalPopup(ePopupGui, true, \n        // callback for when popup disappears\n        function () {\n            _this.onPopupEditorClosed();\n        });\n        this.beans.popupService.positionPopupOverComponent({\n            column: this.column,\n            rowNode: this.rowNode,\n            type: 'popupCellEditor',\n            eventSource: this.getGui(),\n            ePopup: ePopupGui,\n            keepWithinBounds: true\n        });\n        this.angular1Compile();\n    };\n    CellComp.prototype.onPopupEditorClosed = function () {\n        // we only call stopEditing if we are editing, as\n        // it's possible the popup called 'stop editing'\n        // before this, eg if 'enter key' was pressed on\n        // the editor.\n        if (this.editingCell) {\n            // note: this only happens when use clicks outside of the grid. if use clicks on another\n            // cell, then the editing will have already stopped on this cell\n            this.stopRowOrCellEdit();\n            // we only focus cell again if this cell is still focused. it is possible\n            // it is not focused if the user cancelled the edit by clicking on another\n            // cell outside of this one\n            if (this.beans.focusedCellController.isCellFocused(this.gridCell)) {\n                this.focusCell(true);\n            }\n        }\n    };\n    // if we are editing inline, then we don't have the padding in the cell (set in the themes)\n    // to allow the text editor full access to the entire cell\n    CellComp.prototype.setInlineEditingClass = function () {\n        var editingInline = this.editingCell && !this.cellEditorInPopup;\n        utils_1._.addOrRemoveCssClass(this.getGui(), 'ag-cell-inline-editing', editingInline);\n        utils_1._.addOrRemoveCssClass(this.getGui(), 'ag-cell-not-inline-editing', !editingInline);\n    };\n    CellComp.prototype.createCellEditorParams = function (keyPress, charPress, cellStartedEdit) {\n        var params = {\n            value: this.getValue(),\n            keyPress: keyPress,\n            charPress: charPress,\n            column: this.column,\n            rowIndex: this.gridCell.rowIndex,\n            node: this.rowNode,\n            api: this.beans.gridOptionsWrapper.getApi(),\n            cellStartedEdit: cellStartedEdit,\n            columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n            context: this.beans.gridOptionsWrapper.getContext(),\n            $scope: this.scope,\n            onKeyDown: this.onKeyDown.bind(this),\n            stopEditing: this.stopEditingAndFocus.bind(this),\n            eGridCell: this.getGui(),\n            parseValue: this.parseValue.bind(this),\n            formatValue: this.formatValue.bind(this)\n        };\n        return params;\n    };\n    // cell editors call this, when they want to stop for reasons other\n    // than what we pick up on. eg selecting from a dropdown ends editing.\n    CellComp.prototype.stopEditingAndFocus = function () {\n        this.stopRowOrCellEdit();\n        this.focusCell(true);\n    };\n    CellComp.prototype.parseValue = function (newValue) {\n        var params = {\n            node: this.rowNode,\n            data: this.rowNode.data,\n            oldValue: this.value,\n            newValue: newValue,\n            colDef: this.column.getColDef(),\n            column: this.column,\n            api: this.beans.gridOptionsWrapper.getApi(),\n            columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n            context: this.beans.gridOptionsWrapper.getContext()\n        };\n        var valueParser = this.column.getColDef().valueParser;\n        return utils_1._.exists(valueParser) ? this.beans.expressionService.evaluate(valueParser, params) : newValue;\n    };\n    CellComp.prototype.focusCell = function (forceBrowserFocus) {\n        if (forceBrowserFocus === void 0) { forceBrowserFocus = false; }\n        this.beans.focusedCellController.setFocusedCell(this.gridCell.rowIndex, this.column, this.rowNode.rowPinned, forceBrowserFocus);\n    };\n    CellComp.prototype.setFocusInOnEditor = function () {\n        if (this.editingCell) {\n            if (this.cellEditor && this.cellEditor.focusIn) {\n                // if the editor is present, then we just focus it\n                this.cellEditor.focusIn();\n            }\n            else {\n                // if the editor is not present, it means async cell editor (eg React fibre)\n                // and we are trying to set focus before the cell editor is present, so we\n                // focus the cell instead\n                this.focusCell(true);\n            }\n        }\n    };\n    CellComp.prototype.isEditing = function () {\n        return this.editingCell;\n    };\n    CellComp.prototype.onKeyDown = function (event) {\n        var key = event.which || event.keyCode;\n        // give user a chance to cancel event processing\n        if (this.doesUserWantToCancelKeyboardEvent(event)) {\n            return;\n        }\n        switch (key) {\n            case constants_1.Constants.KEY_ENTER:\n                this.onEnterKeyDown();\n                break;\n            case constants_1.Constants.KEY_F2:\n                this.onF2KeyDown();\n                break;\n            case constants_1.Constants.KEY_ESCAPE:\n                this.onEscapeKeyDown();\n                break;\n            case constants_1.Constants.KEY_TAB:\n                this.onTabKeyDown(event);\n                break;\n            case constants_1.Constants.KEY_BACKSPACE:\n            case constants_1.Constants.KEY_DELETE:\n                this.onBackspaceOrDeleteKeyPressed(key);\n                break;\n            case constants_1.Constants.KEY_DOWN:\n            case constants_1.Constants.KEY_UP:\n            case constants_1.Constants.KEY_RIGHT:\n            case constants_1.Constants.KEY_LEFT:\n                this.onNavigationKeyPressed(event, key);\n                break;\n        }\n    };\n    CellComp.prototype.doesUserWantToCancelKeyboardEvent = function (event) {\n        var callback = this.column.getColDef().suppressKeyboardEvent;\n        if (utils_1._.missing(callback)) {\n            return false;\n        }\n        else {\n            // if editing is null or undefined, this sets it to false\n            var params = {\n                event: event,\n                editing: this.editingCell,\n                column: this.column,\n                api: this.beans.gridOptionsWrapper.getApi(),\n                node: this.rowNode,\n                colDef: this.column.getColDef(),\n                context: this.beans.gridOptionsWrapper.getContext(),\n                columnApi: this.beans.gridOptionsWrapper.getColumnApi()\n            };\n            return callback(params);\n        }\n    };\n    CellComp.prototype.setFocusOutOnEditor = function () {\n        if (this.editingCell && this.cellEditor && this.cellEditor.focusOut) {\n            this.cellEditor.focusOut();\n        }\n    };\n    CellComp.prototype.onNavigationKeyPressed = function (event, key) {\n        if (this.editingCell) {\n            this.stopRowOrCellEdit();\n        }\n        this.beans.rowRenderer.navigateToNextCell(event, key, this.gridCell.rowIndex, this.column, this.rowNode.rowPinned);\n        // if we don't prevent default, the grid will scroll with the navigation keys\n        event.preventDefault();\n    };\n    CellComp.prototype.onTabKeyDown = function (event) {\n        if (this.beans.gridOptionsWrapper.isSuppressTabbing()) {\n            return;\n        }\n        this.beans.rowRenderer.onTabKeyDown(this, event);\n    };\n    CellComp.prototype.onBackspaceOrDeleteKeyPressed = function (key) {\n        if (!this.editingCell) {\n            this.startRowOrCellEdit(key);\n        }\n    };\n    CellComp.prototype.onEnterKeyDown = function () {\n        if (this.editingCell || this.rowComp.isEditing()) {\n            this.stopRowOrCellEdit();\n            this.focusCell(true);\n        }\n        else {\n            this.startRowOrCellEdit(constants_1.Constants.KEY_ENTER);\n        }\n    };\n    CellComp.prototype.onF2KeyDown = function () {\n        if (!this.editingCell) {\n            this.startRowOrCellEdit(constants_1.Constants.KEY_F2);\n        }\n    };\n    CellComp.prototype.onEscapeKeyDown = function () {\n        if (this.editingCell) {\n            this.stopRowOrCellEdit(true);\n            this.focusCell(true);\n        }\n    };\n    CellComp.prototype.onKeyPress = function (event) {\n        // check this, in case focus is on a (for example) a text field inside the cell,\n        // in which cse we should not be listening for these key pressed\n        var eventTarget = utils_1._.getTarget(event);\n        var eventOnChildComponent = eventTarget !== this.getGui();\n        if (eventOnChildComponent) {\n            return;\n        }\n        if (!this.editingCell) {\n            var pressedChar = String.fromCharCode(event.charCode);\n            if (pressedChar === ' ') {\n                this.onSpaceKeyPressed(event);\n            }\n            else {\n                if (utils_1._.isEventFromPrintableCharacter(event)) {\n                    this.startRowOrCellEdit(null, pressedChar);\n                    // if we don't prevent default, then the keypress also gets applied to the text field\n                    // (at least when doing the default editor), but we need to allow the editor to decide\n                    // what it wants to do. we only do this IF editing was started - otherwise it messes\n                    // up when the use is not doing editing, but using rendering with text fields in cellRenderer\n                    // (as it would block the the user from typing into text fields).\n                    event.preventDefault();\n                }\n            }\n        }\n    };\n    CellComp.prototype.onSpaceKeyPressed = function (event) {\n        if (!this.editingCell && this.beans.gridOptionsWrapper.isRowSelection()) {\n            var selected = this.rowNode.isSelected();\n            this.rowNode.setSelected(!selected);\n        }\n        // prevent default as space key, by default, moves browser scroll down\n        event.preventDefault();\n    };\n    CellComp.prototype.onMouseDown = function () {\n        // we pass false to focusCell, as we don't want the cell to focus\n        // also get the browser focus. if we did, then the cellRenderer could\n        // have a text field in it, for example, and as the user clicks on the\n        // text field, the text field, the focus doesn't get to the text\n        // field, instead to goes to the div behind, making it impossible to\n        // select the text field.\n        this.focusCell(false);\n        // if it's a right click, then if the cell is already in range,\n        // don't change the range, however if the cell is not in a range,\n        // we set a new range\n        if (this.beans.rangeController) {\n            var thisCell = this.gridCell;\n            var cellAlreadyInRange = this.beans.rangeController.isCellInAnyRange(thisCell);\n            if (!cellAlreadyInRange) {\n                this.beans.rangeController.setRangeToCell(thisCell);\n            }\n        }\n    };\n    // returns true if on iPad and this is second 'click' event in 200ms\n    CellComp.prototype.isDoubleClickOnIPad = function () {\n        if (!utils_1._.isUserAgentIPad()) {\n            return false;\n        }\n        var nowMillis = new Date().getTime();\n        var res = nowMillis - this.lastIPadMouseClickEvent < 200;\n        this.lastIPadMouseClickEvent = nowMillis;\n        return res;\n    };\n    CellComp.prototype.onCellClicked = function (mouseEvent) {\n        // iPad doesn't have double click - so we need to mimic it do enable editing for\n        // iPad.\n        if (this.isDoubleClickOnIPad()) {\n            this.onCellDoubleClicked(mouseEvent);\n            mouseEvent.preventDefault(); // if we don't do this, then ipad zooms in\n            return;\n        }\n        var cellClickedEvent = this.createEvent(mouseEvent, events_1.Events.EVENT_CELL_CLICKED);\n        this.beans.eventService.dispatchEvent(cellClickedEvent);\n        var colDef = this.column.getColDef();\n        if (colDef.onCellClicked) {\n            colDef.onCellClicked(cellClickedEvent);\n        }\n        var editOnSingleClick = this.beans.gridOptionsWrapper.isSingleClickEdit()\n            && !this.beans.gridOptionsWrapper.isSuppressClickEdit();\n        if (editOnSingleClick) {\n            this.startRowOrCellEdit();\n        }\n        this.doIeFocusHack();\n    };\n    // https://ag-grid.com/forum/showthread.php?tid=4362\n    // when in IE or Edge, when you are editing a cell, then click on another cell,\n    // the other cell doesn't keep focus, so navigation keys, type to start edit etc\n    // don't work. appears that when you update the dom in IE it looses focus\n    CellComp.prototype.doIeFocusHack = function () {\n        if (utils_1._.isBrowserIE() || utils_1._.isBrowserEdge()) {\n            if (utils_1._.missing(document.activeElement) || document.activeElement === document.body) {\n                // console.log('missing focus');\n                this.getGui().focus();\n            }\n        }\n    };\n    CellComp.prototype.createGridCellVo = function () {\n        var gridCellDef = {\n            rowIndex: this.rowNode.rowIndex,\n            floating: this.rowNode.rowPinned,\n            column: this.column\n        };\n        this.gridCell = new gridCell_1.GridCell(gridCellDef);\n    };\n    CellComp.prototype.getGridCell = function () {\n        return this.gridCell;\n    };\n    CellComp.prototype.getParentRow = function () {\n        return this.eParentRow;\n    };\n    CellComp.prototype.setParentRow = function (eParentRow) {\n        this.eParentRow = eParentRow;\n    };\n    CellComp.prototype.getColumn = function () {\n        return this.column;\n    };\n    CellComp.prototype.detach = function () {\n        this.eParentRow.removeChild(this.getGui());\n    };\n    // if the row is also getting destroyed, then we don't need to remove from dom,\n    // as the row will also get removed, so no need to take out the cells from the row\n    // if the row is going (removing is an expensive operation, so only need to remove\n    // the top part)\n    CellComp.prototype.destroy = function () {\n        _super.prototype.destroy.call(this);\n        if (this.cellEditor && this.cellEditor.destroy) {\n            this.cellEditor.destroy();\n            this.cellEditor = null;\n        }\n        if (this.cellRenderer && this.cellRenderer.destroy) {\n            this.cellRenderer.destroy();\n            this.cellRenderer = null;\n        }\n    };\n    CellComp.prototype.onLeftChanged = function () {\n        var left = this.getCellLeft();\n        this.getGui().style.left = left + 'px';\n    };\n    CellComp.prototype.onWidthChanged = function () {\n        var width = this.getCellWidth();\n        this.getGui().style.width = width + 'px';\n    };\n    CellComp.prototype.getRangeClasses = function () {\n        var res = [];\n        if (!this.rangeSelectionEnabled) {\n            return res;\n        }\n        if (this.rangeCount !== 0) {\n            res.push('ag-cell-range-selected');\n        }\n        if (this.rangeCount === 1) {\n            res.push('ag-cell-range-selected-1');\n        }\n        if (this.rangeCount === 2) {\n            res.push('ag-cell-range-selected-2');\n        }\n        if (this.rangeCount === 3) {\n            res.push('ag-cell-range-selected-3');\n        }\n        if (this.rangeCount >= 4) {\n            res.push('ag-cell-range-selected-4');\n        }\n        return res;\n    };\n    CellComp.prototype.onRowIndexChanged = function () {\n        // when index changes, this influences items that need the index, so we update the\n        // grid cell so they are working off the new index.\n        this.createGridCellVo();\n        // when the index of the row changes, ie means the cell may have lost or gained focus\n        this.onCellFocused();\n        // check range selection\n        this.onRangeSelectionChanged();\n    };\n    CellComp.prototype.onRangeSelectionChanged = function () {\n        if (!this.beans.enterprise) {\n            return;\n        }\n        var newRangeCount = this.beans.rangeController.getCellRangeCount(this.gridCell);\n        var element = this.getGui();\n        if (this.rangeCount !== newRangeCount) {\n            utils_1._.addOrRemoveCssClass(element, 'ag-cell-range-selected', newRangeCount !== 0);\n            utils_1._.addOrRemoveCssClass(element, 'ag-cell-range-selected-1', newRangeCount === 1);\n            utils_1._.addOrRemoveCssClass(element, 'ag-cell-range-selected-2', newRangeCount === 2);\n            utils_1._.addOrRemoveCssClass(element, 'ag-cell-range-selected-3', newRangeCount === 3);\n            utils_1._.addOrRemoveCssClass(element, 'ag-cell-range-selected-4', newRangeCount >= 4);\n            this.rangeCount = newRangeCount;\n        }\n    };\n    CellComp.prototype.onFirstRightPinnedChanged = function () {\n        var firstRightPinned = this.column.isFirstRightPinned();\n        if (this.firstRightPinned !== firstRightPinned) {\n            this.firstRightPinned = firstRightPinned;\n            utils_1._.addOrRemoveCssClass(this.getGui(), 'ag-cell-first-right-pinned', firstRightPinned);\n        }\n    };\n    CellComp.prototype.onLastLeftPinnedChanged = function () {\n        var lastLeftPinned = this.column.isLastLeftPinned();\n        if (this.lastLeftPinned !== lastLeftPinned) {\n            this.lastLeftPinned = lastLeftPinned;\n            utils_1._.addOrRemoveCssClass(this.getGui(), 'ag-cell-last-left-pinned', lastLeftPinned);\n        }\n    };\n    CellComp.prototype.addSelectionCheckbox = function () {\n        if (this.usingWrapper) {\n            this.eParentOfValue = this.getRefElement('eCellValue');\n            this.eCellWrapper = this.getRefElement('eCellWrapper');\n            var cbSelectionComponent_1 = new checkboxSelectionComponent_1.CheckboxSelectionComponent();\n            this.beans.context.wireBean(cbSelectionComponent_1);\n            var visibleFunc = this.column.getColDef().checkboxSelection;\n            visibleFunc = typeof visibleFunc === 'function' ? visibleFunc : null;\n            cbSelectionComponent_1.init({ rowNode: this.rowNode, column: this.column, visibleFunc: visibleFunc });\n            this.addDestroyFunc(function () { return cbSelectionComponent_1.destroy(); });\n            // put the checkbox in before the value\n            this.eCellWrapper.insertBefore(cbSelectionComponent_1.getGui(), this.eParentOfValue);\n        }\n        else {\n            this.eParentOfValue = this.getGui();\n        }\n    };\n    CellComp.prototype.addDomData = function () {\n        var _this = this;\n        var element = this.getGui();\n        this.beans.gridOptionsWrapper.setDomData(element, CellComp.DOM_DATA_KEY_CELL_COMP, this);\n        this.addDestroyFunc(function () {\n            return _this.beans.gridOptionsWrapper.setDomData(element, CellComp.DOM_DATA_KEY_CELL_COMP, null);\n        });\n    };\n    CellComp.prototype.onCellFocused = function (event) {\n        var cellFocused = this.beans.focusedCellController.isCellFocused(this.gridCell);\n        // see if we need to change the classes on this cell\n        if (cellFocused !== this.cellFocused) {\n            utils_1._.addOrRemoveCssClass(this.getGui(), 'ag-cell-focus', cellFocused);\n            utils_1._.addOrRemoveCssClass(this.getGui(), 'ag-cell-no-focus', !cellFocused);\n            this.cellFocused = cellFocused;\n        }\n        // if this cell was just focused, see if we need to force browser focus, his can\n        // happen if focus is programmatically set.\n        if (cellFocused && event && event.forceBrowserFocus) {\n            this.getGui().focus();\n        }\n        // if another cell was focused, and we are editing, then stop editing\n        var fullRowEdit = this.beans.gridOptionsWrapper.isFullRowEdit();\n        if (!cellFocused && !fullRowEdit && this.editingCell) {\n            this.stopRowOrCellEdit();\n        }\n    };\n    // pass in 'true' to cancel the editing.\n    CellComp.prototype.stopRowOrCellEdit = function (cancel) {\n        if (cancel === void 0) { cancel = false; }\n        if (this.beans.gridOptionsWrapper.isFullRowEdit()) {\n            this.rowComp.stopRowEditing(cancel);\n        }\n        else {\n            this.stopEditing(cancel);\n        }\n    };\n    CellComp.prototype.stopEditing = function (cancel) {\n        if (cancel === void 0) { cancel = false; }\n        if (!this.editingCell) {\n            return;\n        }\n        // if no cell editor, this means due to async, that the cell editor never got initialised,\n        // so we just carry on regardless as if the editing was never started.\n        if (!this.cellEditor) {\n            this.editingCell = false;\n            return;\n        }\n        if (!cancel) {\n            // also have another option here to cancel after editing, so for example user could have a popup editor and\n            // it is closed by user clicking outside the editor. then the editor will close automatically (with false\n            // passed above) and we need to see if the editor wants to accept the new value.\n            var userWantsToCancel = this.cellEditor.isCancelAfterEnd && this.cellEditor.isCancelAfterEnd();\n            if (!userWantsToCancel) {\n                var newValue = this.cellEditor.getValue();\n                this.rowNode.setDataValue(this.column, newValue);\n                this.value = this.getValue();\n            }\n        }\n        // it is important we set this after setValue() above, as otherwise the cell will flash\n        // when editing stops. the 'refresh' method checks editing, and doesn't refresh editing cells.\n        // thus it will skip the refresh on this cell until the end of this method where we call\n        // refresh directly and we suppress the flash.\n        this.editingCell = false;\n        if (this.cellEditor.destroy) {\n            this.cellEditor.destroy();\n        }\n        // important to clear this out - as parts of the code will check for\n        // this to see if an async cellEditor has yet to be created\n        this.cellEditor = null;\n        if (this.cellEditorInPopup) {\n            this.hideEditorPopup();\n            this.hideEditorPopup = null;\n        }\n        else {\n            utils_1._.removeAllChildren(this.getGui());\n            // put the cell back the way it was before editing\n            if (this.usingWrapper) {\n                // if wrapper, then put the wrapper back\n                this.getGui().appendChild(this.eCellWrapper);\n            }\n            else {\n                // if cellRenderer, then put the gui back in. if the renderer has\n                // a refresh, it will be called. however if it doesn't, then later\n                // the renderer will be destroyed and a new one will be created.\n                if (this.cellRenderer) {\n                    // we know it's a dom element (not a string) because we converted\n                    // it after the gui was attached if it was a string.\n                    var eCell = this.cellRendererGui;\n                    // can be null if cell was previously null / contained empty string,\n                    // this will result in new value not being rendered.\n                    if (eCell) {\n                        this.getGui().appendChild(eCell);\n                    }\n                }\n            }\n        }\n        this.setInlineEditingClass();\n        // we suppress the flash, as it is not correct to flash the cell the user has finished editing,\n        // the user doesn't need to flash as they were the one who did the edit, the flash is pointless\n        // (as the flash is meant to draw the user to a change that they didn't manually do themselves).\n        this.refreshCell({ forceRefresh: true, suppressFlash: true });\n        var event = this.createEvent(null, events_1.Events.EVENT_CELL_EDITING_STOPPED);\n        this.beans.eventService.dispatchEvent(event);\n    };\n    CellComp.DOM_DATA_KEY_CELL_COMP = 'cellComp';\n    return CellComp;\n}(component_1.Component));\nexports.CellComp = CellComp;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rendering/cellComp.js\n// module id = 96\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar gridPanel_1 = require(\"../gridPanel/gridPanel\");\nvar linkedList_1 = require(\"./linkedList\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar AnimationFrameService = (function () {\n    function AnimationFrameService() {\n        this.p1Tasks = new linkedList_1.LinkedList();\n        this.p2Tasks = new linkedList_1.LinkedList();\n        this.ticking = false;\n    }\n    AnimationFrameService.prototype.init = function () {\n        this.useAnimationFrame = !this.gridOptionsWrapper.isSuppressAnimationFrame();\n    };\n    // this method is for our ag-Grid sanity only - if animation frames are turned off,\n    // then no place in the code should be looking to add any work to be done in animation\n    // frames. this stops bugs - where some code is asking for a frame to be executed\n    // when it should not.\n    AnimationFrameService.prototype.verifyAnimationFrameOn = function (methodName) {\n        if (this.useAnimationFrame === false) {\n            console.warn(\"ag-Grid: AnimationFrameService.\" + methodName + \" called but animation frames are off\");\n        }\n    };\n    AnimationFrameService.prototype.addP1Task = function (task) {\n        this.verifyAnimationFrameOn('addP1Task');\n        this.p1Tasks.add(task);\n        this.schedule();\n    };\n    AnimationFrameService.prototype.addP2Task = function (task) {\n        this.verifyAnimationFrameOn('addP2Task');\n        this.p2Tasks.add(task);\n        this.schedule();\n    };\n    AnimationFrameService.prototype.executeFrame = function (millis) {\n        this.verifyAnimationFrameOn('executeFrame');\n        var frameStart = new Date().getTime();\n        var duration = (new Date().getTime()) - frameStart;\n        var gridPanelNeedsAFrame = true;\n        // 16ms is 60 fps\n        var noMaxMillis = millis <= 0;\n        while (noMaxMillis || duration < millis) {\n            if (gridPanelNeedsAFrame) {\n                gridPanelNeedsAFrame = this.gridPanel.executeFrame();\n            }\n            else if (!this.p1Tasks.isEmpty()) {\n                var task = this.p1Tasks.remove();\n                task();\n            }\n            else if (!this.p2Tasks.isEmpty()) {\n                var task = this.p2Tasks.remove();\n                task();\n            }\n            else {\n                break;\n            }\n            duration = (new Date().getTime()) - frameStart;\n        }\n        if (gridPanelNeedsAFrame || !this.p1Tasks.isEmpty() || !this.p2Tasks.isEmpty()) {\n            this.requestFrame();\n        }\n        else {\n            this.ticking = false;\n        }\n    };\n    AnimationFrameService.prototype.flushAllFrames = function () {\n        if (!this.useAnimationFrame) {\n            return;\n        }\n        this.executeFrame(-1);\n    };\n    AnimationFrameService.prototype.schedule = function () {\n        if (!this.useAnimationFrame) {\n            return;\n        }\n        if (!this.ticking) {\n            this.ticking = true;\n            this.requestFrame();\n        }\n    };\n    AnimationFrameService.prototype.requestFrame = function () {\n        // check for the existence of requestAnimationFrame, and if\n        // it's missing, then we polyfill it with setTimeout()\n        var callback = this.executeFrame.bind(this, 60);\n        if (window.requestAnimationFrame) {\n            window.requestAnimationFrame(callback);\n        }\n        else if (window.webkitRequestAnimationFrame) {\n            window.webkitRequestAnimationFrame(callback);\n        }\n        else {\n            setTimeout(callback, 0);\n        }\n    };\n    __decorate([\n        context_1.Autowired('gridPanel'),\n        __metadata(\"design:type\", gridPanel_1.GridPanel)\n    ], AnimationFrameService.prototype, \"gridPanel\", void 0);\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], AnimationFrameService.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], AnimationFrameService.prototype, \"init\", null);\n    AnimationFrameService = __decorate([\n        context_1.Bean('animationFrameService')\n    ], AnimationFrameService);\n    return AnimationFrameService;\n}());\nexports.AnimationFrameService = AnimationFrameService;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/misc/animationFrameService.js\n// module id = 97\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"./gridOptionsWrapper\");\nvar columnController_1 = require(\"./columnController/columnController\");\nvar rowRenderer_1 = require(\"./rendering/rowRenderer\");\nvar filterManager_1 = require(\"./filter/filterManager\");\nvar eventService_1 = require(\"./eventService\");\nvar gridPanel_1 = require(\"./gridPanel/gridPanel\");\nvar logger_1 = require(\"./logger\");\nvar constants_1 = require(\"./constants\");\nvar popupService_1 = require(\"./widgets/popupService\");\nvar events_1 = require(\"./events\");\nvar utils_1 = require(\"./utils\");\nvar borderLayout_1 = require(\"./layout/borderLayout\");\nvar context_1 = require(\"./context/context\");\nvar focusedCellController_1 = require(\"./focusedCellController\");\nvar component_1 = require(\"./widgets/component\");\nvar paginationComp_1 = require(\"./rowModels/pagination/paginationComp\");\nvar gridApi_1 = require(\"./gridApi\");\nvar GridCore = (function () {\n    function GridCore(loggerFactory) {\n        this.destroyFunctions = [];\n        this.logger = loggerFactory.create('GridCore');\n    }\n    GridCore.prototype.init = function () {\n        var _this = this;\n        var eSouthPanel = this.createSouthPanel();\n        var eastPanel;\n        var westPanel;\n        if (this.toolPanel && !this.gridOptionsWrapper.isForPrint()) {\n            // if we are doing RTL, then the tool panel appears on the left\n            if (this.gridOptionsWrapper.isEnableRtl()) {\n                westPanel = this.toolPanel.getGui();\n            }\n            else {\n                eastPanel = this.toolPanel.getGui();\n            }\n        }\n        var createTopPanelGui = this.createNorthPanel();\n        this.eRootPanel = new borderLayout_1.BorderLayout({\n            center: this.gridPanel.getLayout(),\n            east: eastPanel,\n            west: westPanel,\n            north: createTopPanelGui,\n            south: eSouthPanel,\n            dontFill: this.gridOptionsWrapper.isForPrint(),\n            fillHorizontalOnly: this.gridOptionsWrapper.isAutoHeight(),\n            name: 'eRootPanel'\n        });\n        // parts of the CSS need to know if we are in 'for print' mode or not,\n        // so we add a class to allow applying CSS based on this.\n        if (this.gridOptionsWrapper.isForPrint()) {\n            utils_1.Utils.addCssClass(this.eRootPanel.getGui(), 'ag-layout-for-print');\n            // kept to limit breaking changes, ag-no-scrolls was renamed to ag-layout-for-print\n            utils_1.Utils.addCssClass(this.eRootPanel.getGui(), 'ag-no-scrolls');\n        }\n        else if (this.gridOptionsWrapper.isAutoHeight()) {\n            utils_1.Utils.addCssClass(this.eRootPanel.getGui(), 'ag-layout-auto-height');\n        }\n        else {\n            utils_1.Utils.addCssClass(this.eRootPanel.getGui(), 'ag-layout-normal');\n            // kept to limit breaking changes, ag-scrolls was renamed to ag-layout-normal\n            utils_1.Utils.addCssClass(this.eRootPanel.getGui(), 'ag-scrolls');\n        }\n        // see what the grid options are for default of toolbar\n        this.showToolPanel(this.gridOptionsWrapper.isShowToolPanel());\n        this.eGridDiv.appendChild(this.eRootPanel.getGui());\n        // if using angular, watch for quickFilter changes\n        if (this.$scope) {\n            this.$scope.$watch(this.quickFilterOnScope, function (newFilter) { return _this.filterManager.setQuickFilter(newFilter); });\n        }\n        if (!this.gridOptionsWrapper.isForPrint()) {\n            this.addWindowResizeListener();\n        }\n        // important to set rtl before doLayout, as setting the RTL class impacts the scroll position,\n        // which doLayout indirectly depends on\n        this.addRtlSupport();\n        this.doLayout();\n        this.finished = false;\n        this.periodicallyDoLayout();\n        this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.onRowGroupChanged.bind(this));\n        this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_EVERYTHING_CHANGED, this.onRowGroupChanged.bind(this));\n        this.onRowGroupChanged();\n        this.logger.log('ready');\n    };\n    GridCore.prototype.addRtlSupport = function () {\n        if (this.gridOptionsWrapper.isEnableRtl()) {\n            utils_1.Utils.addCssClass(this.eRootPanel.getGui(), 'ag-rtl');\n        }\n        else {\n            utils_1.Utils.addCssClass(this.eRootPanel.getGui(), 'ag-ltr');\n        }\n    };\n    GridCore.prototype.createNorthPanel = function () {\n        var _this = this;\n        if (!this.gridOptionsWrapper.isEnterprise()) {\n            return null;\n        }\n        var topPanelGui = document.createElement('div');\n        var dropPanelVisibleListener = this.onDropPanelVisible.bind(this);\n        this.rowGroupComp = this.rowGroupCompFactory.create();\n        this.pivotComp = this.pivotCompFactory.create();\n        topPanelGui.appendChild(this.rowGroupComp.getGui());\n        topPanelGui.appendChild(this.pivotComp.getGui());\n        this.rowGroupComp.addEventListener(component_1.Component.EVENT_VISIBLE_CHANGED, dropPanelVisibleListener);\n        this.pivotComp.addEventListener(component_1.Component.EVENT_VISIBLE_CHANGED, dropPanelVisibleListener);\n        this.destroyFunctions.push(function () {\n            _this.rowGroupComp.removeEventListener(component_1.Component.EVENT_VISIBLE_CHANGED, dropPanelVisibleListener);\n            _this.pivotComp.removeEventListener(component_1.Component.EVENT_VISIBLE_CHANGED, dropPanelVisibleListener);\n        });\n        this.onDropPanelVisible();\n        return topPanelGui;\n    };\n    GridCore.prototype.onDropPanelVisible = function () {\n        var bothVisible = this.rowGroupComp.isVisible() && this.pivotComp.isVisible();\n        this.rowGroupComp.addOrRemoveCssClass('ag-width-half', bothVisible);\n        this.pivotComp.addOrRemoveCssClass('ag-width-half', bothVisible);\n    };\n    GridCore.prototype.getRootGui = function () {\n        return this.eRootPanel.getGui();\n    };\n    GridCore.prototype.createSouthPanel = function () {\n        if (!this.statusBar && this.gridOptionsWrapper.isEnableStatusBar()) {\n            console.warn('ag-Grid: status bar is only available in ag-Grid-Enterprise');\n        }\n        var statusBarEnabled = this.statusBar && this.gridOptionsWrapper.isEnableStatusBar();\n        var isPaging = this.gridOptionsWrapper.isPagination();\n        var paginationPanelEnabled = isPaging\n            && !this.gridOptionsWrapper.isForPrint()\n            && !this.gridOptionsWrapper.isSuppressPaginationPanel();\n        if (!statusBarEnabled && !paginationPanelEnabled) {\n            return null;\n        }\n        var eSouthPanel = document.createElement('div');\n        if (statusBarEnabled) {\n            eSouthPanel.appendChild(this.statusBar.getGui());\n        }\n        if (paginationPanelEnabled) {\n            var paginationComp = new paginationComp_1.PaginationComp();\n            this.context.wireBean(paginationComp);\n            eSouthPanel.appendChild(paginationComp.getGui());\n            this.destroyFunctions.push(paginationComp.destroy.bind(paginationComp));\n        }\n        return eSouthPanel;\n    };\n    GridCore.prototype.onRowGroupChanged = function () {\n        if (!this.rowGroupComp) {\n            return;\n        }\n        var rowGroupPanelShow = this.gridOptionsWrapper.getRowGroupPanelShow();\n        if (rowGroupPanelShow === constants_1.Constants.ALWAYS) {\n            this.rowGroupComp.setVisible(true);\n        }\n        else if (rowGroupPanelShow === constants_1.Constants.ONLY_WHEN_GROUPING) {\n            var grouping = !this.columnController.isRowGroupEmpty();\n            this.rowGroupComp.setVisible(grouping);\n        }\n        else {\n            this.rowGroupComp.setVisible(false);\n        }\n        this.eRootPanel.doLayout();\n    };\n    GridCore.prototype.addWindowResizeListener = function () {\n        var eventListener = this.doLayout.bind(this);\n        window.addEventListener('resize', eventListener);\n        this.destroyFunctions.push(function () { return window.removeEventListener('resize', eventListener); });\n    };\n    GridCore.prototype.periodicallyDoLayout = function () {\n        var _this = this;\n        if (!this.finished) {\n            var intervalMillis = this.gridOptionsWrapper.getLayoutInterval();\n            // if interval is negative, this stops the layout from happening\n            if (intervalMillis > 0) {\n                this.frameworkFactory.setTimeout(function () {\n                    _this.doLayout();\n                    _this.gridPanel.periodicallyCheck();\n                    _this.periodicallyDoLayout();\n                }, intervalMillis);\n            }\n            else {\n                // if user provided negative number, we still do the check every 5 seconds,\n                // in case the user turns the number positive again\n                this.frameworkFactory.setTimeout(function () {\n                    _this.periodicallyDoLayout();\n                }, 5000);\n            }\n        }\n    };\n    GridCore.prototype.showToolPanel = function (show) {\n        if (show && !this.toolPanel) {\n            console.warn('ag-Grid: toolPanel is only available in ag-Grid Enterprise');\n            this.toolPanelShowing = false;\n            return;\n        }\n        this.toolPanelShowing = show;\n        if (this.toolPanel) {\n            this.toolPanel.setVisible(show);\n            this.eRootPanel.doLayout();\n        }\n    };\n    GridCore.prototype.isToolPanelShowing = function () {\n        return this.toolPanelShowing;\n    };\n    GridCore.prototype.destroy = function () {\n        this.finished = true;\n        this.eGridDiv.removeChild(this.eRootPanel.getGui());\n        this.logger.log('Grid DOM removed');\n        this.destroyFunctions.forEach(function (func) { return func(); });\n    };\n    // Valid values for position are bottom, middle and top\n    GridCore.prototype.ensureNodeVisible = function (comparator, position) {\n        if (position === void 0) { position = 'top'; }\n        if (this.doingVirtualPaging) {\n            throw 'Cannot use ensureNodeVisible when doing virtual paging, as we cannot check rows that are not in memory';\n        }\n        // look for the node index we want to display\n        var rowCount = this.rowModel.getPageLastRow() + 1;\n        var comparatorIsAFunction = typeof comparator === 'function';\n        var indexToSelect = -1;\n        // go through all the nodes, find the one we want to show\n        for (var i = 0; i < rowCount; i++) {\n            var node = this.rowModel.getRow(i);\n            if (comparatorIsAFunction) {\n                if (comparator(node)) {\n                    indexToSelect = i;\n                    break;\n                }\n            }\n            else {\n                // check object equality against node and data\n                if (comparator === node || comparator === node.data) {\n                    indexToSelect = i;\n                    break;\n                }\n            }\n        }\n        if (indexToSelect >= 0) {\n            this.gridPanel.ensureIndexVisible(indexToSelect, position);\n        }\n    };\n    GridCore.prototype.doLayout = function () {\n        // need to do layout first, as drawVirtualRows and setPinnedColHeight\n        // need to know the result of the resizing of the panels.\n        var sizeChanged = this.eRootPanel.doLayout();\n        // not sure why, this is a hack, but if size changed, it may need to be called\n        // again - as the size change can change whether scrolls are visible or not (i think).\n        // to see why, take this second 'doLayout' call out, and see example in docs for\n        // width & height, the grid will flicker as it doesn't get laid out correctly with\n        // one call to doLayout()\n        if (sizeChanged) {\n            this.eRootPanel.doLayout();\n        }\n        // both of the two below should be done in gridPanel, the gridPanel should register 'resize' to the panel\n        if (sizeChanged) {\n            this.rowRenderer.redrawAfterScroll();\n            var event_1 = {\n                type: events_1.Events.EVENT_GRID_SIZE_CHANGED,\n                clientWidth: this.eRootPanel.getGui().clientWidth,\n                clientHeight: this.eRootPanel.getGui().clientHeight,\n                api: this.gridApi,\n                columnApi: this.columnApi\n            };\n            this.eventService.dispatchEvent(event_1);\n        }\n    };\n    __decorate([\n        context_1.Autowired('gridOptions'),\n        __metadata(\"design:type\", Object)\n    ], GridCore.prototype, \"gridOptions\", void 0);\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], GridCore.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('rowModel'),\n        __metadata(\"design:type\", Object)\n    ], GridCore.prototype, \"rowModel\", void 0);\n    __decorate([\n        context_1.Autowired('frameworkFactory'),\n        __metadata(\"design:type\", Object)\n    ], GridCore.prototype, \"frameworkFactory\", void 0);\n    __decorate([\n        context_1.Autowired('columnController'),\n        __metadata(\"design:type\", columnController_1.ColumnController)\n    ], GridCore.prototype, \"columnController\", void 0);\n    __decorate([\n        context_1.Autowired('rowRenderer'),\n        __metadata(\"design:type\", rowRenderer_1.RowRenderer)\n    ], GridCore.prototype, \"rowRenderer\", void 0);\n    __decorate([\n        context_1.Autowired('filterManager'),\n        __metadata(\"design:type\", filterManager_1.FilterManager)\n    ], GridCore.prototype, \"filterManager\", void 0);\n    __decorate([\n        context_1.Autowired('eventService'),\n        __metadata(\"design:type\", eventService_1.EventService)\n    ], GridCore.prototype, \"eventService\", void 0);\n    __decorate([\n        context_1.Autowired('gridPanel'),\n        __metadata(\"design:type\", gridPanel_1.GridPanel)\n    ], GridCore.prototype, \"gridPanel\", void 0);\n    __decorate([\n        context_1.Autowired('eGridDiv'),\n        __metadata(\"design:type\", HTMLElement)\n    ], GridCore.prototype, \"eGridDiv\", void 0);\n    __decorate([\n        context_1.Autowired('$scope'),\n        __metadata(\"design:type\", Object)\n    ], GridCore.prototype, \"$scope\", void 0);\n    __decorate([\n        context_1.Autowired('quickFilterOnScope'),\n        __metadata(\"design:type\", String)\n    ], GridCore.prototype, \"quickFilterOnScope\", void 0);\n    __decorate([\n        context_1.Autowired('popupService'),\n        __metadata(\"design:type\", popupService_1.PopupService)\n    ], GridCore.prototype, \"popupService\", void 0);\n    __decorate([\n        context_1.Autowired('focusedCellController'),\n        __metadata(\"design:type\", focusedCellController_1.FocusedCellController)\n    ], GridCore.prototype, \"focusedCellController\", void 0);\n    __decorate([\n        context_1.Autowired('context'),\n        __metadata(\"design:type\", context_1.Context)\n    ], GridCore.prototype, \"context\", void 0);\n    __decorate([\n        context_1.Autowired('columnApi'),\n        __metadata(\"design:type\", columnController_1.ColumnApi)\n    ], GridCore.prototype, \"columnApi\", void 0);\n    __decorate([\n        context_1.Autowired('gridApi'),\n        __metadata(\"design:type\", gridApi_1.GridApi)\n    ], GridCore.prototype, \"gridApi\", void 0);\n    __decorate([\n        context_1.Optional('rowGroupCompFactory'),\n        __metadata(\"design:type\", Object)\n    ], GridCore.prototype, \"rowGroupCompFactory\", void 0);\n    __decorate([\n        context_1.Optional('pivotCompFactory'),\n        __metadata(\"design:type\", Object)\n    ], GridCore.prototype, \"pivotCompFactory\", void 0);\n    __decorate([\n        context_1.Optional('toolPanel'),\n        __metadata(\"design:type\", component_1.Component)\n    ], GridCore.prototype, \"toolPanel\", void 0);\n    __decorate([\n        context_1.Optional('statusBar'),\n        __metadata(\"design:type\", component_1.Component)\n    ], GridCore.prototype, \"statusBar\", void 0);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], GridCore.prototype, \"init\", null);\n    __decorate([\n        context_1.PreDestroy,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], GridCore.prototype, \"destroy\", null);\n    GridCore = __decorate([\n        context_1.Bean('gridCore'),\n        __param(0, context_1.Qualifier('loggerFactory')),\n        __metadata(\"design:paramtypes\", [logger_1.LoggerFactory])\n    ], GridCore);\n    return GridCore;\n}());\nexports.GridCore = GridCore;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/gridCore.js\n// module id = 98\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar gridApi_1 = require(\"../gridApi\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar expressionService_1 = require(\"../valueService/expressionService\");\nvar rowRenderer_1 = require(\"./rowRenderer\");\nvar templateService_1 = require(\"../templateService\");\nvar valueService_1 = require(\"../valueService/valueService\");\nvar eventService_1 = require(\"../eventService\");\nvar columnAnimationService_1 = require(\"./columnAnimationService\");\nvar focusedCellController_1 = require(\"../focusedCellController\");\nvar cellEditorFactory_1 = require(\"./cellEditorFactory\");\nvar cellRendererFactory_1 = require(\"./cellRendererFactory\");\nvar popupService_1 = require(\"../widgets/popupService\");\nvar cellRendererService_1 = require(\"./cellRendererService\");\nvar valueFormatterService_1 = require(\"./valueFormatterService\");\nvar stylingService_1 = require(\"../styling/stylingService\");\nvar columnHoverService_1 = require(\"./columnHoverService\");\nvar gridPanel_1 = require(\"../gridPanel/gridPanel\");\nvar paginationProxy_1 = require(\"../rowModels/paginationProxy\");\nvar animationFrameService_1 = require(\"../misc/animationFrameService\");\nvar componentResolver_1 = require(\"../components/framework/componentResolver\");\nvar Beans = (function () {\n    function Beans() {\n    }\n    Beans.prototype.postConstruct = function () {\n        this.forPrint = this.gridOptionsWrapper.isForPrint();\n        this.doingMasterDetail = this.gridOptionsWrapper.isMasterDetail();\n    };\n    __decorate([\n        context_1.Autowired('paginationProxy'),\n        __metadata(\"design:type\", paginationProxy_1.PaginationProxy)\n    ], Beans.prototype, \"paginationProxy\", void 0);\n    __decorate([\n        context_1.Autowired('gridPanel'),\n        __metadata(\"design:type\", gridPanel_1.GridPanel)\n    ], Beans.prototype, \"gridPanel\", void 0);\n    __decorate([\n        context_1.Autowired('context'),\n        __metadata(\"design:type\", context_1.Context)\n    ], Beans.prototype, \"context\", void 0);\n    __decorate([\n        context_1.Autowired('columnApi'),\n        __metadata(\"design:type\", columnController_1.ColumnApi)\n    ], Beans.prototype, \"columnApi\", void 0);\n    __decorate([\n        context_1.Autowired('gridApi'),\n        __metadata(\"design:type\", gridApi_1.GridApi)\n    ], Beans.prototype, \"gridApi\", void 0);\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], Beans.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('expressionService'),\n        __metadata(\"design:type\", expressionService_1.ExpressionService)\n    ], Beans.prototype, \"expressionService\", void 0);\n    __decorate([\n        context_1.Autowired('rowRenderer'),\n        __metadata(\"design:type\", rowRenderer_1.RowRenderer)\n    ], Beans.prototype, \"rowRenderer\", void 0);\n    __decorate([\n        context_1.Autowired('$compile'),\n        __metadata(\"design:type\", Object)\n    ], Beans.prototype, \"$compile\", void 0);\n    __decorate([\n        context_1.Autowired('templateService'),\n        __metadata(\"design:type\", templateService_1.TemplateService)\n    ], Beans.prototype, \"templateService\", void 0);\n    __decorate([\n        context_1.Autowired('valueService'),\n        __metadata(\"design:type\", valueService_1.ValueService)\n    ], Beans.prototype, \"valueService\", void 0);\n    __decorate([\n        context_1.Autowired('eventService'),\n        __metadata(\"design:type\", eventService_1.EventService)\n    ], Beans.prototype, \"eventService\", void 0);\n    __decorate([\n        context_1.Autowired('columnController'),\n        __metadata(\"design:type\", columnController_1.ColumnController)\n    ], Beans.prototype, \"columnController\", void 0);\n    __decorate([\n        context_1.Autowired('columnAnimationService'),\n        __metadata(\"design:type\", columnAnimationService_1.ColumnAnimationService)\n    ], Beans.prototype, \"columnAnimationService\", void 0);\n    __decorate([\n        context_1.Optional('rangeController'),\n        __metadata(\"design:type\", Object)\n    ], Beans.prototype, \"rangeController\", void 0);\n    __decorate([\n        context_1.Autowired('focusedCellController'),\n        __metadata(\"design:type\", focusedCellController_1.FocusedCellController)\n    ], Beans.prototype, \"focusedCellController\", void 0);\n    __decorate([\n        context_1.Optional('contextMenuFactory'),\n        __metadata(\"design:type\", Object)\n    ], Beans.prototype, \"contextMenuFactory\", void 0);\n    __decorate([\n        context_1.Autowired('cellEditorFactory'),\n        __metadata(\"design:type\", cellEditorFactory_1.CellEditorFactory)\n    ], Beans.prototype, \"cellEditorFactory\", void 0);\n    __decorate([\n        context_1.Autowired('cellRendererFactory'),\n        __metadata(\"design:type\", cellRendererFactory_1.CellRendererFactory)\n    ], Beans.prototype, \"cellRendererFactory\", void 0);\n    __decorate([\n        context_1.Autowired('popupService'),\n        __metadata(\"design:type\", popupService_1.PopupService)\n    ], Beans.prototype, \"popupService\", void 0);\n    __decorate([\n        context_1.Autowired('cellRendererService'),\n        __metadata(\"design:type\", cellRendererService_1.CellRendererService)\n    ], Beans.prototype, \"cellRendererService\", void 0);\n    __decorate([\n        context_1.Autowired('valueFormatterService'),\n        __metadata(\"design:type\", valueFormatterService_1.ValueFormatterService)\n    ], Beans.prototype, \"valueFormatterService\", void 0);\n    __decorate([\n        context_1.Autowired('stylingService'),\n        __metadata(\"design:type\", stylingService_1.StylingService)\n    ], Beans.prototype, \"stylingService\", void 0);\n    __decorate([\n        context_1.Autowired('columnHoverService'),\n        __metadata(\"design:type\", columnHoverService_1.ColumnHoverService)\n    ], Beans.prototype, \"columnHoverService\", void 0);\n    __decorate([\n        context_1.Autowired('enterprise'),\n        __metadata(\"design:type\", Boolean)\n    ], Beans.prototype, \"enterprise\", void 0);\n    __decorate([\n        context_1.Autowired('componentResolver'),\n        __metadata(\"design:type\", componentResolver_1.ComponentResolver)\n    ], Beans.prototype, \"componentResolver\", void 0);\n    __decorate([\n        context_1.Autowired('animationFrameService'),\n        __metadata(\"design:type\", animationFrameService_1.AnimationFrameService)\n    ], Beans.prototype, \"taskQueue\", void 0);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], Beans.prototype, \"postConstruct\", null);\n    Beans = __decorate([\n        context_1.Bean('beans')\n    ], Beans);\n    return Beans;\n}());\nexports.Beans = Beans;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rendering/beans.js\n// module id = 99\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar expressionService_1 = require(\"../valueService/expressionService\");\nvar ValueFormatterService = (function () {\n    function ValueFormatterService() {\n    }\n    ValueFormatterService.prototype.formatValue = function (column, rowNode, $scope, value) {\n        var formatter;\n        var colDef = column.getColDef();\n        // if floating, give preference to the floating formatter\n        if (rowNode && rowNode.rowPinned) {\n            formatter = colDef.pinnedRowValueFormatter ? colDef.pinnedRowValueFormatter : colDef.valueFormatter;\n        }\n        else {\n            formatter = colDef.valueFormatter;\n        }\n        var result = null;\n        if (formatter) {\n            var params = {\n                value: value,\n                node: rowNode,\n                data: rowNode ? rowNode.data : null,\n                colDef: column.getColDef(),\n                column: column,\n                api: this.gridOptionsWrapper.getApi(),\n                columnApi: this.gridOptionsWrapper.getColumnApi(),\n                context: this.gridOptionsWrapper.getContext()\n            };\n            // originally we put the angular 1 scope here, but we don't want the scope\n            // in the params interface, as other frameworks will see the interface, and\n            // angular 1 is not cool any more. so we hack the scope in here (we cannot\n            // include it above, as it's not in the interface, so would cause a compile error).\n            // in the future, when we stop supporting angular 1, we can take this out.\n            params.$scope = $scope;\n            result = this.expressionService.evaluate(formatter, params);\n        }\n        else if (colDef.refData) {\n            return colDef.refData[value];\n        }\n        // if we don't do this, then arrays get displayed as 1,2,3, but we want 1, 2, 3 (ie with spaces)\n        if ((result === null || result === undefined) && Array.isArray(value)) {\n            result = value.join(', ');\n        }\n        return result;\n    };\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], ValueFormatterService.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('expressionService'),\n        __metadata(\"design:type\", expressionService_1.ExpressionService)\n    ], ValueFormatterService.prototype, \"expressionService\", void 0);\n    ValueFormatterService = __decorate([\n        context_1.Bean('valueFormatterService')\n    ], ValueFormatterService);\n    return ValueFormatterService;\n}());\nexports.ValueFormatterService = ValueFormatterService;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rendering/valueFormatterService.js\n// module id = 100\n// module chunks = 0","/**\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\n'use strict';\n\nvar emptyObject = {};\n\nif (process.env.NODE_ENV !== 'production') {\n  Object.freeze(emptyObject);\n}\n\nmodule.exports = emptyObject;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/emptyObject.js\n// module id = 101\n// module chunks = 0","/**\n * Copyright (c) 2014-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\n'use strict';\n\nvar emptyFunction = require('./emptyFunction');\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (process.env.NODE_ENV !== 'production') {\n  var printWarning = function printWarning(format) {\n    for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    var argIndex = 0;\n    var message = 'Warning: ' + format.replace(/%s/g, function () {\n      return args[argIndex++];\n    });\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) {}\n  };\n\n  warning = function warning(condition, format) {\n    if (format === undefined) {\n      throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n    }\n\n    if (format.indexOf('Failed Composite propType: ') === 0) {\n      return; // Ignore CompositeComponent proptype check.\n    }\n\n    if (!condition) {\n      for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n        args[_key2 - 2] = arguments[_key2];\n      }\n\n      printWarning.apply(undefined, [format].concat(args));\n    }\n  };\n}\n\nmodule.exports = warning;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/warning.js\n// module id = 102\n// module chunks = 0","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport { parsePath } from './PathUtils';\n\nexport var createLocation = function createLocation(path, state, key, currentLocation) {\n  var location = void 0;\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\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};\n\nexport var locationsAreEqual = function 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\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/history/es/LocationUtils.js\n// module id = 103\n// module chunks = 0","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 || Function(\"return this\")() || (1,eval)(\"this\");\n} catch(e) {\n\t// This works if the window reference is available\n\tif(typeof window === \"object\")\n\t\tg = 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\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 104\n// module chunks = 0","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_uid.js\n// module id = 105\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = createChainableTypeChecker;\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n// Mostly taken from ReactPropTypes.\n\nfunction createChainableTypeChecker(validate) {\n  function checkType(isRequired, props, propName, componentName, location, propFullName) {\n    var componentNameSafe = componentName || '<<anonymous>>';\n    var propFullNameSafe = propFullName || propName;\n\n    if (props[propName] == null) {\n      if (isRequired) {\n        return new Error('Required ' + location + ' `' + propFullNameSafe + '` was not specified ' + ('in `' + componentNameSafe + '`.'));\n      }\n\n      return null;\n    }\n\n    for (var _len = arguments.length, args = Array(_len > 6 ? _len - 6 : 0), _key = 6; _key < _len; _key++) {\n      args[_key - 6] = arguments[_key];\n    }\n\n    return validate.apply(undefined, [props, propName, componentNameSafe, location, propFullNameSafe].concat(args));\n  }\n\n  var chainedCheckType = checkType.bind(null, false);\n  chainedCheckType.isRequired = checkType.bind(null, true);\n\n  return chainedCheckType;\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types-extra/lib/utils/createChainableTypeChecker.js\n// module id = 106\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = all;\n\nvar _createChainableTypeChecker = require('./utils/createChainableTypeChecker');\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(_createChainableTypeChecker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction all() {\n  for (var _len = arguments.length, validators = Array(_len), _key = 0; _key < _len; _key++) {\n    validators[_key] = arguments[_key];\n  }\n\n  function allPropTypes() {\n    for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    var error = null;\n\n    validators.forEach(function (validator) {\n      if (error != null) {\n        return;\n      }\n\n      var result = validator.apply(undefined, args);\n      if (result != null) {\n        error = result;\n      }\n    });\n\n    return error;\n  }\n\n  return (0, _createChainableTypeChecker2.default)(allPropTypes);\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types-extra/lib/all.js\n// module id = 107\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = style;\n\nvar _camelizeStyle = require('../util/camelizeStyle');\n\nvar _camelizeStyle2 = _interopRequireDefault(_camelizeStyle);\n\nvar _hyphenateStyle = require('../util/hyphenateStyle');\n\nvar _hyphenateStyle2 = _interopRequireDefault(_hyphenateStyle);\n\nvar _getComputedStyle2 = require('./getComputedStyle');\n\nvar _getComputedStyle3 = _interopRequireDefault(_getComputedStyle2);\n\nvar _removeStyle = require('./removeStyle');\n\nvar _removeStyle2 = _interopRequireDefault(_removeStyle);\n\nvar _properties = require('../transition/properties');\n\nvar _isTransform = require('../transition/isTransform');\n\nvar _isTransform2 = _interopRequireDefault(_isTransform);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction style(node, property, value) {\n  var css = '';\n  var transforms = '';\n  var props = property;\n\n  if (typeof property === 'string') {\n    if (value === undefined) {\n      return node.style[(0, _camelizeStyle2.default)(property)] || (0, _getComputedStyle3.default)(node).getPropertyValue((0, _hyphenateStyle2.default)(property));\n    } else {\n      (props = {})[property] = value;\n    }\n  }\n\n  Object.keys(props).forEach(function (key) {\n    var value = props[key];\n    if (!value && value !== 0) {\n      (0, _removeStyle2.default)(node, (0, _hyphenateStyle2.default)(key));\n    } else if ((0, _isTransform2.default)(key)) {\n      transforms += key + '(' + value + ') ';\n    } else {\n      css += (0, _hyphenateStyle2.default)(key) + ': ' + value + ';';\n    }\n  });\n\n  if (transforms) {\n    css += _properties.transform + ': ' + transforms + ';';\n  }\n\n  node.style.cssText += ';' + css;\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-helpers/style/index.js\n// module id = 108\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _inDOM = require('../util/inDOM');\n\nvar _inDOM2 = _interopRequireDefault(_inDOM);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar on = function on() {};\nif (_inDOM2.default) {\n  on = function () {\n\n    if (document.addEventListener) return function (node, eventName, handler, capture) {\n      return node.addEventListener(eventName, handler, capture || false);\n    };else if (document.attachEvent) return function (node, eventName, handler) {\n      return node.attachEvent('on' + eventName, function (e) {\n        e = e || window.event;\n        e.target = e.target || e.srcElement;\n        e.currentTarget = node;\n        handler.call(node, e);\n      });\n    };\n  }();\n}\n\nexports.default = on;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-helpers/events/on.js\n// module id = 109\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport activeElement from 'dom-helpers/activeElement';\nimport contains from 'dom-helpers/query/contains';\nimport keycode from 'keycode';\nimport React, { cloneElement } from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport all from 'prop-types-extra/lib/all';\nimport elementType from 'prop-types-extra/lib/elementType';\nimport isRequiredForA11y from 'prop-types-extra/lib/isRequiredForA11y';\nimport uncontrollable from 'uncontrollable';\nimport warning from 'warning';\n\nimport ButtonGroup from './ButtonGroup';\nimport DropdownMenu from './DropdownMenu';\nimport DropdownToggle from './DropdownToggle';\nimport { bsClass as setBsClass, prefix } from './utils/bootstrapUtils';\nimport createChainedFunction from './utils/createChainedFunction';\nimport { exclusiveRoles, requiredRoles } from './utils/PropTypes';\nimport ValidComponentChildren from './utils/ValidComponentChildren';\n\nvar TOGGLE_ROLE = DropdownToggle.defaultProps.bsRole;\nvar MENU_ROLE = DropdownMenu.defaultProps.bsRole;\n\nvar propTypes = {\n  /**\n   * The menu will open above the dropdown button, instead of below it.\n   */\n  dropup: PropTypes.bool,\n\n  /**\n   * An html id attribute, necessary for assistive technologies, such as screen readers.\n   * @type {string|number}\n   * @required\n   */\n  id: isRequiredForA11y(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),\n\n  componentClass: elementType,\n\n  /**\n   * The children of a Dropdown may be a `<Dropdown.Toggle>` or a `<Dropdown.Menu>`.\n   * @type {node}\n   */\n  children: all(requiredRoles(TOGGLE_ROLE, MENU_ROLE), exclusiveRoles(MENU_ROLE)),\n\n  /**\n   * Whether or not component is disabled.\n   */\n  disabled: PropTypes.bool,\n\n  /**\n   * Align the menu to the right side of the Dropdown toggle\n   */\n  pullRight: PropTypes.bool,\n\n  /**\n   * Whether or not the Dropdown is visible.\n   *\n   * @controllable onToggle\n   */\n  open: PropTypes.bool,\n\n  defaultOpen: PropTypes.bool,\n\n  /**\n   * A callback fired when the Dropdown wishes to change visibility. Called with the requested\n   * `open` value, the DOM event, and the source that fired it: `'click'`,`'keydown'`,`'rootClose'`, or `'select'`.\n   *\n   * ```js\n   * function(Boolean isOpen, Object event, { String source }) {}\n   * ```\n   * @controllable open\n   */\n  onToggle: PropTypes.func,\n\n  /**\n   * A callback fired when a menu item is selected.\n   *\n   * ```js\n   * (eventKey: any, event: Object) => any\n   * ```\n   */\n  onSelect: PropTypes.func,\n\n  /**\n   * If `'menuitem'`, causes the dropdown to behave like a menu item rather than\n   * a menu button.\n   */\n  role: PropTypes.string,\n\n  /**\n   * Which event when fired outside the component will cause it to be closed\n   */\n  rootCloseEvent: PropTypes.oneOf(['click', 'mousedown']),\n\n  /**\n   * @private\n   */\n  onMouseEnter: PropTypes.func,\n  /**\n   * @private\n   */\n  onMouseLeave: PropTypes.func\n};\n\nvar defaultProps = {\n  componentClass: ButtonGroup\n};\n\nvar Dropdown = function (_React$Component) {\n  _inherits(Dropdown, _React$Component);\n\n  function Dropdown(props, context) {\n    _classCallCheck(this, Dropdown);\n\n    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n\n    _this.handleClick = _this.handleClick.bind(_this);\n    _this.handleKeyDown = _this.handleKeyDown.bind(_this);\n    _this.handleClose = _this.handleClose.bind(_this);\n\n    _this._focusInDropdown = false;\n    _this.lastOpenEventType = null;\n    return _this;\n  }\n\n  Dropdown.prototype.componentDidMount = function componentDidMount() {\n    this.focusNextOnOpen();\n  };\n\n  Dropdown.prototype.componentWillUpdate = function componentWillUpdate(nextProps) {\n    if (!nextProps.open && this.props.open) {\n      this._focusInDropdown = contains(ReactDOM.findDOMNode(this.menu), activeElement(document));\n    }\n  };\n\n  Dropdown.prototype.componentDidUpdate = function componentDidUpdate(prevProps) {\n    var open = this.props.open;\n\n    var prevOpen = prevProps.open;\n\n    if (open && !prevOpen) {\n      this.focusNextOnOpen();\n    }\n\n    if (!open && prevOpen) {\n      // if focus hasn't already moved from the menu let's return it\n      // to the toggle\n      if (this._focusInDropdown) {\n        this._focusInDropdown = false;\n        this.focus();\n      }\n    }\n  };\n\n  Dropdown.prototype.focus = function focus() {\n    var toggle = ReactDOM.findDOMNode(this.toggle);\n\n    if (toggle && toggle.focus) {\n      toggle.focus();\n    }\n  };\n\n  Dropdown.prototype.focusNextOnOpen = function focusNextOnOpen() {\n    var menu = this.menu;\n\n    if (!menu.focusNext) {\n      return;\n    }\n\n    if (this.lastOpenEventType === 'keydown' || this.props.role === 'menuitem') {\n      menu.focusNext();\n    }\n  };\n\n  Dropdown.prototype.handleClick = function handleClick(event) {\n    if (this.props.disabled) {\n      return;\n    }\n\n    this.toggleOpen(event, { source: 'click' });\n  };\n\n  Dropdown.prototype.handleClose = function handleClose(event, eventDetails) {\n    if (!this.props.open) {\n      return;\n    }\n\n    this.toggleOpen(event, eventDetails);\n  };\n\n  Dropdown.prototype.handleKeyDown = function handleKeyDown(event) {\n    if (this.props.disabled) {\n      return;\n    }\n\n    switch (event.keyCode) {\n      case keycode.codes.down:\n        if (!this.props.open) {\n          this.toggleOpen(event, { source: 'keydown' });\n        } else if (this.menu.focusNext) {\n          this.menu.focusNext();\n        }\n        event.preventDefault();\n        break;\n      case keycode.codes.esc:\n      case keycode.codes.tab:\n        this.handleClose(event, { source: 'keydown' });\n        break;\n      default:\n    }\n  };\n\n  Dropdown.prototype.toggleOpen = function toggleOpen(event, eventDetails) {\n    var open = !this.props.open;\n\n    if (open) {\n      this.lastOpenEventType = eventDetails.source;\n    }\n\n    if (this.props.onToggle) {\n      this.props.onToggle(open, event, eventDetails);\n    }\n  };\n\n  Dropdown.prototype.renderMenu = function renderMenu(child, _ref) {\n    var _this2 = this;\n\n    var id = _ref.id,\n        onSelect = _ref.onSelect,\n        rootCloseEvent = _ref.rootCloseEvent,\n        props = _objectWithoutProperties(_ref, ['id', 'onSelect', 'rootCloseEvent']);\n\n    var ref = function ref(c) {\n      _this2.menu = c;\n    };\n\n    if (typeof child.ref === 'string') {\n      process.env.NODE_ENV !== 'production' ? warning(false, 'String refs are not supported on `<Dropdown.Menu>` components. ' + 'To apply a ref to the component use the callback signature:\\n\\n ' + 'https://facebook.github.io/react/docs/more-about-refs.html#the-ref-callback-attribute') : void 0;\n    } else {\n      ref = createChainedFunction(child.ref, ref);\n    }\n\n    return cloneElement(child, _extends({}, props, {\n      ref: ref,\n      labelledBy: id,\n      bsClass: prefix(props, 'menu'),\n      onClose: createChainedFunction(child.props.onClose, this.handleClose),\n      onSelect: createChainedFunction(child.props.onSelect, onSelect, function (key, event) {\n        return _this2.handleClose(event, { source: 'select' });\n      }),\n      rootCloseEvent: rootCloseEvent\n    }));\n  };\n\n  Dropdown.prototype.renderToggle = function renderToggle(child, props) {\n    var _this3 = this;\n\n    var ref = function ref(c) {\n      _this3.toggle = c;\n    };\n\n    if (typeof child.ref === 'string') {\n      process.env.NODE_ENV !== 'production' ? warning(false, 'String refs are not supported on `<Dropdown.Toggle>` components. ' + 'To apply a ref to the component use the callback signature:\\n\\n ' + 'https://facebook.github.io/react/docs/more-about-refs.html#the-ref-callback-attribute') : void 0;\n    } else {\n      ref = createChainedFunction(child.ref, ref);\n    }\n\n    return cloneElement(child, _extends({}, props, {\n      ref: ref,\n      bsClass: prefix(props, 'toggle'),\n      onClick: createChainedFunction(child.props.onClick, this.handleClick),\n      onKeyDown: createChainedFunction(child.props.onKeyDown, this.handleKeyDown)\n    }));\n  };\n\n  Dropdown.prototype.render = function render() {\n    var _classes,\n        _this4 = this;\n\n    var _props = this.props,\n        Component = _props.componentClass,\n        id = _props.id,\n        dropup = _props.dropup,\n        disabled = _props.disabled,\n        pullRight = _props.pullRight,\n        open = _props.open,\n        onSelect = _props.onSelect,\n        role = _props.role,\n        bsClass = _props.bsClass,\n        className = _props.className,\n        rootCloseEvent = _props.rootCloseEvent,\n        children = _props.children,\n        props = _objectWithoutProperties(_props, ['componentClass', 'id', 'dropup', 'disabled', 'pullRight', 'open', 'onSelect', 'role', 'bsClass', 'className', 'rootCloseEvent', 'children']);\n\n    delete props.onToggle;\n\n    var classes = (_classes = {}, _classes[bsClass] = true, _classes.open = open, _classes.disabled = disabled, _classes);\n\n    if (dropup) {\n      classes[bsClass] = false;\n      classes.dropup = true;\n    }\n\n    // This intentionally forwards bsSize and bsStyle (if set) to the\n    // underlying component, to allow it to render size and style variants.\n\n    return React.createElement(\n      Component,\n      _extends({}, props, {\n        className: classNames(className, classes)\n      }),\n      ValidComponentChildren.map(children, function (child) {\n        switch (child.props.bsRole) {\n          case TOGGLE_ROLE:\n            return _this4.renderToggle(child, {\n              id: id, disabled: disabled, open: open, role: role, bsClass: bsClass\n            });\n          case MENU_ROLE:\n            return _this4.renderMenu(child, {\n              id: id, open: open, pullRight: pullRight, bsClass: bsClass, onSelect: onSelect, rootCloseEvent: rootCloseEvent\n            });\n          default:\n            return child;\n        }\n      })\n    );\n  };\n\n  return Dropdown;\n}(React.Component);\n\nDropdown.propTypes = propTypes;\nDropdown.defaultProps = defaultProps;\n\nsetBsClass('dropdown', Dropdown);\n\nvar UncontrolledDropdown = uncontrollable(Dropdown, { open: 'onToggle' });\n\nUncontrolledDropdown.Toggle = DropdownToggle;\nUncontrolledDropdown.Menu = DropdownMenu;\n\nexport default UncontrolledDropdown;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/Dropdown.js\n// module id = 110\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = isRequiredForA11y;\nfunction isRequiredForA11y(validator) {\n  return function validate(props, propName, componentName, location, propFullName) {\n    var componentNameSafe = componentName || '<<anonymous>>';\n    var propFullNameSafe = propFullName || propName;\n\n    if (props[propName] == null) {\n      return new Error('The ' + location + ' `' + propFullNameSafe + '` is required to make ' + ('`' + componentNameSafe + '` accessible for users of assistive ') + 'technologies such as screen readers.');\n    }\n\n    for (var _len = arguments.length, args = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n      args[_key - 5] = arguments[_key];\n    }\n\n    return validator.apply(undefined, [props, propName, componentName, location, propFullName].concat(args));\n  };\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types-extra/lib/isRequiredForA11y.js\n// module id = 111\n// module chunks = 0","import _Object$entries from \"babel-runtime/core-js/object/entries\";\nexport default function splitComponentProps(props, Component) {\n  var componentPropTypes = Component.propTypes;\n\n  var parentProps = {};\n  var childProps = {};\n\n  _Object$entries(props).forEach(function (_ref) {\n    var propName = _ref[0],\n        propValue = _ref[1];\n\n    if (componentPropTypes[propName]) {\n      parentProps[propName] = propValue;\n    } else {\n      childProps[propName] = propValue;\n    }\n  });\n\n  return [parentProps, childProps];\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/utils/splitComponentProps.js\n// module id = 112\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport Transition from 'react-overlays/lib/Transition';\n\nvar propTypes = {\n  /**\n   * Show the component; triggers the fade in or fade out animation\n   */\n  in: PropTypes.bool,\n\n  /**\n   * Wait until the first \"enter\" transition to mount the component (add it to the DOM)\n   */\n  mountOnEnter: PropTypes.bool,\n\n  /**\n   * Unmount the component (remove it from the DOM) when it is faded out\n   */\n  unmountOnExit: PropTypes.bool,\n\n  /**\n   * Run the fade in animation when the component mounts, if it is initially\n   * shown\n   */\n  transitionAppear: PropTypes.bool,\n\n  /**\n   * Duration of the fade animation in milliseconds, to ensure that finishing\n   * callbacks are fired even if the original browser transition end events are\n   * canceled\n   */\n  timeout: PropTypes.number,\n\n  /**\n   * Callback fired before the component fades in\n   */\n  onEnter: PropTypes.func,\n  /**\n   * Callback fired after the component starts to fade in\n   */\n  onEntering: PropTypes.func,\n  /**\n   * Callback fired after the has component faded in\n   */\n  onEntered: PropTypes.func,\n  /**\n   * Callback fired before the component fades out\n   */\n  onExit: PropTypes.func,\n  /**\n   * Callback fired after the component starts to fade out\n   */\n  onExiting: PropTypes.func,\n  /**\n   * Callback fired after the component has faded out\n   */\n  onExited: PropTypes.func\n};\n\nvar defaultProps = {\n  in: false,\n  timeout: 300,\n  mountOnEnter: false,\n  unmountOnExit: false,\n  transitionAppear: false\n};\n\nvar Fade = function (_React$Component) {\n  _inherits(Fade, _React$Component);\n\n  function Fade() {\n    _classCallCheck(this, Fade);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  Fade.prototype.render = function render() {\n    return React.createElement(Transition, _extends({}, this.props, {\n      className: classNames(this.props.className, 'fade'),\n      enteredClassName: 'in',\n      enteringClassName: 'in'\n    }));\n  };\n\n  return Fade;\n}(React.Component);\n\nFade.propTypes = propTypes;\nFade.defaultProps = defaultProps;\n\nexport default Fade;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/Fade.js\n// module id = 113\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport elementType from 'prop-types-extra/lib/elementType';\n\nimport MediaBody from './MediaBody';\nimport MediaHeading from './MediaHeading';\nimport MediaLeft from './MediaLeft';\nimport MediaList from './MediaList';\nimport MediaListItem from './MediaListItem';\nimport MediaRight from './MediaRight';\nimport { bsClass, getClassSet, splitBsProps } from './utils/bootstrapUtils';\n\nvar propTypes = {\n  componentClass: elementType\n};\n\nvar defaultProps = {\n  componentClass: 'div'\n};\n\nvar Media = function (_React$Component) {\n  _inherits(Media, _React$Component);\n\n  function Media() {\n    _classCallCheck(this, Media);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  Media.prototype.render = function render() {\n    var _props = this.props,\n        Component = _props.componentClass,\n        className = _props.className,\n        props = _objectWithoutProperties(_props, ['componentClass', 'className']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = getClassSet(bsProps);\n\n    return React.createElement(Component, _extends({}, elementProps, {\n      className: classNames(className, classes)\n    }));\n  };\n\n  return Media;\n}(React.Component);\n\nMedia.propTypes = propTypes;\nMedia.defaultProps = defaultProps;\n\nMedia.Heading = MediaHeading;\nMedia.Body = MediaBody;\nMedia.Left = MediaLeft;\nMedia.Right = MediaRight;\nMedia.List = MediaList;\nMedia.ListItem = MediaListItem;\n\nexport default bsClass('media', Media);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/Media.js\n// module id = 114\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _createChainableTypeChecker = require('./utils/createChainableTypeChecker');\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(_createChainableTypeChecker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(props, propName, componentName, location, propFullName) {\n  var propValue = props[propName];\n  var propType = typeof propValue === 'undefined' ? 'undefined' : _typeof(propValue);\n\n  if (_react2.default.isValidElement(propValue)) {\n    return new Error('Invalid ' + location + ' `' + propFullName + '` of type ReactElement ' + ('supplied to `' + componentName + '`, expected a ReactComponent or a ') + 'DOMElement. You can usually obtain a ReactComponent or DOMElement ' + 'from a ReactElement by attaching a ref to it.');\n  }\n\n  if ((propType !== 'object' || typeof propValue.render !== 'function') && propValue.nodeType !== 1) {\n    return new Error('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected a ReactComponent or a ') + 'DOMElement.');\n  }\n\n  return null;\n}\n\nexports.default = (0, _createChainableTypeChecker2.default)(validate);\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types-extra/lib/componentOrElement.js\n// module id = 115\n// module chunks = 0","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = getWindow;\nfunction getWindow(node) {\n  return node === node.window ? node : node.nodeType === 9 ? node.defaultView || node.parentWindow : false;\n}\nmodule.exports = exports[\"default\"];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-helpers/query/isWindow.js\n// module id = 116\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\nexports.default = getContainer;\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getContainer(container, defaultContainer) {\n  container = typeof container === 'function' ? container() : container;\n  return _reactDom2.default.findDOMNode(container) || defaultContainer;\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-overlays/lib/utils/getContainer.js\n// module id = 117\n// module chunks = 0","const config = {\n    mongoURL: process.env.MONGO_URL || 'mongodb://user_glplus_dev:pwGlplu$dev@ds119700-a0.mlab.com:19700,ds119700-a1.mlab.com:19700/rodmisc?replicaSet=rs-ds119700',\n    port: process.env.PORT || 3000,\n    localPath: 'http://localhost:3000',\n    remotePath: 'http://grocerylistplus.com/api',\n    secretKey: '$2a$10$GL_Plus',\n    sessionKey: '',\n    sessionKeyLength: 180000,\n    walmartApiKey: 'ntuy6v466fwhpxftt2dve4qm',\n    nutritionixApiId: 'b1f8977d',\n    nutritionixApiKey: '7ffcbc7909e309c42cc27f9406989a10'\n};\n\nmodule.exports = config;\n\n\n// WEBPACK FOOTER //\n// server/config.js","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n    formats: formats,\n    parse: parse,\n    stringify: stringify\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/qs/lib/index.js\n// module id = 119\n// module chunks = 0","/* eslint-disable no-console */\n\nfunction Warn(options) {\n  this.disableWarnings = options.disableWarnings;\n}\n\nWarn.prototype.warning = function(message) {\n  if (this.disableWarnings) {\n    return;\n  }\n\n  console.warn(message);\n};\n\nmodule.exports = Warn;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/auth0-js/src/helper/warn.js\n// module id = 120\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar logger_1 = require(\"../logger\");\nvar columnUtils_1 = require(\"../columnController/columnUtils\");\nvar columnKeyCreator_1 = require(\"./columnKeyCreator\");\nvar originalColumnGroup_1 = require(\"../entities/originalColumnGroup\");\nvar column_1 = require(\"../entities/column\");\nvar context_1 = require(\"../context/context\");\nvar utils_1 = require(\"../utils\");\nvar defaultColumnTypes_1 = require(\"../entities/defaultColumnTypes\");\n// takes in a list of columns, as specified by the column definitions, and returns column groups\nvar BalancedColumnTreeBuilder = (function () {\n    function BalancedColumnTreeBuilder() {\n    }\n    BalancedColumnTreeBuilder.prototype.setBeans = function (loggerFactory) {\n        this.logger = loggerFactory.create('BalancedColumnTreeBuilder');\n    };\n    BalancedColumnTreeBuilder.prototype.createBalancedColumnGroups = function (abstractColDefs, primaryColumns) {\n        // column key creator dishes out unique column id's in a deterministic way,\n        // so if we have two grids (that cold be master/slave) with same column definitions,\n        // then this ensures the two grids use identical id's.\n        var columnKeyCreator = new columnKeyCreator_1.ColumnKeyCreator();\n        // create am unbalanced tree that maps the provided definitions\n        var unbalancedTree = this.recursivelyCreateColumns(abstractColDefs, 0, columnKeyCreator, primaryColumns);\n        var treeDept = this.findMaxDept(unbalancedTree, 0);\n        this.logger.log('Number of levels for grouped columns is ' + treeDept);\n        var balancedTree = this.balanceColumnTree(unbalancedTree, 0, treeDept, columnKeyCreator);\n        this.columnUtils.depthFirstOriginalTreeSearch(balancedTree, function (child) {\n            if (child instanceof originalColumnGroup_1.OriginalColumnGroup) {\n                child.setupExpandable();\n            }\n        });\n        return {\n            balancedTree: balancedTree,\n            treeDept: treeDept\n        };\n    };\n    BalancedColumnTreeBuilder.prototype.balanceColumnTree = function (unbalancedTree, currentDept, columnDept, columnKeyCreator) {\n        var _this = this;\n        var result = [];\n        // go through each child, for groups, recurse a level deeper,\n        // for columns we need to pad\n        unbalancedTree.forEach(function (child) {\n            if (child instanceof originalColumnGroup_1.OriginalColumnGroup) {\n                var originalGroup = child;\n                var newChildren = _this.balanceColumnTree(originalGroup.getChildren(), currentDept + 1, columnDept, columnKeyCreator);\n                originalGroup.setChildren(newChildren);\n                result.push(originalGroup);\n            }\n            else {\n                var newChild = child;\n                for (var i = columnDept - 1; i >= currentDept; i--) {\n                    var newColId = columnKeyCreator.getUniqueKey(null, null);\n                    var colGroupDefMerged = _this.createMergedColGroupDef(null);\n                    var paddedGroup = new originalColumnGroup_1.OriginalColumnGroup(colGroupDefMerged, newColId, true);\n                    _this.context.wireBean(paddedGroup);\n                    paddedGroup.setChildren([newChild]);\n                    newChild = paddedGroup;\n                }\n                result.push(newChild);\n            }\n        });\n        return result;\n    };\n    BalancedColumnTreeBuilder.prototype.findMaxDept = function (treeChildren, dept) {\n        var maxDeptThisLevel = dept;\n        for (var i = 0; i < treeChildren.length; i++) {\n            var abstractColumn = treeChildren[i];\n            if (abstractColumn instanceof originalColumnGroup_1.OriginalColumnGroup) {\n                var originalGroup = abstractColumn;\n                var newDept = this.findMaxDept(originalGroup.getChildren(), dept + 1);\n                if (maxDeptThisLevel < newDept) {\n                    maxDeptThisLevel = newDept;\n                }\n            }\n        }\n        return maxDeptThisLevel;\n    };\n    BalancedColumnTreeBuilder.prototype.recursivelyCreateColumns = function (abstractColDefs, level, columnKeyCreator, primaryColumns) {\n        var _this = this;\n        var result = [];\n        if (!abstractColDefs) {\n            return result;\n        }\n        abstractColDefs.forEach(function (abstractColDef) {\n            var newGroupOrColumn;\n            if (_this.isColumnGroup(abstractColDef)) {\n                newGroupOrColumn = _this.createColumnGroup(columnKeyCreator, primaryColumns, abstractColDef, level);\n            }\n            else {\n                newGroupOrColumn = _this.createColumn(columnKeyCreator, primaryColumns, abstractColDef);\n            }\n            result.push(newGroupOrColumn);\n        });\n        return result;\n    };\n    BalancedColumnTreeBuilder.prototype.createColumnGroup = function (columnKeyCreator, primaryColumns, colGroupDef, level) {\n        var colGroupDefMerged = this.createMergedColGroupDef(colGroupDef);\n        var groupId = columnKeyCreator.getUniqueKey(colGroupDefMerged.groupId, null);\n        var originalGroup = new originalColumnGroup_1.OriginalColumnGroup(colGroupDefMerged, groupId, false);\n        this.context.wireBean(originalGroup);\n        var children = this.recursivelyCreateColumns(colGroupDefMerged.children, level + 1, columnKeyCreator, primaryColumns);\n        originalGroup.setChildren(children);\n        return originalGroup;\n    };\n    BalancedColumnTreeBuilder.prototype.createMergedColGroupDef = function (colGroupDef) {\n        var colGroupDefMerged = {};\n        utils_1.Utils.assign(colGroupDefMerged, this.gridOptionsWrapper.getDefaultColGroupDef());\n        utils_1.Utils.assign(colGroupDefMerged, colGroupDef);\n        this.checkForDeprecatedItems(colGroupDefMerged);\n        return colGroupDefMerged;\n    };\n    BalancedColumnTreeBuilder.prototype.createColumn = function (columnKeyCreator, primaryColumns, colDef) {\n        var colDefMerged = this.mergeColDefs(colDef);\n        this.checkForDeprecatedItems(colDefMerged);\n        var colId = columnKeyCreator.getUniqueKey(colDefMerged.colId, colDefMerged.field);\n        var column = new column_1.Column(colDefMerged, colId, primaryColumns);\n        this.context.wireBean(column);\n        return column;\n    };\n    BalancedColumnTreeBuilder.prototype.mergeColDefs = function (colDef) {\n        // start with empty merged definition\n        var colDefMerged = {};\n        // merge properties from default column definitions\n        utils_1.Utils.assign(colDefMerged, this.gridOptionsWrapper.getDefaultColDef());\n        // merge properties from column type properties\n        if (colDef.type) {\n            this.assignColumnTypes(colDef, colDefMerged);\n        }\n        // merge properties from column definitions\n        utils_1.Utils.assign(colDefMerged, colDef);\n        return colDefMerged;\n    };\n    BalancedColumnTreeBuilder.prototype.assignColumnTypes = function (colDef, colDefMerged) {\n        var typeKeys;\n        if (colDef.type instanceof Array) {\n            var invalidArray = colDef.type.some(function (a) { return typeof a !== 'string'; });\n            if (invalidArray) {\n                console.warn(\"ag-grid: if colDef.type is supplied an array it should be of type 'string[]'\");\n            }\n            else {\n                typeKeys = colDef.type;\n            }\n        }\n        else if (typeof colDef.type === 'string') {\n            typeKeys = colDef.type.split(',');\n        }\n        else {\n            console.warn(\"ag-grid: colDef.type should be of type 'string' | 'string[]'\");\n            return;\n        }\n        // merge user defined with default column types\n        var allColumnTypes = utils_1.Utils.assign({}, this.gridOptionsWrapper.getColumnTypes(), defaultColumnTypes_1.DefaultColumnTypes);\n        typeKeys.forEach(function (t) {\n            var typeColDef = allColumnTypes[t.trim()];\n            if (typeColDef) {\n                utils_1.Utils.assign(colDefMerged, typeColDef);\n            }\n            else {\n                console.warn(\"ag-grid: colDef.type '\" + t + \"' does not correspond to defined gridOptions.columnTypes\");\n            }\n        });\n    };\n    BalancedColumnTreeBuilder.prototype.checkForDeprecatedItems = function (colDef) {\n        if (colDef) {\n            var colDefNoType = colDef; // take out the type, so we can access attributes not defined in the type\n            if (colDefNoType.group !== undefined) {\n                console.warn('ag-grid: colDef.group is invalid, please check documentation on how to do grouping as it changed in version 3');\n            }\n            if (colDefNoType.headerGroup !== undefined) {\n                console.warn('ag-grid: colDef.headerGroup is invalid, please check documentation on how to do grouping as it changed in version 3');\n            }\n            if (colDefNoType.headerGroupShow !== undefined) {\n                console.warn('ag-grid: colDef.headerGroupShow is invalid, should be columnGroupShow, please check documentation on how to do grouping as it changed in version 3');\n            }\n            if (colDefNoType.suppressRowGroup !== undefined) {\n                console.warn('ag-grid: colDef.suppressRowGroup is deprecated, please use colDef.type instead');\n            }\n            if (colDefNoType.suppressAggregation !== undefined) {\n                console.warn('ag-grid: colDef.suppressAggregation is deprecated, please use colDef.type instead');\n            }\n            if (colDefNoType.suppressRowGroup || colDefNoType.suppressAggregation) {\n                console.warn('ag-grid: colDef.suppressAggregation and colDef.suppressRowGroup are deprecated, use allowRowGroup, allowPivot and allowValue instead');\n            }\n            if (colDefNoType.displayName) {\n                console.warn(\"ag-grid: Found displayName \" + colDefNoType.displayName + \", please use headerName instead, displayName is deprecated.\");\n                colDefNoType.headerName = colDefNoType.displayName;\n            }\n        }\n    };\n    // if object has children, we assume it's a group\n    BalancedColumnTreeBuilder.prototype.isColumnGroup = function (abstractColDef) {\n        return abstractColDef.children !== undefined;\n    };\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], BalancedColumnTreeBuilder.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('columnUtils'),\n        __metadata(\"design:type\", columnUtils_1.ColumnUtils)\n    ], BalancedColumnTreeBuilder.prototype, \"columnUtils\", void 0);\n    __decorate([\n        context_1.Autowired('context'),\n        __metadata(\"design:type\", context_1.Context)\n    ], BalancedColumnTreeBuilder.prototype, \"context\", void 0);\n    __decorate([\n        __param(0, context_1.Qualifier('loggerFactory')),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [logger_1.LoggerFactory]),\n        __metadata(\"design:returntype\", void 0)\n    ], BalancedColumnTreeBuilder.prototype, \"setBeans\", null);\n    BalancedColumnTreeBuilder = __decorate([\n        context_1.Bean('balancedColumnTreeBuilder')\n    ], BalancedColumnTreeBuilder);\n    return BalancedColumnTreeBuilder;\n}());\nexports.BalancedColumnTreeBuilder = BalancedColumnTreeBuilder;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/columnController/balancedColumnTreeBuilder.js\n// module id = 121\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"./context/context\");\nvar gridSerializer_1 = require(\"./gridSerializer\");\nvar downloader_1 = require(\"./downloader\");\nvar columnController_1 = require(\"./columnController/columnController\");\nvar valueService_1 = require(\"./valueService/valueService\");\nvar gridOptionsWrapper_1 = require(\"./gridOptionsWrapper\");\nvar constants_1 = require(\"./constants\");\nvar utils_1 = require(\"./utils\");\nvar LINE_SEPARATOR = '\\r\\n';\nvar CsvSerializingSession = (function (_super) {\n    __extends(CsvSerializingSession, _super);\n    function CsvSerializingSession(columnController, valueService, gridOptionsWrapper, processCellCallback, processHeaderCallback, suppressQuotes, columnSeparator) {\n        var _this = _super.call(this, columnController, valueService, gridOptionsWrapper, processCellCallback, processHeaderCallback) || this;\n        _this.suppressQuotes = suppressQuotes;\n        _this.columnSeparator = columnSeparator;\n        _this.result = '';\n        _this.lineOpened = false;\n        return _this;\n    }\n    CsvSerializingSession.prototype.prepare = function (columnsToExport) {\n    };\n    CsvSerializingSession.prototype.addCustomHeader = function (customHeader) {\n        if (!customHeader)\n            return;\n        this.result += customHeader + LINE_SEPARATOR;\n    };\n    CsvSerializingSession.prototype.addCustomFooter = function (customFooter) {\n        if (!customFooter)\n            return;\n        this.result += customFooter + LINE_SEPARATOR;\n    };\n    CsvSerializingSession.prototype.onNewHeaderGroupingRow = function () {\n        if (this.lineOpened)\n            this.result += LINE_SEPARATOR;\n        return {\n            onColumn: this.onNewHeaderGroupingRowColumn.bind(this)\n        };\n    };\n    CsvSerializingSession.prototype.onNewHeaderGroupingRowColumn = function (header, index, span) {\n        if (index != 0) {\n            this.result += this.columnSeparator;\n        }\n        this.result += header;\n        for (var i = 1; i <= span; i++) {\n            this.result += this.columnSeparator + this.putInQuotes(\"\", this.suppressQuotes);\n        }\n        this.lineOpened = true;\n    };\n    CsvSerializingSession.prototype.onNewHeaderRow = function () {\n        if (this.lineOpened)\n            this.result += LINE_SEPARATOR;\n        return {\n            onColumn: this.onNewHeaderRowColumn.bind(this)\n        };\n    };\n    CsvSerializingSession.prototype.onNewHeaderRowColumn = function (column, index, node) {\n        if (index != 0) {\n            this.result += this.columnSeparator;\n        }\n        this.result += this.putInQuotes(this.extractHeaderValue(column), this.suppressQuotes);\n        this.lineOpened = true;\n    };\n    CsvSerializingSession.prototype.onNewBodyRow = function () {\n        if (this.lineOpened)\n            this.result += LINE_SEPARATOR;\n        return {\n            onColumn: this.onNewBodyRowColumn.bind(this)\n        };\n    };\n    CsvSerializingSession.prototype.onNewBodyRowColumn = function (column, index, node) {\n        if (index != 0) {\n            this.result += this.columnSeparator;\n        }\n        this.result += this.putInQuotes(this.extractRowCellValue(column, index, constants_1.Constants.EXPORT_TYPE_CSV, node), this.suppressQuotes);\n        this.lineOpened = true;\n    };\n    CsvSerializingSession.prototype.putInQuotes = function (value, suppressQuotes) {\n        if (suppressQuotes) {\n            return value;\n        }\n        if (value === null || value === undefined) {\n            return '\"\"';\n        }\n        var stringValue;\n        if (typeof value === 'string') {\n            stringValue = value;\n        }\n        else if (typeof value.toString === 'function') {\n            stringValue = value.toString();\n        }\n        else {\n            console.warn('unknown value type during csv conversion');\n            stringValue = '';\n        }\n        // replace each \" with \"\" (ie two sets of double quotes is how to do double quotes in csv)\n        var valueEscaped = stringValue.replace(/\"/g, \"\\\"\\\"\");\n        return '\"' + valueEscaped + '\"';\n    };\n    CsvSerializingSession.prototype.parse = function () {\n        return this.result;\n    };\n    return CsvSerializingSession;\n}(gridSerializer_1.BaseGridSerializingSession));\nexports.CsvSerializingSession = CsvSerializingSession;\nvar BaseCreator = (function () {\n    function BaseCreator() {\n    }\n    BaseCreator.prototype.setBeans = function (beans) {\n        this.beans = beans;\n    };\n    BaseCreator.prototype.export = function (userParams) {\n        if (this.isExportSuppressed()) {\n            console.warn(\"ag-grid: Export canceled. Export is not allowed as per your configuration.\");\n            return \"\";\n        }\n        var _a = this.getMergedParamsAndData(userParams), mergedParams = _a.mergedParams, data = _a.data;\n        var fileNamePresent = mergedParams && mergedParams.fileName && mergedParams.fileName.length !== 0;\n        var fileName = fileNamePresent ? mergedParams.fileName : this.getDefaultFileName();\n        if (fileName.indexOf(\".\") === -1) {\n            fileName = fileName + \".\" + this.getDefaultFileExtension();\n        }\n        this.beans.downloader.download(fileName, data, this.getMimeType());\n        return data;\n    };\n    BaseCreator.prototype.getData = function (params) {\n        return this.getMergedParamsAndData(params).data;\n    };\n    BaseCreator.prototype.getMergedParamsAndData = function (userParams) {\n        var mergedParams = this.mergeDefaultParams(userParams);\n        var data = this.beans.gridSerializer.serialize(this.createSerializingSession(mergedParams), mergedParams);\n        return { mergedParams: mergedParams, data: data };\n    };\n    BaseCreator.prototype.mergeDefaultParams = function (userParams) {\n        var baseParams = this.beans.gridOptionsWrapper.getDefaultExportParams();\n        var params = {};\n        utils_1._.assign(params, baseParams);\n        utils_1._.assign(params, userParams);\n        return params;\n    };\n    return BaseCreator;\n}());\nexports.BaseCreator = BaseCreator;\nvar CsvCreator = (function (_super) {\n    __extends(CsvCreator, _super);\n    function CsvCreator() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    CsvCreator.prototype.postConstruct = function () {\n        this.setBeans({\n            downloader: this.downloader,\n            gridSerializer: this.gridSerializer,\n            gridOptionsWrapper: this.gridOptionsWrapper\n        });\n    };\n    CsvCreator.prototype.exportDataAsCsv = function (params) {\n        return this.export(params);\n    };\n    CsvCreator.prototype.getDataAsCsv = function (params) {\n        return this.getData(params);\n    };\n    CsvCreator.prototype.getMimeType = function () {\n        return \"text/csv;charset=utf-8;\";\n    };\n    CsvCreator.prototype.getDefaultFileName = function () {\n        return 'export.csv';\n    };\n    CsvCreator.prototype.getDefaultFileExtension = function () {\n        return 'csv';\n    };\n    CsvCreator.prototype.createSerializingSession = function (params) {\n        return new CsvSerializingSession(this.columnController, this.valueService, this.gridOptionsWrapper, params ? params.processCellCallback : null, params ? params.processHeaderCallback : null, params && params.suppressQuotes, (params && params.columnSeparator) || ',');\n    };\n    CsvCreator.prototype.isExportSuppressed = function () {\n        return this.gridOptionsWrapper.isSuppressCsvExport();\n    };\n    __decorate([\n        context_1.Autowired('columnController'),\n        __metadata(\"design:type\", columnController_1.ColumnController)\n    ], CsvCreator.prototype, \"columnController\", void 0);\n    __decorate([\n        context_1.Autowired('valueService'),\n        __metadata(\"design:type\", valueService_1.ValueService)\n    ], CsvCreator.prototype, \"valueService\", void 0);\n    __decorate([\n        context_1.Autowired('downloader'),\n        __metadata(\"design:type\", downloader_1.Downloader)\n    ], CsvCreator.prototype, \"downloader\", void 0);\n    __decorate([\n        context_1.Autowired('gridSerializer'),\n        __metadata(\"design:type\", gridSerializer_1.GridSerializer)\n    ], CsvCreator.prototype, \"gridSerializer\", void 0);\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], CsvCreator.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], CsvCreator.prototype, \"postConstruct\", null);\n    CsvCreator = __decorate([\n        context_1.Bean('csvCreator')\n    ], CsvCreator);\n    return CsvCreator;\n}(BaseCreator));\nexports.CsvCreator = CsvCreator;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/csvCreator.js\n// module id = 122\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar columnUtils_1 = require(\"./columnUtils\");\nvar columnGroup_1 = require(\"../entities/columnGroup\");\nvar originalColumnGroup_1 = require(\"../entities/originalColumnGroup\");\nvar context_1 = require(\"../context/context\");\nvar utils_1 = require(\"../utils\");\nvar context_2 = require(\"../context/context\");\n// takes in a list of columns, as specified by the column definitions, and returns column groups\nvar DisplayedGroupCreator = (function () {\n    function DisplayedGroupCreator() {\n    }\n    DisplayedGroupCreator.prototype.createDisplayedGroups = function (\n        // all displayed columns sorted - this is the columns the grid should show\n        sortedVisibleColumns, \n        // the tree of columns, as provided by the users, used to know what groups columns roll up into\n        balancedColumnTree, \n        // create's unique id's for the group\n        groupInstanceIdCreator, \n        // we try to reuse old groups if we can, to allow gui to do animation\n        oldDisplayedGroups) {\n        var _this = this;\n        var result = [];\n        var previousRealPath;\n        var previousOriginalPath;\n        var oldColumnsMapped = this.mapOldGroupsById(oldDisplayedGroups);\n        // go through each column, then do a bottom up comparison to the previous column, and start\n        // to share groups if they converge at any point.\n        sortedVisibleColumns.forEach(function (currentColumn) {\n            var currentOriginalPath = _this.getOriginalPathForColumn(balancedColumnTree, currentColumn);\n            var currentRealPath = [];\n            var firstColumn = !previousOriginalPath;\n            for (var i = 0; i < currentOriginalPath.length; i++) {\n                if (firstColumn || currentOriginalPath[i] !== previousOriginalPath[i]) {\n                    // new group needed\n                    var newGroup = _this.createColumnGroup(currentOriginalPath[i], groupInstanceIdCreator, oldColumnsMapped);\n                    currentRealPath[i] = newGroup;\n                    // if top level, add to result, otherwise add to parent\n                    if (i == 0) {\n                        result.push(newGroup);\n                    }\n                    else {\n                        currentRealPath[i - 1].addChild(newGroup);\n                    }\n                }\n                else {\n                    // reuse old group\n                    currentRealPath[i] = previousRealPath[i];\n                }\n            }\n            var noColumnGroups = currentRealPath.length === 0;\n            if (noColumnGroups) {\n                // if we are not grouping, then the result of the above is an empty\n                // path (no groups), and we just add the column to the root list.\n                result.push(currentColumn);\n            }\n            else {\n                var leafGroup = currentRealPath[currentRealPath.length - 1];\n                leafGroup.addChild(currentColumn);\n            }\n            previousRealPath = currentRealPath;\n            previousOriginalPath = currentOriginalPath;\n        });\n        this.setupParentsIntoColumns(result, null);\n        return result;\n    };\n    DisplayedGroupCreator.prototype.createColumnGroup = function (originalGroup, groupInstanceIdCreator, oldColumnsMapped) {\n        var groupId = originalGroup.getGroupId();\n        var instanceId = groupInstanceIdCreator.getInstanceIdForKey(groupId);\n        var uniqueId = columnGroup_1.ColumnGroup.createUniqueId(groupId, instanceId);\n        var columnGroup = oldColumnsMapped[uniqueId];\n        // if the user is setting new colDefs, it is possible that the id's overlap, and we\n        // would have a false match from above. so we double check we are talking about the\n        // same original column group.\n        if (columnGroup && columnGroup.getOriginalColumnGroup() !== originalGroup) {\n            columnGroup = null;\n        }\n        if (utils_1.Utils.exists(columnGroup)) {\n            // clean out the old column group here, as we will be adding children into it again\n            columnGroup.reset();\n        }\n        else {\n            columnGroup = new columnGroup_1.ColumnGroup(originalGroup, groupId, instanceId);\n            this.context.wireBean(columnGroup);\n        }\n        return columnGroup;\n    };\n    // returns back a 2d map of ColumnGroup as follows: groupId -> instanceId -> ColumnGroup\n    DisplayedGroupCreator.prototype.mapOldGroupsById = function (displayedGroups) {\n        var result = {};\n        var recursive = function (columnsOrGroups) {\n            columnsOrGroups.forEach(function (columnOrGroup) {\n                if (columnOrGroup instanceof columnGroup_1.ColumnGroup) {\n                    var columnGroup = columnOrGroup;\n                    result[columnOrGroup.getUniqueId()] = columnGroup;\n                    recursive(columnGroup.getChildren());\n                }\n            });\n        };\n        if (displayedGroups) {\n            recursive(displayedGroups);\n        }\n        return result;\n    };\n    DisplayedGroupCreator.prototype.setupParentsIntoColumns = function (columnsOrGroups, parent) {\n        var _this = this;\n        columnsOrGroups.forEach(function (columnsOrGroup) {\n            columnsOrGroup.setParent(parent);\n            if (columnsOrGroup instanceof columnGroup_1.ColumnGroup) {\n                var columnGroup = columnsOrGroup;\n                _this.setupParentsIntoColumns(columnGroup.getChildren(), columnGroup);\n            }\n        });\n    };\n    DisplayedGroupCreator.prototype.createFakePath = function (balancedColumnTree) {\n        var result = [];\n        var currentChildren = balancedColumnTree;\n        // this while look does search on the balanced tree, so our result is the right length\n        var index = 0;\n        while (currentChildren && currentChildren[0] && currentChildren[0] instanceof originalColumnGroup_1.OriginalColumnGroup) {\n            // putting in a deterministic fake id, in case the API in the future needs to reference the col\n            var fakePath = new originalColumnGroup_1.OriginalColumnGroup(null, 'FAKE_PATH_' + index, true);\n            this.context.wireBean(fakePath);\n            result.push(fakePath);\n            currentChildren = currentChildren[0].getChildren();\n            index++;\n        }\n        return result;\n    };\n    DisplayedGroupCreator.prototype.getOriginalPathForColumn = function (balancedColumnTree, column) {\n        var result = [];\n        var found = false;\n        recursePath(balancedColumnTree, 0);\n        // it's possible we didn't find a path. this happens if the column is generated\n        // by the grid, in that the definition didn't come from the client. in this case,\n        // we create a fake original path.\n        if (found) {\n            return result;\n        }\n        else {\n            return this.createFakePath(balancedColumnTree);\n        }\n        function recursePath(balancedColumnTree, dept) {\n            for (var i = 0; i < balancedColumnTree.length; i++) {\n                if (found) {\n                    // quit the search, so 'result' is kept with the found result\n                    return;\n                }\n                var node = balancedColumnTree[i];\n                if (node instanceof originalColumnGroup_1.OriginalColumnGroup) {\n                    var nextNode = node;\n                    recursePath(nextNode.getChildren(), dept + 1);\n                    result[dept] = node;\n                }\n                else {\n                    if (node === column) {\n                        found = true;\n                    }\n                }\n            }\n        }\n    };\n    __decorate([\n        context_2.Autowired('columnUtils'),\n        __metadata(\"design:type\", columnUtils_1.ColumnUtils)\n    ], DisplayedGroupCreator.prototype, \"columnUtils\", void 0);\n    __decorate([\n        context_2.Autowired('context'),\n        __metadata(\"design:type\", context_1.Context)\n    ], DisplayedGroupCreator.prototype, \"context\", void 0);\n    DisplayedGroupCreator = __decorate([\n        context_1.Bean('displayedGroupCreator')\n    ], DisplayedGroupCreator);\n    return DisplayedGroupCreator;\n}());\nexports.DisplayedGroupCreator = DisplayedGroupCreator;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/columnController/displayedGroupCreator.js\n// module id = 123\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar logger_1 = require(\"../logger\");\nvar utils_1 = require(\"../utils\");\nvar eventService_1 = require(\"../eventService\");\nvar events_1 = require(\"../events\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar gridApi_1 = require(\"../gridApi\");\n/** Adds drag listening onto an element. In ag-Grid this is used twice, first is resizing columns,\n * second is moving the columns and column groups around (ie the 'drag' part of Drag and Drop. */\nvar DragService = (function () {\n    function DragService() {\n        this.onMouseUpListener = this.onMouseUp.bind(this);\n        this.onMouseMoveListener = this.onMouseMove.bind(this);\n        this.onTouchEndListener = this.onTouchUp.bind(this);\n        this.onTouchMoveListener = this.onTouchMove.bind(this);\n        this.dragEndFunctions = [];\n        this.dragSources = [];\n    }\n    DragService.prototype.init = function () {\n        this.logger = this.loggerFactory.create('DragService');\n    };\n    DragService.prototype.destroy = function () {\n        this.dragSources.forEach(this.removeListener.bind(this));\n        this.dragSources.length = 0;\n    };\n    DragService.prototype.removeListener = function (dragSourceAndListener) {\n        var element = dragSourceAndListener.dragSource.eElement;\n        var mouseDownListener = dragSourceAndListener.mouseDownListener;\n        element.removeEventListener('mousedown', mouseDownListener);\n        // remove touch listener only if it exists\n        if (dragSourceAndListener.touchEnabled) {\n            var touchStartListener = dragSourceAndListener.touchStartListener;\n            element.removeEventListener('touchstart', touchStartListener, { passive: true });\n        }\n    };\n    DragService.prototype.removeDragSource = function (params) {\n        var dragSourceAndListener = utils_1.Utils.find(this.dragSources, function (item) { return item.dragSource === params; });\n        if (!dragSourceAndListener) {\n            return;\n        }\n        this.removeListener(dragSourceAndListener);\n        utils_1.Utils.removeFromArray(this.dragSources, dragSourceAndListener);\n    };\n    DragService.prototype.setNoSelectToBody = function (noSelect) {\n        var usrDocument = this.gridOptionsWrapper.getDocument();\n        var eBody = usrDocument.querySelector('body');\n        if (utils_1.Utils.exists(eBody)) {\n            utils_1.Utils.addOrRemoveCssClass(eBody, 'ag-body-no-select', noSelect);\n        }\n    };\n    DragService.prototype.addDragSource = function (params, includeTouch) {\n        if (includeTouch === void 0) { includeTouch = false; }\n        var mouseListener = this.onMouseDown.bind(this, params);\n        params.eElement.addEventListener('mousedown', mouseListener);\n        var touchListener = null;\n        var suppressTouch = this.gridOptionsWrapper.isSuppressTouch();\n        var reallyIncludeTouch = includeTouch && !suppressTouch;\n        if (reallyIncludeTouch) {\n            touchListener = this.onTouchStart.bind(this, params);\n            params.eElement.addEventListener('touchstart', touchListener, { passive: false });\n        }\n        this.dragSources.push({\n            dragSource: params,\n            mouseDownListener: mouseListener,\n            touchStartListener: touchListener,\n            touchEnabled: includeTouch\n        });\n    };\n    // gets called whenever mouse down on any drag source\n    DragService.prototype.onTouchStart = function (params, touchEvent) {\n        var _this = this;\n        this.currentDragParams = params;\n        this.dragging = false;\n        var touch = touchEvent.touches[0];\n        this.touchLastTime = touch;\n        this.touchStart = touch;\n        touchEvent.preventDefault();\n        // we temporally add these listeners, for the duration of the drag, they\n        // are removed in touch end handling.\n        params.eElement.addEventListener('touchmove', this.onTouchMoveListener, { passive: true });\n        params.eElement.addEventListener('touchend', this.onTouchEndListener, { passive: true });\n        params.eElement.addEventListener('touchcancel', this.onTouchEndListener, { passive: true });\n        this.dragEndFunctions.push(function () {\n            params.eElement.removeEventListener('touchmove', _this.onTouchMoveListener, { passive: true });\n            params.eElement.removeEventListener('touchend', _this.onTouchEndListener, { passive: true });\n            params.eElement.removeEventListener('touchcancel', _this.onTouchEndListener, { passive: true });\n        });\n        // see if we want to start dragging straight away\n        if (params.dragStartPixels === 0) {\n            this.onCommonMove(touch, this.touchStart);\n        }\n    };\n    // gets called whenever mouse down on any drag source\n    DragService.prototype.onMouseDown = function (params, mouseEvent) {\n        var _this = this;\n        // only interested in left button clicks\n        if (mouseEvent.button !== 0) {\n            return;\n        }\n        this.currentDragParams = params;\n        this.dragging = false;\n        this.mouseEventLastTime = mouseEvent;\n        this.mouseStartEvent = mouseEvent;\n        var usrDocument = this.gridOptionsWrapper.getDocument();\n        // we temporally add these listeners, for the duration of the drag, they\n        // are removed in mouseup handling.\n        usrDocument.addEventListener('mousemove', this.onMouseMoveListener);\n        usrDocument.addEventListener('mouseup', this.onMouseUpListener);\n        this.dragEndFunctions.push(function () {\n            usrDocument.removeEventListener('mousemove', _this.onMouseMoveListener);\n            usrDocument.removeEventListener('mouseup', _this.onMouseUpListener);\n        });\n        // see if we want to start dragging straight away\n        if (params.dragStartPixels === 0) {\n            this.onMouseMove(mouseEvent);\n        }\n    };\n    // returns true if the event is close to the original event by X pixels either vertically or horizontally.\n    // we only start dragging after X pixels so this allows us to know if we should start dragging yet.\n    DragService.prototype.isEventNearStartEvent = function (currentEvent, startEvent) {\n        // by default, we wait 4 pixels before starting the drag\n        var requiredPixelDiff = utils_1.Utils.exists(this.currentDragParams.dragStartPixels) ? this.currentDragParams.dragStartPixels : 4;\n        return utils_1.Utils.areEventsNear(currentEvent, startEvent, requiredPixelDiff);\n    };\n    DragService.prototype.getFirstActiveTouch = function (touchList) {\n        for (var i = 0; i < touchList.length; i++) {\n            var matches = touchList[i].identifier === this.touchStart.identifier;\n            if (matches) {\n                return touchList[i];\n            }\n        }\n        return null;\n    };\n    DragService.prototype.onCommonMove = function (currentEvent, startEvent) {\n        if (!this.dragging) {\n            // if mouse hasn't travelled from the start position enough, do nothing\n            var toEarlyToDrag = !this.dragging && this.isEventNearStartEvent(currentEvent, startEvent);\n            if (toEarlyToDrag) {\n                return;\n            }\n            else {\n                // alert(`started`);\n                this.dragging = true;\n                var event_1 = {\n                    type: events_1.Events.EVENT_DRAG_STARTED,\n                    api: this.gridApi,\n                    columnApi: this.columnApi\n                };\n                this.eventService.dispatchEvent(event_1);\n                this.currentDragParams.onDragStart(startEvent);\n                this.setNoSelectToBody(true);\n            }\n        }\n        this.currentDragParams.onDragging(currentEvent);\n    };\n    DragService.prototype.onTouchMove = function (touchEvent) {\n        var touch = this.getFirstActiveTouch(touchEvent.touches);\n        if (!touch) {\n            return;\n        }\n        // this.___statusBar.setInfoText(Math.random() + ' onTouchMove preventDefault stopPropagation');\n        // if we don't preview default, then the browser will try and do it's own touch stuff,\n        // like do 'back button' (chrome does this) or scroll the page (eg drag column could  be confused\n        // with scroll page in the app)\n        // touchEvent.preventDefault();\n        this.onCommonMove(touch, this.touchStart);\n    };\n    // only gets called after a mouse down - as this is only added after mouseDown\n    // and is removed when mouseUp happens\n    DragService.prototype.onMouseMove = function (mouseEvent) {\n        this.onCommonMove(mouseEvent, this.mouseStartEvent);\n    };\n    DragService.prototype.onTouchUp = function (touchEvent) {\n        var touch = this.getFirstActiveTouch(touchEvent.targetTouches);\n        // i haven't worked this out yet, but there is no matching touch\n        // when we get the touch up event. to get around this, we swap in\n        // the last touch. this is a hack to 'get it working' while we\n        // figure out what's going on, why we are not getting a touch in\n        // current event.\n        if (!touch) {\n            touch = this.touchLastTime;\n        }\n        // if mouse was left up before we started to move, then this is a tap.\n        // we check this before onUpCommon as onUpCommon resets the dragging\n        // let tap = !this.dragging;\n        // let tapTarget = this.currentDragParams.eElement;\n        this.onUpCommon(touch);\n        // if tap, tell user\n        // console.log(`${Math.random()} tap = ${tap}`);\n        // if (tap) {\n        //     tapTarget.click();\n        // }\n    };\n    DragService.prototype.onMouseUp = function (mouseEvent) {\n        this.onUpCommon(mouseEvent);\n    };\n    DragService.prototype.onUpCommon = function (eventOrTouch) {\n        if (this.dragging) {\n            this.dragging = false;\n            this.currentDragParams.onDragStop(eventOrTouch);\n            var event_2 = {\n                type: events_1.Events.EVENT_DRAG_STOPPED,\n                api: this.gridApi,\n                columnApi: this.columnApi\n            };\n            this.eventService.dispatchEvent(event_2);\n        }\n        this.setNoSelectToBody(false);\n        this.mouseStartEvent = null;\n        this.mouseEventLastTime = null;\n        this.touchStart = null;\n        this.touchLastTime = null;\n        this.currentDragParams = null;\n        this.dragEndFunctions.forEach(function (func) { return func(); });\n        this.dragEndFunctions.length = 0;\n    };\n    __decorate([\n        context_1.Autowired('loggerFactory'),\n        __metadata(\"design:type\", logger_1.LoggerFactory)\n    ], DragService.prototype, \"loggerFactory\", void 0);\n    __decorate([\n        context_1.Autowired('eventService'),\n        __metadata(\"design:type\", eventService_1.EventService)\n    ], DragService.prototype, \"eventService\", void 0);\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], DragService.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('columnApi'),\n        __metadata(\"design:type\", columnController_1.ColumnApi)\n    ], DragService.prototype, \"columnApi\", void 0);\n    __decorate([\n        context_1.Autowired('gridApi'),\n        __metadata(\"design:type\", gridApi_1.GridApi)\n    ], DragService.prototype, \"gridApi\", void 0);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], DragService.prototype, \"init\", null);\n    __decorate([\n        context_1.PreDestroy,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], DragService.prototype, \"destroy\", null);\n    DragService = __decorate([\n        context_1.Bean('dragService')\n    ], DragService);\n    return DragService;\n}());\nexports.DragService = DragService;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/dragAndDrop/dragService.js\n// module id = 124\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"./gridOptionsWrapper\");\nvar columnController_1 = require(\"./columnController/columnController\");\nvar gridPanel_1 = require(\"./gridPanel/gridPanel\");\nvar eventService_1 = require(\"./eventService\");\nvar logger_1 = require(\"./logger\");\nvar events_1 = require(\"./events\");\nvar context_1 = require(\"./context/context\");\nvar context_2 = require(\"./context/context\");\nvar context_3 = require(\"./context/context\");\nvar context_4 = require(\"./context/context\");\nvar counter = 0;\nvar AlignedGridsService = (function () {\n    function AlignedGridsService() {\n        this.instanceId = counter++;\n        // flag to mark if we are consuming. to avoid cyclic events (ie other grid firing back to master\n        // while processing a master event) we mark this if consuming an event, and if we are, then\n        // we don't fire back any events.\n        this.consuming = false;\n    }\n    AlignedGridsService.prototype.setBeans = function (loggerFactory) {\n        this.logger = loggerFactory.create('AlignedGridsService');\n    };\n    AlignedGridsService.prototype.init = function () {\n        this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_MOVED, this.fireColumnEvent.bind(this));\n        this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_VISIBLE, this.fireColumnEvent.bind(this));\n        this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_PINNED, this.fireColumnEvent.bind(this));\n        this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_GROUP_OPENED, this.fireColumnEvent.bind(this));\n        this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_RESIZED, this.fireColumnEvent.bind(this));\n        this.eventService.addEventListener(events_1.Events.EVENT_BODY_SCROLL, this.fireScrollEvent.bind(this));\n    };\n    // common logic across all the fire methods\n    AlignedGridsService.prototype.fireEvent = function (callback) {\n        // if we are already consuming, then we are acting on an event from a master,\n        // so we don't cause a cyclic firing of events\n        if (this.consuming) {\n            return;\n        }\n        // iterate through the aligned grids, and pass each aligned grid service to the callback\n        var otherGrids = this.gridOptionsWrapper.getAlignedGrids();\n        if (otherGrids) {\n            otherGrids.forEach(function (otherGridOptions) {\n                if (otherGridOptions.api) {\n                    var alignedGridService = otherGridOptions.api.__getAlignedGridService();\n                    callback(alignedGridService);\n                }\n            });\n        }\n    };\n    // common logic across all consume methods. very little common logic, however extracting\n    // guarantees consistency across the methods.\n    AlignedGridsService.prototype.onEvent = function (callback) {\n        this.consuming = true;\n        callback();\n        this.consuming = false;\n    };\n    AlignedGridsService.prototype.fireColumnEvent = function (event) {\n        this.fireEvent(function (alignedGridsService) {\n            alignedGridsService.onColumnEvent(event);\n        });\n    };\n    AlignedGridsService.prototype.fireScrollEvent = function (event) {\n        if (event.direction !== 'horizontal') {\n            return;\n        }\n        this.fireEvent(function (alignedGridsService) {\n            alignedGridsService.onScrollEvent(event);\n        });\n    };\n    AlignedGridsService.prototype.onScrollEvent = function (event) {\n        var _this = this;\n        this.onEvent(function () {\n            _this.gridPanel.setHorizontalScrollPosition(event.left);\n        });\n    };\n    AlignedGridsService.prototype.getMasterColumns = function (event) {\n        var result = [];\n        if (event.columns) {\n            event.columns.forEach(function (column) {\n                result.push(column);\n            });\n        }\n        else if (event.column) {\n            result.push(event.column);\n        }\n        return result;\n    };\n    AlignedGridsService.prototype.getColumnIds = function (event) {\n        var result = [];\n        if (event.columns) {\n            event.columns.forEach(function (column) {\n                result.push(column.getColId());\n            });\n        }\n        else if (event.columns) {\n            result.push(event.column.getColId());\n        }\n        return result;\n    };\n    AlignedGridsService.prototype.onColumnEvent = function (event) {\n        var _this = this;\n        this.onEvent(function () {\n            switch (event.type) {\n                case events_1.Events.EVENT_COLUMN_MOVED:\n                case events_1.Events.EVENT_COLUMN_VISIBLE:\n                case events_1.Events.EVENT_COLUMN_PINNED:\n                case events_1.Events.EVENT_COLUMN_RESIZED:\n                    var colEvent = event;\n                    _this.processColumnEvent(colEvent);\n                    break;\n                case events_1.Events.EVENT_COLUMN_GROUP_OPENED:\n                    var groupOpenedEvent = event;\n                    _this.processGroupOpenedEvent(groupOpenedEvent);\n                    break;\n                case events_1.Events.EVENT_COLUMN_PIVOT_CHANGED:\n                    // we cannot support pivoting with aligned grids as the columns will be out of sync as the\n                    // grids will have columns created based on the row data of the grid.\n                    console.warn('ag-Grid: pivoting is not supported with aligned grids. ' +\n                        'You can only use one of these features at a time in a grid.');\n                    break;\n            }\n        });\n    };\n    AlignedGridsService.prototype.processGroupOpenedEvent = function (groupOpenedEvent) {\n        // likewise for column group\n        var masterColumnGroup = groupOpenedEvent.columnGroup;\n        var otherColumnGroup;\n        if (masterColumnGroup) {\n            var groupId = masterColumnGroup.getGroupId();\n            otherColumnGroup = this.columnController.getOriginalColumnGroup(groupId);\n        }\n        if (masterColumnGroup && !otherColumnGroup) {\n            return;\n        }\n        this.logger.log('onColumnEvent-> processing ' + event + ' expanded = ' + masterColumnGroup.isExpanded());\n        this.columnController.setColumnGroupOpened(otherColumnGroup, masterColumnGroup.isExpanded());\n    };\n    AlignedGridsService.prototype.processColumnEvent = function (colEvent) {\n        var _this = this;\n        // the column in the event is from the master grid. need to\n        // look up the equivalent from this (other) grid\n        var masterColumn = colEvent.column;\n        var otherColumn;\n        if (masterColumn) {\n            otherColumn = this.columnController.getPrimaryColumn(masterColumn.getColId());\n        }\n        // if event was with respect to a master column, that is not present in this\n        // grid, then we ignore the event\n        if (masterColumn && !otherColumn) {\n            return;\n        }\n        // in time, all the methods below should use the column ids, it's a more generic way\n        // of handling columns, and also allows for single or multi column events\n        var columnIds = this.getColumnIds(colEvent);\n        var masterColumns = this.getMasterColumns(colEvent);\n        switch (colEvent.type) {\n            case events_1.Events.EVENT_COLUMN_MOVED:\n                var movedEvent = colEvent;\n                this.logger.log('onColumnEvent-> processing ' + colEvent.type + ' toIndex = ' + movedEvent.toIndex);\n                this.columnController.moveColumns(columnIds, movedEvent.toIndex);\n                break;\n            case events_1.Events.EVENT_COLUMN_VISIBLE:\n                var visibleEvent = colEvent;\n                this.logger.log('onColumnEvent-> processing ' + colEvent.type + ' visible = ' + visibleEvent.visible);\n                this.columnController.setColumnsVisible(columnIds, visibleEvent.visible);\n                break;\n            case events_1.Events.EVENT_COLUMN_PINNED:\n                var pinnedEvent = colEvent;\n                this.logger.log('onColumnEvent-> processing ' + colEvent.type + ' pinned = ' + pinnedEvent.pinned);\n                this.columnController.setColumnsPinned(columnIds, pinnedEvent.pinned);\n                break;\n            case events_1.Events.EVENT_COLUMN_RESIZED:\n                var resizedEvent_1 = colEvent;\n                masterColumns.forEach(function (masterColumn) {\n                    _this.logger.log('onColumnEvent-> processing ' + colEvent.type + ' actualWidth = ' + masterColumn.getActualWidth());\n                    _this.columnController.setColumnWidth(masterColumn.getColId(), masterColumn.getActualWidth(), resizedEvent_1.finished);\n                });\n                break;\n        }\n    };\n    __decorate([\n        context_3.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], AlignedGridsService.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_3.Autowired('columnController'),\n        __metadata(\"design:type\", columnController_1.ColumnController)\n    ], AlignedGridsService.prototype, \"columnController\", void 0);\n    __decorate([\n        context_3.Autowired('gridPanel'),\n        __metadata(\"design:type\", gridPanel_1.GridPanel)\n    ], AlignedGridsService.prototype, \"gridPanel\", void 0);\n    __decorate([\n        context_3.Autowired('eventService'),\n        __metadata(\"design:type\", eventService_1.EventService)\n    ], AlignedGridsService.prototype, \"eventService\", void 0);\n    __decorate([\n        __param(0, context_2.Qualifier('loggerFactory')),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [logger_1.LoggerFactory]),\n        __metadata(\"design:returntype\", void 0)\n    ], AlignedGridsService.prototype, \"setBeans\", null);\n    __decorate([\n        context_4.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], AlignedGridsService.prototype, \"init\", null);\n    AlignedGridsService = __decorate([\n        context_1.Bean('alignedGridsService')\n    ], AlignedGridsService);\n    return AlignedGridsService;\n}());\nexports.AlignedGridsService = AlignedGridsService;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/alignedGridsService.js\n// module id = 125\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar cellComp_1 = require(\"./cellComp\");\nvar rowNode_1 = require(\"../entities/rowNode\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar column_1 = require(\"../entities/column\");\nvar events_1 = require(\"../events\");\nvar context_1 = require(\"../context/context\");\nvar component_1 = require(\"../widgets/component\");\nvar componentAnnotations_1 = require(\"../widgets/componentAnnotations\");\nvar LoadingCellRenderer = (function (_super) {\n    __extends(LoadingCellRenderer, _super);\n    function LoadingCellRenderer() {\n        return _super.call(this, LoadingCellRenderer.TEMPLATE) || this;\n    }\n    LoadingCellRenderer.prototype.init = function (params) {\n        var eLoadingIcon = utils_1._.createIconNoSpan('groupLoading', this.gridOptionsWrapper, null);\n        this.eLoadingIcon.appendChild(eLoadingIcon);\n        var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n        this.eLoadingText.innerText = localeTextFunc('loadingOoo', 'Loading');\n    };\n    LoadingCellRenderer.prototype.refresh = function (params) {\n        return false;\n    };\n    LoadingCellRenderer.TEMPLATE = \"<div class=\\\"ag-stub-cell\\\">\\n            <span class=\\\"ag-loading-icon\\\" ref=\\\"eLoadingIcon\\\"></span>\\n            <span class=\\\"ag-loading-text\\\" ref=\\\"eLoadingText\\\"></span>\\n        </div>\";\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], LoadingCellRenderer.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        componentAnnotations_1.RefSelector('eLoadingIcon'),\n        __metadata(\"design:type\", HTMLElement)\n    ], LoadingCellRenderer.prototype, \"eLoadingIcon\", void 0);\n    __decorate([\n        componentAnnotations_1.RefSelector('eLoadingText'),\n        __metadata(\"design:type\", HTMLElement)\n    ], LoadingCellRenderer.prototype, \"eLoadingText\", void 0);\n    return LoadingCellRenderer;\n}(component_1.Component));\nexports.LoadingCellRenderer = LoadingCellRenderer;\nvar RowComp = (function (_super) {\n    __extends(RowComp, _super);\n    function RowComp(parentScope, bodyContainerComp, pinnedLeftContainerComp, pinnedRightContainerComp, fullWidthContainerComp, rowNode, beans, animateIn, useAnimationFrameForCreate) {\n        var _this = _super.call(this) || this;\n        _this.eAllRowContainers = [];\n        _this.active = true;\n        _this.columnRefreshPending = false;\n        _this.cellComps = {};\n        // for animations, there are bits we want done in the next VM turn, to all DOM to update first.\n        // instead of each row doing a setTimeout(func,0), we put the functions here and the rowRenderer\n        // executes them all in one timeout\n        _this.createSecondPassFuncs = [];\n        // these get called before the row is destroyed - they set up the DOM for the remove animation (ie they\n        // set the DOM up for the animation), then the delayedDestroyFunctions get called when the animation is\n        // complete (ie removes from the dom).\n        _this.removeFirstPassFuncs = [];\n        // for animations, these functions get called 400ms after the row is cleared, called by the rowRenderer\n        // so each row isn't setting up it's own timeout\n        _this.removeSecondPassFuncs = [];\n        _this.initialised = false;\n        _this.parentScope = parentScope;\n        _this.beans = beans;\n        _this.bodyContainerComp = bodyContainerComp;\n        _this.pinnedLeftContainerComp = pinnedLeftContainerComp;\n        _this.pinnedRightContainerComp = pinnedRightContainerComp;\n        _this.fullWidthContainerComp = fullWidthContainerComp;\n        _this.rowNode = rowNode;\n        _this.rowIsEven = _this.rowNode.rowIndex % 2 === 0;\n        _this.paginationPage = _this.beans.paginationProxy.getCurrentPage();\n        _this.useAnimationFrameForCreate = useAnimationFrameForCreate;\n        _this.setAnimateFlags(animateIn);\n        return _this;\n    }\n    RowComp.prototype.init = function () {\n        var _this = this;\n        this.rowFocused = this.beans.focusedCellController.isRowFocused(this.rowNode.rowIndex, this.rowNode.rowPinned);\n        this.scope = this.createChildScopeOrNull(this.rowNode.data);\n        this.setupRowContainers();\n        this.addListeners();\n        if (this.slideRowIn) {\n            this.createSecondPassFuncs.push(function () {\n                _this.onTopChanged();\n            });\n        }\n        if (this.fadeRowIn) {\n            this.createSecondPassFuncs.push(function () {\n                _this.eAllRowContainers.forEach(function (eRow) { return utils_1._.removeCssClass(eRow, 'ag-opacity-zero'); });\n            });\n        }\n    };\n    RowComp.prototype.createTemplate = function (contents, extraCssClass) {\n        if (extraCssClass === void 0) { extraCssClass = null; }\n        var templateParts = [];\n        var rowHeight = this.rowNode.rowHeight;\n        var rowClasses = this.getInitialRowClasses(extraCssClass).join(' ');\n        var rowId = this.rowNode.id;\n        var userRowStyles = this.preProcessStylesFromGridOptions();\n        var businessKey = this.getRowBusinessKey();\n        var rowTopStyle = this.getInitialRowTopStyle();\n        templateParts.push(\"<div\");\n        templateParts.push(\" role=\\\"row\\\"\");\n        templateParts.push(\" row-index=\\\"\" + this.rowNode.getRowIndexString() + \"\\\"\");\n        templateParts.push(rowId ? \" row-id=\\\"\" + rowId + \"\\\"\" : \"\");\n        templateParts.push(businessKey ? \" row-business-key=\\\"\" + businessKey + \"\\\"\" : \"\");\n        templateParts.push(\" comp-id=\\\"\" + this.getCompId() + \"\\\"\");\n        templateParts.push(\" class=\\\"\" + rowClasses + \"\\\"\");\n        templateParts.push(\" style=\\\"height: \" + rowHeight + \"px; \" + rowTopStyle + \" \" + userRowStyles + \"\\\">\");\n        // add in the template for the cells\n        templateParts.push(contents);\n        templateParts.push(\"</div>\");\n        return templateParts.join('');\n    };\n    RowComp.prototype.getCellForCol = function (column) {\n        var cellComp = this.cellComps[column.getColId()];\n        if (cellComp) {\n            return cellComp.getGui();\n        }\n        else {\n            return null;\n        }\n    };\n    RowComp.prototype.afterFlush = function () {\n        if (!this.initialised) {\n            this.initialised = true;\n            this.executeProcessRowPostCreateFunc();\n        }\n    };\n    RowComp.prototype.executeProcessRowPostCreateFunc = function () {\n        var func = this.beans.gridOptionsWrapper.getProcessRowPostCreateFunc();\n        if (func) {\n            var params = {\n                eRow: this.eBodyRow,\n                ePinnedLeftRow: this.ePinnedLeftRow,\n                ePinnedRightRow: this.ePinnedRightRow,\n                node: this.rowNode,\n                api: this.beans.gridOptionsWrapper.getApi(),\n                rowIndex: this.rowNode.rowIndex,\n                addRenderedRowListener: this.addEventListener.bind(this),\n                columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n                context: this.beans.gridOptionsWrapper.getContext()\n            };\n            func(params);\n        }\n    };\n    RowComp.prototype.getInitialRowTopStyle = function () {\n        var rowTopStyle = '';\n        var setRowTop = !this.beans.forPrint && !this.beans.gridOptionsWrapper.isAutoHeight();\n        if (setRowTop) {\n            // if sliding in, we take the old row top. otherwise we just set the current row top.\n            var pixels = this.slideRowIn ? this.roundRowTopToBounds(this.rowNode.oldRowTop) : this.rowNode.rowTop;\n            var pixelsWithOffset = this.applyPixelOffset(pixels);\n            // if not setting row top, then below is empty string\n            rowTopStyle = \"top: \" + pixelsWithOffset + \"px; \";\n        }\n        return rowTopStyle;\n    };\n    RowComp.prototype.getRowBusinessKey = function () {\n        if (typeof this.beans.gridOptionsWrapper.getBusinessKeyForNodeFunc() === 'function') {\n            var businessKey = this.beans.gridOptionsWrapper.getBusinessKeyForNodeFunc()(this.rowNode);\n            return businessKey;\n        }\n    };\n    RowComp.prototype.lazyCreateCells = function (cols, eRow) {\n        if (this.active) {\n            var cellTemplatesAndComps = this.createCells(cols);\n            eRow.innerHTML = cellTemplatesAndComps.template;\n            this.callAfterRowAttachedOnCells(cellTemplatesAndComps.cellComps, eRow);\n        }\n    };\n    RowComp.prototype.createRowContainer = function (rowContainerComp, cols, callback) {\n        var _this = this;\n        var cellTemplatesAndComps;\n        if (this.useAnimationFrameForCreate) {\n            cellTemplatesAndComps = { cellComps: [], template: '' };\n        }\n        else {\n            cellTemplatesAndComps = this.createCells(cols);\n        }\n        var rowTemplate = this.createTemplate(cellTemplatesAndComps.template);\n        rowContainerComp.appendRowTemplate(rowTemplate, function () {\n            var eRow = rowContainerComp.getRowElement(_this.getCompId());\n            _this.afterRowAttached(rowContainerComp, eRow);\n            callback(eRow);\n            if (_this.useAnimationFrameForCreate) {\n                _this.beans.taskQueue.addP1Task(_this.lazyCreateCells.bind(_this, cols, eRow));\n            }\n            else {\n                _this.callAfterRowAttachedOnCells(cellTemplatesAndComps.cellComps, eRow);\n            }\n        });\n    };\n    RowComp.prototype.createChildScopeOrNull = function (data) {\n        if (this.beans.gridOptionsWrapper.isAngularCompileRows()) {\n            var newChildScope = this.parentScope.$new();\n            newChildScope.data = data;\n            newChildScope.rowNode = this.rowNode;\n            newChildScope.context = this.beans.gridOptionsWrapper.getContext();\n            return newChildScope;\n        }\n        else {\n            return null;\n        }\n    };\n    RowComp.prototype.setupRowContainers = function () {\n        var isFullWidthCellFunc = this.beans.gridOptionsWrapper.getIsFullWidthCellFunc();\n        var isFullWidthCell = isFullWidthCellFunc ? isFullWidthCellFunc(this.rowNode) : false;\n        var isDetailCell = this.beans.doingMasterDetail && this.rowNode.detail;\n        var isGroupSpanningRow = this.rowNode.group && this.beans.gridOptionsWrapper.isGroupUseEntireRow();\n        if (this.rowNode.stub) {\n            this.createFullWidthRows(RowComp.LOADING_CELL_RENDERER, RowComp.LOADING_CELL_RENDERER_COMP_NAME);\n        }\n        else if (isDetailCell) {\n            this.createFullWidthRows(RowComp.DETAIL_CELL_RENDERER, RowComp.DETAIL_CELL_RENDERER_COMP_NAME);\n        }\n        else if (isFullWidthCell) {\n            this.createFullWidthRows(RowComp.FULL_WIDTH_CELL_RENDERER, RowComp.FULL_WIDTH_CELL_RENDERER_COMP_NAME);\n        }\n        else if (isGroupSpanningRow) {\n            this.createFullWidthRows(RowComp.GROUP_ROW_RENDERER, RowComp.GROUP_ROW_RENDERER_COMP_NAME);\n        }\n        else {\n            this.setupNormalRowContainers();\n        }\n    };\n    RowComp.prototype.setupNormalRowContainers = function () {\n        var _this = this;\n        var centerCols = this.beans.columnController.getAllDisplayedCenterVirtualColumnsForRow(this.rowNode);\n        this.createRowContainer(this.bodyContainerComp, centerCols, function (eRow) { return _this.eBodyRow = eRow; });\n        if (!this.beans.forPrint) {\n            var leftCols = this.beans.columnController.getDisplayedLeftColumnsForRow(this.rowNode);\n            var rightCols = this.beans.columnController.getDisplayedRightColumnsForRow(this.rowNode);\n            this.createRowContainer(this.pinnedRightContainerComp, rightCols, function (eRow) { return _this.ePinnedRightRow = eRow; });\n            this.createRowContainer(this.pinnedLeftContainerComp, leftCols, function (eRow) { return _this.ePinnedLeftRow = eRow; });\n        }\n    };\n    RowComp.prototype.createFullWidthRows = function (type, name) {\n        var _this = this;\n        this.fullWidthRow = true;\n        this.fullWidthRowEmbedded = this.beans.gridOptionsWrapper.isEmbedFullWidthRows();\n        if (this.fullWidthRowEmbedded) {\n            this.createFullWidthRowContainer(this.bodyContainerComp, null, null, type, name, function (eRow) {\n                _this.eFullWidthRowBody = eRow;\n            }, function (cellRenderer) {\n                _this.fullWidthRowComponentBody = cellRenderer;\n            });\n            this.createFullWidthRowContainer(this.pinnedLeftContainerComp, column_1.Column.PINNED_LEFT, 'ag-cell-last-left-pinned', type, name, function (eRow) {\n                _this.eFullWidthRowLeft = eRow;\n            }, function (cellRenderer) {\n                _this.fullWidthRowComponentLeft = cellRenderer;\n            });\n            this.createFullWidthRowContainer(this.pinnedRightContainerComp, column_1.Column.PINNED_RIGHT, 'ag-cell-first-right-pinned', type, name, function (eRow) {\n                _this.eFullWidthRowRight = eRow;\n            }, function (cellRenderer) {\n                _this.fullWidthRowComponentRight = cellRenderer;\n            });\n        }\n        else {\n            // otherwise we add to the fullWidth container as normal\n            // let previousFullWidth = ensureDomOrder ? this.lastPlacedElements.eFullWidth : null;\n            this.createFullWidthRowContainer(this.fullWidthContainerComp, null, null, type, name, function (eRow) {\n                _this.eFullWidthRow = eRow;\n                // and fake the mouse wheel for the fullWidth container\n                if (!_this.beans.forPrint) {\n                    _this.addMouseWheelListenerToFullWidthRow();\n                }\n            }, function (cellRenderer) {\n                _this.fullWidthRowComponent = cellRenderer;\n            });\n        }\n    };\n    RowComp.prototype.addMouseWheelListenerToFullWidthRow = function () {\n        var mouseWheelListener = this.beans.gridPanel.genericMouseWheelListener.bind(this.beans.gridPanel);\n        // IE9, Chrome, Safari, Opera\n        this.addDestroyableEventListener(this.eFullWidthRow, 'mousewheel', mouseWheelListener);\n        // Firefox\n        this.addDestroyableEventListener(this.eFullWidthRow, 'DOMMouseScroll', mouseWheelListener);\n    };\n    RowComp.prototype.setAnimateFlags = function (animateIn) {\n        if (animateIn) {\n            var oldRowTopExists = utils_1._.exists(this.rowNode.oldRowTop);\n            // if the row had a previous position, we slide it in (animate row top)\n            this.slideRowIn = oldRowTopExists;\n            // if the row had no previous position, we fade it in (animate\n            this.fadeRowIn = !oldRowTopExists;\n        }\n        else {\n            this.slideRowIn = false;\n            this.fadeRowIn = false;\n        }\n    };\n    RowComp.prototype.isEditing = function () {\n        return this.editingRow;\n    };\n    RowComp.prototype.stopRowEditing = function (cancel) {\n        this.stopEditing(cancel);\n    };\n    RowComp.prototype.isFullWidth = function () {\n        return this.fullWidthRow;\n    };\n    RowComp.prototype.addListeners = function () {\n        this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_HEIGHT_CHANGED, this.onRowHeightChanged.bind(this));\n        this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_ROW_SELECTED, this.onRowSelected.bind(this));\n        this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_ROW_INDEX_CHANGED, this.onRowIndexChanged.bind(this));\n        this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_TOP_CHANGED, this.onTopChanged.bind(this));\n        this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_EXPANDED_CHANGED, this.onExpandedChanged.bind(this));\n        this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_DATA_CHANGED, this.onRowNodeDataChanged.bind(this));\n        this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_CELL_CHANGED, this.onRowNodeCellChanged.bind(this));\n        var eventService = this.beans.eventService;\n        this.addDestroyableEventListener(eventService, events_1.Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n        this.addDestroyableEventListener(eventService, events_1.Events.EVENT_VIRTUAL_COLUMNS_CHANGED, this.onVirtualColumnsChanged.bind(this));\n        this.addDestroyableEventListener(eventService, events_1.Events.EVENT_COLUMN_RESIZED, this.onColumnResized.bind(this));\n        this.addDestroyableEventListener(eventService, events_1.Events.EVENT_CELL_FOCUSED, this.onCellFocusChanged.bind(this));\n        this.addDestroyableEventListener(eventService, events_1.Events.EVENT_PAGINATION_CHANGED, this.onPaginationChanged.bind(this));\n        this.addDestroyableEventListener(eventService, events_1.Events.EVENT_GRID_COLUMNS_CHANGED, this.onGridColumnsChanged.bind(this));\n    };\n    // when grid columns change, then all cells should be cleaned out,\n    // as the new columns could have same id as the previous columns and may conflict\n    RowComp.prototype.onGridColumnsChanged = function () {\n        var allRenderedCellIds = Object.keys(this.cellComps);\n        this.removeRenderedCells(allRenderedCellIds);\n    };\n    RowComp.prototype.onRowNodeDataChanged = function (event) {\n        // if this is an update, we want to refresh, as this will allow the user to put in a transition\n        // into the cellRenderer refresh method. otherwise this might be completely new data, in which case\n        // we will want to completely replace the cells\n        this.forEachCellComp(function (cellComp) {\n            return cellComp.refreshCell({\n                suppressFlash: !event.update,\n                newData: !event.update\n            });\n        });\n        // check for selected also, as this could be after lazy loading of the row data, in which case\n        // the id might of just gotten set inside the row and the row selected state may of changed\n        // as a result. this is what happens when selected rows are loaded in virtual pagination.\n        // - niall note - since moving to the stub component, this may no longer be true, as replacing\n        // the stub component now replaces the entire row\n        this.onRowSelected();\n        // as data has changed, then the style and class needs to be recomputed\n        this.postProcessCss();\n    };\n    RowComp.prototype.onRowNodeCellChanged = function (event) {\n        // as data has changed, then the style and class needs to be recomputed\n        this.postProcessCss();\n    };\n    RowComp.prototype.postProcessCss = function () {\n        this.postProcessStylesFromGridOptions();\n        this.postProcessClassesFromGridOptions();\n        this.postProcessRowClassRules();\n    };\n    RowComp.prototype.onExpandedChanged = function () {\n        if (this.rowNode.group && !this.rowNode.footer) {\n            var expanded_1 = this.rowNode.expanded;\n            this.eAllRowContainers.forEach(function (row) { return utils_1._.addOrRemoveCssClass(row, 'ag-row-group-expanded', expanded_1); });\n            this.eAllRowContainers.forEach(function (row) { return utils_1._.addOrRemoveCssClass(row, 'ag-row-group-contracted', !expanded_1); });\n        }\n    };\n    RowComp.prototype.onDisplayedColumnsChanged = function () {\n        if (!this.fullWidthRow) {\n            this.refreshCells();\n        }\n    };\n    RowComp.prototype.destroyFullWidthComponents = function () {\n        if (this.fullWidthRowComponent) {\n            if (this.fullWidthRowComponent.destroy) {\n                this.fullWidthRowComponent.destroy();\n            }\n            this.fullWidthRowComponent = null;\n        }\n        if (this.fullWidthRowComponentBody) {\n            if (this.fullWidthRowComponentBody.destroy) {\n                this.fullWidthRowComponentBody.destroy();\n            }\n            this.fullWidthRowComponent = null;\n        }\n        if (this.fullWidthRowComponentLeft) {\n            if (this.fullWidthRowComponentLeft.destroy) {\n                this.fullWidthRowComponentLeft.destroy();\n            }\n            this.fullWidthRowComponentLeft = null;\n        }\n        if (this.fullWidthRowComponentRight) {\n            if (this.fullWidthRowComponentRight.destroy) {\n                this.fullWidthRowComponentRight.destroy();\n            }\n            this.fullWidthRowComponent = null;\n        }\n    };\n    RowComp.prototype.getContainerForCell = function (pinnedType) {\n        switch (pinnedType) {\n            case column_1.Column.PINNED_LEFT: return this.ePinnedLeftRow;\n            case column_1.Column.PINNED_RIGHT: return this.ePinnedRightRow;\n            default: return this.eBodyRow;\n        }\n    };\n    RowComp.prototype.onVirtualColumnsChanged = function () {\n        if (!this.fullWidthRow) {\n            this.refreshCells();\n        }\n    };\n    RowComp.prototype.onColumnResized = function () {\n        if (!this.fullWidthRow) {\n            this.refreshCells();\n        }\n    };\n    RowComp.prototype.refreshCells = function () {\n        if (this.beans.gridOptionsWrapper.isSuppressAnimationFrame()) {\n            this.refreshCellsInAnimationFrame();\n        }\n        else {\n            if (this.columnRefreshPending) {\n                return;\n            }\n            this.beans.taskQueue.addP1Task(this.refreshCellsInAnimationFrame.bind(this));\n        }\n    };\n    RowComp.prototype.refreshCellsInAnimationFrame = function () {\n        if (!this.active) {\n            return;\n        }\n        this.columnRefreshPending = false;\n        var centerCols = this.beans.columnController.getAllDisplayedCenterVirtualColumnsForRow(this.rowNode);\n        var leftCols = this.beans.columnController.getDisplayedLeftColumnsForRow(this.rowNode);\n        var rightCols = this.beans.columnController.getDisplayedRightColumnsForRow(this.rowNode);\n        this.insertCellsIntoContainer(this.eBodyRow, centerCols);\n        this.insertCellsIntoContainer(this.ePinnedLeftRow, leftCols);\n        this.insertCellsIntoContainer(this.ePinnedRightRow, rightCols);\n        var colIdsToRemove = Object.keys(this.cellComps);\n        centerCols.forEach(function (col) { return utils_1._.removeFromArray(colIdsToRemove, col.getId()); });\n        leftCols.forEach(function (col) { return utils_1._.removeFromArray(colIdsToRemove, col.getId()); });\n        rightCols.forEach(function (col) { return utils_1._.removeFromArray(colIdsToRemove, col.getId()); });\n        // we never remove editing cells, as this would cause the cells to loose their values while editing\n        // as the grid is scrolling horizontally.\n        colIdsToRemove = utils_1._.filter(colIdsToRemove, this.isCellEligibleToBeRemoved.bind(this));\n        // remove old cells from gui, but we don't destroy them, we might use them again\n        this.removeRenderedCells(colIdsToRemove);\n    };\n    RowComp.prototype.removeRenderedCells = function (colIds) {\n        var _this = this;\n        colIds.forEach(function (key) {\n            var cellComp = _this.cellComps[key];\n            // could be old reference, ie removed cell\n            if (utils_1._.missing(cellComp)) {\n                return;\n            }\n            cellComp.detach();\n            cellComp.destroy();\n            _this.cellComps[key] = null;\n        });\n    };\n    RowComp.prototype.isCellEligibleToBeRemoved = function (indexStr) {\n        var displayedColumns = this.beans.columnController.getAllDisplayedColumns();\n        var REMOVE_CELL = true;\n        var KEEP_CELL = false;\n        var renderedCell = this.cellComps[indexStr];\n        if (!renderedCell) {\n            return REMOVE_CELL;\n        }\n        // always remove the cell if it's in the wrong pinned location\n        if (this.isCellInWrongRow(renderedCell)) {\n            return REMOVE_CELL;\n        }\n        // we want to try and keep editing and focused cells\n        var editing = renderedCell.isEditing();\n        var focused = this.beans.focusedCellController.isCellFocused(renderedCell.getGridCell());\n        var mightWantToKeepCell = editing || focused;\n        if (mightWantToKeepCell) {\n            var column = renderedCell.getColumn();\n            var cellStillDisplayed = displayedColumns.indexOf(column) >= 0;\n            return cellStillDisplayed ? KEEP_CELL : REMOVE_CELL;\n        }\n        else {\n            return REMOVE_CELL;\n        }\n    };\n    RowComp.prototype.ensureCellInCorrectContainer = function (cellComp) {\n        var element = cellComp.getGui();\n        var column = cellComp.getColumn();\n        var pinnedType = column.getPinned();\n        var eContainer = this.getContainerForCell(pinnedType);\n        // if in wrong container, remove it\n        var eOldContainer = cellComp.getParentRow();\n        var inWrongRow = eOldContainer !== eContainer;\n        if (inWrongRow) {\n            // take out from old row\n            if (eOldContainer) {\n                eOldContainer.removeChild(element);\n            }\n            eContainer.appendChild(element);\n            cellComp.setParentRow(eContainer);\n        }\n    };\n    RowComp.prototype.isCellInWrongRow = function (cellComp) {\n        var column = cellComp.getColumn();\n        var rowWeWant = this.getContainerForCell(column.getPinned());\n        // if in wrong container, remove it\n        var oldRow = cellComp.getParentRow();\n        return oldRow !== rowWeWant;\n    };\n    RowComp.prototype.insertCellsIntoContainer = function (eRow, cols) {\n        var _this = this;\n        if (!eRow) {\n            return;\n        }\n        var cellTemplates = [];\n        var newCellComps = [];\n        cols.forEach(function (col) {\n            var colId = col.getId();\n            var oldCell = _this.cellComps[colId];\n            if (oldCell) {\n                _this.ensureCellInCorrectContainer(oldCell);\n            }\n            else {\n                _this.createNewCell(col, eRow, cellTemplates, newCellComps);\n            }\n        });\n        if (cellTemplates.length > 0) {\n            utils_1._.appendHtml(eRow, cellTemplates.join(''));\n            this.callAfterRowAttachedOnCells(newCellComps, eRow);\n        }\n    };\n    RowComp.prototype.addDomData = function (eRowContainer) {\n        var gow = this.beans.gridOptionsWrapper;\n        gow.setDomData(eRowContainer, RowComp.DOM_DATA_KEY_RENDERED_ROW, this);\n        this.addDestroyFunc(function () {\n            gow.setDomData(eRowContainer, RowComp.DOM_DATA_KEY_RENDERED_ROW, null);\n        });\n    };\n    RowComp.prototype.createNewCell = function (col, eContainer, cellTemplates, newCellComps) {\n        var newCellComp = new cellComp_1.CellComp(this.scope, this.beans, col, this.rowNode, this);\n        var cellTemplate = newCellComp.getCreateTemplate();\n        cellTemplates.push(cellTemplate);\n        newCellComps.push(newCellComp);\n        this.cellComps[col.getId()] = newCellComp;\n        newCellComp.setParentRow(eContainer);\n    };\n    RowComp.prototype.onMouseEvent = function (eventName, mouseEvent) {\n        switch (eventName) {\n            case 'dblclick':\n                this.onRowDblClick(mouseEvent);\n                break;\n            case 'click':\n                this.onRowClick(mouseEvent);\n                break;\n        }\n    };\n    RowComp.prototype.createRowEvent = function (type, domEvent) {\n        return {\n            type: type,\n            node: this.rowNode,\n            data: this.rowNode.data,\n            rowIndex: this.rowNode.rowIndex,\n            rowPinned: this.rowNode.rowPinned,\n            context: this.beans.gridOptionsWrapper.getContext(),\n            api: this.beans.gridOptionsWrapper.getApi(),\n            columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n            event: domEvent\n        };\n    };\n    RowComp.prototype.createRowEventWithSource = function (type, domEvent) {\n        var event = this.createRowEvent(type, domEvent);\n        // when first developing this, we included the rowComp in the event.\n        // this seems very weird. so when introducing the event types, i left the 'source'\n        // out of the type, and just include the source in the two places where this event\n        // was fired (rowClicked and rowDoubleClicked). it doesn't make sense for any\n        // users to be using this, as the rowComp isn't an object we expose, so would be\n        // very surprising if a user was using it.\n        event.source = this;\n        return event;\n    };\n    RowComp.prototype.onRowDblClick = function (mouseEvent) {\n        if (utils_1._.isStopPropagationForAgGrid(mouseEvent)) {\n            return;\n        }\n        var agEvent = this.createRowEventWithSource(events_1.Events.EVENT_ROW_DOUBLE_CLICKED, mouseEvent);\n        this.beans.eventService.dispatchEvent(agEvent);\n    };\n    RowComp.prototype.onRowClick = function (mouseEvent) {\n        if (utils_1._.isStopPropagationForAgGrid(mouseEvent)) {\n            return;\n        }\n        var agEvent = this.createRowEventWithSource(events_1.Events.EVENT_ROW_CLICKED, mouseEvent);\n        this.beans.eventService.dispatchEvent(agEvent);\n        // ctrlKey for windows, metaKey for Apple\n        var multiSelectKeyPressed = mouseEvent.ctrlKey || mouseEvent.metaKey;\n        var shiftKeyPressed = mouseEvent.shiftKey;\n        // we do not allow selecting groups by clicking (as the click here expands the group)\n        // so return if it's a group row\n        if (this.rowNode.group) {\n            return;\n        }\n        // we also don't allow selection of pinned rows\n        if (this.rowNode.rowPinned) {\n            return;\n        }\n        // if no selection method enabled, do nothing\n        if (!this.beans.gridOptionsWrapper.isRowSelection()) {\n            return;\n        }\n        // if click selection suppressed, do nothing\n        if (this.beans.gridOptionsWrapper.isSuppressRowClickSelection()) {\n            return;\n        }\n        if (this.rowNode.isSelected()) {\n            if (multiSelectKeyPressed) {\n                if (this.beans.gridOptionsWrapper.isRowDeselection()) {\n                    this.rowNode.setSelectedParams({ newValue: false });\n                }\n            }\n            else {\n                // selected with no multi key, must make sure anything else is unselected\n                this.rowNode.setSelectedParams({ newValue: true, clearSelection: true });\n            }\n        }\n        else {\n            this.rowNode.setSelectedParams({ newValue: true, clearSelection: !multiSelectKeyPressed, rangeSelect: shiftKeyPressed });\n        }\n    };\n    RowComp.prototype.createFullWidthRowContainer = function (rowContainerComp, pinned, extraCssClass, cellRendererType, cellRendererName, eRowCallback, cellRendererCallback) {\n        var _this = this;\n        var rowTemplate = this.createTemplate('', extraCssClass);\n        rowContainerComp.appendRowTemplate(rowTemplate, function () {\n            var eRow = rowContainerComp.getRowElement(_this.getCompId());\n            var params = _this.createFullWidthParams(eRow, pinned);\n            var callback = function (cellRenderer) {\n                if (_this.isAlive()) {\n                    var gui = cellRenderer.getGui();\n                    eRow.appendChild(gui);\n                    cellRendererCallback(cellRenderer);\n                }\n                else {\n                    if (cellRenderer.destroy) {\n                        cellRenderer.destroy();\n                    }\n                }\n            };\n            _this.beans.componentResolver.createAgGridComponent(null, params, cellRendererType, cellRendererName).then(callback);\n            _this.afterRowAttached(rowContainerComp, eRow);\n            eRowCallback(eRow);\n            _this.angular1Compile(eRow);\n        });\n    };\n    RowComp.prototype.angular1Compile = function (element) {\n        if (this.scope) {\n            this.beans.$compile(element)(this.scope);\n        }\n    };\n    RowComp.prototype.createFullWidthParams = function (eRow, pinned) {\n        var params = {\n            fullWidth: true,\n            data: this.rowNode.data,\n            node: this.rowNode,\n            value: this.rowNode.key,\n            $scope: this.scope,\n            rowIndex: this.rowNode.rowIndex,\n            api: this.beans.gridOptionsWrapper.getApi(),\n            columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n            context: this.beans.gridOptionsWrapper.getContext(),\n            // these need to be taken out, as part of 'afterAttached' now\n            eGridCell: eRow,\n            eParentOfValue: eRow,\n            pinned: pinned,\n            addRenderedRowListener: this.addEventListener.bind(this)\n        };\n        return params;\n    };\n    RowComp.prototype.getInitialRowClasses = function (extraCssClass) {\n        var classes = [];\n        if (utils_1._.exists(extraCssClass)) {\n            classes.push(extraCssClass);\n        }\n        classes.push('ag-row');\n        classes.push(this.rowFocused ? 'ag-row-focus' : 'ag-row-no-focus');\n        if (this.fadeRowIn) {\n            classes.push('ag-opacity-zero');\n        }\n        if (this.rowIsEven) {\n            classes.push('ag-row-even');\n        }\n        else {\n            classes.push('ag-row-odd');\n        }\n        if (this.beans.gridOptionsWrapper.isAnimateRows()) {\n            classes.push('ag-row-animation');\n        }\n        else {\n            classes.push('ag-row-no-animation');\n        }\n        if (this.rowNode.isSelected()) {\n            classes.push('ag-row-selected');\n        }\n        if (this.rowNode.group) {\n            classes.push('ag-row-group');\n            // if a group, put the level of the group in\n            classes.push('ag-row-level-' + this.rowNode.level);\n            if (this.rowNode.footer) {\n                classes.push('ag-row-footer');\n            }\n        }\n        else {\n            // if a leaf, and a parent exists, put a level of the parent, else put level of 0 for top level item\n            if (this.rowNode.parent) {\n                classes.push('ag-row-level-' + (this.rowNode.parent.level + 1));\n            }\n            else {\n                classes.push('ag-row-level-0');\n            }\n        }\n        if (this.rowNode.stub) {\n            classes.push('ag-row-stub');\n        }\n        if (this.fullWidthRow) {\n            classes.push('ag-full-width-row');\n        }\n        if (this.rowNode.group && !this.rowNode.footer) {\n            classes.push(this.rowNode.expanded ? 'ag-row-group-expanded' : 'ag-row-group-contracted');\n        }\n        utils_1._.pushAll(classes, this.processClassesFromGridOptions());\n        utils_1._.pushAll(classes, this.preProcessRowClassRules());\n        return classes;\n    };\n    RowComp.prototype.preProcessRowClassRules = function () {\n        var res = [];\n        this.processRowClassRules(function (className) {\n            res.push(className);\n        }, function (className) {\n            // not catered for, if creating, no need\n            // to remove class as it was never there\n        });\n        return res;\n    };\n    RowComp.prototype.processRowClassRules = function (onApplicableClass, onNotApplicableClass) {\n        this.beans.stylingService.processClassRules(this.beans.gridOptionsWrapper.rowClassRules(), {\n            data: this.rowNode.data,\n            node: this.rowNode,\n            rowIndex: this.rowNode.rowIndex,\n            api: this.beans.gridOptionsWrapper.getApi(),\n            context: this.beans.gridOptionsWrapper.getContext()\n        }, onApplicableClass, onNotApplicableClass);\n    };\n    RowComp.prototype.stopEditing = function (cancel) {\n        if (cancel === void 0) { cancel = false; }\n        this.forEachCellComp(function (renderedCell) {\n            renderedCell.stopEditing(cancel);\n        });\n        if (this.editingRow) {\n            if (!cancel) {\n                var event_1 = this.createRowEvent(events_1.Events.EVENT_ROW_VALUE_CHANGED);\n                this.beans.eventService.dispatchEvent(event_1);\n            }\n            this.setEditingRow(false);\n        }\n    };\n    RowComp.prototype.setEditingRow = function (value) {\n        this.editingRow = value;\n        this.eAllRowContainers.forEach(function (row) { return utils_1._.addOrRemoveCssClass(row, 'ag-row-editing', value); });\n        var event = value ?\n            this.createRowEvent(events_1.Events.EVENT_ROW_EDITING_STARTED)\n            : this.createRowEvent(events_1.Events.EVENT_ROW_EDITING_STOPPED);\n        this.beans.eventService.dispatchEvent(event);\n    };\n    RowComp.prototype.startRowEditing = function (keyPress, charPress, sourceRenderedCell) {\n        if (keyPress === void 0) { keyPress = null; }\n        if (charPress === void 0) { charPress = null; }\n        if (sourceRenderedCell === void 0) { sourceRenderedCell = null; }\n        // don't do it if already editing\n        if (this.editingRow) {\n            return;\n        }\n        this.forEachCellComp(function (renderedCell) {\n            var cellStartedEdit = renderedCell === sourceRenderedCell;\n            if (cellStartedEdit) {\n                renderedCell.startEditingIfEnabled(keyPress, charPress, cellStartedEdit);\n            }\n            else {\n                renderedCell.startEditingIfEnabled(null, null, cellStartedEdit);\n            }\n        });\n        this.setEditingRow(true);\n    };\n    RowComp.prototype.forEachCellComp = function (callback) {\n        utils_1._.iterateObject(this.cellComps, function (key, cellComp) {\n            if (cellComp) {\n                callback(cellComp);\n            }\n        });\n    };\n    RowComp.prototype.postProcessClassesFromGridOptions = function () {\n        var _this = this;\n        var cssClasses = this.processClassesFromGridOptions();\n        if (cssClasses) {\n            cssClasses.forEach(function (classStr) {\n                _this.eAllRowContainers.forEach(function (row) { return utils_1._.addCssClass(row, classStr); });\n            });\n        }\n    };\n    RowComp.prototype.postProcessRowClassRules = function () {\n        var _this = this;\n        this.processRowClassRules(function (className) {\n            _this.eAllRowContainers.forEach(function (row) { return utils_1._.addCssClass(row, className); });\n        }, function (className) {\n            _this.eAllRowContainers.forEach(function (row) { return utils_1._.removeCssClass(row, className); });\n        });\n    };\n    RowComp.prototype.processClassesFromGridOptions = function () {\n        var res = [];\n        var process = function (rowClass) {\n            if (typeof rowClass === 'string') {\n                res.push(rowClass);\n            }\n            else if (Array.isArray(rowClass)) {\n                rowClass.forEach(function (e) { return res.push(e); });\n            }\n        };\n        // part 1 - rowClass\n        var rowClass = this.beans.gridOptionsWrapper.getRowClass();\n        if (rowClass) {\n            if (typeof rowClass === 'function') {\n                console.warn('ag-Grid: rowClass should not be a function, please use getRowClass instead');\n                return;\n            }\n            process(rowClass);\n        }\n        // part 2 - rowClassFunc\n        var rowClassFunc = this.beans.gridOptionsWrapper.getRowClassFunc();\n        if (rowClassFunc) {\n            var params = {\n                node: this.rowNode,\n                data: this.rowNode.data,\n                rowIndex: this.rowNode.rowIndex,\n                context: this.beans.gridOptionsWrapper.getContext(),\n                api: this.beans.gridOptionsWrapper.getApi()\n            };\n            var rowClassFuncResult = rowClassFunc(params);\n            process(rowClassFuncResult);\n        }\n        return res;\n    };\n    RowComp.prototype.preProcessStylesFromGridOptions = function () {\n        var rowStyles = this.processStylesFromGridOptions();\n        return utils_1._.cssStyleObjectToMarkup(rowStyles);\n    };\n    RowComp.prototype.postProcessStylesFromGridOptions = function () {\n        var rowStyles = this.processStylesFromGridOptions();\n        this.eAllRowContainers.forEach(function (row) { return utils_1._.addStylesToElement(row, rowStyles); });\n    };\n    RowComp.prototype.processStylesFromGridOptions = function () {\n        // part 1 - rowStyle\n        var rowStyle = this.beans.gridOptionsWrapper.getRowStyle();\n        if (rowStyle && typeof rowStyle === 'function') {\n            console.log('ag-Grid: rowStyle should be an object of key/value styles, not be a function, use getRowStyle() instead');\n            return;\n        }\n        // part 1 - rowStyleFunc\n        var rowStyleFunc = this.beans.gridOptionsWrapper.getRowStyleFunc();\n        var rowStyleFuncResult;\n        if (rowStyleFunc) {\n            var params = {\n                data: this.rowNode.data,\n                node: this.rowNode,\n                api: this.beans.gridOptionsWrapper.getApi(),\n                context: this.beans.gridOptionsWrapper.getContext(),\n                $scope: this.scope\n            };\n            rowStyleFuncResult = rowStyleFunc(params);\n        }\n        return utils_1._.assign({}, rowStyle, rowStyleFuncResult);\n    };\n    RowComp.prototype.createCells = function (cols) {\n        var _this = this;\n        var templateParts = [];\n        var newCellComps = [];\n        cols.forEach(function (col) {\n            var newCellComp = new cellComp_1.CellComp(_this.scope, _this.beans, col, _this.rowNode, _this);\n            var cellTemplate = newCellComp.getCreateTemplate();\n            templateParts.push(cellTemplate);\n            newCellComps.push(newCellComp);\n            _this.cellComps[col.getId()] = newCellComp;\n        });\n        var templateAndComps = {\n            template: templateParts.join(''),\n            cellComps: newCellComps\n        };\n        return templateAndComps;\n    };\n    RowComp.prototype.onRowSelected = function () {\n        var selected = this.rowNode.isSelected();\n        this.eAllRowContainers.forEach(function (row) { return utils_1._.addOrRemoveCssClass(row, 'ag-row-selected', selected); });\n    };\n    // called:\n    // + after row created for first time\n    // + after horizontal scroll, so new cells due to column virtualisation\n    RowComp.prototype.callAfterRowAttachedOnCells = function (newCellComps, eRow) {\n        var _this = this;\n        newCellComps.forEach(function (cellComp) {\n            cellComp.setParentRow(eRow);\n            cellComp.afterAttached();\n            // if we are editing the row, then the cell needs to turn\n            // into edit mode\n            if (_this.editingRow) {\n                cellComp.startEditingIfEnabled();\n            }\n        });\n    };\n    RowComp.prototype.afterRowAttached = function (rowContainerComp, eRow) {\n        var _this = this;\n        this.addDomData(eRow);\n        this.removeSecondPassFuncs.push(function () {\n            // console.log(eRow);\n            rowContainerComp.removeRowElement(eRow);\n        });\n        this.removeFirstPassFuncs.push(function () {\n            if (utils_1._.exists(_this.rowNode.rowTop)) {\n                // the row top is updated anyway, however we set it here again\n                // to something more reasonable for the animation - ie if the\n                // row top is 10000px away, the row will flash out, so this\n                // gives it a rounded value, so row animates out more slowly\n                var rowTop = _this.roundRowTopToBounds(_this.rowNode.rowTop);\n                _this.setRowTop(rowTop);\n            }\n            else {\n                utils_1._.addCssClass(eRow, 'ag-opacity-zero');\n            }\n        });\n        this.eAllRowContainers.push(eRow);\n        // adding hover functionality adds listener to this row, so we\n        // do it lazily in an animation frame\n        if (this.useAnimationFrameForCreate) {\n            this.beans.taskQueue.addP1Task(this.addHoverFunctionality.bind(this, eRow));\n        }\n        else {\n            this.addHoverFunctionality(eRow);\n        }\n    };\n    RowComp.prototype.addHoverFunctionality = function (eRow) {\n        var _this = this;\n        // because we use animation frames to do this, it's possible the row no longer exists\n        // by the time we get to add it\n        if (!this.active) {\n            return;\n        }\n        // because mouseenter and mouseleave do not propagate, we cannot listen on the gridPanel\n        // like we do for all the other mouse events.\n        // because of the pinning, we cannot simply add / remove the class based on the eRow. we\n        // have to check all eRow's (body & pinned). so the trick is if any of the rows gets a\n        // mouse hover, it sets such in the rowNode, and then all three reflect the change as\n        // all are listening for event on the row node.\n        // step 1 - add listener, to set flag on row node\n        this.addDestroyableEventListener(eRow, 'mouseenter', function () { return _this.rowNode.onMouseEnter(); });\n        this.addDestroyableEventListener(eRow, 'mouseleave', function () { return _this.rowNode.onMouseLeave(); });\n        // step 2 - listen for changes on row node (which any eRow can trigger)\n        this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_MOUSE_ENTER, function () {\n            utils_1._.addCssClass(eRow, 'ag-row-hover');\n        });\n        this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_MOUSE_LEAVE, function () {\n            utils_1._.removeCssClass(eRow, 'ag-row-hover');\n        });\n    };\n    // for animation, we don't want to animate entry or exit to a very far away pixel,\n    // otherwise the row would move so fast, it would appear to disappear. so this method\n    // moves the row closer to the viewport if it is far away, so the row slide in / out\n    // at a speed the user can see.\n    RowComp.prototype.roundRowTopToBounds = function (rowTop) {\n        var range = this.beans.gridPanel.getVerticalPixelRange();\n        var minPixel = range.top - 100;\n        var maxPixel = range.bottom + 100;\n        if (rowTop < minPixel) {\n            return minPixel;\n        }\n        else if (rowTop > maxPixel) {\n            return maxPixel;\n        }\n        else {\n            return rowTop;\n        }\n    };\n    RowComp.prototype.onRowHeightChanged = function () {\n        // check for exists first - if the user is resetting the row height, then\n        // it will be null (or undefined) momentarily until the next time the flatten\n        // stage is called where the row will then update again with a new height\n        if (utils_1._.exists(this.rowNode.rowHeight)) {\n            var heightPx_1 = this.rowNode.rowHeight + 'px';\n            this.eAllRowContainers.forEach(function (row) { return row.style.height = heightPx_1; });\n        }\n    };\n    RowComp.prototype.addEventListener = function (eventType, listener) {\n        if (eventType === 'renderedRowRemoved' || eventType === 'rowRemoved') {\n            eventType = events_1.Events.EVENT_VIRTUAL_ROW_REMOVED;\n            console.warn('ag-Grid: Since version 11, event renderedRowRemoved is now called ' + events_1.Events.EVENT_VIRTUAL_ROW_REMOVED);\n        }\n        _super.prototype.addEventListener.call(this, eventType, listener);\n    };\n    RowComp.prototype.removeEventListener = function (eventType, listener) {\n        if (eventType === 'renderedRowRemoved' || eventType === 'rowRemoved') {\n            eventType = events_1.Events.EVENT_VIRTUAL_ROW_REMOVED;\n            console.warn('ag-Grid: Since version 11, event renderedRowRemoved and rowRemoved is now called ' + events_1.Events.EVENT_VIRTUAL_ROW_REMOVED);\n        }\n        _super.prototype.removeEventListener.call(this, eventType, listener);\n    };\n    RowComp.prototype.destroyScope = function () {\n        if (this.scope) {\n            this.scope.$destroy();\n            this.scope = null;\n        }\n    };\n    RowComp.prototype.destroy = function (animate) {\n        if (animate === void 0) { animate = false; }\n        _super.prototype.destroy.call(this);\n        this.destroyScope();\n        this.active = false;\n        // why do we have this method? shouldn't everything below be added as a destroy func beside\n        // the corresponding create logic?\n        this.destroyFullWidthComponents();\n        if (animate) {\n            this.removeFirstPassFuncs.forEach(function (func) { return func(); });\n            this.removeSecondPassFuncs.push(this.destroyContainingCells.bind(this));\n        }\n        else {\n            this.destroyContainingCells();\n            // we are not animating, so execute the second stage of removal now.\n            // we call getAndClear, so that they are only called once\n            var delayedDestroyFunctions = this.getAndClearDelayedDestroyFunctions();\n            delayedDestroyFunctions.forEach(function (func) { return func(); });\n        }\n        var event = this.createRowEvent(events_1.Events.EVENT_VIRTUAL_ROW_REMOVED);\n        this.dispatchEvent(event);\n        this.beans.eventService.dispatchEvent(event);\n    };\n    RowComp.prototype.destroyContainingCells = function () {\n        this.forEachCellComp(function (renderedCell) { return renderedCell.destroy(); });\n        this.destroyFullWidthComponents();\n    };\n    // we clear so that the functions are never executed twice\n    RowComp.prototype.getAndClearDelayedDestroyFunctions = function () {\n        var result = this.removeSecondPassFuncs;\n        this.removeSecondPassFuncs = [];\n        return result;\n    };\n    RowComp.prototype.onCellFocusChanged = function () {\n        var rowFocused = this.beans.focusedCellController.isRowFocused(this.rowNode.rowIndex, this.rowNode.rowPinned);\n        if (rowFocused !== this.rowFocused) {\n            this.eAllRowContainers.forEach(function (row) { return utils_1._.addOrRemoveCssClass(row, 'ag-row-focus', rowFocused); });\n            this.eAllRowContainers.forEach(function (row) { return utils_1._.addOrRemoveCssClass(row, 'ag-row-no-focus', !rowFocused); });\n            this.rowFocused = rowFocused;\n        }\n        // if we are editing, then moving the focus out of a row will stop editing\n        if (!rowFocused && this.editingRow) {\n            this.stopEditing(false);\n        }\n    };\n    RowComp.prototype.onPaginationChanged = function () {\n        var currentPage = this.beans.paginationProxy.getCurrentPage();\n        // it is possible this row is in the new page, but the page number has changed, which means\n        // it needs to reposition itself relative to the new page\n        if (this.paginationPage !== currentPage) {\n            this.paginationPage = currentPage;\n            this.onTopChanged();\n        }\n    };\n    RowComp.prototype.onTopChanged = function () {\n        // top is not used in forPrint, as the rows are just laid out naturally\n        var doNotSetRowTop = this.beans.forPrint || this.beans.gridOptionsWrapper.isAutoHeight();\n        if (doNotSetRowTop) {\n            return;\n        }\n        this.setRowTop(this.rowNode.rowTop);\n    };\n    RowComp.prototype.applyPixelOffset = function (pixels) {\n        if (this.rowNode.isRowPinned()) {\n            return pixels;\n        }\n        else {\n            return pixels - this.beans.paginationProxy.getPixelOffset();\n        }\n    };\n    RowComp.prototype.setRowTop = function (pixels) {\n        // need to make sure rowTop is not null, as this can happen if the node was once\n        // visible (ie parent group was expanded) but is now not visible\n        if (utils_1._.exists(pixels)) {\n            var pixelsWithOffset = this.applyPixelOffset(pixels);\n            var topPx_1 = pixelsWithOffset + \"px\";\n            this.eAllRowContainers.forEach(function (row) { return row.style.top = topPx_1; });\n        }\n    };\n    // we clear so that the functions are never executed twice\n    RowComp.prototype.getAndClearNextVMTurnFunctions = function () {\n        var result = this.createSecondPassFuncs;\n        this.createSecondPassFuncs = [];\n        return result;\n    };\n    RowComp.prototype.getRowNode = function () {\n        return this.rowNode;\n    };\n    RowComp.prototype.getRenderedCellForColumn = function (column) {\n        return this.cellComps[column.getColId()];\n    };\n    RowComp.prototype.onRowIndexChanged = function () {\n        this.onCellFocusChanged();\n        this.updateRowIndexes();\n    };\n    RowComp.prototype.updateRowIndexes = function () {\n        var rowIndexStr = this.rowNode.getRowIndexString();\n        var rowIsEven = this.rowNode.rowIndex % 2 === 0;\n        var rowIsEvenChanged = this.rowIsEven !== rowIsEven;\n        if (rowIsEvenChanged) {\n            this.rowIsEven = rowIsEven;\n        }\n        this.eAllRowContainers.forEach(function (eRow) {\n            eRow.setAttribute('row-index', rowIndexStr);\n            if (rowIsEvenChanged) {\n                utils_1._.addOrRemoveCssClass(eRow, 'ag-row-even', rowIsEven);\n                utils_1._.addOrRemoveCssClass(eRow, 'ag-row-odd', !rowIsEven);\n            }\n        });\n    };\n    RowComp.prototype.ensureDomOrder = function () {\n        var body = this.getBodyRowElement();\n        if (body) {\n            this.bodyContainerComp.ensureDomOrder(body);\n        }\n        var left = this.getPinnedLeftRowElement();\n        if (left) {\n            this.pinnedLeftContainerComp.ensureDomOrder(left);\n        }\n        var right = this.getPinnedRightRowElement();\n        if (right) {\n            this.pinnedRightContainerComp.ensureDomOrder(right);\n        }\n        var fullWidth = this.getFullWidthRowElement();\n        if (fullWidth) {\n            this.fullWidthContainerComp.ensureDomOrder(fullWidth);\n        }\n    };\n    // returns the pinned left container, either the normal one, or the embedded full with one if exists\n    RowComp.prototype.getPinnedLeftRowElement = function () {\n        return this.ePinnedLeftRow ? this.ePinnedLeftRow : this.eFullWidthRowLeft;\n    };\n    // returns the pinned right container, either the normal one, or the embedded full with one if exists\n    RowComp.prototype.getPinnedRightRowElement = function () {\n        return this.ePinnedRightRow ? this.ePinnedRightRow : this.eFullWidthRowRight;\n    };\n    // returns the body container, either the normal one, or the embedded full with one if exists\n    RowComp.prototype.getBodyRowElement = function () {\n        return this.eBodyRow ? this.eBodyRow : this.eFullWidthRowBody;\n    };\n    // returns the full width container\n    RowComp.prototype.getFullWidthRowElement = function () {\n        return this.eFullWidthRow;\n    };\n    RowComp.DOM_DATA_KEY_RENDERED_ROW = 'renderedRow';\n    RowComp.FULL_WIDTH_CELL_RENDERER = 'fullWidthCellRenderer';\n    RowComp.FULL_WIDTH_CELL_RENDERER_COMP_NAME = 'agFullWidthCellRenderer';\n    RowComp.GROUP_ROW_RENDERER = 'groupRowRenderer';\n    RowComp.GROUP_ROW_RENDERER_COMP_NAME = 'agGroupRowRenderer';\n    RowComp.LOADING_CELL_RENDERER = 'loadingCellRenderer';\n    RowComp.LOADING_CELL_RENDERER_COMP_NAME = 'agLoadingCellRenderer';\n    RowComp.DETAIL_CELL_RENDERER = 'detailCellRenderer';\n    RowComp.DETAIL_CELL_RENDERER_COMP_NAME = 'agDetailCellRenderer';\n    return RowComp;\n}(component_1.Component));\nexports.RowComp = RowComp;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rendering/rowComp.js\n// module id = 126\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar eventService_1 = require(\"../eventService\");\nvar utils_1 = require(\"../utils\");\nvar TouchListener = (function () {\n    function TouchListener(eElement) {\n        var _this = this;\n        this.destroyFuncs = [];\n        this.touching = false;\n        this.eventService = new eventService_1.EventService();\n        this.eElement = eElement;\n        var startListener = this.onTouchStart.bind(this);\n        var moveListener = this.onTouchMove.bind(this);\n        var endListener = this.onTouchEnd.bind(this);\n        this.eElement.addEventListener('touchstart', startListener, { passive: true });\n        this.eElement.addEventListener('touchmove', moveListener, { passive: true });\n        this.eElement.addEventListener('touchend', endListener, { passive: true });\n        this.destroyFuncs.push(function () {\n            _this.eElement.addEventListener('touchstart', startListener, { passive: true });\n            _this.eElement.addEventListener('touchmove', moveListener, { passive: true });\n            _this.eElement.addEventListener('touchend', endListener, { passive: true });\n        });\n    }\n    TouchListener.prototype.getActiveTouch = function (touchList) {\n        for (var i = 0; i < touchList.length; i++) {\n            var matches = touchList[i].identifier === this.touchStart.identifier;\n            if (matches) {\n                return touchList[i];\n            }\n        }\n        return null;\n    };\n    TouchListener.prototype.addEventListener = function (eventType, listener) {\n        this.eventService.addEventListener(eventType, listener);\n    };\n    TouchListener.prototype.removeEventListener = function (eventType, listener) {\n        this.eventService.removeEventListener(eventType, listener);\n    };\n    TouchListener.prototype.onTouchStart = function (touchEvent) {\n        var _this = this;\n        // only looking at one touch point at any time\n        if (this.touching) {\n            return;\n        }\n        this.touchStart = touchEvent.touches[0];\n        this.touching = true;\n        this.moved = false;\n        var touchStartCopy = this.touchStart;\n        setTimeout(function () {\n            var touchesMatch = _this.touchStart === touchStartCopy;\n            if (_this.touching && touchesMatch && !_this.moved) {\n                _this.moved = true;\n                var event_1 = {\n                    type: TouchListener.EVENT_LONG_TAP,\n                    touchStart: _this.touchStart,\n                    touchEvent: touchEvent\n                };\n                _this.eventService.dispatchEvent(event_1);\n            }\n        }, 500);\n    };\n    TouchListener.prototype.onTouchMove = function (touchEvent) {\n        if (!this.touching) {\n            return;\n        }\n        var touch = this.getActiveTouch(touchEvent.touches);\n        if (!touch) {\n            return;\n        }\n        var eventIsFarAway = !utils_1.Utils.areEventsNear(touch, this.touchStart, 4);\n        if (eventIsFarAway) {\n            this.moved = true;\n        }\n    };\n    TouchListener.prototype.onTouchEnd = function (touchEvent) {\n        if (!this.touching) {\n            return;\n        }\n        if (!this.moved) {\n            var event_2 = {\n                type: TouchListener.EVENT_TAP,\n                touchStart: this.touchStart\n            };\n            this.eventService.dispatchEvent(event_2);\n        }\n        this.touching = false;\n    };\n    TouchListener.prototype.destroy = function () {\n        this.destroyFuncs.forEach(function (func) { return func(); });\n    };\n    // private mostRecentTouch: Touch;\n    TouchListener.EVENT_TAP = 'tap';\n    TouchListener.EVENT_LONG_TAP = 'longTap';\n    return TouchListener;\n}());\nexports.TouchListener = TouchListener;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/widgets/touchListener.js\n// module id = 127\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = require(\"../widgets/component\");\nvar componentAnnotations_1 = require(\"../widgets/componentAnnotations\");\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar utils_1 = require(\"../utils\");\nvar DEFAULT_TRANSLATIONS = {\n    loadingOoo: 'Loading...',\n    equals: 'Equals',\n    notEqual: 'Not equal',\n    lessThan: 'Less than',\n    greaterThan: 'Greater than',\n    inRange: 'In range',\n    lessThanOrEqual: 'Less than or equals',\n    greaterThanOrEqual: 'Greater than or equals',\n    filterOoo: 'Filter...',\n    contains: 'Contains',\n    notContains: 'Not contains',\n    startsWith: 'Starts with',\n    endsWith: 'Ends with',\n    searchOoo: 'Search...',\n    selectAll: 'Select All',\n    applyFilter: 'Apply Filter',\n    clearFilter: 'Clear Filter'\n};\n/**\n * T(ype) The type of this filter. ie in DateFilter T=Date\n * P(arams) The params that this filter can take\n * M(model getModel/setModel) The object that this filter serializes to\n * F Floating filter params\n *\n * Contains common logic to ALL filters.. Translation, apply and clear button\n * get/setModel context wiring....\n */\nvar BaseFilter = (function (_super) {\n    __extends(BaseFilter, _super);\n    function BaseFilter() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    BaseFilter.prototype.init = function (params) {\n        this.filterParams = params;\n        this.defaultFilter = this.filterParams.defaultOption;\n        if (this.filterParams.filterOptions && !this.defaultFilter) {\n            if (this.filterParams.filterOptions.lastIndexOf(BaseFilter.EQUALS) < 0) {\n                this.defaultFilter = this.filterParams.filterOptions[0];\n            }\n        }\n        this.customInit();\n        this.filter = this.defaultFilter;\n        this.clearActive = params.clearButton === true;\n        //Allowing for old param property apply, even though is not advertised through the interface\n        this.applyActive = ((params.applyButton === true) || (params.apply === true));\n        this.newRowsActionKeep = params.newRowsAction === 'keep';\n        this.setTemplate(this.generateTemplate());\n        utils_1._.setVisible(this.eApplyButton, this.applyActive);\n        if (this.applyActive) {\n            this.addDestroyableEventListener(this.eApplyButton, \"click\", this.filterParams.filterChangedCallback);\n        }\n        utils_1._.setVisible(this.eClearButton, this.clearActive);\n        if (this.clearActive) {\n            this.addDestroyableEventListener(this.eClearButton, \"click\", this.onClearButton.bind(this));\n        }\n        var anyButtonVisible = this.applyActive || this.clearActive;\n        utils_1._.setVisible(this.eButtonsPanel, anyButtonVisible);\n        this.instantiate(this.context);\n        this.initialiseFilterBodyUi();\n        this.refreshFilterBodyUi();\n    };\n    BaseFilter.prototype.onClearButton = function () {\n        this.setModel(null);\n        this.onFilterChanged();\n    };\n    BaseFilter.prototype.floatingFilter = function (from) {\n        if (from !== '') {\n            var model = this.modelFromFloatingFilter(from);\n            this.setModel(model);\n        }\n        else {\n            this.resetState();\n        }\n        this.onFilterChanged();\n    };\n    BaseFilter.prototype.onNewRowsLoaded = function () {\n        if (!this.newRowsActionKeep) {\n            this.resetState();\n        }\n    };\n    BaseFilter.prototype.getModel = function () {\n        if (this.isFilterActive()) {\n            return this.serialize();\n        }\n        else {\n            return null;\n        }\n    };\n    BaseFilter.prototype.getNullableModel = function () {\n        return this.serialize();\n    };\n    BaseFilter.prototype.setModel = function (model) {\n        if (model) {\n            this.parse(model);\n        }\n        else {\n            this.resetState();\n        }\n        this.refreshFilterBodyUi();\n    };\n    BaseFilter.prototype.doOnFilterChanged = function (applyNow) {\n        if (applyNow === void 0) { applyNow = false; }\n        this.filterParams.filterModifiedCallback();\n        var requiresApplyAndIsApplying = this.applyActive && applyNow;\n        var notRequiresApply = !this.applyActive;\n        var shouldFilter = notRequiresApply || requiresApplyAndIsApplying;\n        if (shouldFilter) {\n            this.filterParams.filterChangedCallback();\n        }\n        this.refreshFilterBodyUi();\n        return shouldFilter;\n    };\n    BaseFilter.prototype.onFilterChanged = function () {\n        this.doOnFilterChanged();\n    };\n    BaseFilter.prototype.onFloatingFilterChanged = function (change) {\n        //It has to be of the type FloatingFilterWithApplyChange if it gets here\n        var casted = change;\n        this.setModel(casted ? casted.model : null);\n        return this.doOnFilterChanged(casted ? casted.apply : false);\n    };\n    BaseFilter.prototype.generateFilterHeader = function () {\n        return '';\n    };\n    BaseFilter.prototype.generateTemplate = function () {\n        var translate = this.translate.bind(this);\n        var body = this.bodyTemplate();\n        return \"<div>\\n                    \" + this.generateFilterHeader() + \"\\n                    \" + body + \"\\n                    <div class=\\\"ag-filter-apply-panel\\\" id=\\\"applyPanel\\\">\\n                        <button type=\\\"button\\\" id=\\\"clearButton\\\">\" + translate('clearFilter') + \"</button>\\n                        <button type=\\\"button\\\" id=\\\"applyButton\\\">\" + translate('applyFilter') + \"</button>\\n                    </div>\\n                </div>\";\n    };\n    BaseFilter.prototype.translate = function (toTranslate) {\n        var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n        return translate(toTranslate, DEFAULT_TRANSLATIONS[toTranslate]);\n    };\n    BaseFilter.prototype.getDebounceMs = function (filterParams) {\n        if (filterParams.applyButton && filterParams.debounceMs) {\n            console.warn('ag-Grid: debounceMs is ignored when applyButton = true');\n            return 0;\n        }\n        return filterParams.debounceMs != null ? filterParams.debounceMs : 500;\n    };\n    BaseFilter.EQUALS = 'equals';\n    BaseFilter.NOT_EQUAL = 'notEqual';\n    BaseFilter.LESS_THAN = 'lessThan';\n    BaseFilter.LESS_THAN_OR_EQUAL = 'lessThanOrEqual';\n    BaseFilter.GREATER_THAN = 'greaterThan';\n    BaseFilter.GREATER_THAN_OR_EQUAL = 'greaterThanOrEqual';\n    BaseFilter.IN_RANGE = 'inRange';\n    BaseFilter.CONTAINS = 'contains'; //1;\n    BaseFilter.NOT_CONTAINS = 'notContains'; //1;\n    BaseFilter.STARTS_WITH = 'startsWith'; //4;\n    BaseFilter.ENDS_WITH = 'endsWith'; //5;\n    __decorate([\n        componentAnnotations_1.QuerySelector('#applyPanel'),\n        __metadata(\"design:type\", HTMLElement)\n    ], BaseFilter.prototype, \"eButtonsPanel\", void 0);\n    __decorate([\n        componentAnnotations_1.QuerySelector('#applyButton'),\n        __metadata(\"design:type\", HTMLElement)\n    ], BaseFilter.prototype, \"eApplyButton\", void 0);\n    __decorate([\n        componentAnnotations_1.QuerySelector('#clearButton'),\n        __metadata(\"design:type\", HTMLElement)\n    ], BaseFilter.prototype, \"eClearButton\", void 0);\n    __decorate([\n        context_1.Autowired('context'),\n        __metadata(\"design:type\", context_1.Context)\n    ], BaseFilter.prototype, \"context\", void 0);\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], BaseFilter.prototype, \"gridOptionsWrapper\", void 0);\n    return BaseFilter;\n}(component_1.Component));\nexports.BaseFilter = BaseFilter;\n/**\n * Every filter with a dropdown where the user can specify a comparing type against the filter values\n */\nvar ComparableBaseFilter = (function (_super) {\n    __extends(ComparableBaseFilter, _super);\n    function ComparableBaseFilter() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    ComparableBaseFilter.prototype.init = function (params) {\n        _super.prototype.init.call(this, params);\n        this.addDestroyableEventListener(this.eTypeSelector, \"change\", this.onFilterTypeChanged.bind(this));\n    };\n    ComparableBaseFilter.prototype.customInit = function () {\n        if (!this.defaultFilter) {\n            this.defaultFilter = this.getDefaultType();\n        }\n    };\n    ComparableBaseFilter.prototype.generateFilterHeader = function () {\n        var _this = this;\n        var defaultFilterTypes = this.getApplicableFilterTypes();\n        var restrictedFilterTypes = this.filterParams.filterOptions;\n        var actualFilterTypes = restrictedFilterTypes ? restrictedFilterTypes : defaultFilterTypes;\n        var optionsHtml = actualFilterTypes.map(function (filterType) {\n            var localeFilterName = _this.translate(filterType);\n            return \"<option value=\\\"\" + filterType + \"\\\">\" + localeFilterName + \"</option>\";\n        });\n        var readOnly = optionsHtml.length == 1 ? 'disabled' : '';\n        return optionsHtml.length <= 0 ?\n            '' :\n            \"<div>\\n                <select class=\\\"ag-filter-select\\\" id=\\\"filterType\\\" \" + readOnly + \">\\n                    \" + optionsHtml.join('') + \"\\n                </select>\\n            </div>\";\n    };\n    ComparableBaseFilter.prototype.initialiseFilterBodyUi = function () {\n        this.setFilterType(this.filter);\n    };\n    ComparableBaseFilter.prototype.onFilterTypeChanged = function () {\n        this.filter = this.eTypeSelector.value;\n        this.refreshFilterBodyUi();\n        this.onFilterChanged();\n    };\n    ComparableBaseFilter.prototype.isFilterActive = function () {\n        var rawFilterValues = this.filterValues();\n        if (this.filter === BaseFilter.IN_RANGE) {\n            var filterValueArray = rawFilterValues;\n            return filterValueArray[0] != null && filterValueArray[1] != null;\n        }\n        else {\n            return rawFilterValues != null;\n        }\n    };\n    ComparableBaseFilter.prototype.setFilterType = function (filterType) {\n        this.filter = filterType;\n        this.eTypeSelector.value = filterType;\n    };\n    __decorate([\n        componentAnnotations_1.QuerySelector('#filterType'),\n        __metadata(\"design:type\", HTMLSelectElement)\n    ], ComparableBaseFilter.prototype, \"eTypeSelector\", void 0);\n    return ComparableBaseFilter;\n}(BaseFilter));\nexports.ComparableBaseFilter = ComparableBaseFilter;\n/**\n * Comparable filter with scalar underlying values (ie numbers and dates. Strings are not scalar so have to extend\n * ComparableBaseFilter)\n */\nvar ScalarBaseFilter = (function (_super) {\n    __extends(ScalarBaseFilter, _super);\n    function ScalarBaseFilter() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    ScalarBaseFilter.prototype.nullComparator = function (type) {\n        var _this = this;\n        return function (filterValue, gridValue) {\n            if (gridValue == null) {\n                var nullValue = _this.translateNull(type);\n                if (_this.filter === BaseFilter.EQUALS) {\n                    return nullValue ? 0 : 1;\n                }\n                if (_this.filter === BaseFilter.GREATER_THAN) {\n                    return nullValue ? 1 : -1;\n                }\n                if (_this.filter === BaseFilter.GREATER_THAN_OR_EQUAL) {\n                    return nullValue ? 1 : -1;\n                }\n                if (_this.filter === BaseFilter.LESS_THAN_OR_EQUAL) {\n                    return nullValue ? -1 : 1;\n                }\n                if (_this.filter === BaseFilter.LESS_THAN) {\n                    return nullValue ? -1 : 1;\n                }\n                if (_this.filter === BaseFilter.NOT_EQUAL) {\n                    return nullValue ? 1 : 0;\n                }\n            }\n            var actualComparator = _this.comparator();\n            return actualComparator(filterValue, gridValue);\n        };\n    };\n    ScalarBaseFilter.prototype.getDefaultType = function () {\n        return BaseFilter.EQUALS;\n    };\n    ScalarBaseFilter.prototype.translateNull = function (type) {\n        var reducedType = type.indexOf('greater') > -1 ? 'greaterThan' :\n            type.indexOf('lessThan') > -1 ? 'lessThan' :\n                'equals';\n        if (this.filterParams.nullComparator && this.filterParams.nullComparator[reducedType]) {\n            return this.filterParams.nullComparator[reducedType];\n        }\n        ;\n        return ScalarBaseFilter.DEFAULT_NULL_COMPARATOR[reducedType];\n    };\n    ScalarBaseFilter.prototype.doesFilterPass = function (params) {\n        var value = this.filterParams.valueGetter(params.node);\n        var comparator = this.nullComparator(this.filter);\n        var rawFilterValues = this.filterValues();\n        var from = Array.isArray(rawFilterValues) ? rawFilterValues[0] : rawFilterValues;\n        if (from == null)\n            return true;\n        var compareResult = comparator(from, value);\n        if (this.filter === BaseFilter.EQUALS) {\n            return compareResult === 0;\n        }\n        if (this.filter === BaseFilter.GREATER_THAN) {\n            return compareResult > 0;\n        }\n        if (this.filter === BaseFilter.GREATER_THAN_OR_EQUAL) {\n            return compareResult >= 0;\n        }\n        if (this.filter === BaseFilter.LESS_THAN_OR_EQUAL) {\n            return compareResult <= 0;\n        }\n        if (this.filter === BaseFilter.LESS_THAN) {\n            return compareResult < 0;\n        }\n        if (this.filter === BaseFilter.NOT_EQUAL) {\n            return compareResult != 0;\n        }\n        //From now on the type is a range and rawFilterValues must be an array!\n        var compareToResult = comparator(rawFilterValues[1], value);\n        if (this.filter === BaseFilter.IN_RANGE) {\n            if (!this.filterParams.inRangeInclusive) {\n                return compareResult > 0 && compareToResult < 0;\n            }\n            else {\n                return compareResult >= 0 && compareToResult <= 0;\n            }\n        }\n        throw new Error('Unexpected type of date filter!: ' + this.filter);\n    };\n    ScalarBaseFilter.DEFAULT_NULL_COMPARATOR = {\n        equals: false,\n        lessThan: false,\n        greaterThan: false\n    };\n    return ScalarBaseFilter;\n}(ComparableBaseFilter));\nexports.ScalarBaseFilter = ScalarBaseFilter;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/filter/baseFilter.js\n// module id = 128\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../../utils\");\nvar column_1 = require(\"../../entities/column\");\nvar beanStub_1 = require(\"../../context/beanStub\");\nvar SetLeftFeature = (function (_super) {\n    __extends(SetLeftFeature, _super);\n    function SetLeftFeature(columnOrGroup, eCell, beans, colsSpanning) {\n        var _this = _super.call(this) || this;\n        _this.columnOrGroup = columnOrGroup;\n        _this.eCell = eCell;\n        _this.colsSpanning = colsSpanning;\n        _this.beans = beans;\n        return _this;\n    }\n    SetLeftFeature.prototype.setColsSpanning = function (colsSpanning) {\n        this.colsSpanning = colsSpanning;\n        this.onLeftChanged();\n    };\n    SetLeftFeature.prototype.getColumnOrGroup = function () {\n        if (this.beans.gridOptionsWrapper.isEnableRtl() && this.colsSpanning) {\n            return this.colsSpanning[this.colsSpanning.length - 1];\n        }\n        else {\n            return this.columnOrGroup;\n        }\n    };\n    SetLeftFeature.prototype.init = function () {\n        this.addDestroyableEventListener(this.columnOrGroup, column_1.Column.EVENT_LEFT_CHANGED, this.onLeftChanged.bind(this));\n        this.setLeftFirstTime();\n    };\n    SetLeftFeature.prototype.setLeftFirstTime = function () {\n        var suppressMoveAnimation = this.beans.gridOptionsWrapper.isSuppressColumnMoveAnimation();\n        var oldLeftExists = utils_1.Utils.exists(this.columnOrGroup.getOldLeft());\n        var animateColumnMove = this.beans.columnAnimationService.isActive() && oldLeftExists && !suppressMoveAnimation;\n        if (animateColumnMove) {\n            this.animateInLeft();\n        }\n        else {\n            this.onLeftChanged();\n        }\n    };\n    SetLeftFeature.prototype.animateInLeft = function () {\n        var _this = this;\n        var left = this.getColumnOrGroup().getLeft();\n        var oldLeft = this.getColumnOrGroup().getOldLeft();\n        this.setLeft(oldLeft);\n        // we must keep track of the left we want to set to, as this would otherwise lead to a race\n        // condition, if the user changed the left value many times in one VM turn, then we want to make\n        // make sure the actualLeft we set in the timeout below (in the next VM turn) is the correct left\n        // position. eg if user changes column position twice, then setLeft() below executes twice in next\n        // VM turn, but only one (the correct one) should get applied.\n        this.actualLeft = left;\n        this.beans.columnAnimationService.executeNextVMTurn(function () {\n            // test this left value is the latest one to be applied, and if not, do nothing\n            if (_this.actualLeft === left) {\n                _this.setLeft(left);\n            }\n        });\n    };\n    SetLeftFeature.prototype.onLeftChanged = function () {\n        this.actualLeft = this.getColumnOrGroup().getLeft();\n        this.setLeft(this.actualLeft);\n    };\n    SetLeftFeature.prototype.setLeft = function (value) {\n        // if the value is null, then that means the column is no longer\n        // displayed. there is logic in the rendering to fade these columns\n        // out, so we don't try and change their left positions.\n        if (utils_1.Utils.exists(value)) {\n            this.eCell.style.left = value + 'px';\n        }\n    };\n    return SetLeftFeature;\n}(beanStub_1.BeanStub));\nexports.SetLeftFeature = SetLeftFeature;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rendering/features/setLeftFeature.js\n// module id = 129\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"./context/context\");\nvar context_2 = require(\"./context/context\");\nvar TemplateService = (function () {\n    function TemplateService() {\n        this.templateCache = {};\n        this.waitingCallbacks = {};\n    }\n    // returns the template if it is loaded, or null if it is not loaded\n    // but will call the callback when it is loaded\n    TemplateService.prototype.getTemplate = function (url, callback) {\n        var templateFromCache = this.templateCache[url];\n        if (templateFromCache) {\n            return templateFromCache;\n        }\n        var callbackList = this.waitingCallbacks[url];\n        var that = this;\n        if (!callbackList) {\n            // first time this was called, so need a new list for callbacks\n            callbackList = [];\n            this.waitingCallbacks[url] = callbackList;\n            // and also need to do the http request\n            var client = new XMLHttpRequest();\n            client.onload = function () {\n                that.handleHttpResult(this, url);\n            };\n            client.open(\"GET\", url);\n            client.send();\n        }\n        // add this callback\n        if (callback) {\n            callbackList.push(callback);\n        }\n        // caller needs to wait for template to load, so return null\n        return null;\n    };\n    TemplateService.prototype.handleHttpResult = function (httpResult, url) {\n        if (httpResult.status !== 200 || httpResult.response === null) {\n            console.warn('Unable to get template error ' + httpResult.status + ' - ' + url);\n            return;\n        }\n        // response success, so process it\n        // in IE9 the response is in - responseText\n        this.templateCache[url] = httpResult.response || httpResult.responseText;\n        // inform all listeners that this is now in the cache\n        var callbacks = this.waitingCallbacks[url];\n        for (var i = 0; i < callbacks.length; i++) {\n            var callback = callbacks[i];\n            // we could pass the callback the response, however we know the client of this code\n            // is the cell renderer, and it passes the 'cellRefresh' method in as the callback\n            // which doesn't take any parameters.\n            callback();\n        }\n        if (this.$scope) {\n            var that_1 = this;\n            setTimeout(function () {\n                that_1.$scope.$apply();\n            }, 0);\n        }\n    };\n    __decorate([\n        context_2.Autowired('$scope'),\n        __metadata(\"design:type\", Object)\n    ], TemplateService.prototype, \"$scope\", void 0);\n    TemplateService = __decorate([\n        context_1.Bean('templateService')\n    ], TemplateService);\n    return TemplateService;\n}());\nexports.TemplateService = TemplateService;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/templateService.js\n// module id = 130\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar popupEditorWrapper_1 = require(\"./cellEditors/popupEditorWrapper\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar componentResolver_1 = require(\"../components/framework/componentResolver\");\nvar CellEditorFactory = (function () {\n    function CellEditorFactory() {\n    }\n    CellEditorFactory.prototype.init = function () {\n    };\n    CellEditorFactory.prototype.addCellEditor = function (key, cellEditor) {\n        console.warn(\"ag-grid: since v13.3.1 this method is not supported anymore. If you want to register your own editor check the docs: https://www.ag-grid.com/javascript-grid-cell-editor/\");\n    };\n    // private registerEditorsFromGridOptions(): void {\n    //     let userProvidedCellEditors = this.gridOptionsWrapper.getCellEditors();\n    //     _.iterateObject(userProvidedCellEditors, (key: string, cellEditor: {new(): ICellEditor})=> {\n    //         this.addCellEditor(key, cellEditor);\n    //     });\n    // }\n    CellEditorFactory.prototype.createCellEditor = function (column, params) {\n        var _this = this;\n        var cellEditorPromise = this.componentResolver.createAgGridComponent(column, params, 'cellEditor', 'agCellEditor');\n        return cellEditorPromise.map(function (cellEditor) {\n            var isPopup = cellEditor.isPopup && cellEditor.isPopup();\n            if (!isPopup) {\n                return cellEditor;\n            }\n            if (_this.gridOptionsWrapper.isFullRowEdit()) {\n                console.warn('ag-Grid: popup cellEditor does not work with fullRowEdit - you cannot use them both ' +\n                    '- either turn off fullRowEdit, or stop using popup editors.');\n            }\n            // if a popup, then we wrap in a popup editor and return the popup\n            var popupEditorWrapper = new popupEditorWrapper_1.PopupEditorWrapper(cellEditor);\n            _this.context.wireBean(popupEditorWrapper);\n            popupEditorWrapper.init(params);\n            return popupEditorWrapper;\n        });\n    };\n    __decorate([\n        context_1.Autowired('context'),\n        __metadata(\"design:type\", context_1.Context)\n    ], CellEditorFactory.prototype, \"context\", void 0);\n    __decorate([\n        context_1.Autowired('componentResolver'),\n        __metadata(\"design:type\", componentResolver_1.ComponentResolver)\n    ], CellEditorFactory.prototype, \"componentResolver\", void 0);\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], CellEditorFactory.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], CellEditorFactory.prototype, \"init\", null);\n    CellEditorFactory = __decorate([\n        context_1.Bean('cellEditorFactory')\n    ], CellEditorFactory);\n    return CellEditorFactory;\n}());\nexports.CellEditorFactory = CellEditorFactory;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rendering/cellEditorFactory.js\n// module id = 131\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar utils_1 = require(\"../utils\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar eventService_1 = require(\"../eventService\");\nvar expressionService_1 = require(\"../valueService/expressionService\");\nvar animateSlideCellRenderer_1 = require(\"./cellRenderers/animateSlideCellRenderer\");\nvar animateShowChangeCellRenderer_1 = require(\"./cellRenderers/animateShowChangeCellRenderer\");\nvar groupCellRenderer_1 = require(\"./cellRenderers/groupCellRenderer\");\nvar CellRendererFactory = (function () {\n    function CellRendererFactory() {\n        this.cellRendererMap = {};\n    }\n    CellRendererFactory_1 = CellRendererFactory;\n    CellRendererFactory.prototype.init = function () {\n        this.cellRendererMap[CellRendererFactory_1.ANIMATE_SLIDE] = animateSlideCellRenderer_1.AnimateSlideCellRenderer;\n        this.cellRendererMap[CellRendererFactory_1.ANIMATE_SHOW_CHANGE] = animateShowChangeCellRenderer_1.AnimateShowChangeCellRenderer;\n        this.cellRendererMap[CellRendererFactory_1.GROUP] = groupCellRenderer_1.GroupCellRenderer;\n        // this.registerRenderersFromGridOptions();\n    };\n    // private registerRenderersFromGridOptions(): void {\n    //     let userProvidedCellRenderers = this.gridOptionsWrapper.getCellRenderers();\n    //     _.iterateObject(userProvidedCellRenderers, (key: string, cellRenderer: {new(): ICellRenderer} | ICellRendererFunc)=> {\n    //         this.addCellRenderer(key, cellRenderer);\n    //     });\n    // }\n    CellRendererFactory.prototype.addCellRenderer = function (key, cellRenderer) {\n        this.cellRendererMap[key] = cellRenderer;\n    };\n    CellRendererFactory.prototype.getCellRenderer = function (key) {\n        var result = this.cellRendererMap[key];\n        if (utils_1.Utils.missing(result)) {\n            console.warn('ag-Grid: unable to find cellRenderer for key ' + key);\n            return null;\n        }\n        return result;\n    };\n    CellRendererFactory.ANIMATE_SLIDE = 'animateSlide';\n    CellRendererFactory.ANIMATE_SHOW_CHANGE = 'animateShowChange';\n    CellRendererFactory.GROUP = 'group';\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], CellRendererFactory.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('expressionService'),\n        __metadata(\"design:type\", expressionService_1.ExpressionService)\n    ], CellRendererFactory.prototype, \"expressionService\", void 0);\n    __decorate([\n        context_1.Autowired('eventService'),\n        __metadata(\"design:type\", eventService_1.EventService)\n    ], CellRendererFactory.prototype, \"eventService\", void 0);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], CellRendererFactory.prototype, \"init\", null);\n    CellRendererFactory = CellRendererFactory_1 = __decorate([\n        context_1.Bean('cellRendererFactory')\n    ], CellRendererFactory);\n    return CellRendererFactory;\n    var CellRendererFactory_1;\n}());\nexports.CellRendererFactory = CellRendererFactory;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rendering/cellRendererFactory.js\n// module id = 132\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar componentRecipes_1 = require(\"../components/framework/componentRecipes\");\nvar componentResolver_1 = require(\"../components/framework/componentResolver\");\nvar utils_1 = require(\"../utils\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\n/** Class to use a cellRenderer. */\nvar CellRendererService = (function () {\n    function CellRendererService() {\n    }\n    CellRendererService.prototype.useCellRenderer = function (target, eTarget, params) {\n        var _this = this;\n        var cellRendererPromise = this.componentRecipes.newCellRenderer(target, params);\n        if (cellRendererPromise != null) {\n            cellRendererPromise.then(function (cellRenderer) {\n                if (cellRenderer == null) {\n                    eTarget.innerText = params.valueFormatted != null ? params.valueFormatted : params.value;\n                }\n                else {\n                    _this.bindToHtml(cellRendererPromise, eTarget);\n                }\n            });\n        }\n        else {\n            eTarget.innerText = params.valueFormatted != null ? params.valueFormatted : params.value;\n        }\n        return cellRendererPromise;\n    };\n    CellRendererService.prototype.useFilterCellRenderer = function (target, eTarget, params) {\n        var cellRendererPromise = this.componentRecipes.newCellRenderer(target.filterParams, params);\n        if (cellRendererPromise != null) {\n            this.bindToHtml(cellRendererPromise, eTarget);\n        }\n        else {\n            if (params.valueFormatted == null && params.value == null) {\n                var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n                eTarget.innerText = '(' + localeTextFunc('blanks', 'Blanks') + ')';\n            }\n            else {\n                eTarget.innerText = params.valueFormatted != null ? params.valueFormatted : params.value;\n            }\n        }\n        return cellRendererPromise;\n    };\n    CellRendererService.prototype.useRichSelectCellRenderer = function (target, eTarget, params) {\n        var cellRendererPromise = this.componentRecipes.newCellRenderer(target.cellEditorParams, params);\n        if (cellRendererPromise != null) {\n            this.bindToHtml(cellRendererPromise, eTarget);\n        }\n        else {\n            eTarget.innerText = params.valueFormatted != null ? params.valueFormatted : params.value;\n        }\n        return cellRendererPromise;\n    };\n    CellRendererService.prototype.useInnerCellRenderer = function (target, originalColumn, eTarget, params) {\n        var _this = this;\n        var rendererToUsePromise = null;\n        var componentToUse = this.componentResolver.getComponentToUse(target, \"innerRenderer\", \"agInnerCellRenderer\");\n        if (componentToUse && componentToUse.component != null && componentToUse.source != componentResolver_1.ComponentSource.DEFAULT) {\n            //THERE IS ONE INNER CELL RENDERER HARDCODED IN THE COLDEF FOR THIS GROUP COLUMN\n            rendererToUsePromise = this.componentRecipes.newInnerCellRenderer(target, params);\n        }\n        else {\n            var otherRenderer = this.componentResolver.getComponentToUse(originalColumn, \"cellRenderer\", \"agCellRenderer\");\n            if (otherRenderer && otherRenderer.source != componentResolver_1.ComponentSource.DEFAULT) {\n                //Only if the original column is using an specific renderer, it it is a using a DEFAULT one\n                //ignore it\n                //THIS COMES FROM A COLUMN WHICH HAS BEEN GROUPED DYNAMICALLY, WE REUSE ITS RENDERER\n                rendererToUsePromise = this.componentRecipes.newCellRenderer(originalColumn, params);\n            }\n            else if (otherRenderer && otherRenderer.source == componentResolver_1.ComponentSource.DEFAULT && (utils_1._.get(originalColumn, 'cellRendererParams.innerRenderer', null))) {\n                //EDGE CASE - THIS COMES FROM A COLUMN WHICH HAS BEEN GROUPED DYNAMICALLY, THAT HAS AS RENDERER 'group'\n                //AND HAS A INNER CELL RENDERER\n                rendererToUsePromise = this.componentRecipes.newInnerCellRenderer(originalColumn.cellRendererParams, params);\n            }\n            else {\n                //This forces the retrieval of the default plain cellRenderer that just renders the values.\n                rendererToUsePromise = this.componentRecipes.newCellRenderer({}, params);\n            }\n        }\n        if (rendererToUsePromise != null) {\n            rendererToUsePromise.then(function (rendererToUse) {\n                if (rendererToUse == null) {\n                    eTarget.innerText = params.valueFormatted != null ? params.valueFormatted : params.value;\n                    return;\n                }\n                _this.bindToHtml(rendererToUsePromise, eTarget);\n            });\n        }\n        else {\n            eTarget.innerText = params.valueFormatted != null ? params.valueFormatted : params.value;\n        }\n        return rendererToUsePromise;\n    };\n    CellRendererService.prototype.useFullWidthGroupRowInnerCellRenderer = function (eTarget, params) {\n        var cellRendererPromise = this.componentRecipes.newFullWidthGroupRowInnerCellRenderer(params);\n        if (cellRendererPromise != null) {\n            this.bindToHtml(cellRendererPromise, eTarget);\n        }\n        else {\n            eTarget.innerText = params.valueFormatted != null ? params.valueFormatted : params.value;\n        }\n        return cellRendererPromise;\n    };\n    CellRendererService.prototype.bindToHtml = function (cellRendererPromise, eTarget) {\n        cellRendererPromise.then(function (cellRenderer) {\n            var gui = cellRenderer.getGui();\n            if (gui != null) {\n                if (typeof gui == 'object') {\n                    eTarget.appendChild(gui);\n                }\n                else {\n                    eTarget.innerHTML = gui;\n                }\n            }\n        });\n        return cellRendererPromise;\n    };\n    __decorate([\n        context_1.Autowired('componentRecipes'),\n        __metadata(\"design:type\", componentRecipes_1.ComponentRecipes)\n    ], CellRendererService.prototype, \"componentRecipes\", void 0);\n    __decorate([\n        context_1.Autowired('componentResolver'),\n        __metadata(\"design:type\", componentResolver_1.ComponentResolver)\n    ], CellRendererService.prototype, \"componentResolver\", void 0);\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], CellRendererService.prototype, \"gridOptionsWrapper\", void 0);\n    CellRendererService = __decorate([\n        context_1.Bean('cellRendererService')\n    ], CellRendererService);\n    return CellRendererService;\n}());\nexports.CellRendererService = CellRendererService;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rendering/cellRendererService.js\n// module id = 133\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../../context/context\");\nvar componentMetadataProvider_1 = require(\"./componentMetadataProvider\");\nvar utils_1 = require(\"../../utils\");\nvar AgComponentUtils = (function () {\n    function AgComponentUtils() {\n    }\n    AgComponentUtils.prototype.adaptFunction = function (propertyName, hardcodedJsFunction, type, source) {\n        if (hardcodedJsFunction == null)\n            return {\n                component: null,\n                type: type,\n                source: source\n            };\n        var metadata = this.componentMetadataProvider.retrieve(propertyName);\n        if (metadata && metadata.functionAdapter) {\n            return {\n                type: type,\n                component: metadata.functionAdapter(hardcodedJsFunction),\n                source: source\n            };\n        }\n        console.error(\"It seems like you are providing a function as a component: \" + hardcodedJsFunction + \", but this component: [\" + propertyName + \"] doesnt accept functions\");\n        return null;\n    };\n    AgComponentUtils.prototype.adaptCellRendererFunction = function (callback) {\n        var Adapter = (function () {\n            function Adapter() {\n            }\n            Adapter.prototype.refresh = function (params) {\n                return false;\n            };\n            Adapter.prototype.getGui = function () {\n                var callbackResult = callback(this.params);\n                if (typeof callbackResult != 'string')\n                    return callbackResult;\n                return utils_1._.loadTemplate('<span>' + callbackResult + '</span>');\n            };\n            Adapter.prototype.init = function (params) {\n                this.params = params;\n            };\n            return Adapter;\n        }());\n        return Adapter;\n    };\n    AgComponentUtils.prototype.doesImplementIComponent = function (candidate) {\n        if (!candidate)\n            return false;\n        return candidate.prototype && 'getGui' in candidate.prototype;\n    };\n    __decorate([\n        context_1.Autowired(\"componentMetadataProvider\"),\n        __metadata(\"design:type\", componentMetadataProvider_1.ComponentMetadataProvider)\n    ], AgComponentUtils.prototype, \"componentMetadataProvider\", void 0);\n    AgComponentUtils = __decorate([\n        context_1.Bean(\"agComponentUtils\")\n    ], AgComponentUtils);\n    return AgComponentUtils;\n}());\nexports.AgComponentUtils = AgComponentUtils;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/components/framework/agComponentUtils.js\n// module id = 134\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar gridPanel_1 = require(\"../gridPanel/gridPanel\");\nvar column_1 = require(\"../entities/column\");\nvar context_1 = require(\"../context/context\");\nvar headerContainer_1 = require(\"./headerContainer\");\nvar eventService_1 = require(\"../eventService\");\nvar events_1 = require(\"../events\");\nvar scrollVisibleService_1 = require(\"../gridPanel/scrollVisibleService\");\nvar HeaderRenderer = (function () {\n    function HeaderRenderer() {\n    }\n    HeaderRenderer.prototype.init = function () {\n        var _this = this;\n        this.eHeaderViewport = this.gridPanel.getHeaderViewport();\n        this.eRoot = this.gridPanel.getRoot();\n        this.eHeaderOverlay = this.gridPanel.getHeaderOverlay();\n        this.centerContainer = new headerContainer_1.HeaderContainer(this.gridPanel.getHeaderContainer(), this.gridPanel.getHeaderViewport(), this.eRoot, null);\n        this.childContainers = [this.centerContainer];\n        if (!this.gridOptionsWrapper.isForPrint()) {\n            this.pinnedLeftContainer = new headerContainer_1.HeaderContainer(this.gridPanel.getPinnedLeftHeader(), null, this.eRoot, column_1.Column.PINNED_LEFT);\n            this.pinnedRightContainer = new headerContainer_1.HeaderContainer(this.gridPanel.getPinnedRightHeader(), null, this.eRoot, column_1.Column.PINNED_RIGHT);\n            this.childContainers.push(this.pinnedLeftContainer);\n            this.childContainers.push(this.pinnedRightContainer);\n        }\n        this.childContainers.forEach(function (container) { return _this.context.wireBean(container); });\n        // when grid columns change, it means the number of rows in the header has changed and it's all new columns\n        this.eventService.addEventListener(events_1.Events.EVENT_GRID_COLUMNS_CHANGED, this.onGridColumnsChanged.bind(this));\n        // shotgun way to get labels to change, eg from sum(amount) to avg(amount)\n        this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_VALUE_CHANGED, this.refreshHeader.bind(this));\n        // for resized, the individual cells take care of this, so don't need to refresh everything\n        this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_RESIZED, this.setPinnedColContainerWidth.bind(this));\n        this.eventService.addEventListener(events_1.Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.setPinnedColContainerWidth.bind(this));\n        this.eventService.addEventListener(events_1.Events.EVENT_SCROLL_VISIBILITY_CHANGED, this.onScrollVisibilityChanged.bind(this));\n        if (this.columnController.isReady()) {\n            this.refreshHeader();\n        }\n    };\n    HeaderRenderer.prototype.onScrollVisibilityChanged = function () {\n        this.setPinnedColContainerWidth();\n    };\n    HeaderRenderer.prototype.forEachHeaderElement = function (callback) {\n        this.childContainers.forEach(function (childContainer) { return childContainer.forEachHeaderElement(callback); });\n    };\n    HeaderRenderer.prototype.destroy = function () {\n        this.childContainers.forEach(function (container) { return container.destroy(); });\n    };\n    HeaderRenderer.prototype.onGridColumnsChanged = function () {\n        this.setHeight();\n    };\n    HeaderRenderer.prototype.refreshHeader = function () {\n        this.setHeight();\n        this.childContainers.forEach(function (container) { return container.refresh(); });\n        this.setPinnedColContainerWidth();\n    };\n    HeaderRenderer.prototype.setHeight = function () {\n        // if forPrint, overlay is missing\n        if (this.eHeaderOverlay) {\n            var rowHeight = this.gridOptionsWrapper.getHeaderHeight();\n            // we can probably get rid of this when we no longer need the overlay\n            var dept = this.columnController.getHeaderRowCount();\n            this.eHeaderOverlay.style.height = rowHeight + 'px';\n            this.eHeaderOverlay.style.top = ((dept - 1) * rowHeight) + 'px';\n        }\n    };\n    HeaderRenderer.prototype.setPinnedColContainerWidth = function () {\n        // pinned col doesn't exist when doing forPrint\n        if (this.gridOptionsWrapper.isForPrint()) {\n            return;\n        }\n        var pinnedLeftWidthWithScroll = this.scrollVisibleService.getPinnedLeftWithScrollWidth();\n        var pinnedRightWidthWithScroll = this.scrollVisibleService.getPinnedRightWithScrollWidth();\n        this.eHeaderViewport.style.marginLeft = pinnedLeftWidthWithScroll + 'px';\n        this.eHeaderViewport.style.marginRight = pinnedRightWidthWithScroll + 'px';\n    };\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], HeaderRenderer.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('columnController'),\n        __metadata(\"design:type\", columnController_1.ColumnController)\n    ], HeaderRenderer.prototype, \"columnController\", void 0);\n    __decorate([\n        context_1.Autowired('gridPanel'),\n        __metadata(\"design:type\", gridPanel_1.GridPanel)\n    ], HeaderRenderer.prototype, \"gridPanel\", void 0);\n    __decorate([\n        context_1.Autowired('context'),\n        __metadata(\"design:type\", context_1.Context)\n    ], HeaderRenderer.prototype, \"context\", void 0);\n    __decorate([\n        context_1.Autowired('eventService'),\n        __metadata(\"design:type\", eventService_1.EventService)\n    ], HeaderRenderer.prototype, \"eventService\", void 0);\n    __decorate([\n        context_1.Autowired('scrollVisibleService'),\n        __metadata(\"design:type\", scrollVisibleService_1.ScrollVisibleService)\n    ], HeaderRenderer.prototype, \"scrollVisibleService\", void 0);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], HeaderRenderer.prototype, \"init\", null);\n    __decorate([\n        context_1.PreDestroy,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], HeaderRenderer.prototype, \"destroy\", null);\n    HeaderRenderer = __decorate([\n        context_1.Bean('headerRenderer')\n    ], HeaderRenderer);\n    return HeaderRenderer;\n}());\nexports.HeaderRenderer = HeaderRenderer;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/headerRendering/headerRenderer.js\n// module id = 135\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"./context/context\");\nvar themeNames = ['fresh', 'dark', 'blue', 'bootstrap', 'material'];\nvar themes = themeNames.concat(themeNames.map(function (name) { return \"theme-\" + name; }));\nvar themeClass = new RegExp(\"ag-(\" + themes.join('|') + \")\");\nvar matGridSize = 8;\nvar freshGridSize = 4;\nvar HARD_CODED_SIZES = {\n    'ag-theme-material': {\n        headerHeight: matGridSize * 7,\n        virtualItemHeight: matGridSize * 5,\n        rowHeight: matGridSize * 6\n    },\n    'ag-theme-classic': {\n        headerHeight: 25,\n        virtualItemHeight: freshGridSize * 5,\n        rowHeight: 25\n    }\n};\nvar Environment = (function () {\n    function Environment() {\n        this.sassVariables = {};\n    }\n    // Approach described here:\n    // https://www.ofcodeandcolor.com/2017/04/02/encoding-data-in-css/\n    Environment.prototype.loadSassVariables = function () {\n        /*\n        var element = document.createElement('div');\n        element.className = 'sass-variables';\n        this.eGridDiv.appendChild(element);\n\n        var content = window.getComputedStyle(element, '::after').content;\n\n        try {\n            this.sassVariables = JSON.parse(JSON.parse(content));\n        } catch (e) {\n            throw new Error(\"Failed loading the theme sizing - check that you have the theme set up correctly.\");\n        }\n\n        this.eGridDiv.removeChild(element);\n        */\n    };\n    Environment.prototype.getSassVariable = function (theme, key) {\n        if (theme == 'ag-theme-material') {\n            return HARD_CODED_SIZES['ag-theme-material'][key];\n        }\n        return HARD_CODED_SIZES['ag-theme-classic'][key];\n        /*\n        const result = parseInt(this.sassVariables[key]);\n        if (!result || isNaN(result)) {\n            throw new Error(`Failed loading ${key} Sass variable from ${this.sassVariables}`);\n        }\n        return result;\n        */\n    };\n    Environment.prototype.getTheme = function () {\n        var themeMatch;\n        var element = this.eGridDiv;\n        while (element != document.documentElement && themeMatch == null) {\n            themeMatch = element.className.match(themeClass);\n            element = element.parentElement;\n            if (element == null) {\n                break;\n            }\n        }\n        if (themeMatch) {\n            return themeMatch[0];\n        }\n        else {\n            return 'ag-fresh';\n        }\n    };\n    __decorate([\n        context_1.Autowired('eGridDiv'),\n        __metadata(\"design:type\", HTMLElement)\n    ], Environment.prototype, \"eGridDiv\", void 0);\n    Environment = __decorate([\n        context_1.Bean('environment')\n    ], Environment);\n    return Environment;\n}());\nexports.Environment = Environment;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/environment.js\n// module id = 136\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar context_1 = require(\"../context/context\");\nvar HorizontalDragService = (function () {\n    function HorizontalDragService() {\n    }\n    HorizontalDragService.prototype.addDragHandling = function (params) {\n        var _this = this;\n        params.eDraggableElement.addEventListener('mousedown', function (startEvent) {\n            var myDocument = _this.gridOptionsWrapper.getDocument();\n            var eBody = myDocument.querySelector('body');\n            new DragInstance(params, startEvent, eBody);\n        });\n    };\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], HorizontalDragService.prototype, \"gridOptionsWrapper\", void 0);\n    HorizontalDragService = __decorate([\n        context_1.Bean('horizontalDragService')\n    ], HorizontalDragService);\n    return HorizontalDragService;\n}());\nexports.HorizontalDragService = HorizontalDragService;\nvar DragInstance = (function () {\n    function DragInstance(params, startEvent, eBody) {\n        this.mouseMove = this.onMouseMove.bind(this);\n        this.mouseUp = this.onMouseUp.bind(this);\n        this.mouseLeave = this.onMouseLeave.bind(this);\n        this.lastDelta = 0;\n        this.params = params;\n        this.eDragParent = eBody;\n        this.dragStartX = startEvent.clientX;\n        this.startEvent = startEvent;\n        this.eDragParent.addEventListener('mousemove', this.mouseMove);\n        this.eDragParent.addEventListener('mouseup', this.mouseUp);\n        this.eDragParent.addEventListener('mouseleave', this.mouseLeave);\n        this.draggingStarted = false;\n        var startAfterPixelsExist = typeof params.startAfterPixels === 'number' && params.startAfterPixels > 0;\n        if (!startAfterPixelsExist) {\n            this.startDragging();\n        }\n    }\n    DragInstance.prototype.startDragging = function () {\n        this.draggingStarted = true;\n        this.oldBodyCursor = this.params.eBody.style.cursor;\n        this.oldParentCursor = this.eDragParent.style.cursor;\n        this.oldMsUserSelect = this.eDragParent.style.msUserSelect;\n        this.oldWebkitUserSelect = this.eDragParent.style.webkitUserSelect;\n        // change the body cursor, so when drag moves out of the drag bar, the cursor is still 'resize' (or 'move'\n        this.params.eBody.style.cursor = this.params.cursor;\n        // same for outside the grid, we want to keep the resize (or move) cursor\n        this.eDragParent.style.cursor = this.params.cursor;\n        // we don't want text selection outside the grid (otherwise it looks weird as text highlights when we move)\n        this.eDragParent.style.msUserSelect = 'none';\n        this.eDragParent.style.webkitUserSelect = 'none';\n        this.params.onDragStart(this.startEvent);\n    };\n    DragInstance.prototype.onMouseMove = function (moveEvent) {\n        var newX = moveEvent.clientX;\n        this.lastDelta = newX - this.dragStartX;\n        if (!this.draggingStarted) {\n            var dragExceededStartAfterPixels = Math.abs(this.lastDelta) >= this.params.startAfterPixels;\n            if (dragExceededStartAfterPixels) {\n                this.startDragging();\n            }\n        }\n        if (this.draggingStarted) {\n            this.params.onDragging(this.lastDelta, false);\n        }\n    };\n    DragInstance.prototype.onMouseUp = function () {\n        this.stopDragging();\n    };\n    DragInstance.prototype.onMouseLeave = function () {\n        this.stopDragging();\n    };\n    DragInstance.prototype.stopDragging = function () {\n        // reset cursor back to original cursor, if they were changed in the first place\n        if (this.draggingStarted) {\n            this.params.eBody.style.cursor = this.oldBodyCursor;\n            this.eDragParent.style.cursor = this.oldParentCursor;\n            this.eDragParent.style.msUserSelect = this.oldMsUserSelect;\n            this.eDragParent.style.webkitUserSelect = this.oldWebkitUserSelect;\n            this.params.onDragging(this.lastDelta, true);\n        }\n        // always remove the listeners, as these are always added\n        this.eDragParent.removeEventListener('mousemove', this.mouseMove);\n        this.eDragParent.removeEventListener('mouseup', this.mouseUp);\n        this.eDragParent.removeEventListener('mouseleave', this.mouseLeave);\n    };\n    return DragInstance;\n}());\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/headerRendering/horizontalDragService.js\n// module id = 137\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = require(\"./component\");\nvar componentAnnotations_1 = require(\"./componentAnnotations\");\nvar utils_1 = require(\"../utils\");\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar AgCheckbox = (function (_super) {\n    __extends(AgCheckbox, _super);\n    function AgCheckbox() {\n        var _this = _super.call(this) || this;\n        _this.selected = false;\n        _this.readOnly = false;\n        _this.passive = false;\n        return _this;\n    }\n    AgCheckbox.prototype.postConstruct = function () {\n        this.setTemplate(AgCheckbox.TEMPLATE);\n        this.loadIcons();\n        this.updateIcons();\n    };\n    AgCheckbox.prototype.attributesSet = function () {\n        _super.prototype.attributesSet.call(this);\n        var label = this.getAttribute('label');\n        if (label) {\n            this.eLabel.innerText = label;\n        }\n    };\n    AgCheckbox.prototype.loadIcons = function () {\n        utils_1.Utils.removeAllChildren(this.eChecked);\n        utils_1.Utils.removeAllChildren(this.eUnchecked);\n        utils_1.Utils.removeAllChildren(this.eIndeterminate);\n        if (this.readOnly) {\n            this.eChecked.appendChild(utils_1.Utils.createIconNoSpan('checkboxCheckedReadOnly', this.gridOptionsWrapper, null));\n            this.eUnchecked.appendChild(utils_1.Utils.createIconNoSpan('checkboxUncheckedReadOnly', this.gridOptionsWrapper, null));\n            this.eIndeterminate.appendChild(utils_1.Utils.createIconNoSpan('checkboxIndeterminateReadOnly', this.gridOptionsWrapper, null));\n        }\n        else {\n            this.eChecked.appendChild(utils_1.Utils.createIconNoSpan('checkboxChecked', this.gridOptionsWrapper, null));\n            this.eUnchecked.appendChild(utils_1.Utils.createIconNoSpan('checkboxUnchecked', this.gridOptionsWrapper, null));\n            this.eIndeterminate.appendChild(utils_1.Utils.createIconNoSpan('checkboxIndeterminate', this.gridOptionsWrapper, null));\n        }\n    };\n    AgCheckbox.prototype.onClick = function () {\n        if (!this.readOnly) {\n            this.toggle();\n        }\n    };\n    AgCheckbox.prototype.getNextValue = function () {\n        if (this.selected === undefined) {\n            return true;\n        }\n        else {\n            return !this.selected;\n        }\n    };\n    AgCheckbox.prototype.setPassive = function (passive) {\n        this.passive = passive;\n    };\n    AgCheckbox.prototype.setReadOnly = function (readOnly) {\n        this.readOnly = readOnly;\n        this.loadIcons();\n    };\n    AgCheckbox.prototype.isReadOnly = function () {\n        return this.readOnly;\n    };\n    AgCheckbox.prototype.isSelected = function () {\n        return this.selected;\n    };\n    AgCheckbox.prototype.toggle = function () {\n        var nextValue = this.getNextValue();\n        if (this.passive) {\n            var event_1 = {\n                type: AgCheckbox.EVENT_CHANGED,\n                selected: nextValue\n            };\n            this.dispatchEvent(event_1);\n        }\n        else {\n            this.setSelected(nextValue);\n        }\n    };\n    AgCheckbox.prototype.setSelected = function (selected) {\n        if (this.selected === selected) {\n            return;\n        }\n        if (selected === true) {\n            this.selected = true;\n        }\n        else if (selected === false) {\n            this.selected = false;\n        }\n        else {\n            this.selected = undefined;\n        }\n        this.updateIcons();\n        var event = {\n            type: AgCheckbox.EVENT_CHANGED,\n            selected: this.selected\n        };\n        this.dispatchEvent(event);\n    };\n    AgCheckbox.prototype.updateIcons = function () {\n        utils_1.Utils.setVisible(this.eChecked, this.selected === true);\n        utils_1.Utils.setVisible(this.eUnchecked, this.selected === false);\n        utils_1.Utils.setVisible(this.eIndeterminate, this.selected === undefined);\n    };\n    AgCheckbox.EVENT_CHANGED = 'change';\n    AgCheckbox.TEMPLATE = '<span class=\"ag-checkbox\" role=\"presentation\">' +\n        '  <span class=\"ag-checkbox-checked\" role=\"presentation\"></span>' +\n        '  <span class=\"ag-checkbox-unchecked\" role=\"presentation\"></span>' +\n        '  <span class=\"ag-checkbox-indeterminate\" role=\"presentation\"></span>' +\n        '  <span class=\"ag-checkbox-label\" role=\"presentation\"></span>' +\n        '</span>';\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], AgCheckbox.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        componentAnnotations_1.QuerySelector('.ag-checkbox-checked'),\n        __metadata(\"design:type\", HTMLElement)\n    ], AgCheckbox.prototype, \"eChecked\", void 0);\n    __decorate([\n        componentAnnotations_1.QuerySelector('.ag-checkbox-unchecked'),\n        __metadata(\"design:type\", HTMLElement)\n    ], AgCheckbox.prototype, \"eUnchecked\", void 0);\n    __decorate([\n        componentAnnotations_1.QuerySelector('.ag-checkbox-indeterminate'),\n        __metadata(\"design:type\", HTMLElement)\n    ], AgCheckbox.prototype, \"eIndeterminate\", void 0);\n    __decorate([\n        componentAnnotations_1.QuerySelector('.ag-checkbox-label'),\n        __metadata(\"design:type\", HTMLElement)\n    ], AgCheckbox.prototype, \"eLabel\", void 0);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], AgCheckbox.prototype, \"postConstruct\", null);\n    __decorate([\n        componentAnnotations_1.Listener('click'),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], AgCheckbox.prototype, \"onClick\", null);\n    return AgCheckbox;\n}(component_1.Component));\nexports.AgCheckbox = AgCheckbox;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/widgets/agCheckbox.js\n// module id = 138\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../../utils\");\nvar rowNode_1 = require(\"../../entities/rowNode\");\nvar beanStub_1 = require(\"../../context/beanStub\");\nvar RowNodeBlock = (function (_super) {\n    __extends(RowNodeBlock, _super);\n    function RowNodeBlock(blockNumber, rowNodeCacheParams) {\n        var _this = _super.call(this) || this;\n        _this.version = 0;\n        _this.state = RowNodeBlock.STATE_DIRTY;\n        _this.rowNodeCacheParams = rowNodeCacheParams;\n        _this.blockNumber = blockNumber;\n        // we don't need to calculate these now, as the inputs don't change,\n        // however it makes the code easier to read if we work them out up front\n        _this.startRow = blockNumber * rowNodeCacheParams.blockSize;\n        _this.endRow = _this.startRow + rowNodeCacheParams.blockSize;\n        return _this;\n    }\n    RowNodeBlock.prototype.isAnyNodeOpen = function (rowCount) {\n        var result = false;\n        this.forEachNodeCallback(function (rowNode) {\n            if (rowNode.expanded) {\n                result = true;\n            }\n        }, rowCount);\n        return result;\n    };\n    RowNodeBlock.prototype.forEachNodeCallback = function (callback, rowCount) {\n        for (var rowIndex = this.startRow; rowIndex < this.endRow; rowIndex++) {\n            // we check against rowCount as this page may be the last one, and if it is, then\n            // the last rows are not part of the set\n            if (rowIndex < rowCount) {\n                var rowNode = this.getRowUsingLocalIndex(rowIndex);\n                callback(rowNode, rowIndex);\n            }\n        }\n    };\n    RowNodeBlock.prototype.forEachNode = function (callback, sequence, rowCount, deep) {\n        this.forEachNodeCallback(function (rowNode) {\n            callback(rowNode, sequence.next());\n            // this will only every happen for enterprise row model, as infinite\n            // row model doesn't have groups\n            if (deep && rowNode.childrenCache) {\n                rowNode.childrenCache.forEachNodeDeep(callback, sequence);\n            }\n        }, rowCount);\n    };\n    RowNodeBlock.prototype.forEachNodeDeep = function (callback, sequence, rowCount) {\n        this.forEachNode(callback, sequence, rowCount, true);\n    };\n    RowNodeBlock.prototype.forEachNodeShallow = function (callback, sequence, rowCount) {\n        this.forEachNode(callback, sequence, rowCount, false);\n    };\n    RowNodeBlock.prototype.getVersion = function () {\n        return this.version;\n    };\n    RowNodeBlock.prototype.getLastAccessed = function () {\n        return this.lastAccessed;\n    };\n    RowNodeBlock.prototype.getRowUsingLocalIndex = function (rowIndex) {\n        this.lastAccessed = this.rowNodeCacheParams.lastAccessedSequence.next();\n        var localIndex = rowIndex - this.startRow;\n        return this.rowNodes[localIndex];\n    };\n    RowNodeBlock.prototype.init = function (beans) {\n        this.beans = beans;\n        this.createRowNodes();\n    };\n    RowNodeBlock.prototype.getStartRow = function () {\n        return this.startRow;\n    };\n    RowNodeBlock.prototype.getEndRow = function () {\n        return this.endRow;\n    };\n    RowNodeBlock.prototype.getBlockNumber = function () {\n        return this.blockNumber;\n    };\n    RowNodeBlock.prototype.setDirty = function () {\n        // in case any current loads in progress, this will have their results ignored\n        this.version++;\n        this.state = RowNodeBlock.STATE_DIRTY;\n    };\n    RowNodeBlock.prototype.setDirtyAndPurge = function () {\n        this.setDirty();\n        this.rowNodes.forEach(function (rowNode) {\n            rowNode.setData(null);\n        });\n    };\n    RowNodeBlock.prototype.getState = function () {\n        return this.state;\n    };\n    RowNodeBlock.prototype.setRowNode = function (rowIndex, rowNode) {\n        var localIndex = rowIndex - this.startRow;\n        this.rowNodes[localIndex] = rowNode;\n    };\n    RowNodeBlock.prototype.setBlankRowNode = function (rowIndex) {\n        var localIndex = rowIndex - this.startRow;\n        var newRowNode = this.createBlankRowNode(rowIndex);\n        this.rowNodes[localIndex] = newRowNode;\n        return newRowNode;\n    };\n    RowNodeBlock.prototype.setNewData = function (rowIndex, dataItem) {\n        var newRowNode = this.setBlankRowNode(rowIndex);\n        this.setDataAndId(newRowNode, dataItem, this.startRow + rowIndex);\n        return newRowNode;\n    };\n    RowNodeBlock.prototype.createBlankRowNode = function (rowIndex) {\n        var rowNode = new rowNode_1.RowNode();\n        this.beans.context.wireBean(rowNode);\n        rowNode.setRowHeight(this.rowNodeCacheParams.rowHeight);\n        return rowNode;\n    };\n    // creates empty row nodes, data is missing as not loaded yet\n    RowNodeBlock.prototype.createRowNodes = function () {\n        this.rowNodes = [];\n        for (var i = 0; i < this.rowNodeCacheParams.blockSize; i++) {\n            var rowIndex = this.startRow + i;\n            var rowNode = this.createBlankRowNode(rowIndex);\n            this.rowNodes.push(rowNode);\n        }\n    };\n    RowNodeBlock.prototype.load = function () {\n        this.state = RowNodeBlock.STATE_LOADING;\n        this.loadFromDatasource();\n    };\n    RowNodeBlock.prototype.pageLoadFailed = function () {\n        this.state = RowNodeBlock.STATE_FAILED;\n        var event = {\n            type: RowNodeBlock.EVENT_LOAD_COMPLETE,\n            success: false,\n            page: this,\n            lastRow: null\n        };\n        this.dispatchEvent(event);\n    };\n    RowNodeBlock.prototype.populateWithRowData = function (rows) {\n        var _this = this;\n        var rowNodesToRefresh = [];\n        this.rowNodes.forEach(function (rowNode, index) {\n            var data = rows[index];\n            if (rowNode.stub) {\n                rowNodesToRefresh.push(rowNode);\n            }\n            _this.setDataAndId(rowNode, data, _this.startRow + index);\n        });\n        if (rowNodesToRefresh.length > 0) {\n            this.beans.rowRenderer.redrawRows(rowNodesToRefresh);\n        }\n    };\n    RowNodeBlock.prototype.destroy = function () {\n        _super.prototype.destroy.call(this);\n        this.rowNodes.forEach(function (rowNode) {\n            if (rowNode.childrenCache) {\n                rowNode.childrenCache.destroy();\n                rowNode.childrenCache = null;\n            }\n            // this is needed, so row render knows to fade out the row, otherwise it\n            // see's row top is present, and thinks the row should be shown. maybe\n            // rowNode should have a flag on whether it is visible???\n            rowNode.clearRowTop();\n        });\n    };\n    RowNodeBlock.prototype.pageLoaded = function (version, rows, lastRow) {\n        // we need to check the version, in case there was an old request\n        // from the server that was sent before we refreshed the cache,\n        // if the load was done as a result of a cache refresh\n        if (version === this.version) {\n            this.state = RowNodeBlock.STATE_LOADED;\n            this.populateWithRowData(rows);\n        }\n        lastRow = utils_1.Utils.cleanNumber(lastRow);\n        // check here if lastrow should be set\n        var event = {\n            type: RowNodeBlock.EVENT_LOAD_COMPLETE,\n            success: true,\n            page: this,\n            lastRow: lastRow\n        };\n        this.dispatchEvent(event);\n    };\n    RowNodeBlock.EVENT_LOAD_COMPLETE = 'loadComplete';\n    RowNodeBlock.STATE_DIRTY = 'dirty';\n    RowNodeBlock.STATE_LOADING = 'loading';\n    RowNodeBlock.STATE_LOADED = 'loaded';\n    RowNodeBlock.STATE_FAILED = 'failed';\n    return RowNodeBlock;\n}(beanStub_1.BeanStub));\nexports.RowNodeBlock = RowNodeBlock;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rowModels/cache/rowNodeBlock.js\n// module id = 139\n// module chunks = 0","/**\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\nif (process.env.NODE_ENV !== 'production') {\n  var invariant = require('fbjs/lib/invariant');\n  var warning = require('fbjs/lib/warning');\n  var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n  var loggedTypeFailures = {};\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n  if (process.env.NODE_ENV !== 'production') {\n    for (var typeSpecName in typeSpecs) {\n      if (typeSpecs.hasOwnProperty(typeSpecName)) {\n        var error;\n        // Prop type validation may throw. In case they do, we don't want to\n        // fail the render phase where it didn't fail before. So we log it.\n        // After these have been cleaned up, we'll let them throw.\n        try {\n          // This is intentionally an invariant that gets caught. It's the same\n          // behavior as without this statement except with a better message.\n          invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'the `prop-types` package, but received `%s`.', componentName || 'React class', location, typeSpecName, typeof typeSpecs[typeSpecName]);\n          error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n        } catch (ex) {\n          error = ex;\n        }\n        warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error);\n        if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n          // Only monitor this failure once because there tends to be a lot of the\n          // same error.\n          loggedTypeFailures[error.message] = true;\n\n          var stack = getStack ? getStack() : '';\n\n          warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : '');\n        }\n      }\n    }\n  }\n}\n\nmodule.exports = checkPropTypes;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/checkPropTypes.js\n// module id = 140\n// module chunks = 0","/**\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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/lib/ReactPropTypesSecret.js\n// module id = 141\n// module chunks = 0","/**\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\n'use strict';\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\n/**\n * Simple, lightweight module assisting with the detection and context of\n * Worker. Helps avoid circular dependencies and allows code to reason about\n * whether or not they are in a Worker, even if they never include the main\n * `ReactWorker` dependency.\n */\nvar ExecutionEnvironment = {\n\n  canUseDOM: canUseDOM,\n\n  canUseWorkers: typeof Worker !== 'undefined',\n\n  canUseEventListeners: canUseDOM && !!(window.addEventListener || window.attachEvent),\n\n  canUseViewport: canUseDOM && !!window.screen,\n\n  isInWorker: !canUseDOM // For now, this is true - might change in the future.\n\n};\n\nmodule.exports = ExecutionEnvironment;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/ExecutionEnvironment.js\n// module id = 142\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\nexports.locationsAreEqual = exports.createLocation = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _resolvePathname = require('resolve-pathname');\n\nvar _resolvePathname2 = _interopRequireDefault(_resolvePathname);\n\nvar _valueEqual = require('value-equal');\n\nvar _valueEqual2 = _interopRequireDefault(_valueEqual);\n\nvar _PathUtils = require('./PathUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar createLocation = exports.createLocation = function createLocation(path, state, key, currentLocation) {\n  var location = void 0;\n  if (typeof path === 'string') {\n    // Two-arg form: push(path, state)\n    location = (0, _PathUtils.parsePath)(path);\n    location.state = state;\n  } else {\n    // One-arg form: push(location)\n    location = _extends({}, path);\n\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 = (0, _resolvePathname2.default)(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};\n\nvar locationsAreEqual = exports.locationsAreEqual = function locationsAreEqual(a, b) {\n  return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && (0, _valueEqual2.default)(a.state, b.state);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/history/LocationUtils.js\n// module id = 143\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar createTransitionManager = function createTransitionManager() {\n  var prompt = null;\n\n  var setPrompt = function setPrompt(nextPrompt) {\n    (0, _warning2.default)(prompt == null, 'A history supports only one prompt at a time');\n\n    prompt = nextPrompt;\n\n    return function () {\n      if (prompt === nextPrompt) prompt = null;\n    };\n  };\n\n  var confirmTransitionTo = 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          (0, _warning2.default)(false, 'A history needs a getUserConfirmation function in order to use a prompt message');\n\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  var appendListener = function appendListener(fn) {\n    var isActive = true;\n\n    var listener = function listener() {\n      if (isActive) fn.apply(undefined, arguments);\n    };\n\n    listeners.push(listener);\n\n    return function () {\n      isActive = false;\n      listeners = listeners.filter(function (item) {\n        return item !== listener;\n      });\n    };\n  };\n\n  var notifyListeners = function notifyListeners() {\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    listeners.forEach(function (listener) {\n      return listener.apply(undefined, args);\n    });\n  };\n\n  return {\n    setPrompt: setPrompt,\n    confirmTransitionTo: confirmTransitionTo,\n    appendListener: appendListener,\n    notifyListeners: notifyListeners\n  };\n};\n\nexports.default = createTransitionManager;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/history/createTransitionManager.js\n// module id = 144\n// module chunks = 0","// Written in this round about way for babel-transform-imports\nimport Router from 'react-router/es/Router';\n\nexport default Router;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router-dom/es/Router.js\n// module id = 145\n// module chunks = 0","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from 'warning';\nimport invariant from 'invariant';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\n/**\n * The public API for putting history on context.\n */\n\nvar Router = function (_React$Component) {\n  _inherits(Router, _React$Component);\n\n  function Router() {\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, Router);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n      match: _this.computeMatch(_this.props.history.location.pathname)\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  Router.prototype.getChildContext = function getChildContext() {\n    return {\n      router: _extends({}, this.context.router, {\n        history: this.props.history,\n        route: {\n          location: this.props.history.location,\n          match: this.state.match\n        }\n      })\n    };\n  };\n\n  Router.prototype.computeMatch = function computeMatch(pathname) {\n    return {\n      path: '/',\n      url: '/',\n      params: {},\n      isExact: pathname === '/'\n    };\n  };\n\n  Router.prototype.componentWillMount = function componentWillMount() {\n    var _this2 = this;\n\n    var _props = this.props,\n        children = _props.children,\n        history = _props.history;\n\n\n    invariant(children == null || React.Children.count(children) === 1, 'A <Router> may have only one child element');\n\n    // Do this here so we can setState when a <Redirect> changes the\n    // location in componentWillMount. This happens e.g. when doing\n    // server rendering using a <StaticRouter>.\n    this.unlisten = history.listen(function () {\n      _this2.setState({\n        match: _this2.computeMatch(history.location.pathname)\n      });\n    });\n  };\n\n  Router.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n    warning(this.props.history === nextProps.history, 'You cannot change <Router history>');\n  };\n\n  Router.prototype.componentWillUnmount = function componentWillUnmount() {\n    this.unlisten();\n  };\n\n  Router.prototype.render = function render() {\n    var children = this.props.children;\n\n    return children ? React.Children.only(children) : null;\n  };\n\n  return Router;\n}(React.Component);\n\nRouter.propTypes = {\n  history: PropTypes.object.isRequired,\n  children: PropTypes.node\n};\nRouter.contextTypes = {\n  router: PropTypes.object\n};\nRouter.childContextTypes = {\n  router: PropTypes.object.isRequired\n};\n\n\nexport default Router;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/es/Router.js\n// module id = 146\n// module chunks = 0","import pathToRegexp from 'path-to-regexp';\n\nvar patternCache = {};\nvar cacheLimit = 10000;\nvar cacheCount = 0;\n\nvar compilePath = function compilePath(pattern, options) {\n  var cacheKey = '' + options.end + options.strict + options.sensitive;\n  var cache = patternCache[cacheKey] || (patternCache[cacheKey] = {});\n\n  if (cache[pattern]) return cache[pattern];\n\n  var keys = [];\n  var re = pathToRegexp(pattern, keys, options);\n  var compiledPattern = { re: re, keys: keys };\n\n  if (cacheCount < cacheLimit) {\n    cache[pattern] = compiledPattern;\n    cacheCount++;\n  }\n\n  return compiledPattern;\n};\n\n/**\n * Public API for matching a URL pathname to a path pattern.\n */\nvar matchPath = function matchPath(pathname) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (typeof options === 'string') options = { path: options };\n\n  var _options = options,\n      _options$path = _options.path,\n      path = _options$path === undefined ? '/' : _options$path,\n      _options$exact = _options.exact,\n      exact = _options$exact === undefined ? false : _options$exact,\n      _options$strict = _options.strict,\n      strict = _options$strict === undefined ? false : _options$strict,\n      _options$sensitive = _options.sensitive,\n      sensitive = _options$sensitive === undefined ? false : _options$sensitive;\n\n  var _compilePath = compilePath(path, { end: exact, strict: strict, sensitive: sensitive }),\n      re = _compilePath.re,\n      keys = _compilePath.keys;\n\n  var match = re.exec(pathname);\n\n  if (!match) return null;\n\n  var url = match[0],\n      values = match.slice(1);\n\n  var isExact = pathname === url;\n\n  if (exact && !isExact) return null;\n\n  return {\n    path: path, // the path pattern used to match\n    url: path === '/' && url === '' ? '/' : url, // the matched portion of the URL\n    isExact: isExact, // whether or not we matched exactly\n    params: keys.reduce(function (memo, key, index) {\n      memo[key.name] = values[index];\n      return memo;\n    }, {})\n  };\n};\n\nexport default matchPath;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/es/matchPath.js\n// module id = 147\n// module chunks = 0","import warning from 'warning';\n\nvar createTransitionManager = function createTransitionManager() {\n  var prompt = null;\n\n  var setPrompt = function setPrompt(nextPrompt) {\n    warning(prompt == null, 'A history supports only one prompt at a time');\n\n    prompt = nextPrompt;\n\n    return function () {\n      if (prompt === nextPrompt) prompt = null;\n    };\n  };\n\n  var confirmTransitionTo = 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          warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message');\n\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  var appendListener = function appendListener(fn) {\n    var isActive = true;\n\n    var listener = function listener() {\n      if (isActive) fn.apply(undefined, arguments);\n    };\n\n    listeners.push(listener);\n\n    return function () {\n      isActive = false;\n      listeners = listeners.filter(function (item) {\n        return item !== listener;\n      });\n    };\n  };\n\n  var notifyListeners = function notifyListeners() {\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    listeners.forEach(function (listener) {\n      return listener.apply(undefined, args);\n    });\n  };\n\n  return {\n    setPrompt: setPrompt,\n    confirmTransitionTo: confirmTransitionTo,\n    appendListener: appendListener,\n    notifyListeners: notifyListeners\n  };\n};\n\nexport default createTransitionManager;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/history/es/createTransitionManager.js\n// module id = 148\n// module chunks = 0","/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nexport default function warning(message) {\n  /* eslint-disable no-console */\n  if (typeof console !== 'undefined' && typeof console.error === 'function') {\n    console.error(message);\n  }\n  /* eslint-enable no-console */\n  try {\n    // This error was thrown as a convenience so that if you enable\n    // \"break on all exceptions\" in your console,\n    // it would pause the execution at this line.\n    throw new Error(message);\n    /* eslint-disable no-empty */\n  } catch (e) {}\n  /* eslint-enable no-empty */\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-redux/es/utils/warning.js\n// module id = 149\n// module chunks = 0","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\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\nexport default isPlainObject;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash-es/isPlainObject.js\n// module id = 150\n// module chunks = 0","// 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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_ctx.js\n// module id = 151\n// module chunks = 0","// 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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-primitive.js\n// module id = 152\n// module chunks = 0","var toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_cof.js\n// module id = 153\n// module chunks = 0","// 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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_defined.js\n// module id = 154\n// module chunks = 0","// 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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-integer.js\n// module id = 155\n// module chunks = 0","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n  return shared[key] || (shared[key] = uid(key));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_shared-key.js\n// module id = 156\n// module chunks = 0","var global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\nmodule.exports = function (key) {\n  return store[key] || (store[key] = {});\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_shared.js\n// module id = 157\n// module chunks = 0","// IE 8- don't enum bug keys\nmodule.exports = (\n  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_enum-bug-keys.js\n// module id = 158\n// module chunks = 0","exports.f = Object.getOwnPropertySymbols;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gops.js\n// module id = 159\n// module chunks = 0","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n  return Object(defined(it));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-object.js\n// module id = 160\n// module chunks = 0","\"use strict\";\n\nexports.__esModule = true;\n\nvar _iterator = require(\"../core-js/symbol/iterator\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = require(\"../core-js/symbol\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n  return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n  return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/helpers/typeof.js\n// module id = 161\n// module chunks = 0","module.exports = true;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_library.js\n// module id = 162\n// module chunks = 0","// 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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-create.js\n// module id = 163\n// module chunks = 0","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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_set-to-string-tag.js\n// module id = 164\n// module chunks = 0","exports.f = require('./_wks');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks-ext.js\n// module id = 165\n// module chunks = 0","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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks-define.js\n// module id = 166\n// module chunks = 0","import _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nvar propTypes = {\n  label: PropTypes.string.isRequired,\n  onClick: PropTypes.func\n};\n\nvar defaultProps = {\n  label: 'Close'\n};\n\nvar CloseButton = function (_React$Component) {\n  _inherits(CloseButton, _React$Component);\n\n  function CloseButton() {\n    _classCallCheck(this, CloseButton);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  CloseButton.prototype.render = function render() {\n    var _props = this.props,\n        label = _props.label,\n        onClick = _props.onClick;\n\n    return React.createElement(\n      'button',\n      {\n        type: 'button',\n        className: 'close',\n        onClick: onClick\n      },\n      React.createElement(\n        'span',\n        { 'aria-hidden': 'true' },\n        '\\xD7'\n      ),\n      React.createElement(\n        'span',\n        { className: 'sr-only' },\n        label\n      )\n    );\n  };\n\n  return CloseButton;\n}(React.Component);\n\nCloseButton.propTypes = propTypes;\nCloseButton.defaultProps = defaultProps;\n\nexport default CloseButton;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/CloseButton.js\n// module id = 167\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport all from 'prop-types-extra/lib/all';\n\nimport Button from './Button';\nimport { bsClass, getClassSet, prefix, splitBsProps } from './utils/bootstrapUtils';\n\nvar propTypes = {\n  vertical: PropTypes.bool,\n  justified: PropTypes.bool,\n\n  /**\n   * Display block buttons; only useful when used with the \"vertical\" prop.\n   * @type {bool}\n   */\n  block: all(PropTypes.bool, function (_ref) {\n    var block = _ref.block,\n        vertical = _ref.vertical;\n    return block && !vertical ? new Error('`block` requires `vertical` to be set to have any effect') : null;\n  })\n};\n\nvar defaultProps = {\n  block: false,\n  justified: false,\n  vertical: false\n};\n\nvar ButtonGroup = function (_React$Component) {\n  _inherits(ButtonGroup, _React$Component);\n\n  function ButtonGroup() {\n    _classCallCheck(this, ButtonGroup);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  ButtonGroup.prototype.render = function render() {\n    var _extends2;\n\n    var _props = this.props,\n        block = _props.block,\n        justified = _props.justified,\n        vertical = _props.vertical,\n        className = _props.className,\n        props = _objectWithoutProperties(_props, ['block', 'justified', 'vertical', 'className']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = _extends({}, getClassSet(bsProps), (_extends2 = {}, _extends2[prefix(bsProps)] = !vertical, _extends2[prefix(bsProps, 'vertical')] = vertical, _extends2[prefix(bsProps, 'justified')] = justified, _extends2[prefix(Button.defaultProps, 'block')] = block, _extends2));\n\n    return React.createElement('div', _extends({}, elementProps, {\n      className: classNames(className, classes)\n    }));\n  };\n\n  return ButtonGroup;\n}(React.Component);\n\nButtonGroup.propTypes = propTypes;\nButtonGroup.defaultProps = defaultProps;\n\nexport default bsClass('btn-group', ButtonGroup);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/ButtonGroup.js\n// module id = 168\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { bsClass, getClassSet, prefix, splitBsProps } from './utils/bootstrapUtils';\n\nvar propTypes = {\n  /**\n   * An icon name without \"glyphicon-\" prefix. See e.g. http://getbootstrap.com/components/#glyphicons\n   */\n  glyph: PropTypes.string.isRequired\n};\n\nvar Glyphicon = function (_React$Component) {\n  _inherits(Glyphicon, _React$Component);\n\n  function Glyphicon() {\n    _classCallCheck(this, Glyphicon);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  Glyphicon.prototype.render = function render() {\n    var _extends2;\n\n    var _props = this.props,\n        glyph = _props.glyph,\n        className = _props.className,\n        props = _objectWithoutProperties(_props, ['glyph', 'className']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = _extends({}, getClassSet(bsProps), (_extends2 = {}, _extends2[prefix(bsProps, glyph)] = true, _extends2));\n\n    return React.createElement('span', _extends({}, elementProps, {\n      className: classNames(className, classes)\n    }));\n  };\n\n  return Glyphicon;\n}(React.Component);\n\nGlyphicon.propTypes = propTypes;\n\nexport default bsClass('glyphicon', Glyphicon);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/Glyphicon.js\n// module id = 169\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport css from 'dom-helpers/style';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport Transition from 'react-overlays/lib/Transition';\n\nimport capitalize from './utils/capitalize';\nimport createChainedFunction from './utils/createChainedFunction';\n\nvar MARGINS = {\n  height: ['marginTop', 'marginBottom'],\n  width: ['marginLeft', 'marginRight']\n};\n\n// reading a dimension prop will cause the browser to recalculate,\n// which will let our animations work\nfunction triggerBrowserReflow(node) {\n  node.offsetHeight; // eslint-disable-line no-unused-expressions\n}\n\nfunction getDimensionValue(dimension, elem) {\n  var value = elem['offset' + capitalize(dimension)];\n  var margins = MARGINS[dimension];\n\n  return value + parseInt(css(elem, margins[0]), 10) + parseInt(css(elem, margins[1]), 10);\n}\n\nvar propTypes = {\n  /**\n   * Show the component; triggers the expand or collapse animation\n   */\n  in: PropTypes.bool,\n\n  /**\n   * Wait until the first \"enter\" transition to mount the component (add it to the DOM)\n   */\n  mountOnEnter: PropTypes.bool,\n\n  /**\n   * Unmount the component (remove it from the DOM) when it is collapsed\n   */\n  unmountOnExit: PropTypes.bool,\n\n  /**\n   * Run the expand animation when the component mounts, if it is initially\n   * shown\n   */\n  transitionAppear: PropTypes.bool,\n\n  /**\n   * Duration of the collapse animation in milliseconds, to ensure that\n   * finishing callbacks are fired even if the original browser transition end\n   * events are canceled\n   */\n  timeout: PropTypes.number,\n\n  /**\n   * Callback fired before the component expands\n   */\n  onEnter: PropTypes.func,\n  /**\n   * Callback fired after the component starts to expand\n   */\n  onEntering: PropTypes.func,\n  /**\n   * Callback fired after the component has expanded\n   */\n  onEntered: PropTypes.func,\n  /**\n   * Callback fired before the component collapses\n   */\n  onExit: PropTypes.func,\n  /**\n   * Callback fired after the component starts to collapse\n   */\n  onExiting: PropTypes.func,\n  /**\n   * Callback fired after the component has collapsed\n   */\n  onExited: PropTypes.func,\n\n  /**\n   * The dimension used when collapsing, or a function that returns the\n   * dimension\n   *\n   * _Note: Bootstrap only partially supports 'width'!\n   * You will need to supply your own CSS animation for the `.width` CSS class._\n   */\n  dimension: PropTypes.oneOfType([PropTypes.oneOf(['height', 'width']), PropTypes.func]),\n\n  /**\n   * Function that returns the height or width of the animating DOM node\n   *\n   * Allows for providing some custom logic for how much the Collapse component\n   * should animate in its specified dimension. Called with the current\n   * dimension prop value and the DOM node.\n   */\n  getDimensionValue: PropTypes.func,\n\n  /**\n   * ARIA role of collapsible element\n   */\n  role: PropTypes.string\n};\n\nvar defaultProps = {\n  in: false,\n  timeout: 300,\n  mountOnEnter: false,\n  unmountOnExit: false,\n  transitionAppear: false,\n\n  dimension: 'height',\n  getDimensionValue: getDimensionValue\n};\n\nvar Collapse = function (_React$Component) {\n  _inherits(Collapse, _React$Component);\n\n  function Collapse(props, context) {\n    _classCallCheck(this, Collapse);\n\n    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n\n    _this.handleEnter = _this.handleEnter.bind(_this);\n    _this.handleEntering = _this.handleEntering.bind(_this);\n    _this.handleEntered = _this.handleEntered.bind(_this);\n    _this.handleExit = _this.handleExit.bind(_this);\n    _this.handleExiting = _this.handleExiting.bind(_this);\n    return _this;\n  }\n\n  Collapse.prototype._dimension = function _dimension() {\n    return typeof this.props.dimension === 'function' ? this.props.dimension() : this.props.dimension;\n  };\n\n  // for testing\n\n\n  Collapse.prototype._getScrollDimensionValue = function _getScrollDimensionValue(elem, dimension) {\n    return elem['scroll' + capitalize(dimension)] + 'px';\n  };\n\n  /* -- Expanding -- */\n\n\n  Collapse.prototype.handleEnter = function handleEnter(elem) {\n    var dimension = this._dimension();\n    elem.style[dimension] = '0';\n  };\n\n  Collapse.prototype.handleEntered = function handleEntered(elem) {\n    var dimension = this._dimension();\n    elem.style[dimension] = null;\n  };\n\n  Collapse.prototype.handleEntering = function handleEntering(elem) {\n    var dimension = this._dimension();\n    elem.style[dimension] = this._getScrollDimensionValue(elem, dimension);\n  };\n\n  /* -- Collapsing -- */\n\n\n  Collapse.prototype.handleExit = function handleExit(elem) {\n    var dimension = this._dimension();\n    elem.style[dimension] = this.props.getDimensionValue(dimension, elem) + 'px';\n    triggerBrowserReflow(elem);\n  };\n\n  Collapse.prototype.handleExiting = function handleExiting(elem) {\n    var dimension = this._dimension();\n    elem.style[dimension] = '0';\n  };\n\n  Collapse.prototype.render = function render() {\n    var _props = this.props,\n        onEnter = _props.onEnter,\n        onEntering = _props.onEntering,\n        onEntered = _props.onEntered,\n        onExit = _props.onExit,\n        onExiting = _props.onExiting,\n        className = _props.className,\n        props = _objectWithoutProperties(_props, ['onEnter', 'onEntering', 'onEntered', 'onExit', 'onExiting', 'className']);\n\n    delete props.dimension;\n    delete props.getDimensionValue;\n\n    var handleEnter = createChainedFunction(this.handleEnter, onEnter);\n    var handleEntering = createChainedFunction(this.handleEntering, onEntering);\n    var handleEntered = createChainedFunction(this.handleEntered, onEntered);\n    var handleExit = createChainedFunction(this.handleExit, onExit);\n    var handleExiting = createChainedFunction(this.handleExiting, onExiting);\n\n    var classes = {\n      width: this._dimension() === 'width'\n    };\n\n    return React.createElement(Transition, _extends({}, props, {\n      'aria-expanded': props.role ? props.in : null,\n      className: classNames(className, classes),\n      exitedClassName: 'collapse',\n      exitingClassName: 'collapsing',\n      enteredClassName: 'collapse in',\n      enteringClassName: 'collapsing',\n      onEnter: handleEnter,\n      onEntering: handleEntering,\n      onEntered: handleEntered,\n      onExit: handleExit,\n      onExiting: handleExiting\n    }));\n  };\n\n  return Collapse;\n}(React.Component);\n\nCollapse.propTypes = propTypes;\nCollapse.defaultProps = defaultProps;\n\nexport default Collapse;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/Collapse.js\n// module id = 170\n// module chunks = 0","// Source: http://jsfiddle.net/vWx8V/\n// http://stackoverflow.com/questions/5603195/full-list-of-javascript-keycodes\n\n/**\n * Conenience method returns corresponding value for given keyName or keyCode.\n *\n * @param {Mixed} keyCode {Number} or keyName {String}\n * @return {Mixed}\n * @api public\n */\n\nexports = module.exports = function(searchInput) {\n  // Keyboard Events\n  if (searchInput && 'object' === typeof searchInput) {\n    var hasKeyCode = searchInput.which || searchInput.keyCode || searchInput.charCode\n    if (hasKeyCode) searchInput = hasKeyCode\n  }\n\n  // Numbers\n  if ('number' === typeof searchInput) return names[searchInput]\n\n  // Everything else (cast to string)\n  var search = String(searchInput)\n\n  // check codes\n  var foundNamedKey = codes[search.toLowerCase()]\n  if (foundNamedKey) return foundNamedKey\n\n  // check aliases\n  var foundNamedKey = aliases[search.toLowerCase()]\n  if (foundNamedKey) return foundNamedKey\n\n  // weird character?\n  if (search.length === 1) return search.charCodeAt(0)\n\n  return undefined\n}\n\n/**\n * Get by name\n *\n *   exports.code['enter'] // => 13\n */\n\nvar codes = exports.code = exports.codes = {\n  'backspace': 8,\n  'tab': 9,\n  'enter': 13,\n  'shift': 16,\n  'ctrl': 17,\n  'alt': 18,\n  'pause/break': 19,\n  'caps lock': 20,\n  'esc': 27,\n  'space': 32,\n  'page up': 33,\n  'page down': 34,\n  'end': 35,\n  'home': 36,\n  'left': 37,\n  'up': 38,\n  'right': 39,\n  'down': 40,\n  'insert': 45,\n  'delete': 46,\n  'command': 91,\n  'left command': 91,\n  'right command': 93,\n  'numpad *': 106,\n  'numpad +': 107,\n  'numpad -': 109,\n  'numpad .': 110,\n  'numpad /': 111,\n  'num lock': 144,\n  'scroll lock': 145,\n  'my computer': 182,\n  'my calculator': 183,\n  ';': 186,\n  '=': 187,\n  ',': 188,\n  '-': 189,\n  '.': 190,\n  '/': 191,\n  '`': 192,\n  '[': 219,\n  '\\\\': 220,\n  ']': 221,\n  \"'\": 222\n}\n\n// Helper aliases\n\nvar aliases = exports.aliases = {\n  'windows': 91,\n  '⇧': 16,\n  '⌥': 18,\n  '⌃': 17,\n  '⌘': 91,\n  'ctl': 17,\n  'control': 17,\n  'option': 18,\n  'pause': 19,\n  'break': 19,\n  'caps': 20,\n  'return': 13,\n  'escape': 27,\n  'spc': 32,\n  'pgup': 33,\n  'pgdn': 34,\n  'ins': 45,\n  'del': 46,\n  'cmd': 91\n}\n\n\n/*!\n * Programatically add the following\n */\n\n// lower case chars\nfor (i = 97; i < 123; i++) codes[String.fromCharCode(i)] = i - 32\n\n// numbers\nfor (var i = 48; i < 58; i++) codes[i - 48] = i\n\n// function keys\nfor (i = 1; i < 13; i++) codes['f'+i] = i + 111\n\n// numpad keys\nfor (i = 0; i < 10; i++) codes['numpad '+i] = i + 96\n\n/**\n * Get by code\n *\n *   exports.name[13] // => 'Enter'\n */\n\nvar names = exports.names = exports.title = {} // title for backward compat\n\n// Create reverse mapping\nfor (i in codes) names[codes[i]] = i\n\n// Add aliases\nfor (var alias in aliases) {\n  codes[alias] = aliases[alias]\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/keycode/index.js\n// module id = 171\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _inDOM = require('../util/inDOM');\n\nvar _inDOM2 = _interopRequireDefault(_inDOM);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar off = function off() {};\nif (_inDOM2.default) {\n  off = function () {\n    if (document.addEventListener) return function (node, eventName, handler, capture) {\n      return node.removeEventListener(eventName, handler, capture || false);\n    };else if (document.attachEvent) return function (node, eventName, handler) {\n      return node.detachEvent('on' + eventName, handler);\n    };\n  }();\n}\n\nexports.default = off;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-helpers/events/off.js\n// module id = 172\n// module chunks = 0","import _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport uncontrollable from 'uncontrollable';\n\nvar TAB = 'tab';\nvar PANE = 'pane';\n\nvar idPropType = PropTypes.oneOfType([PropTypes.string, PropTypes.number]);\n\nvar propTypes = {\n  /**\n   * HTML id attribute, required if no `generateChildId` prop\n   * is specified.\n   */\n  id: function id(props) {\n    var error = null;\n\n    if (!props.generateChildId) {\n      for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        args[_key - 1] = arguments[_key];\n      }\n\n      error = idPropType.apply(undefined, [props].concat(args));\n\n      if (!error && !props.id) {\n        error = new Error('In order to properly initialize Tabs in a way that is accessible ' + 'to assistive technologies (such as screen readers) an `id` or a ' + '`generateChildId` prop to TabContainer is required');\n      }\n    }\n\n    return error;\n  },\n\n\n  /**\n   * A function that takes an `eventKey` and `type` and returns a unique id for\n   * child tab `<NavItem>`s and `<TabPane>`s. The function _must_ be a pure\n   * function, meaning it should always return the _same_ id for the same set\n   * of inputs. The default value requires that an `id` to be set for the\n   * `<TabContainer>`.\n   *\n   * The `type` argument will either be `\"tab\"` or `\"pane\"`.\n   *\n   * @defaultValue (eventKey, type) => `${this.props.id}-${type}-${key}`\n   */\n  generateChildId: PropTypes.func,\n\n  /**\n   * A callback fired when a tab is selected.\n   *\n   * @controllable activeKey\n   */\n  onSelect: PropTypes.func,\n\n  /**\n   * The `eventKey` of the currently active tab.\n   *\n   * @controllable onSelect\n   */\n  activeKey: PropTypes.any\n};\n\nvar childContextTypes = {\n  $bs_tabContainer: PropTypes.shape({\n    activeKey: PropTypes.any,\n    onSelect: PropTypes.func.isRequired,\n    getTabId: PropTypes.func.isRequired,\n    getPaneId: PropTypes.func.isRequired\n  })\n};\n\nvar TabContainer = function (_React$Component) {\n  _inherits(TabContainer, _React$Component);\n\n  function TabContainer() {\n    _classCallCheck(this, TabContainer);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  TabContainer.prototype.getChildContext = function getChildContext() {\n    var _props = this.props,\n        activeKey = _props.activeKey,\n        onSelect = _props.onSelect,\n        generateChildId = _props.generateChildId,\n        id = _props.id;\n\n\n    var getId = generateChildId || function (key, type) {\n      return id ? id + '-' + type + '-' + key : null;\n    };\n\n    return {\n      $bs_tabContainer: {\n        activeKey: activeKey,\n        onSelect: onSelect,\n        getTabId: function getTabId(key) {\n          return getId(key, TAB);\n        },\n        getPaneId: function getPaneId(key) {\n          return getId(key, PANE);\n        }\n      }\n    };\n  };\n\n  TabContainer.prototype.render = function render() {\n    var _props2 = this.props,\n        children = _props2.children,\n        props = _objectWithoutProperties(_props2, ['children']);\n\n    delete props.generateChildId;\n    delete props.onSelect;\n    delete props.activeKey;\n\n    return React.cloneElement(React.Children.only(children), props);\n  };\n\n  return TabContainer;\n}(React.Component);\n\nTabContainer.propTypes = propTypes;\nTabContainer.childContextTypes = childContextTypes;\n\nexport default uncontrollable(TabContainer, { activeKey: 'onSelect' });\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/TabContainer.js\n// module id = 173\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport elementType from 'prop-types-extra/lib/elementType';\n\nimport { bsClass as setBsClass, prefix, splitBsPropsAndOmit } from './utils/bootstrapUtils';\n\nvar propTypes = {\n  componentClass: elementType,\n\n  /**\n   * Sets a default animation strategy for all children `<TabPane>`s. Use\n   * `false` to disable, `true` to enable the default `<Fade>` animation or any\n   * `<Transition>` component.\n   */\n  animation: PropTypes.oneOfType([PropTypes.bool, elementType]),\n\n  /**\n   * Wait until the first \"enter\" transition to mount tabs (add them to the DOM)\n   */\n  mountOnEnter: PropTypes.bool,\n\n  /**\n   * Unmount tabs (remove it from the DOM) when they are no longer visible\n   */\n  unmountOnExit: PropTypes.bool\n};\n\nvar defaultProps = {\n  componentClass: 'div',\n  animation: true,\n  mountOnEnter: false,\n  unmountOnExit: false\n};\n\nvar contextTypes = {\n  $bs_tabContainer: PropTypes.shape({\n    activeKey: PropTypes.any\n  })\n};\n\nvar childContextTypes = {\n  $bs_tabContent: PropTypes.shape({\n    bsClass: PropTypes.string,\n    animation: PropTypes.oneOfType([PropTypes.bool, elementType]),\n    activeKey: PropTypes.any,\n    mountOnEnter: PropTypes.bool,\n    unmountOnExit: PropTypes.bool,\n    onPaneEnter: PropTypes.func.isRequired,\n    onPaneExited: PropTypes.func.isRequired,\n    exiting: PropTypes.bool.isRequired\n  })\n};\n\nvar TabContent = function (_React$Component) {\n  _inherits(TabContent, _React$Component);\n\n  function TabContent(props, context) {\n    _classCallCheck(this, TabContent);\n\n    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n\n    _this.handlePaneEnter = _this.handlePaneEnter.bind(_this);\n    _this.handlePaneExited = _this.handlePaneExited.bind(_this);\n\n    // Active entries in state will be `null` unless `animation` is set. Need\n    // to track active child in case keys swap and the active child changes\n    // but the active key does not.\n    _this.state = {\n      activeKey: null,\n      activeChild: null\n    };\n    return _this;\n  }\n\n  TabContent.prototype.getChildContext = function getChildContext() {\n    var _props = this.props,\n        bsClass = _props.bsClass,\n        animation = _props.animation,\n        mountOnEnter = _props.mountOnEnter,\n        unmountOnExit = _props.unmountOnExit;\n\n\n    var stateActiveKey = this.state.activeKey;\n    var containerActiveKey = this.getContainerActiveKey();\n\n    var activeKey = stateActiveKey != null ? stateActiveKey : containerActiveKey;\n    var exiting = stateActiveKey != null && stateActiveKey !== containerActiveKey;\n\n    return {\n      $bs_tabContent: {\n        bsClass: bsClass,\n        animation: animation,\n        activeKey: activeKey,\n        mountOnEnter: mountOnEnter,\n        unmountOnExit: unmountOnExit,\n        onPaneEnter: this.handlePaneEnter,\n        onPaneExited: this.handlePaneExited,\n        exiting: exiting\n      }\n    };\n  };\n\n  TabContent.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n    if (!nextProps.animation && this.state.activeChild) {\n      this.setState({ activeKey: null, activeChild: null });\n    }\n  };\n\n  TabContent.prototype.componentWillUnmount = function componentWillUnmount() {\n    this.isUnmounted = true;\n  };\n\n  TabContent.prototype.getContainerActiveKey = function getContainerActiveKey() {\n    var tabContainer = this.context.$bs_tabContainer;\n    return tabContainer && tabContainer.activeKey;\n  };\n\n  TabContent.prototype.handlePaneEnter = function handlePaneEnter(child, childKey) {\n    if (!this.props.animation) {\n      return false;\n    }\n\n    // It's possible that this child should be transitioning out.\n    if (childKey !== this.getContainerActiveKey()) {\n      return false;\n    }\n\n    this.setState({\n      activeKey: childKey,\n      activeChild: child\n    });\n\n    return true;\n  };\n\n  TabContent.prototype.handlePaneExited = function handlePaneExited(child) {\n    // This might happen as everything is unmounting.\n    if (this.isUnmounted) {\n      return;\n    }\n\n    this.setState(function (_ref) {\n      var activeChild = _ref.activeChild;\n\n      if (activeChild !== child) {\n        return null;\n      }\n\n      return {\n        activeKey: null,\n        activeChild: null\n      };\n    });\n  };\n\n  TabContent.prototype.render = function render() {\n    var _props2 = this.props,\n        Component = _props2.componentClass,\n        className = _props2.className,\n        props = _objectWithoutProperties(_props2, ['componentClass', 'className']);\n\n    var _splitBsPropsAndOmit = splitBsPropsAndOmit(props, ['animation', 'mountOnEnter', 'unmountOnExit']),\n        bsProps = _splitBsPropsAndOmit[0],\n        elementProps = _splitBsPropsAndOmit[1];\n\n    return React.createElement(Component, _extends({}, elementProps, {\n      className: classNames(className, prefix(bsProps, 'content'))\n    }));\n  };\n\n  return TabContent;\n}(React.Component);\n\nTabContent.propTypes = propTypes;\nTabContent.defaultProps = defaultProps;\nTabContent.contextTypes = contextTypes;\nTabContent.childContextTypes = childContextTypes;\n\nexport default setBsClass('tab', TabContent);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/TabContent.js\n// module id = 174\n// module chunks = 0","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n  'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n  if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n    headers['Content-Type'] = value;\n  }\n}\n\nfunction getDefaultAdapter() {\n  var adapter;\n  if (typeof XMLHttpRequest !== 'undefined') {\n    // For browsers use XHR adapter\n    adapter = require('./adapters/xhr');\n  } else if (typeof process !== 'undefined') {\n    // For node use HTTP adapter\n    adapter = require('./adapters/http');\n  }\n  return adapter;\n}\n\nvar defaults = {\n  adapter: getDefaultAdapter(),\n\n  transformRequest: [function transformRequest(data, headers) {\n    normalizeHeaderName(headers, 'Content-Type');\n    if (utils.isFormData(data) ||\n      utils.isArrayBuffer(data) ||\n      utils.isBuffer(data) ||\n      utils.isStream(data) ||\n      utils.isFile(data) ||\n      utils.isBlob(data)\n    ) {\n      return data;\n    }\n    if (utils.isArrayBufferView(data)) {\n      return data.buffer;\n    }\n    if (utils.isURLSearchParams(data)) {\n      setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n      return data.toString();\n    }\n    if (utils.isObject(data)) {\n      setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n      return JSON.stringify(data);\n    }\n    return data;\n  }],\n\n  transformResponse: [function transformResponse(data) {\n    /*eslint no-param-reassign:0*/\n    if (typeof data === 'string') {\n      try {\n        data = JSON.parse(data);\n      } catch (e) { /* Ignore */ }\n    }\n    return data;\n  }],\n\n  timeout: 0,\n\n  xsrfCookieName: 'XSRF-TOKEN',\n  xsrfHeaderName: 'X-XSRF-TOKEN',\n\n  maxContentLength: -1,\n\n  validateStatus: function validateStatus(status) {\n    return status >= 200 && status < 300;\n  }\n};\n\ndefaults.headers = {\n  common: {\n    'Accept': 'application/json, text/plain, */*'\n  }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n  defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n  defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/defaults.js\n// module id = 175\n// module chunks = 0","/* eslint-disable no-param-reassign */\nvar request = require('superagent');\nvar base64Url = require('./base64_url');\nvar version = require('../version');\n\n// ------------------------------------------------ RequestWrapper\n\nfunction RequestWrapper(req) {\n  this.request = req;\n  this.method = req.method;\n  this.url = req.url;\n  this.body = req._data;\n  this.headers = req._header;\n}\n\nRequestWrapper.prototype.abort = function() {\n  this.request.abort();\n};\n\nRequestWrapper.prototype.getMethod = function() {\n  return this.method;\n};\n\nRequestWrapper.prototype.getBody = function() {\n  return this.body;\n};\n\nRequestWrapper.prototype.getUrl = function() {\n  return this.url;\n};\n\nRequestWrapper.prototype.getHeaders = function() {\n  return this.headers;\n};\n\n// ------------------------------------------------ RequestObj\n\nfunction RequestObj(req) {\n  this.request = req;\n}\n\nRequestObj.prototype.set = function(key, value) {\n  this.request = this.request.set(key, value);\n  return this;\n};\n\nRequestObj.prototype.send = function(body) {\n  this.request = this.request.send(body);\n  return this;\n};\n\nRequestObj.prototype.withCredentials = function() {\n  this.request = this.request.withCredentials();\n  return this;\n};\n\nRequestObj.prototype.end = function(cb) {\n  this.request = this.request.end(cb);\n  return new RequestWrapper(this.request);\n};\n\n// ------------------------------------------------ RequestBuilder\n\nfunction RequestBuilder(options) {\n  this._sendTelemetry = options._sendTelemetry === false ? options._sendTelemetry : true;\n  this._telemetryInfo = options._telemetryInfo || null;\n  this._timesToRetryFailedRequests = options._timesToRetryFailedRequests;\n  this.headers = options.headers || {};\n}\n\nRequestBuilder.prototype.setCommonConfiguration = function(ongoingRequest, options) {\n  options = options || {};\n\n  if (this._timesToRetryFailedRequests > 0) {\n    ongoingRequest = ongoingRequest.retry(this._timesToRetryFailedRequests);\n  }\n\n  if (options.noHeaders) {\n    return ongoingRequest;\n  }\n\n  var headers = this.headers;\n  ongoingRequest = ongoingRequest.set('Content-Type', 'application/json');\n\n  var keys = Object.keys(this.headers);\n\n  for (var a = 0; a < keys.length; a++) {\n    ongoingRequest = ongoingRequest.set(keys[a], headers[keys[a]]);\n  }\n\n  if (this._sendTelemetry) {\n    ongoingRequest = ongoingRequest.set('Auth0-Client', this.getTelemetryData());\n  }\n\n  return ongoingRequest;\n};\n\nRequestBuilder.prototype.getTelemetryData = function() {\n  var clientInfo = this._telemetryInfo || { name: 'auth0.js', version: version.raw };\n  var jsonClientInfo = JSON.stringify(clientInfo);\n  return base64Url.encode(jsonClientInfo);\n};\n\nRequestBuilder.prototype.get = function(url, options) {\n  return new RequestObj(this.setCommonConfiguration(request.get(url), options));\n};\n\nRequestBuilder.prototype.post = function(url, options) {\n  return new RequestObj(this.setCommonConfiguration(request.post(url), options));\n};\n\nRequestBuilder.prototype.patch = function(url, options) {\n  return new RequestObj(this.setCommonConfiguration(request.patch(url), options));\n};\n\nmodule.exports = RequestBuilder;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/auth0-js/src/helper/request-builder.js\n// module id = 176\n// module chunks = 0","module.exports = { raw: '9.0.2' };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/auth0-js/src/version.js\n// module id = 177\n// module chunks = 0","var urljoin = require('url-join');\n\nvar windowHelper = require('../helper/window');\nvar objectHelper = require('../helper/object');\nvar RequestBuilder = require('../helper/request-builder');\nvar WebMessageHandler = require('./web-message-handler');\n\nfunction CrossOriginAuthentication(webAuth, options) {\n  this.webAuth = webAuth;\n  this.baseOptions = options;\n  this.request = new RequestBuilder(options);\n  this.webMessageHandler = new WebMessageHandler(webAuth);\n}\n\nfunction getFragment(name) {\n  var theWindow = windowHelper.getWindow();\n  var value = '&' + theWindow.location.hash.substring(1);\n  var parts = value.split('&' + name + '=');\n  if (parts.length === 2) {\n    return parts.pop().split('&').shift();\n  }\n}\n\nfunction createKey(origin, coId) {\n  return ['co/verifier', encodeURIComponent(origin), encodeURIComponent(coId)].join('/');\n}\n\n/**\n * Logs in the user with username and password using the cross origin authentication (/co/authenticate) flow. You can use either `username` or `email` to identify the user, but `username` will take precedence over `email`.\n * Some browsers might not be able to successfully authenticate if 3rd party cookies are disabled in your browser. [See here for more information.]{@link https://auth0.com/docs/cross-origin-authentication}.\n * After the /co/authenticate call, you'll have to use the {@link parseHash} function at the `redirectUri` specified in the constructor.\n *\n * @method login\n * @param {Object} options options used in the {@link authorize} call after the login_ticket is acquired\n * @param {String} [options.username] Username (mutually exclusive with email)\n * @param {String} [options.email] Email  (mutually exclusive with username)\n * @param {String} options.password Password\n * @param {String} [options.realm] Realm used to authenticate the user, it can be a realm name or a database connection name\n * @param {crossOriginLoginCallback} cb Callback function called only when an authentication error, like invalid username or password, occurs. For other types of errors, there will be a redirect to the `redirectUri`.\n */\nCrossOriginAuthentication.prototype.login = function(options, cb) {\n  var _this = this;\n  var theWindow = windowHelper.getWindow();\n  var url = urljoin(this.baseOptions.rootUrl, '/co/authenticate');\n  var authenticateBody = {\n    client_id: options.clientID || this.baseOptions.clientID,\n    username: options.username || options.email\n  };\n  if (options.password) {\n    authenticateBody.password = options.password;\n  }\n  if (options.otp) {\n    authenticateBody.otp = options.otp;\n  }\n  var realm = options.realm || this.baseOptions.realm;\n\n  if (realm) {\n    var credentialType =\n      options.credentialType ||\n      this.baseOptions.credentialType ||\n      'http://auth0.com/oauth/grant-type/password-realm';\n    authenticateBody.realm = realm;\n    authenticateBody.credential_type = credentialType;\n  } else {\n    authenticateBody.credential_type = 'password';\n  }\n  this.request.post(url).withCredentials().send(authenticateBody).end(function(err, data) {\n    if (err) {\n      var errorObject = (err.response && err.response.body) || {\n        error: 'request_error',\n        error_description: JSON.stringify(err)\n      };\n      return cb(errorObject);\n    }\n    var popupMode = options.popup === true;\n    options = objectHelper.blacklist(options, ['password', 'credentialType', 'otp', 'popup']);\n    var authorizeOptions = objectHelper\n      .merge(options)\n      .with({ loginTicket: data.body.login_ticket });\n    var key = createKey(_this.baseOptions.rootUrl, data.body.co_id);\n    theWindow.sessionStorage[key] = data.body.co_verifier;\n    if (popupMode) {\n      _this.webMessageHandler.run(authorizeOptions, cb);\n    } else {\n      _this.webAuth.authorize(authorizeOptions);\n    }\n  });\n};\n\nfunction tryGetVerifier(theWindow, key) {\n  try {\n    var verifier = theWindow.sessionStorage[key];\n    theWindow.sessionStorage.removeItem(key);\n    return verifier;\n  } catch (e) {\n    return '';\n  }\n}\n\n/**\n * Runs the callback code for the cross origin authentication call. This method is meant to be called by the cross origin authentication callback url.\n *\n * @method callback\n */\nCrossOriginAuthentication.prototype.callback = function() {\n  var targetOrigin = decodeURIComponent(getFragment('origin'));\n  var theWindow = windowHelper.getWindow();\n\n  theWindow.addEventListener('message', function(evt) {\n    if (evt.data.type !== 'co_verifier_request') {\n      return;\n    }\n    var key = createKey(evt.origin, evt.data.request.id);\n    var verifier = tryGetVerifier(theWindow, key);\n\n    evt.source.postMessage(\n      {\n        type: 'co_verifier_response',\n        response: {\n          verifier: verifier\n        }\n      },\n      evt.origin\n    );\n  });\n\n  theWindow.parent.postMessage({ type: 'ready' }, targetOrigin);\n};\n\nmodule.exports = CrossOriginAuthentication;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/auth0-js/src/web-auth/cross-origin-authentication.js\n// module id = 178\n// module chunks = 0","export const AUTH_CONFIG = {\n    domain: 'glplus.auth0.com',\n    clientId: 'Op1d5Di3dMhHPFs1e436QoG8gK8WIDm3',\n    loginCallbackUrl: 'http://www.grocerylistplus.com/cblogin',\n    connection: 'Username-Password-Authentication',\n    audience: 'https://glplus.auth0.com/userinfo',\n    responseType: 'token id_token',\n    scope: 'openid profile email'\n}\n\n\n// WEBPACK FOOTER //\n// src/Auth/auth_variables.js","import React from 'react';\n\nimport classes from './Input.css';\n\nconst input = ( props ) => {\n    let inputElement = null;\n    const inputClasses = ['form-control'];\n\n    if (props.invalid && props.shouldValidate && props.touched) {\n        inputClasses.push('has-error');\n    }\n\n    switch ( props.elementType ) {\n        case ('checkbox'):\n            inputElement = <input\n                className=\"form-control\"\n                {...props.elementConfig}\n                value={props.value}\n                onChange={props.changed} />\n            break;\n        case ( 'input' ):\n            inputElement = <input\n                className={inputClasses.join(' ')}\n                {...props.elementConfig}\n                value={props.value}\n                onChange={props.changed} />;\n            break;\n        case ( 'textarea' ):\n            inputElement = <textarea\n                className={inputClasses.join(' ')}\n                {...props.elementConfig}\n                value={props.value}\n                onChange={props.changed} />;\n            break;\n        case ( 'select' ):\n            inputElement = (\n                <select\n                    className={inputClasses.join(' ')}\n                    value={props.value}\n                    onChange={props.changed}>\n                    {props.elementConfig.options.map(option => (\n                        <option key={option.value} value={option.value}>\n                            {option.displayValue}\n                        </option>\n                    ))}\n                </select>\n            );\n            break;\n        default:\n            inputElement = <input\n                className={inputClasses.join(' ')}\n                {...props.elementConfig}\n                value={props.value}\n                onChange={props.changed} />;\n    }\n\n    let validationError = null;\n    if (props.invalid  && props.touched) {\n        validationError = <p style={{color: 'red'}}>Please enter a valid value!</p>\n    }\n\n    return (\n        <div className=\"form-group\">\n            <label className={classes.Label}>{props.label}</label>\n            {inputElement}\n            {validationError}\n        </div>\n    );\n\n};\n\nexport default input;\n\n\n// WEBPACK FOOTER //\n// src/components/common/UI/Input/Input.js","export {\n    auth,\n    authSetProfile,\n    checkAuthTimeout\n} from './auth';\n\nexport {\n    walmartGetAllCategories\n} from './walmartCategory'\n\n\n// WEBPACK FOOTER //\n// src/store/actions/index.js","'use strict';\n\nvar base64_url_decode = require('./base64_url_decode');\n\nfunction InvalidTokenError(message) {\n  this.message = message;\n}\n\nInvalidTokenError.prototype = new Error();\nInvalidTokenError.prototype.name = 'InvalidTokenError';\n\nmodule.exports = function (token,options) {\n  if (typeof token !== 'string') {\n    throw new InvalidTokenError('Invalid token specified');\n  }\n\n  options = options || {};\n  var pos = options.header === true ? 0 : 1;\n  try {\n    return JSON.parse(base64_url_decode(token.split('.')[pos]));\n  } catch (e) {\n    throw new InvalidTokenError('Invalid token specified: ' + e.message);\n  }\n};\n\nmodule.exports.InvalidTokenError = InvalidTokenError;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jwt-decode/lib/index.js\n// module id = 182\n// module chunks = 0","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHdpZHRoPScxMjBweCcgaGVpZ2h0PScxMjBweCcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiIGNsYXNzPSJ1aWwtcmluZyI+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGZpbGw9Im5vbmUiIGNsYXNzPSJiayI+PC9yZWN0PjxkZWZzPjxmaWx0ZXIgaWQ9InVpbC1yaW5nLXNoYWRvdyIgeD0iLTEwMCUiIHk9Ii0xMDAlIiB3aWR0aD0iMzAwJSIgaGVpZ2h0PSIzMDAlIj48ZmVPZmZzZXQgcmVzdWx0PSJvZmZPdXQiIGluPSJTb3VyY2VHcmFwaGljIiBkeD0iMCIgZHk9IjAiPjwvZmVPZmZzZXQ+PGZlR2F1c3NpYW5CbHVyIHJlc3VsdD0iYmx1ck91dCIgaW49Im9mZk91dCIgc3RkRGV2aWF0aW9uPSIwIj48L2ZlR2F1c3NpYW5CbHVyPjxmZUJsZW5kIGluPSJTb3VyY2VHcmFwaGljIiBpbjI9ImJsdXJPdXQiIG1vZGU9Im5vcm1hbCI+PC9mZUJsZW5kPjwvZmlsdGVyPjwvZGVmcz48cGF0aCBkPSJNMTAsNTBjMCwwLDAsMC41LDAuMSwxLjRjMCwwLjUsMC4xLDEsMC4yLDEuN2MwLDAuMywwLjEsMC43LDAuMSwxLjFjMC4xLDAuNCwwLjEsMC44LDAuMiwxLjJjMC4yLDAuOCwwLjMsMS44LDAuNSwyLjggYzAuMywxLDAuNiwyLjEsMC45LDMuMmMwLjMsMS4xLDAuOSwyLjMsMS40LDMuNWMwLjUsMS4yLDEuMiwyLjQsMS44LDMuN2MwLjMsMC42LDAuOCwxLjIsMS4yLDEuOWMwLjQsMC42LDAuOCwxLjMsMS4zLDEuOSBjMSwxLjIsMS45LDIuNiwzLjEsMy43YzIuMiwyLjUsNSw0LjcsNy45LDYuN2MzLDIsNi41LDMuNCwxMC4xLDQuNmMzLjYsMS4xLDcuNSwxLjUsMTEuMiwxLjZjNC0wLjEsNy43LTAuNiwxMS4zLTEuNiBjMy42LTEuMiw3LTIuNiwxMC00LjZjMy0yLDUuOC00LjIsNy45LTYuN2MxLjItMS4yLDIuMS0yLjUsMy4xLTMuN2MwLjUtMC42LDAuOS0xLjMsMS4zLTEuOWMwLjQtMC42LDAuOC0xLjMsMS4yLTEuOSBjMC42LTEuMywxLjMtMi41LDEuOC0zLjdjMC41LTEuMiwxLTIuNCwxLjQtMy41YzAuMy0xLjEsMC42LTIuMiwwLjktMy4yYzAuMi0xLDAuNC0xLjksMC41LTIuOGMwLjEtMC40LDAuMS0wLjgsMC4yLTEuMiBjMC0wLjQsMC4xLTAuNywwLjEtMS4xYzAuMS0wLjcsMC4xLTEuMiwwLjItMS43QzkwLDUwLjUsOTAsNTAsOTAsNTBzMCwwLjUsMCwxLjRjMCwwLjUsMCwxLDAsMS43YzAsMC4zLDAsMC43LDAsMS4xIGMwLDAuNC0wLjEsMC44LTAuMSwxLjJjLTAuMSwwLjktMC4yLDEuOC0wLjQsMi44Yy0wLjIsMS0wLjUsMi4xLTAuNywzLjNjLTAuMywxLjItMC44LDIuNC0xLjIsMy43Yy0wLjIsMC43LTAuNSwxLjMtMC44LDEuOSBjLTAuMywwLjctMC42LDEuMy0wLjksMmMtMC4zLDAuNy0wLjcsMS4zLTEuMSwyYy0wLjQsMC43LTAuNywxLjQtMS4yLDJjLTEsMS4zLTEuOSwyLjctMy4xLDRjLTIuMiwyLjctNSw1LTguMSw3LjEgYy0wLjgsMC41LTEuNiwxLTIuNCwxLjVjLTAuOCwwLjUtMS43LDAuOS0yLjYsMS4zTDY2LDg3LjdsLTEuNCwwLjVjLTAuOSwwLjMtMS44LDAuNy0yLjgsMWMtMy44LDEuMS03LjksMS43LTExLjgsMS44TDQ3LDkwLjggYy0xLDAtMi0wLjItMy0wLjNsLTEuNS0wLjJsLTAuNy0wLjFMNDEuMSw5MGMtMS0wLjMtMS45LTAuNS0yLjktMC43Yy0wLjktMC4zLTEuOS0wLjctMi44LTFMMzQsODcuN2wtMS4zLTAuNiBjLTAuOS0wLjQtMS44LTAuOC0yLjYtMS4zYy0wLjgtMC41LTEuNi0xLTIuNC0xLjVjLTMuMS0yLjEtNS45LTQuNS04LjEtNy4xYy0xLjItMS4yLTIuMS0yLjctMy4xLTRjLTAuNS0wLjYtMC44LTEuNC0xLjItMiBjLTAuNC0wLjctMC44LTEuMy0xLjEtMmMtMC4zLTAuNy0wLjYtMS4zLTAuOS0yYy0wLjMtMC43LTAuNi0xLjMtMC44LTEuOWMtMC40LTEuMy0wLjktMi41LTEuMi0zLjdjLTAuMy0xLjItMC41LTIuMy0wLjctMy4zIGMtMC4yLTEtMC4zLTItMC40LTIuOGMtMC4xLTAuNC0wLjEtMC44LTAuMS0xLjJjMC0wLjQsMC0wLjcsMC0xLjFjMC0wLjcsMC0xLjIsMC0xLjdDMTAsNTAuNSwxMCw1MCwxMCw1MHoiIGZpbGw9IiMzMzdhYjciIGZpbHRlcj0idXJsKCN1aWwtcmluZy1zaGFkb3cpIj48YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iIHR5cGU9InJvdGF0ZSIgZnJvbT0iMCA1MCA1MCIgdG89IjM2MCA1MCA1MCIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGR1cj0iMXMiPjwvYW5pbWF0ZVRyYW5zZm9ybT48L3BhdGg+PC9zdmc+\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/assets/loading.svg\n// module id = 183\n// module chunks = 0","module.exports = \"data:image/gif;base64,R0lGODlhgwOxAPcAAAAAAP///yGHN+wgJO0hI+wdJOwfJCWKNyiLNyqMNy2ONy+PODGQODORODWSODaTODeUOP7//v3+/TqVODmUOD2XODuWOD+YOD6XOEGZOEOaOEWbOEecOUmeOUqeOUidOU2gOUyfOU6gOWywWlKjOVGiOVChOVWkPFunRVWkOVSjOYO9cFimOVelOVuoOVqnOajRltbpzlyoOV+qOl6pOl2pOuLv3Pv9+mKrOmCqOs3kwez152atOmWtOmOsOpHFc/X68mmvOmeuOm2yOmyxOmuwOnS1R3G0OnCzOm6yOnW2O3S1OnO0Onm4O3i3O3a2O326O3y5O3q5O4K9O4C8O3+7O4a/O4W+O4vCO4rBO4fAO4/EPI3DPJTHPJLFPJjJPJbIPPy3E9WeGfy0E/q0E/uyFPavFPCrE+ajEsmPELqED/y3HPuwFPusFPuuFPaqFO+mE9GTEax3DtuXEsOJELN8D/CyNvurFPqpFfqmFe6eFOOaE9WOEsuJEcODELx+EPSlFfC3TvfEZ/qhFfqjFfqkFfikFfimJN2WI7+HKPqfFvqgFvmgFvmcFvmeFvmbFvmYFvmXF/iTF/iVF/iRF+SJFbZrEe+MF/KUIfiPF8NxEviOGPiNGPeMGNN6FL1tEq9mEcx0FLRmEuuZPfeIGPeGGPeKGON7Ftt7FbpoEuh/F9R0FcpuFMJrE/eFGfeDGe+AGNtzFtJwFfWCGfOBGet7GOB3F/B9GOR0F/Z9GfaAGfZ+GfV/GfJ+GfF6Geh2GPZ8Gu52GfZ5GvZ6GvV4GvV3GvR7GveTR/V1GvVzG/VwG/RvG/RtG/RrG/RqHPRoHPRlHPRnHPNkHPNiHPNfHfNhHfNdHfJZHfJaHfV+S/JWHvJSHvJUHvFRHvFMH/FOH/NfM/FJH/FKH/BHH/FNI/BDIPBEIPBGIfWGbfBBIPA/IO8+IPBIK+88IO87Ie87IvJiTu82Ie85Ie4zIe40Ie4yIu4tIu4uIu4wIu4rIu0qIu0pI+0lI+0nI+0jI////yH5BAEAAP8ALAAAAACDA7EAAAj/AP8JHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqXMmypcuXMGPKnEmzps2bOHPq3Mmzp8+fQIMKHUq0qNGjSJMqXcq0qdOnUKNKnUq16sRp06RJgwYt2jNnzpoxG7tMmVmraNOqXcu2rdu3QLFZm0uNWjWsWrl6BSuWrFllyZIhQ1asGDG4iBMrXsy4seOl2q5dwyaXrl28W7t+DTuWWVmzgQcXJkZs2DBgwB6rXs26tevXsAVy46attmTKc63VvZs1817OfkELJmy49GlguXbpis28ufPn0KPL7LZt2+zakSdX1n25t97NfT3//w1NnLRp1Ml1qZ/1yuSSJ06cNGkiJQoUKFWqUJky5coVK1ZokUUWWGDBBRdbbOHFgl10AQYYX3wh3YQUVmjhhSt980031FlHm23a5bYbZt/x1dlngA03mnHoKbfeK6+4AhISRxzBxBLvxTdfffflt19//wU4YIEHJrigFw0+KCGGTDbp5JNQEuSNNxpyWN11IOJmGW95aWZicCmKVtx5yLmoC3sxllIKKRsNMUQSNNqII3zy0Wcffvrx5x+AAhJoIIIKMuggGFEWauihiDYWjjhTUrlhh1hmpyV3XPoG3onjqTjmcem9mOaapJhyURFFEOEmnDXemGOdPOL5455C+v9ZZKBIOpjorbjmqqtS44SzaKNVQvqhpNuN6J2XwIknnJjmcWommq6oSUqopnQyEQ9CBEGqqW/GqaoSOtrZY55A8jnkn0YKuuu67Lbr7kvjxOsro1MGe+WwtxXbXZe/hYcieSuS2emZMEYLqinVdsIJRD3wgG0Q2nKLqpxLgMvqnT7qGWSfRAJ6ZBfvhizyyCRTZI458fb6a72P3otdviLua+mXyoZZHotlqkfwp9Mi3InCm2TCEA44+NDwwxGf6i2OFu+IMbmwcowurSVXbfXVI5dzcsrzAtuyhy+HuCWJyPqbKbM4DwyttNT+zEnQC+WQA9FGO5xt0t2mynS4rWb/XG6sHaeL9eCEFx5lOuVojbK8KztqJdhZ6ltpicn+q2mzLeq89sEJvy10QjXMIDfdR99dqtJ6V8z3069ufO6sXhgu++y0M6dOOogrznXj9kJObMyTl43psjcL/GzBbPsMtEIuyBD66EWXDvHpeVPctLiuamyurIDW7v334MOlzu25b804vY4LG/akxvJ7KZgAb5q5pwb33PkmCb3wQvPPzx293dOT2NJUd7FxtW57gQufAhfIQKesY3y4S5z5VIa+3kUKZmM7Vr+GZ7OAOUtzyOOc2xLSAhboj3+i81/dkEa9iX1rdQbUHuD+1MAa2vCGPHFHOx5IPgkujoJee9wF/8VGKbJtEH6XS9vxeNY2hZGwhCd0XgpJB0C8uXBvBcze36TGBRx68YtgXIk7dMjDCOrufEFUX+SAZ8T31Sx+mMsZ/ZKXsISkIAUtgOL+pAi9FZpOgDT6FnycFsMtCqhAYUykIhepEXmMcYcQLN8Pu8YyIeKLiO2bWeXOVrwPzlGE1joICVRwxzyacI81oEEffWA3I8DglbBcQSCZNkjs+S1qh2SkLnfJS4TI45ePLKMkd1fBrw2RfTKjnNmI58H57ax+TURICUZZSj3yT5UqZGURbBCAbnpTAj+YZcVq2TeobUxAvUynOhUZj186koyR9CEx0+iyNWbQfTSzHNqMB/9CJvoMISYwwTRJiUdrOg+bdPPBD7zJ0ADoAAniVAI5WSdDLWhhnRjNaAPj0U5gwrOHZwRiJdX4uy1NJIn8/KT9QmkQEQR0oNU85TX7uNCGdlMHcIroRAsZNY369Kez42hH3wlJkE6Qkumr5+86Eke1hXClBwkBCFwqUGoWVKYHhV5NbaqDbuk0i7cMElDHStaS0UOo7gxmPEOKVAviqyTO3BxUDRICqVIVpleNYipHt9WGdtWr1tupFvdU1sIadlfzOCtH0/pRMx6Vd8akzUqWCE2EHaQDHqjrVF9qVVPqFZt9ZagOABlYsJrzsKhNbZTqkVi0erSojp0kZB8HE5X/UusgH8CsZu/aWYPuNbTe1EELIVpaQg5WtchNLoXqwVrFDlWtRpVtMTlUk6fe1iAcyG1m7cpZgnoWlTQA7k21VQSlfdW4flOuetcLG3wwt7WLfa0w5YlGluWksqLCbnZ1y92qkiCmJuSfeB06vfICVpCm3Q97F8xgxuDDvc11LVHny9bG9YRzBtnABjiw3+1u1r8A3uOAdWA6A+e0uLbUT4NXzOK13OPB73UuY2E7TDQCxX4G0YCGOazd3b70BCNYgZCHLGQY2LSbMfiBkpe8ZCOcN8UtjrKUoXKPF0MYvs9tbI1VRhTLFkQDOt5wh32MAm4e+cxo9uYNwonivk35/81wPkqVYRzh+E54rUeVCDrgkZMMgHnHY7arkdNM6DPvgLgINm6cF83onthjzleWsXzx/EOI7Pkdv+yzn8PMY/6CYNCFDrU3gXDiRIur0ahO9Uzs8Wgrx1jC0I3tOCzNjnW0Y4zyyMkFMrBpQPc4BKAWdaiBcGBaXkzVyE52SvLBaki/2s6xluRDslGOdIzP1mPU9a57LeYeB1vYhCZ2scfJKmWb+9wgYXar6YzlGVPYHA7JxjnMkThrqwPbOanABbb9525j9tvgRjMQTnfiIxhbPuhOuMItog91O7vOWaZxORyCDnLE62T1vnY7cmIBffOb0/sFeMCPPHCCE9fg5P92wsJXznKG7KPhzXY1xN0dyYagAxzeEEc4Lk7val+b4x3fN6/7zeMVjLzQOiCvqQpOy5Y7/ekD2cfLHS7zdk/6dg3JxjcapXOeZ1wdOZmABYL+cV//QAcxSLva025mmwJh7XDXgREKvPSTMw3qeGe51GG+7kjD+qMNAUc3NMT1nV8842EXO9mHDvJff7gERj+yDg4quoQ2rMR1jxOO8s55dPdj71Rnt6TvzBB0aKM6g9/6lLp++GrnBAITULzHGe9rT1M18ly9ZuWLVjfMA9bgnQ9+sj8/9ZiL/u87ZEg2asMN1BN+9YYfR89fD3vZC53bnfawS3HvV/Du3ge9p/v/74VP/kbzg/h8f7jViZp17DR/G6kvfMronZMHQKD6Y5899gM9Ve6LNsCUl02XJ345VX4GCGf8cH6gZ3x+B206lHXX4H7Op3o5F33whhMOYH/4t3j753j+F1wsAICp9H3hp3TdcoAoGGUJiH6h14BZFm/YEIHMN4HyFy854QAZeH+xl3/XR3SB9oE3VUIiSAMkOIAmmAQpmIQMloAKWHx992zPNW2UIYPa8H7xB302iBMNgIMPYH87yIE+2GNA6FCmNIRFyEKlooRquF5MyIIMCIXuBBHZYA1TKIHwpyGq13U50QBbmIFeaH1l528eMIY6cFVmKIBouIaKqFr+0IYL//iEM5dp0zYXdTiDd/h8OpcTDMCHXPiHPBiInUaIIaZ7iGg6i3iKhtWIK/iI6idpEZEN1ECJMWiHqZeHmriJfdiFG6h/YTgCEXBkMPBfhuh9pRgEqHiMY+UPqtiE6Vd1MiYRsBiLdDiLlliLU5ITC8AAuNiJu9iDjfcDO8BQN6ADKEACwliGxGh52IKM7KhRyuiITtiKQjUR2VANdSGLVGiFeOgN2JiN2+iH3QiK/Mdb5yiE6ch7PdCOVSMADKmQI/GOqxiPzjiP0DgN9iiNlViFE/gNOaEAC+CPnAiQX8iLjWd7nFWQIXiQPuCQI8OQLtmQM/GSMNlyBACRzNiCz/9GEdkgDRZ5j9OYjxPYkR4JkrnoiWBYktp3kqMYgETDkiEjky8pE1A5k84xldFRk8vohpAIXzqpFT2JkdSokXeYEwmgAEOpjSGpiyPpjbWXlCA2jKTolI4xlQIwEnTpkjFBlzpxl3zZlx1hlc9BAFgJj814fBWRDdDglReJj7RIlmV5lv+olrKHAQLpeAS5lKkkl3MJmCHhlzChlznRl6LpmRfBmc0hmDaplfJ4mFyhmD6Zke/nmI/5kWhZlLtImbQniD72lujYPJq5mVBpl3yZl6ZpE6N5nMNZEcUZG6iZlazojBaRDdHQmjy5mD8pgTmBAAmwnWZJm5FplBWAmx3/aJK8aZC/CZwyKZx3SZzBGZrI+Z7tORHL+RoD0JyEiZPNFZ3PMJ2JWZ2vGZbckJ3ayZ2QmZbgKZ5hSJ7ThJLniZ5RKRKk6RKgiRPwWaHpKRHz6Rr1OZgRWZhXdhHZ4Az7SZ1fyZi1kRMHgAADOptEyY0jiaBIuZsLWkoN6qB4CaHJ+RITehMW2qNU6RAZ2hobmprPyW4XcQzNIKL86ZpgKYMomqIr2p0tKpKTWZkKao41+hg7ChLryZ4XSqE+2qMREaSrYQBD6pwSSWcYcQzMkKQj2p8lep1PCqXbyaK16aJVmpvZJ6NZqqVkqhFbKqF/qqPxiaHHCRGD6hhmap8d/4qfazoWbrqk/tmkc0qnBOqdBnqbVqp9faoagcqlDyqVidoSo7oQEcoQpboYi8qhN/mG9bCmywCpSkqi1kkZoXkAuGqpdvqdmqqnY9apq/GpaSGsovqlGJGjqFqosLGqRJqm7pURx6AMsdqmswqnteqeuaqrUnqnAEkBebp/wNoaxGoV4/qZylqaXZqsxvoaBcCsaOqhr7qmZjGtkUqrPumeApCtKlqn28qr3pp/uBmuzFGuVEGwgrqux2qw/5CqidGuZ3qfbwityTCvsvqmTGoNAntYChsVG7sSDNsQCvuxcOGwjNqqfacRxxAYFEutFjupGWtYHfsUMZsSImuqBv9bs25BsqyqmlaGsoExsdJasZLaky9bWDPbFEd7EjirEDd7rqxRADrbrB6Kssjwsytbr9ZatGWVtEvBtSWxtAnRtAj7tFH7ri2IssUwGCobtCw7tFpLVl6bFHGrnqHKEWJbt64Bte4Kseu2EcdQGGoLtPRarVrBS4fKo6MZk4lLMnOrEsj6EI3bmU6bEYkKtj7xuAyhtw/bqMbnt8QAuFUruELbmoPzoxQhpuaKujSruoKKGJFrEsiJqJaLo2NLuYM6u3t5uJlbtnw7Z347DJ+btqF7tdX6EUrUT/jlNkFDCcwrCZIwCZMQCZEACZDwCI/QCI3gCI7ACIswCINACIX/kAfiiwd4cAd30AZt4AZuwAY8ka6yG6amC7vwe6MkMb916big+bphi7sgy790G7v9O7nFircbQbCj6r8GIbIWurt7y7l9i7LAALygu7aDO6IdIT9y9Ex0pLyZwLyU4LzQK73Ua73Yq73c673gK755QL7mi77qywZsUAYybJyiCbn2S7/ye8M47BE6HL+g6pcIfBD6a7MCbLdFLMSsu79HTKi1m7BLfMBLbBEf66MLobkly7P44LeoIcHCS8FCyxHNlMFy1USe48EgHL3TW73Xm73b273fG77jW77nm77rG8MyPAaKW8NA2sM7/MN83Me2+8f/26VDnMBRXMBBjMRN/6zIVMy0iYzIiyzFUQzFkYyulVwQ84sQUMu7DlxlHHEMubDFwRu4xPsMYIzBTuVP99PBzfu8aDzCa2zCbpzCcdzCdAzDMlwGYzAGYZC6eqyuf3y/fhzMgKycxOzDgfzLjywQhezIh2zJBKzE8OvMl0yqz/y+l0zJ0QzJ24wQN3wQm9zAJuvJfrsLoRzBozy8bJukG9FJcWVdylPGrRzCaUzCbHzCb6zCLDzHL2zHuszLTPzL1HzMwmzE7zkQC5zMx/wRAMzMy7zM3gzRCH3Ieqy7hnzN+FvNY1q5FI3RG63RFb24BBHOmzvO9/DJumDOojzBotum7RzGqZy8QMPKH//syiKsxiXcxigMxyssxy5cx7m8y2HQyx570ER8qoyMudDsvket1B/t1Jgs0E5s0Qvr0Xts1ZKM1U9dzBctwFDdzNzM1VmdzR2t0fL5zExNEJhL0lf8nCid0ufMxaTMthqxT56kwaAkzzVNz7Cc0/hMyz1ty/0c1LxM1Kvb0NKc1gP9ulJtw1AdwIrd1Fod1Yjt0JOd2MgsuZd91d2s1hy9yI1c1GbN2WRdzRCtzZ090WPL1jvr1n47C+qh0ujM0hRb1+4sxvC8ymZs0/Ucyzqdz7XMz0B9x4Wd0ZGN2Vjd2Gd93I6dtEiNzZut3JQ92pCd2gwt0ZZt3VUN0qkd2sb/Ldane7fgrdrabcymjdbbzNpSS3Wf/AqwDdcr3cWCa9swTVkbPNO7zdc4fc+zzNP7/NO4TNxD/d3Uvd2W+9ikXeDIPd5dvdkGftkI7tkKvtiZPcwMPtUMnqrdncQogcDMLeHlfdplXd7ZrclW3NoS+cmzsOKxHdfpvLYZgVJ3PcbxvLzz/Mr7Lcs7rc8+fcv+LNSGncMK/OHNPdkRbqgxS+TQTeINbtZDjN1JfeFLXeEPTuVCDMzwac0THuUhPuJSvtzarcAJod5mG3OfTAto/t6yLdfDG+N2/c6qzMH5jeP2rOPAHdjCHeD/POBKq+RNzuRYruBHDuZOXsh+Pt0e/+2/YC3ZVo7hVP7I3n3YgE7hUo7ajR7epT3pVXzi623mGzEKsBDqsNALvcALa/7iyYARcHS8tlXjNH3GN13nvw3Y/+3jhM3nQl7gg77kmn7ohH7pVf7lvF7QRd7r/AvlXE7sFq7sf77sVN3hDi7dXJ7gzB7WVo7AZN67J/3pqtDtoX4Lt0DqLj7Bqi7jcC7Teg3rve3X/c3jgj3cex7kgyzs5L3llF7t916/9L7ovh7swI7o/77gLLHoID7ekI7smK7pBd+xlo7vCn3tDj7SnF7mrcYRo9Dt3V4LGl8L4O4LxmAMbH4RHYTK9p3XNr7XdO7bf+3fPT7YAi7vtCvoBP/f7wTv2Uge8RGN0V7buAj/5w5v7T8f7M6euwSt814e8Lxe3UivENneyduuEaNwClKP8Ruv8b5w9aQBuCK/6imF1yuF3zce6yrf7sEN4D9e3F+LszXv78O+E2u/sXN74D0P8Eu/1Y+O83Qf9Adb9Pt+9Hpv3mGO9//Q9CZt8aiAClKf+KdQC7+g8cHw+L4QDIWx9eaO23EO9igv9uy+42Vv6y+f6/Se3fau9JUu+Dz89qUa92C79gKv75ke+oFe92nP90jf8DF/4f5L+Dxr+Id/+Lag+L8Q/L/w+MRvEcxE8sh73+nO233N35yP52Z/6zB/3VrN+mxP+n+v5aNP7dT/nv2UPtYKD6hQ/tnh//34yvcJj/umv/B/n/sTr+0W7wny3/u2UP/1jwu4IPzDHwzGDxDKkiVDhqxYMWLEhg0DBizXLl0RZ7165apUKVKkTJnq1InTpkyUREqSNGlSpEiQID161KiRI0eMFg0aRKhQHpx48Ny506aNGzds2JQhOmZMmDD/lC5l2tTpU6j/BEylOjXqVaVVq2Ll2jWrVqtdwQrwWtZs2bFkz679ClbsWLZP4caVOpfu3bpu8b7Vyrfv3qZpAQ+Wm9bwYcN37WJdTHhp46iCBxegbGAAAQL+/PHj3G/fPn357Nm7d8/xKE+pU69ChSqWLdi2cM3+Vfuu/zKBBA0iVMjQIUSJFC1i1MjRI0iRlEiaRKmSpUuYMmnaxJlHJ0+fQIUSLWMUqePIetlKBh9e/FXI5fGSVx84vdP34+Nznd/e/Xn79dvi38vePl3EAgywP/6g0k+xAgs7sCvKCrAMM80448cz0EQjzTTCRgllQ09W6XCVWEIUUbbZcMErt4IOSmihhh6KSJeJKrooo406+iikkUo6KaWVWnoppplquimnnXr6Kaihijoqqf/y+ku+BNvzT8EnmwRwwcH0mxLBKs3a0kqmvgRvwcQIExNM+gRUkyrHyIwSMCzLxKvBBzPbrLPPQhuttNM29DOUVQINVERCTUTz0ETqkP9jUUYbXbSONNDwjsn/zmTsTfUsdZLNQ+PStE1MN+U0SyzDDNXKTwnsEj051yu10/3WDAvVU0VVS8paY131LDovs1NCCvW80DFMNDH2zw1lkUVQEEWEFcw/6pB22mkdXTQNMr5r8tX7toJVy1yffUxWcsv11rxzzQxX11nFZffWSnMd0NV1v6033l2pHDXTcOeNqzJfI8Szwj3vwYcwSUIx9lhklXVYlhDd/e8PiiuumFqM09A2P25NzRffdA28115zS16T1ZFR/ljklQ9Nld6QLz0M5pgl1rddm9n1qmO01vV3LYAhvHPCPC0s7eDBJkHlk4UXZuXppx9WNmf1/LD/+mqr1dB6a67VQINSXFN+Wd03xxbXZLTVVLlmmvdNM2VQ4e65Zfh+Pstsktl21026udQb3VbLCvrXgYU9mrBJJNHkE8ab1gRqyKem2rFA+rD88j7o0HxzOrqOA2x+xebZ77/xzjtt1MsefW23Wcd579Xn/ptlxKDsW+LYx6w1d9dtn9mswQUmmuALkQYskkkqscQSxhlvpRVNnof86clP4+N6zC9Po480ONc8DVpFl9v31j2+HffU01/Z9LfP5x3O92WeHfDA25/f5vjhvz3/us/vv3avBG9owTKawQgDCeR5YnnLa57zntcKqFWPMIi4XgUrGAcMxiENG+TgBsPn/79u3U93qgPh2dR3Qnj9T4Rr4VsJw+ZCFooPgDvj3whXCKYWlo9sN1Rh/aAiQGAVrWD4MB5eVJLABS4vFQ184PMkOJg5RFGKU5xDBq2YwQ/y0HxaVNX6xpdFHUqQffYL4xZfh74vkjGFMbQb/c4oxjSSan9xvNka2TjDqzgoYAMUYvGKeJdHHHESngAFKEQhCiWmQpGpeOAT9yKIPURSkpGkYiXjIAYwvtEvXGybJm1lxyeOEU2ilF8Z3wVHOrpRf78rpSlzVkPSedKMoJQjJ3uoHz0KLYjEO9of6cISQVbiE4U05CFFsUhFOhIvgdBDM5s5SWhSUop2yCQt1WjNF/+WDpZxg6HLtvnJVmLzdK5cJTlpyEo3ihN/qezkOW25SVneDY9PySXhhmc4g/kyLo0AJgJNUglNELOYh0ymMulyCGcm1JloYGhDHRqIal6JnWoMpzrXOVFuvpOi6QzlN2dpw/qQclsY9dTuSGqr8syzKfUUHgGHiI96AMYR/AykPxN3CVRoQhTENKZB6VITQhjCEIAgKiDgcFSkIrWhgoioRDVKPnF6tJbmRGM34alJkWaUqrG0qJd8OMuumtCqKTXpWMMZuvmwlI+8zGdM96KImfJTkImThEg6cQlV5PUUGSmFK1zxillEZBe5aMgwElKMggwEN8tgBjOa4QxnPCP/GtCQhjSmMQ1qUMMa1sAGNq5xDW1ogxvc2EY3uvGNb3jDG+IIRzjGMQ5zmKMc6UiHOqIiCCFVRyc6eUNve3sG4AYXh6uTah036lOdIRecHItSceV50nGZlXZehG47USlCj37zq0qpU0v72Eu34mURcHVJTZFHV5FkYhOc6Igp+OpXwAqWsMAwLDEQiwzFKoOxjoWsZClrWcxqlrOeBa1oSWta1KqWta6FrWxpG5VD5JZI2DlSUMxwYTNQs6klla5XQ5VVkG1VrB3m6C3DOtzqojSbZQTxik880jmS2LjMXVl314pPItYjvD8db1zNaxKSpHe97X3vXwOri8EW9rCJ/03GYhv72MhOtrKXzexmO/vZ0I62tKdN7Wpb+9rYzhYquJWwdYqUHSRxZwxM3TBUX8zVqDoXzspt8XTLJ2cPy1iVNNZbncmqZ+seF60ivqPebLxLHMN0x3EhxCB6XN65BpkS6mVvJ9xLir4aWb5Kti+TnczfKP+XygK+coG1jOAuLxjM5ohKIKYzJDNTWDtJ6s4oiYtnFVdUucv1qZ9nDFZl+vrXLi5xr1MsO3MKm9d89uQeEV3AHNdjHnghRKMfLVebSprSRMY0fI+cZPouGb9N1u+T+ytlAFd5wFg28JYT7GUGsxoqQaLOhI00a+6swdZmVbaJ3flUGAMcLc8VuP+uPxps50o1Pv0uZzw7FSeMMjy5UHF24aCt6GnfpRDVdjR5sX1ebQ/Z0kWOL5LnW9/75ne/UPbvlANsZQJn+cBcVvCXo2IHRdCkJtWJNU9mPRQyQBTFT5V4dGMMaJASmsNdlfNiiu7moSud4Dp8ulOlTux/Oxyq+9Zbxe95cR1nnC55KMTGO+7jSNd10iK/dKZLDm6Ue7rcoG55ugXMWXafmubwjop0ynyde6eZKN6UbtHHVnWra72LDm+6XXCd54L3LuBUf/zUFR91xW+z8R/zukv9GHZ63AUnZbe2x3+M3rVXuu3e3nS4Oz3uT7Mc3aPeLN5NPfN3i+Mqfq93z9H/vJ3Bc/3qwJ78VhG/9MjbOZ54dvyxCz18ZF8e+Vh1/tavS1Vhb/5vurT4S0F/FzyM3uzXPn3IVU/yb59c3Co3d6hdrm7by9zdXY4KkF6t2zMfCfhlIDzAt9tw6Vu2eHk+6KuoOEM65SOL44O8AryqTNozY0PA6WO6Gqq6+eC+r/M+aaOHeKALnRC/0kO7bFO7bRu5btM0k+O0lCO3lXusuqM9K8s73PuGq7C/v8s/fOO//mvAT3qzqwrA/5sqywvA6CMn5juZCJTAgwsx6lPCxSNCZgurCnS++rAnzwOvDezAuLiDDyS78TO9tBOy8zvBt1O/12M/x3LB2Xu5GLy9/y2rQRvsPcD7vSR5uDgKQjfzQTzkqiH0wWvKOj/Mw+rrQ8wLRAcsNoRzwiFkQChMQOGLJyv8rrbKQi1cC57oQtI7O0gbQTHkNrdLv8IShjNkwSdTQ1Fjw/jLstKKih/hPVibQ/2rwx1sRBOjxVrUwz3MQ0a0xTrSOlxTG+R6OjKZQNcxRCY0Rq2SQhDLxccgRqyIRLaKtnngwHioxLO4xPDzwhDcRJAjQbZDv9YbBlFcwdgzxfe7u5jLsqtoRXp7RRxMs3FCRqNLI3QiQB4EK+ljxmvKvEEUEDpLuFMhNEtZwCLsKBDSxwQ8MYE8EO+KRoyjRms0C5/gwmzMRPILw//U80TWS0H6Gke5a0H3s7vaS8d1ZMf7szc61MFZlMd55DeE7EUeVKkf5MV6PCs7rElHEsYP46GBrDxANEiefEl8VEYR+5SGTDTQq8Z4kAe2cIOJxMQvFMFu7EQT/MRw9EjYm7tmMEeRbENtKMnoaEf8kzUkeZYpFMoe5MV3gb42AkRbaksIXMnk+zNFzDXlK0J1IshDrB5uwcmZJMoVepkbAztKXEq2YAOnbAOKBEFN/Dgg88YxtEqOFMdRLMeQhEG8uwofCcuT9L1YNMuJgsuEvMe0JEJ/TDyfEc27jMe5TDq1FLRbNMC81Eub5Mt7kcl0Mr4g9MunGEwNnEallAf/plwLxHzKioxKbkQe89NIFIQ7rETDrbxMVNTMzYxDdyRLNhgx0hzKfEHCZNQU70TNkAJGRtTO1nRNFIrLWzwj3IRJ9ADNuixIe6Sb03TLmmlPqHi234RI4RzOsyhOxYTKbfw45YRM5izDUKxMreRK2sOK5zDJG8RO82TJ9UwdF0MhgcNQnvFJtLxJDW3C2TmhXQyZ7dzLydnQD13I9FkL/fy8wuxPdzjMxFzM0RtQ8ypQqly95jy55yTFNJROasCKHoEO6xzLwIMdJUxRCoVJ9aFLDEXNCV3SCxXR1SzGcplP/By015yqRlTSCTSXuOg+FwXOaoRRupjRLiQ7Gz0i/xzNyKrcSOdUUJB8QSEdUgiVw3dE0vPkTjAtxCbV0hWFUviMz05Kzyq10vAcUd7EOtu0qg+FM1mhCzHFQjJdSuF0hxjdNTThkQflzAi9t6oqUSa9Ug8N1GM0mSeUUhP9Ry89VNnM0ld9PJ9UT0Ek1VQlzzC9wkmsVBh1h3bQVCtpDjv1VDyVtVDd0n1M1FItGdaMVAAc1D1FTyodtr8UKVstRKCMSdSR1g5digwcU/68VF9dB2D9D2Ht1CJFyTa4qGgdTdoc1Xddy26lVmwtVyUFUaXD1VuV1UGsTQCsT0CNH12VxnCVB0xth3WwrXItjx1xjup0RSP1CXYV1V201/9Z/cFjZM2FPVZDPKlF3VjXDNh+REBJJNjgFFeEVQeFBdm9YA5OfVixREmWnVmardkkbFebzVmd3VmeJYySfciTNdhxVdl06Fmv0JFzhdnOBDyjbVqnfdpFhFqpnVqqrdqucMikLFOUTVh1eDCr/YflaNhhTdee+1qzPVuQjVe0XVu2bVuzwNoX3VqiTYdysFrlQNqXJVKInTC37Vu/5di/DVzBHVwrQcq4FdqU7Vq6rVupTY6wTVq9jVkzI1zKrdxbtVzMzVzNjQrC5FW5VdxyKAd5c1ocuVuXddjIXVo82FzWbd2WVFXXjV3ZBdn9DNqD5VraCt3YGoemRY4cOd3/sd1b65hd4iVctS1e5E3e/6hdrUVc3F3c3eVdnr0Rx8Vb1L1TWFNe7WXb491e7/1etgBX2x1a0BVdc3gt6bVZG/Fd0xVbdN1b8I1fqe1e+a1f+20KSi3Y251b3T3f12qtmjUO6v1d91VaCbtfBM5Z+k1gBv7eXdVf8s1d80Xf1tI9kC2O9S3dx81b7M2DBv7gjb1YEB5h7zXZ5t3f8o3ecahg1SpX4qiR49Bg6w3ediRhG75Zir1hHbZfoD3hCIZe/13hcBAH1fIGGlSuGcHgGK5e4H1fetthKD7Rfo1iKnbdHrZU5+XfCf7fIS5i1OoGg5KRFxZg9t3g6/XUKk5j/41VYzau4qzFYhSWYBVmYdX64m7YhuqBEeFIYhge4PaFXJNsY0HO2EEu5Bs+3DgGYgru4jr+BtPahm0YLYl5kRgZDhohYxluYpg1ZE7mUmTtZFDGXM/N4hQOYjo2Yke+40jmhtDqlN+g5D0e4wxm4gLW21C+ZajDZV2OXwhOXDk2ZUZG5Ude5dDShs/CBvtgkVcODjG+5FkmYECGiV2eZtikZmsm3vH1ZUXmYiJu5GEerWI+ZmyoPcBQkd5oEeDQ42ZWYj8242G9Zngmvnie59iF4x/u30XuZmFWZXAOLXGuvcyqhsuqrKtYBtxAkd1YEd9wEWa2ZHYu4xl+UHqeaP+KrujY7VVtxmdu9uJUhuR+NuZr6CyApgaBnobKggZoiIZngKxmaCxmMGjcGIgU4Q1lZmh1dug+hmhNbgSL7mmf/unA/dxfzmeO/mZW9ueQHufNCuiBlgaUVmmWdmmYRmhzrul0rmQ+xmRaTlqg7mqv/mqqJeWh3mhv5uejBmmRXmqSbuqnXmlnaOnGmmqZTuhzXuabzupn/mMeAWu+7mu/ttlE1mgh1mc79uiz/me1LumTTmm3huuXPui5ruqFvupYduYlhuaU+GvN3mzORq6M3uLBLmqzDuekHmnFdmrGjuq4hmzdkGx0huV1zulM3pHOrm3bvm1xeV7BPuXCJmb/pE5ra2Bqk0ZtqH5rqWbtmVbo125ovL7s9sVt6I5u6VaPUibqsjZs0gZu4V7s4nZsuW5tmp5s2MZprf7d6T5v9E7vsxjr0L5u30ZrpQ7utR7utlbtx45p8FZuu8ZqWXZuSVBvAA9wAW+K3Q7m3v5oxJbv065v415t/E7uurZp/rZsPx5wC7/w9J5jA+/o907w7Sbuxj7uB6drqx7v5qZeDE9xFYduYCZsDkfw0k5stk7tBr9vqg7v5b7r/v6IFe9xH+9sst5n7P7t+P5wBvdu5CZx8Wbu/v5xJ39yv+btFz/sGFfwGe9uEb9x/Zbwyi4OKP9yMP9q0R5y+DbtKw9xmAfX8gin7HUOczd/c58W8g6vciOncSQfcdfe71iGcz7vc4o26uwu8vnmbjS38cjGcT1/BT9fdEaf5znX7kEHcfv+bggv8YhodEzP9GsOdDOnbzvP8kPf8l3QdFIvdWqm80g/clDP794wdVd/dWq2ck/H8jSfa1i/dVzPdV3fdV7vdV//dWAPdmEfdmIvdmM/dmRPdmXf3IAAADs=\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/assets/img/GLP_Web.gif\n// module id = 184\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar events_1 = require(\"../events\");\nvar propertyKeys_1 = require(\"../propertyKeys\");\nvar utils_1 = require(\"../utils\");\nvar ComponentUtil = (function () {\n    function ComponentUtil() {\n    }\n    ComponentUtil.getEventCallbacks = function () {\n        if (!ComponentUtil.EVENT_CALLBACKS) {\n            ComponentUtil.EVENT_CALLBACKS = [];\n            ComponentUtil.EVENTS.forEach(function (eventName) {\n                ComponentUtil.EVENT_CALLBACKS.push(ComponentUtil.getCallbackForEvent(eventName));\n            });\n        }\n        return ComponentUtil.EVENT_CALLBACKS;\n    };\n    ComponentUtil.copyAttributesToGridOptions = function (gridOptions, component) {\n        checkForDeprecated(component);\n        // create empty grid options if none were passed\n        if (typeof gridOptions !== 'object') {\n            gridOptions = {};\n        }\n        // to allow array style lookup in TypeScript, take type away from 'this' and 'gridOptions'\n        var pGridOptions = gridOptions;\n        // add in all the simple properties\n        ComponentUtil.ARRAY_PROPERTIES\n            .concat(ComponentUtil.STRING_PROPERTIES)\n            .concat(ComponentUtil.OBJECT_PROPERTIES)\n            .concat(ComponentUtil.FUNCTION_PROPERTIES)\n            .forEach(function (key) {\n            if (typeof component[key] !== 'undefined') {\n                pGridOptions[key] = component[key];\n            }\n        });\n        ComponentUtil.BOOLEAN_PROPERTIES.forEach(function (key) {\n            if (typeof component[key] !== 'undefined') {\n                pGridOptions[key] = ComponentUtil.toBoolean(component[key]);\n            }\n        });\n        ComponentUtil.NUMBER_PROPERTIES.forEach(function (key) {\n            if (typeof component[key] !== 'undefined') {\n                pGridOptions[key] = ComponentUtil.toNumber(component[key]);\n            }\n        });\n        ComponentUtil.getEventCallbacks().forEach(function (funcName) {\n            if (typeof component[funcName] !== 'undefined') {\n                pGridOptions[funcName] = component[funcName];\n            }\n        });\n        return gridOptions;\n    };\n    ComponentUtil.getCallbackForEvent = function (eventName) {\n        if (!eventName || eventName.length < 2) {\n            return eventName;\n        }\n        else {\n            return 'on' + eventName[0].toUpperCase() + eventName.substr(1);\n        }\n    };\n    // change this method, the caller should know if it's initialised or not, plus 'initialised'\n    // is not relevant for all component types. maybe pass in the api and columnApi instead???\n    ComponentUtil.processOnChange = function (changes, gridOptions, api, columnApi) {\n        //if (!component._initialised || !changes) { return; }\n        if (!changes) {\n            return;\n        }\n        checkForDeprecated(changes);\n        // to allow array style lookup in TypeScript, take type away from 'this' and 'gridOptions'\n        var pGridOptions = gridOptions;\n        // check if any change for the simple types, and if so, then just copy in the new value\n        ComponentUtil.ARRAY_PROPERTIES\n            .concat(ComponentUtil.OBJECT_PROPERTIES)\n            .concat(ComponentUtil.STRING_PROPERTIES)\n            .forEach(function (key) {\n            if (changes[key]) {\n                pGridOptions[key] = changes[key].currentValue;\n            }\n        });\n        ComponentUtil.BOOLEAN_PROPERTIES.forEach(function (key) {\n            if (changes[key]) {\n                pGridOptions[key] = ComponentUtil.toBoolean(changes[key].currentValue);\n            }\n        });\n        ComponentUtil.NUMBER_PROPERTIES.forEach(function (key) {\n            if (changes[key]) {\n                pGridOptions[key] = ComponentUtil.toNumber(changes[key].currentValue);\n            }\n        });\n        ComponentUtil.getEventCallbacks().forEach(function (funcName) {\n            if (changes[funcName]) {\n                pGridOptions[funcName] = changes[funcName].currentValue;\n            }\n        });\n        if (changes.showToolPanel) {\n            api.showToolPanel(ComponentUtil.toBoolean(changes.showToolPanel.currentValue));\n        }\n        if (changes.quickFilterText) {\n            api.setQuickFilter(changes.quickFilterText.currentValue);\n        }\n        if (changes.rowData) {\n            api.setRowData(changes.rowData.currentValue);\n        }\n        if (changes.pinnedTopRowData) {\n            api.setPinnedTopRowData(changes.pinnedTopRowData.currentValue);\n        }\n        if (changes.pinnedBottomRowData) {\n            api.setPinnedBottomRowData(changes.pinnedBottomRowData.currentValue);\n        }\n        if (changes.columnDefs) {\n            api.setColumnDefs(changes.columnDefs.currentValue);\n        }\n        if (changes.datasource) {\n            api.setDatasource(changes.datasource.currentValue);\n        }\n        if (changes.headerHeight) {\n            api.setHeaderHeight(ComponentUtil.toNumber(changes.headerHeight.currentValue));\n        }\n        if (changes.paginationPageSize) {\n            api.paginationSetPageSize(ComponentUtil.toNumber(changes.paginationPageSize.currentValue));\n        }\n        if (changes.pivotMode) {\n            columnApi.setPivotMode(ComponentUtil.toBoolean(changes.pivotMode.currentValue));\n        }\n        if (changes.groupRemoveSingleChildren) {\n            api.setGroupRemoveSingleChildren(ComponentUtil.toBoolean(changes.groupRemoveSingleChildren.currentValue));\n        }\n        // copy changes into an event for dispatch\n        var event = {\n            type: events_1.Events.EVENT_COMPONENT_STATE_CHANGED,\n            api: gridOptions.api,\n            columnApi: gridOptions.columnApi\n        };\n        utils_1.Utils.iterateObject(changes, function (key, value) {\n            event[key] = value;\n        });\n        api.dispatchEvent(event);\n    };\n    ComponentUtil.toBoolean = function (value) {\n        if (typeof value === 'boolean') {\n            return value;\n        }\n        else if (typeof value === 'string') {\n            // for boolean, compare to empty String to allow attributes appearing with\n            // not value to be treated as 'true'\n            return value.toUpperCase() === 'TRUE' || value == '';\n        }\n        else {\n            return false;\n        }\n    };\n    ComponentUtil.toNumber = function (value) {\n        if (typeof value === 'number') {\n            return value;\n        }\n        else if (typeof value === 'string') {\n            return Number(value);\n        }\n        else {\n            return undefined;\n        }\n    };\n    // all the events are populated in here AFTER this class (at the bottom of the file).\n    ComponentUtil.EVENTS = [];\n    ComponentUtil.STRING_PROPERTIES = propertyKeys_1.PropertyKeys.STRING_PROPERTIES;\n    ComponentUtil.OBJECT_PROPERTIES = propertyKeys_1.PropertyKeys.OBJECT_PROPERTIES;\n    ComponentUtil.ARRAY_PROPERTIES = propertyKeys_1.PropertyKeys.ARRAY_PROPERTIES;\n    ComponentUtil.NUMBER_PROPERTIES = propertyKeys_1.PropertyKeys.NUMBER_PROPERTIES;\n    ComponentUtil.BOOLEAN_PROPERTIES = propertyKeys_1.PropertyKeys.BOOLEAN_PROPERTIES;\n    ComponentUtil.FUNCTION_PROPERTIES = propertyKeys_1.PropertyKeys.FUNCTION_PROPERTIES;\n    ComponentUtil.ALL_PROPERTIES = propertyKeys_1.PropertyKeys.ALL_PROPERTIES;\n    return ComponentUtil;\n}());\nexports.ComponentUtil = ComponentUtil;\nutils_1.Utils.iterateObject(events_1.Events, function (key, value) {\n    ComponentUtil.EVENTS.push(value);\n});\nfunction checkForDeprecated(changes) {\n    if (changes.rowDeselected || changes.onRowDeselected) {\n        console.warn('ag-grid: as of v3.4 rowDeselected no longer exists. Please check the docs.');\n    }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/components/componentUtil.js\n// module id = 185\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"./context/context\");\nvar columnController_1 = require(\"./columnController/columnController\");\nvar constants_1 = require(\"./constants\");\nvar utils_1 = require(\"./utils\");\nvar selectionController_1 = require(\"./selectionController\");\nvar gridOptionsWrapper_1 = require(\"./gridOptionsWrapper\");\nvar displayedGroupCreator_1 = require(\"./columnController/displayedGroupCreator\");\nvar balancedColumnTreeBuilder_1 = require(\"./columnController/balancedColumnTreeBuilder\");\nvar groupInstanceIdCreator_1 = require(\"./columnController/groupInstanceIdCreator\");\nvar columnGroup_1 = require(\"./entities/columnGroup\");\nvar pinnedRowModel_1 = require(\"./rowModels/pinnedRowModel\");\nvar BaseGridSerializingSession = (function () {\n    function BaseGridSerializingSession(columnController, valueService, gridOptionsWrapper, processCellCallback, processHeaderCallback, cellAndHeaderEscaper) {\n        this.columnController = columnController;\n        this.valueService = valueService;\n        this.gridOptionsWrapper = gridOptionsWrapper;\n        this.processCellCallback = processCellCallback;\n        this.processHeaderCallback = processHeaderCallback;\n        this.cellAndHeaderEscaper = cellAndHeaderEscaper;\n    }\n    BaseGridSerializingSession.prototype.extractHeaderValue = function (column) {\n        var nameForCol = this.getHeaderName(this.processHeaderCallback, column);\n        if (nameForCol === null || nameForCol === undefined) {\n            nameForCol = '';\n        }\n        return this.cellAndHeaderEscaper ? this.cellAndHeaderEscaper(nameForCol) : nameForCol;\n    };\n    BaseGridSerializingSession.prototype.extractRowCellValue = function (column, index, type, node) {\n        var isRowGrouping = this.columnController.getRowGroupColumns().length > 0;\n        var valueForCell;\n        if (node.group && isRowGrouping && index === 0) {\n            valueForCell = this.createValueForGroupNode(node);\n        }\n        else {\n            valueForCell = this.valueService.getValue(column, node);\n        }\n        valueForCell = this.processCell(node, column, valueForCell, this.processCellCallback, type);\n        if (valueForCell === null || valueForCell === undefined) {\n            valueForCell = '';\n        }\n        return this.cellAndHeaderEscaper ? this.cellAndHeaderEscaper(valueForCell) : valueForCell;\n    };\n    BaseGridSerializingSession.prototype.getHeaderName = function (callback, column) {\n        if (callback) {\n            return callback({\n                column: column,\n                api: this.gridOptionsWrapper.getApi(),\n                columnApi: this.gridOptionsWrapper.getColumnApi(),\n                context: this.gridOptionsWrapper.getContext()\n            });\n        }\n        else {\n            return this.columnController.getDisplayNameForColumn(column, 'csv', true);\n        }\n    };\n    BaseGridSerializingSession.prototype.createValueForGroupNode = function (node) {\n        var keys = [node.key];\n        while (node.parent) {\n            node = node.parent;\n            keys.push(node.key);\n        }\n        return keys.reverse().join(' -> ');\n    };\n    BaseGridSerializingSession.prototype.processCell = function (rowNode, column, value, processCellCallback, type) {\n        if (processCellCallback) {\n            return processCellCallback({\n                column: column,\n                node: rowNode,\n                value: value,\n                api: this.gridOptionsWrapper.getApi(),\n                columnApi: this.gridOptionsWrapper.getColumnApi(),\n                context: this.gridOptionsWrapper.getContext(),\n                type: type\n            });\n        }\n        else {\n            return value;\n        }\n    };\n    return BaseGridSerializingSession;\n}());\nexports.BaseGridSerializingSession = BaseGridSerializingSession;\nvar GridSerializer = (function () {\n    function GridSerializer() {\n    }\n    GridSerializer.prototype.serialize = function (gridSerializingSession, params) {\n        var dontSkipRows = function () { return false; };\n        var skipGroups = params && params.skipGroups;\n        var skipHeader = params && params.skipHeader;\n        var columnGroups = params && params.columnGroups;\n        var skipFooters = params && params.skipFooters;\n        var skipPinnedTop = params && params.skipPinnedTop;\n        var skipPinnedBottom = params && params.skipPinnedBottom;\n        var includeCustomHeader = params && params.customHeader;\n        var includeCustomFooter = params && params.customFooter;\n        var allColumns = params && params.allColumns;\n        var onlySelected = params && params.onlySelected;\n        var columnKeys = params && params.columnKeys;\n        var onlySelectedAllPages = params && params.onlySelectedAllPages;\n        var rowSkipper = (params && params.shouldRowBeSkipped) || dontSkipRows;\n        var api = this.gridOptionsWrapper.getApi();\n        var context = this.gridOptionsWrapper.getContext();\n        // when in pivot mode, we always render cols on screen, never 'all columns'\n        var isPivotMode = this.columnController.isPivotMode();\n        var rowModelNormal = this.rowModel.getType() === constants_1.Constants.ROW_MODEL_TYPE_IN_MEMORY;\n        var onlySelectedNonStandardModel = !rowModelNormal && onlySelected;\n        var columnsToExport;\n        if (utils_1.Utils.existsAndNotEmpty(columnKeys)) {\n            columnsToExport = this.columnController.getGridColumns(columnKeys);\n        }\n        else if (allColumns && !isPivotMode) {\n            columnsToExport = this.columnController.getAllPrimaryColumns();\n        }\n        else {\n            columnsToExport = this.columnController.getAllDisplayedColumns();\n        }\n        if (!columnsToExport || columnsToExport.length === 0) {\n            return '';\n        }\n        gridSerializingSession.prepare(columnsToExport);\n        if (includeCustomHeader) {\n            gridSerializingSession.addCustomHeader(params.customHeader);\n        }\n        // first pass, put in the header names of the cols\n        if (columnGroups) {\n            var groupInstanceIdCreator = new groupInstanceIdCreator_1.GroupInstanceIdCreator();\n            var displayedGroups = this.displayedGroupCreator.createDisplayedGroups(columnsToExport, this.columnController.getGridBalancedTree(), groupInstanceIdCreator);\n            this.recursivelyAddHeaderGroups(displayedGroups, gridSerializingSession);\n        }\n        if (!skipHeader) {\n            var gridRowIterator_1 = gridSerializingSession.onNewHeaderRow();\n            columnsToExport.forEach(function (column, index) {\n                gridRowIterator_1.onColumn(column, index, null);\n            });\n        }\n        this.pinnedRowModel.forEachPinnedTopRow(processRow);\n        if (isPivotMode) {\n            this.rowModel.forEachPivotNode(processRow);\n        }\n        else {\n            // onlySelectedAllPages: user doing pagination and wants selected items from\n            // other pages, so cannot use the standard row model as it won't have rows from\n            // other pages.\n            // onlySelectedNonStandardModel: if user wants selected in non standard row model\n            // (eg viewport) then again rowmodel cannot be used, so need to use selected instead.\n            if (onlySelectedAllPages || onlySelectedNonStandardModel) {\n                var selectedNodes = this.selectionController.getSelectedNodes();\n                selectedNodes.forEach(function (node) {\n                    processRow(node);\n                });\n            }\n            else {\n                // here is everything else - including standard row model and selected. we don't use\n                // the selection model even when just using selected, so that the result is the order\n                // of the rows appearing on the screen.\n                if (rowModelNormal) {\n                    this.rowModel.forEachNodeAfterFilterAndSort(processRow);\n                }\n                else {\n                    this.rowModel.forEachNode(processRow);\n                }\n            }\n        }\n        this.pinnedRowModel.forEachPinnedBottomRow(processRow);\n        if (includeCustomFooter) {\n            gridSerializingSession.addCustomFooter(params.customFooter);\n        }\n        function processRow(node) {\n            if (skipGroups && node.group) {\n                return;\n            }\n            if (skipFooters && node.footer) {\n                return;\n            }\n            if (onlySelected && !node.isSelected()) {\n                return;\n            }\n            if (skipPinnedTop && node.rowPinned === 'top') {\n                return;\n            }\n            if (skipPinnedBottom && node.rowPinned === 'bottom') {\n                return;\n            }\n            // if we are in pivotMode, then the grid will show the root node only\n            // if it's not a leaf group\n            var nodeIsRootNode = node.level === -1;\n            if (nodeIsRootNode && !node.leafGroup) {\n                return;\n            }\n            var shouldRowBeSkipped = rowSkipper({\n                node: node,\n                api: api,\n                context: context\n            });\n            if (shouldRowBeSkipped)\n                return;\n            var rowAccumulator = gridSerializingSession.onNewBodyRow();\n            columnsToExport.forEach(function (column, index) {\n                rowAccumulator.onColumn(column, index, node);\n            });\n        }\n        return gridSerializingSession.parse();\n    };\n    GridSerializer.prototype.recursivelyAddHeaderGroups = function (displayedGroups, gridSerializingSession) {\n        var directChildrenHeaderGroups = [];\n        displayedGroups.forEach(function (columnGroupChild) {\n            var columnGroup = columnGroupChild;\n            if (!columnGroup.getChildren)\n                return;\n            columnGroup.getChildren().forEach(function (it) { return directChildrenHeaderGroups.push(it); });\n        });\n        if (displayedGroups.length > 0 && displayedGroups[0] instanceof columnGroup_1.ColumnGroup) {\n            this.doAddHeaderHeader(gridSerializingSession, displayedGroups);\n        }\n        if (directChildrenHeaderGroups && directChildrenHeaderGroups.length > 0) {\n            this.recursivelyAddHeaderGroups(directChildrenHeaderGroups, gridSerializingSession);\n        }\n    };\n    GridSerializer.prototype.doAddHeaderHeader = function (gridSerializingSession, displayedGroups) {\n        var _this = this;\n        var gridRowIterator = gridSerializingSession.onNewHeaderGroupingRow();\n        var columnIndex = 0;\n        displayedGroups.forEach(function (columnGroupChild) {\n            var columnGroup = columnGroupChild;\n            var colDef = columnGroup.getDefinition();\n            var columnName = _this.columnController.getDisplayNameForColumnGroup(columnGroup, 'header');\n            gridRowIterator.onColumn(columnName, columnIndex++, columnGroup.getLeafColumns().length - 1);\n        });\n    };\n    __decorate([\n        context_1.Autowired('displayedGroupCreator'),\n        __metadata(\"design:type\", displayedGroupCreator_1.DisplayedGroupCreator)\n    ], GridSerializer.prototype, \"displayedGroupCreator\", void 0);\n    __decorate([\n        context_1.Autowired('columnController'),\n        __metadata(\"design:type\", columnController_1.ColumnController)\n    ], GridSerializer.prototype, \"columnController\", void 0);\n    __decorate([\n        context_1.Autowired('rowModel'),\n        __metadata(\"design:type\", Object)\n    ], GridSerializer.prototype, \"rowModel\", void 0);\n    __decorate([\n        context_1.Autowired('pinnedRowModel'),\n        __metadata(\"design:type\", pinnedRowModel_1.PinnedRowModel)\n    ], GridSerializer.prototype, \"pinnedRowModel\", void 0);\n    __decorate([\n        context_1.Autowired('selectionController'),\n        __metadata(\"design:type\", selectionController_1.SelectionController)\n    ], GridSerializer.prototype, \"selectionController\", void 0);\n    __decorate([\n        context_1.Autowired('balancedColumnTreeBuilder'),\n        __metadata(\"design:type\", balancedColumnTreeBuilder_1.BalancedColumnTreeBuilder)\n    ], GridSerializer.prototype, \"balancedColumnTreeBuilder\", void 0);\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], GridSerializer.prototype, \"gridOptionsWrapper\", void 0);\n    GridSerializer = __decorate([\n        context_1.Bean(\"gridSerializer\")\n    ], GridSerializer);\n    return GridSerializer;\n}());\nexports.GridSerializer = GridSerializer;\nvar RowType;\n(function (RowType) {\n    RowType[RowType[\"HEADER_GROUPING\"] = 0] = \"HEADER_GROUPING\";\n    RowType[RowType[\"HEADER\"] = 1] = \"HEADER\";\n    RowType[RowType[\"BODY\"] = 2] = \"BODY\";\n})(RowType = exports.RowType || (exports.RowType = {}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/gridSerializer.js\n// module id = 186\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar rowRenderer_1 = require(\"./rowRenderer\");\nvar gridPanel_1 = require(\"../gridPanel/gridPanel\");\nvar context_1 = require(\"../context/context\");\nvar headerRenderer_1 = require(\"../headerRendering/headerRenderer\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar headerWrapperComp_1 = require(\"../headerRendering/header/headerWrapperComp\");\nvar AutoWidthCalculator = (function () {\n    function AutoWidthCalculator() {\n    }\n    // this is the trick: we create a dummy container and clone all the cells\n    // into the dummy, then check the dummy's width. then destroy the dummy\n    // as we don't need it any more.\n    // drawback: only the cells visible on the screen are considered\n    AutoWidthCalculator.prototype.getPreferredWidthForColumn = function (column) {\n        var eHeaderCell = this.getHeaderCellForColumn(column);\n        // cell isn't visible\n        if (!eHeaderCell) {\n            return -1;\n        }\n        var eDummyContainer = document.createElement('span');\n        // position fixed, so it isn't restricted to the boundaries of the parent\n        eDummyContainer.style.position = 'fixed';\n        // we put the dummy into the body container, so it will inherit all the\n        // css styles that the real cells are inheriting\n        var eBodyContainer = this.gridPanel.getBodyContainer();\n        eBodyContainer.appendChild(eDummyContainer);\n        // get all the cells that are currently displayed (this only brings back\n        // rendered cells, rows not rendered due to row visualisation will not be here)\n        this.putRowCellsIntoDummyContainer(column, eDummyContainer);\n        // also put header cell in\n        // we only consider the lowest level cell, not the group cell. in 99% of the time, this\n        // will be enough. if we consider groups, then it gets to complicated for what it's worth,\n        // as the groups can span columns and this class only considers one column at a time.\n        this.cloneItemIntoDummy(eHeaderCell, eDummyContainer);\n        // at this point, all the clones are lined up vertically with natural widths. the dummy\n        // container will have a width wide enough just to fit the largest.\n        var dummyContainerWidth = eDummyContainer.offsetWidth;\n        // we are finished with the dummy container, so get rid of it\n        eBodyContainer.removeChild(eDummyContainer);\n        // we add padding as I found sometimes the gui still put '...' after some of the texts. so the\n        // user can configure the grid to add a few more pixels after the calculated width\n        var autoSizePadding = this.gridOptionsWrapper.getAutoSizePadding();\n        return dummyContainerWidth + autoSizePadding;\n    };\n    AutoWidthCalculator.prototype.getHeaderCellForColumn = function (column) {\n        var comp = null;\n        // find the rendered header cell\n        this.headerRenderer.forEachHeaderElement(function (headerElement) {\n            if (headerElement instanceof headerWrapperComp_1.HeaderWrapperComp) {\n                var headerWrapperComp = headerElement;\n                if (headerWrapperComp.getColumn() === column) {\n                    comp = headerWrapperComp;\n                }\n            }\n        });\n        return comp ? comp.getGui() : null;\n    };\n    AutoWidthCalculator.prototype.putRowCellsIntoDummyContainer = function (column, eDummyContainer) {\n        var _this = this;\n        var eCells = this.rowRenderer.getAllCellsForColumn(column);\n        eCells.forEach(function (eCell) { return _this.cloneItemIntoDummy(eCell, eDummyContainer); });\n    };\n    AutoWidthCalculator.prototype.cloneItemIntoDummy = function (eCell, eDummyContainer) {\n        // make a deep clone of the cell\n        var eCellClone = eCell.cloneNode(true);\n        // the original has a fixed width, we remove this to allow the natural width based on content\n        eCellClone.style.width = '';\n        // the original has position = absolute, we need to remove this so it's positioned normally\n        eCellClone.style.position = 'static';\n        eCellClone.style.left = '';\n        // we put the cell into a containing div, as otherwise the cells would just line up\n        // on the same line, standard flow layout, by putting them into divs, they are laid\n        // out one per line\n        var eCloneParent = document.createElement('div');\n        // table-row, so that each cell is on a row. i also tried display='block', but this\n        // didn't work in IE\n        eCloneParent.style.display = 'table-row';\n        // the twig on the branch, the branch on the tree, the tree in the hole,\n        // the hole in the bog, the bog in the clone, the clone in the parent,\n        // the parent in the dummy, and the dummy down in the vall-e-ooo, OOOOOOOOO! Oh row the rattling bog....\n        eCloneParent.appendChild(eCellClone);\n        eDummyContainer.appendChild(eCloneParent);\n    };\n    __decorate([\n        context_1.Autowired('rowRenderer'),\n        __metadata(\"design:type\", rowRenderer_1.RowRenderer)\n    ], AutoWidthCalculator.prototype, \"rowRenderer\", void 0);\n    __decorate([\n        context_1.Autowired('headerRenderer'),\n        __metadata(\"design:type\", headerRenderer_1.HeaderRenderer)\n    ], AutoWidthCalculator.prototype, \"headerRenderer\", void 0);\n    __decorate([\n        context_1.Autowired('gridPanel'),\n        __metadata(\"design:type\", gridPanel_1.GridPanel)\n    ], AutoWidthCalculator.prototype, \"gridPanel\", void 0);\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], AutoWidthCalculator.prototype, \"gridOptionsWrapper\", void 0);\n    AutoWidthCalculator = __decorate([\n        context_1.Bean('autoWidthCalculator')\n    ], AutoWidthCalculator);\n    return AutoWidthCalculator;\n}());\nexports.AutoWidthCalculator = AutoWidthCalculator;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rendering/autoWidthCalculator.js\n// module id = 187\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\n// This should be a component\nvar BorderLayout = (function () {\n    function BorderLayout(params) {\n        this.centerHeightLastTime = -1;\n        this.centerWidthLastTime = -1;\n        this.centerLeftMarginLastTime = -1;\n        this.visibleLastTime = false;\n        this.sizeChangeListeners = [];\n        this.isLayoutPanel = true;\n        this.fullHeight = !params.north && !params.south;\n        var template;\n        if (params.dontFill) {\n            template = BorderLayout.TEMPLATE_DONT_FILL;\n            this.horizontalLayoutActive = false;\n            this.verticalLayoutActive = false;\n        }\n        else if (params.fillHorizontalOnly) {\n            template = BorderLayout.TEMPLATE_DONT_FILL;\n            this.horizontalLayoutActive = true;\n            this.verticalLayoutActive = false;\n        }\n        else {\n            if (this.fullHeight) {\n                template = BorderLayout.TEMPLATE_FULL_HEIGHT;\n            }\n            else {\n                template = BorderLayout.TEMPLATE_NORMAL;\n            }\n            this.horizontalLayoutActive = true;\n            this.verticalLayoutActive = true;\n        }\n        this.eGui = utils_1.Utils.loadTemplate(template);\n        this.id = 'borderLayout';\n        if (params.name) {\n            this.id += '_' + params.name;\n        }\n        this.eGui.setAttribute('id', this.id);\n        this.childPanels = [];\n        if (params) {\n            this.setupPanels(params);\n        }\n        if (params.componentRecipes) {\n            this.overlayWrapperComp = params.componentRecipes.newOverlayWrapperComponent();\n        }\n    }\n    BorderLayout.prototype.addSizeChangeListener = function (listener) {\n        this.sizeChangeListeners.push(listener);\n    };\n    BorderLayout.prototype.fireSizeChanged = function () {\n        this.sizeChangeListeners.forEach(function (listener) {\n            listener();\n        });\n    };\n    // this logic is also in Component.ts - the plan is sometime in the future,\n    // this layout panel may (or may not) extend the Component class, and somehow\n    // act as a component.\n    BorderLayout.prototype.getRefElement = function (refName) {\n        return this.eGui.querySelector('[ref=\"' + refName + '\"]');\n    };\n    BorderLayout.prototype.setupPanels = function (params) {\n        this.eNorthWrapper = this.getRefElement('north');\n        this.eSouthWrapper = this.getRefElement('south');\n        this.eEastWrapper = this.getRefElement('east');\n        this.eWestWrapper = this.getRefElement('west');\n        this.eCenterWrapper = this.getRefElement('center');\n        this.eOverlayWrapper = this.getRefElement('overlay');\n        this.eCenterRow = this.getRefElement('centerRow');\n        this.eNorthChildLayout = this.setupPanel(params.north, this.eNorthWrapper);\n        this.eSouthChildLayout = this.setupPanel(params.south, this.eSouthWrapper);\n        this.eEastChildLayout = this.setupPanel(params.east, this.eEastWrapper);\n        this.eWestChildLayout = this.setupPanel(params.west, this.eWestWrapper);\n        this.eCenterChildLayout = this.setupPanel(params.center, this.eCenterWrapper);\n    };\n    BorderLayout.prototype.setupPanel = function (content, ePanel) {\n        if (!ePanel) {\n            return;\n        }\n        if (content) {\n            if (content.isLayoutPanel) {\n                this.childPanels.push(content);\n                ePanel.appendChild(content.getGui());\n                return content;\n            }\n            else {\n                ePanel.appendChild(content);\n                return null;\n            }\n        }\n        else {\n            ePanel.parentNode.removeChild(ePanel);\n            return null;\n        }\n    };\n    BorderLayout.prototype.getGui = function () {\n        return this.eGui;\n    };\n    // returns true if any item changed size, otherwise returns false\n    BorderLayout.prototype.doLayout = function () {\n        var _this = this;\n        var isVisible = utils_1.Utils.isVisible(this.eGui);\n        if (!isVisible) {\n            this.visibleLastTime = false;\n            return false;\n        }\n        var atLeastOneChanged = false;\n        if (this.visibleLastTime !== isVisible) {\n            atLeastOneChanged = true;\n        }\n        this.visibleLastTime = true;\n        var childLayouts = [this.eNorthChildLayout, this.eSouthChildLayout, this.eEastChildLayout, this.eWestChildLayout];\n        childLayouts.forEach(function (childLayout) {\n            var childChangedSize = _this.layoutChild(childLayout);\n            if (childChangedSize) {\n                atLeastOneChanged = true;\n            }\n        });\n        if (this.horizontalLayoutActive) {\n            var ourWidthChanged = this.layoutWidth();\n            if (ourWidthChanged) {\n                atLeastOneChanged = true;\n            }\n        }\n        if (this.verticalLayoutActive) {\n            var ourHeightChanged = this.layoutHeight();\n            if (ourHeightChanged) {\n                atLeastOneChanged = true;\n            }\n        }\n        var centerChanged = this.layoutChild(this.eCenterChildLayout);\n        if (centerChanged) {\n            atLeastOneChanged = true;\n        }\n        if (atLeastOneChanged) {\n            this.fireSizeChanged();\n        }\n        return atLeastOneChanged;\n    };\n    BorderLayout.prototype.layoutChild = function (childPanel) {\n        if (childPanel) {\n            return childPanel.doLayout();\n        }\n        else {\n            return false;\n        }\n    };\n    BorderLayout.prototype.layoutHeight = function () {\n        if (this.fullHeight) {\n            return this.layoutHeightFullHeight();\n        }\n        else {\n            return this.layoutHeightNormal();\n        }\n    };\n    // full height never changes the height, because the center is always 100%,\n    // however we do check for change, to inform the listeners\n    BorderLayout.prototype.layoutHeightFullHeight = function () {\n        var centerHeight = utils_1.Utils.offsetHeight(this.eGui);\n        if (centerHeight < 0) {\n            centerHeight = 0;\n        }\n        if (this.centerHeightLastTime !== centerHeight) {\n            this.centerHeightLastTime = centerHeight;\n            return true;\n        }\n        else {\n            return false;\n        }\n    };\n    BorderLayout.prototype.layoutHeightNormal = function () {\n        var totalHeight = utils_1.Utils.offsetHeight(this.eGui);\n        var northHeight = utils_1.Utils.offsetHeight(this.eNorthWrapper);\n        var southHeight = utils_1.Utils.offsetHeight(this.eSouthWrapper);\n        var centerHeight = totalHeight - northHeight - southHeight;\n        if (centerHeight < 0) {\n            centerHeight = 0;\n        }\n        if (this.centerHeightLastTime !== centerHeight) {\n            this.eCenterRow.style.height = centerHeight + 'px';\n            this.centerHeightLastTime = centerHeight;\n            return true; // return true because there was a change\n        }\n        else {\n            return false;\n        }\n    };\n    BorderLayout.prototype.getCentreHeight = function () {\n        return this.centerHeightLastTime;\n    };\n    BorderLayout.prototype.layoutWidth = function () {\n        var totalWidth = utils_1.Utils.offsetWidth(this.eGui);\n        var eastWidth = utils_1.Utils.offsetWidth(this.eEastWrapper);\n        var westWidth = utils_1.Utils.offsetWidth(this.eWestWrapper);\n        var centerWidth = totalWidth - eastWidth - westWidth;\n        if (centerWidth < 0) {\n            centerWidth = 0;\n        }\n        var atLeastOneChanged = false;\n        if (this.centerLeftMarginLastTime !== westWidth) {\n            this.centerLeftMarginLastTime = westWidth;\n            this.eCenterWrapper.style.marginLeft = westWidth + 'px';\n            atLeastOneChanged = true;\n        }\n        if (this.centerWidthLastTime !== centerWidth) {\n            this.centerWidthLastTime = centerWidth;\n            this.eCenterWrapper.style.width = centerWidth + 'px';\n            atLeastOneChanged = true;\n        }\n        return atLeastOneChanged;\n    };\n    BorderLayout.prototype.setEastVisible = function (visible) {\n        if (this.eEastWrapper) {\n            this.eEastWrapper.style.display = visible ? '' : 'none';\n        }\n        this.doLayout();\n    };\n    BorderLayout.prototype.showLoadingOverlay = function () {\n        var _this = this;\n        this.overlayWrapperComp.then(function (overlayComp) { return overlayComp.showLoadingOverlay(_this.eOverlayWrapper); });\n    };\n    BorderLayout.prototype.showNoRowsOverlay = function () {\n        var _this = this;\n        this.overlayWrapperComp.then(function (overlayComp) { return overlayComp.showNoRowsOverlay(_this.eOverlayWrapper); });\n    };\n    BorderLayout.prototype.hideOverlay = function () {\n        var _this = this;\n        this.overlayWrapperComp.then(function (overlayComp) { return overlayComp.hideOverlay(_this.eOverlayWrapper); });\n    };\n    // this is used if there user has not specified any north or south parts\n    BorderLayout.TEMPLATE_FULL_HEIGHT = '<div class=\"ag-bl ag-bl-full-height\">' +\n        '  <div class=\"ag-bl-west ag-bl-full-height-west\" ref=\"west\"></div>' +\n        '  <div class=\"ag-bl-east ag-bl-full-height-east\" ref=\"east\"></div>' +\n        '  <div class=\"ag-bl-center ag-bl-full-height-center\" ref=\"center\"></div>' +\n        '  <div class=\"ag-bl-overlay\" ref=\"overlay\"></div>' +\n        '</div>';\n    BorderLayout.TEMPLATE_NORMAL = '<div class=\"ag-bl ag-bl-normal\">' +\n        '  <div ref=\"north\"></div>' +\n        '  <div class=\"ag-bl-center-row ag-bl-normal-center-row\" ref=\"centerRow\">' +\n        '    <div class=\"ag-bl-west ag-bl-normal-west\" ref=\"west\"></div>' +\n        '    <div class=\"ag-bl-east ag-bl-normal-east\" ref=\"east\"></div>' +\n        '    <div class=\"ag-bl-center ag-bl-normal-center\" ref=\"center\"></div>' +\n        '  </div>' +\n        '  <div ref=\"south\"></div>' +\n        '  <div class=\"ag-bl-overlay\" ref=\"overlay\"></div>' +\n        '</div>';\n    BorderLayout.TEMPLATE_DONT_FILL = '<div class=\"ag-bl ag-bl-dont-fill\">' +\n        '  <div ref=\"north\"></div>' +\n        '  <div ref=\"centerRow\" class=\"ag-bl-center-row ag-bl-dont-fill-center-row\">' +\n        '    <div ref=\"west\" class=\"ag-bl-west ag-bl-dont-fill-west\"></div>' +\n        '    <div ref=\"east\" class=\"ag-bl-east ag-bl-dont-fill-east\"></div>' +\n        '    <div ref=\"center\" class=\"ag-bl-center ag-bl-dont-fill-center\"></div>' +\n        '  </div>' +\n        '  <div ref=\"south\"></div>' +\n        '  <div class=\"ag-bl-overlay\" ref=\"overlay\"></div>' +\n        '</div>';\n    return BorderLayout;\n}());\nexports.BorderLayout = BorderLayout;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/layout/borderLayout.js\n// module id = 188\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar constants_1 = require(\"../constants\");\nvar utils_1 = require(\"../utils\");\nvar gridCell_1 = require(\"./gridCell\");\nvar GridRow = (function () {\n    function GridRow(rowIndex, floating) {\n        this.rowIndex = rowIndex;\n        this.floating = utils_1.Utils.makeNull(floating);\n    }\n    GridRow.prototype.isFloatingTop = function () {\n        return this.floating === constants_1.Constants.PINNED_TOP;\n    };\n    GridRow.prototype.isFloatingBottom = function () {\n        return this.floating === constants_1.Constants.PINNED_BOTTOM;\n    };\n    GridRow.prototype.isNotFloating = function () {\n        return !this.isFloatingBottom() && !this.isFloatingTop();\n    };\n    GridRow.prototype.equals = function (otherSelection) {\n        return this.rowIndex === otherSelection.rowIndex\n            && this.floating === otherSelection.floating;\n    };\n    GridRow.prototype.toString = function () {\n        return \"rowIndex = \" + this.rowIndex + \", floating = \" + this.floating;\n    };\n    GridRow.prototype.getGridCell = function (column) {\n        var gridCellDef = { rowIndex: this.rowIndex, floating: this.floating, column: column };\n        return new gridCell_1.GridCell(gridCellDef);\n    };\n    // tests if this row selection is before the other row selection\n    GridRow.prototype.before = function (otherSelection) {\n        var otherFloating = otherSelection.floating;\n        switch (this.floating) {\n            case constants_1.Constants.PINNED_TOP:\n                // we we are floating top, and other isn't, then we are always before\n                if (otherFloating !== constants_1.Constants.PINNED_TOP) {\n                    return true;\n                }\n                break;\n            case constants_1.Constants.PINNED_BOTTOM:\n                // if we are floating bottom, and the other isn't, then we are never before\n                if (otherFloating !== constants_1.Constants.PINNED_BOTTOM) {\n                    return false;\n                }\n                break;\n            default:\n                // if we are not floating, but the other one is floating...\n                if (utils_1.Utils.exists(otherFloating)) {\n                    if (otherFloating === constants_1.Constants.PINNED_TOP) {\n                        // we are not floating, other is floating top, we are first\n                        return false;\n                    }\n                    else {\n                        // we are not floating, other is floating bottom, we are always first\n                        return true;\n                    }\n                }\n                break;\n        }\n        return this.rowIndex < otherSelection.rowIndex;\n    };\n    return GridRow;\n}());\nexports.GridRow = GridRow;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/entities/gridRow.js\n// module id = 189\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = require(\"../widgets/component\");\nvar rowNode_1 = require(\"../entities/rowNode\");\nvar utils_1 = require(\"../utils\");\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar events_1 = require(\"../events\");\nvar eventService_1 = require(\"../eventService\");\nvar gridApi_1 = require(\"../gridApi\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar CheckboxSelectionComponent = (function (_super) {\n    __extends(CheckboxSelectionComponent, _super);\n    function CheckboxSelectionComponent() {\n        return _super.call(this, \"<span class=\\\"ag-selection-checkbox\\\"/>\") || this;\n    }\n    CheckboxSelectionComponent.prototype.createAndAddIcons = function () {\n        this.eCheckedIcon = utils_1.Utils.createIconNoSpan('checkboxChecked', this.gridOptionsWrapper, this.column);\n        this.eUncheckedIcon = utils_1.Utils.createIconNoSpan('checkboxUnchecked', this.gridOptionsWrapper, this.column);\n        this.eIndeterminateIcon = utils_1.Utils.createIconNoSpan('checkboxIndeterminate', this.gridOptionsWrapper, this.column);\n        var element = this.getGui();\n        element.appendChild(this.eCheckedIcon);\n        element.appendChild(this.eUncheckedIcon);\n        element.appendChild(this.eIndeterminateIcon);\n    };\n    CheckboxSelectionComponent.prototype.onDataChanged = function () {\n        // when rows are loaded for the second time, this can impact the selection, as a row\n        // could be loaded as already selected (if user scrolls down, and then up again).\n        this.onSelectionChanged();\n    };\n    CheckboxSelectionComponent.prototype.onSelectionChanged = function () {\n        var state = this.rowNode.isSelected();\n        utils_1.Utils.setVisible(this.eCheckedIcon, state === true);\n        utils_1.Utils.setVisible(this.eUncheckedIcon, state === false);\n        utils_1.Utils.setVisible(this.eIndeterminateIcon, typeof state !== 'boolean');\n    };\n    CheckboxSelectionComponent.prototype.onCheckedClicked = function () {\n        var groupSelectsFiltered = this.gridOptionsWrapper.isGroupSelectsFiltered();\n        var updatedCount = this.rowNode.setSelectedParams({ newValue: false, groupSelectsFiltered: groupSelectsFiltered });\n        return updatedCount;\n    };\n    CheckboxSelectionComponent.prototype.onUncheckedClicked = function (event) {\n        var groupSelectsFiltered = this.gridOptionsWrapper.isGroupSelectsFiltered();\n        var updatedCount = this.rowNode.setSelectedParams({ newValue: true, rangeSelect: event.shiftKey, groupSelectsFiltered: groupSelectsFiltered });\n        return updatedCount;\n    };\n    CheckboxSelectionComponent.prototype.onIndeterminateClicked = function (event) {\n        var result = this.onUncheckedClicked(event);\n        if (result === 0) {\n            this.onCheckedClicked();\n        }\n    };\n    CheckboxSelectionComponent.prototype.init = function (params) {\n        this.rowNode = params.rowNode;\n        this.column = params.column;\n        this.visibleFunc = params.visibleFunc;\n        this.createAndAddIcons();\n        this.onSelectionChanged();\n        // we don't want the row clicked event to fire when selecting the checkbox, otherwise the row\n        // would possibly get selected twice\n        this.addGuiEventListener('click', function (event) { return utils_1.Utils.stopPropagationForAgGrid(event); });\n        // likewise we don't want double click on this icon to open a group\n        this.addGuiEventListener('dblclick', function (event) { return utils_1.Utils.stopPropagationForAgGrid(event); });\n        this.addDestroyableEventListener(this.eCheckedIcon, 'click', this.onCheckedClicked.bind(this));\n        this.addDestroyableEventListener(this.eUncheckedIcon, 'click', this.onUncheckedClicked.bind(this));\n        this.addDestroyableEventListener(this.eIndeterminateIcon, 'click', this.onIndeterminateClicked.bind(this));\n        this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_ROW_SELECTED, this.onSelectionChanged.bind(this));\n        this.addDestroyableEventListener(this.rowNode, rowNode_1.RowNode.EVENT_DATA_CHANGED, this.onDataChanged.bind(this));\n        if (this.visibleFunc) {\n            this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.showOrHideSelect.bind(this));\n            this.showOrHideSelect();\n        }\n    };\n    CheckboxSelectionComponent.prototype.showOrHideSelect = function () {\n        var params = this.createParams();\n        var visible = this.visibleFunc(params);\n        this.setVisible(visible);\n    };\n    CheckboxSelectionComponent.prototype.createParams = function () {\n        var params = {\n            node: this.rowNode,\n            data: this.rowNode.data,\n            column: this.column,\n            colDef: this.column.getColDef(),\n            context: this.gridOptionsWrapper.getContext(),\n            api: this.gridApi,\n            columnApi: this.columnApi\n        };\n        return params;\n    };\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], CheckboxSelectionComponent.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('eventService'),\n        __metadata(\"design:type\", eventService_1.EventService)\n    ], CheckboxSelectionComponent.prototype, \"eventService\", void 0);\n    __decorate([\n        context_1.Autowired('gridApi'),\n        __metadata(\"design:type\", gridApi_1.GridApi)\n    ], CheckboxSelectionComponent.prototype, \"gridApi\", void 0);\n    __decorate([\n        context_1.Autowired('columnApi'),\n        __metadata(\"design:type\", columnController_1.ColumnApi)\n    ], CheckboxSelectionComponent.prototype, \"columnApi\", void 0);\n    return CheckboxSelectionComponent;\n}(component_1.Component));\nexports.CheckboxSelectionComponent = CheckboxSelectionComponent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rendering/checkboxSelectionComponent.js\n// module id = 190\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = require(\"../../widgets/component\");\nvar context_1 = require(\"../../context/context\");\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar PopupEditorWrapper = (function (_super) {\n    __extends(PopupEditorWrapper, _super);\n    function PopupEditorWrapper(cellEditor) {\n        var _this = _super.call(this, \"<div class=\\\"ag-popup-editor\\\" tabindex=\\\"-1\\\"/>\") || this;\n        _this.getGuiCalledOnChild = false;\n        _this.cellEditor = cellEditor;\n        return _this;\n    }\n    PopupEditorWrapper.prototype.onKeyDown = function (event) {\n        this.params.onKeyDown(event);\n    };\n    PopupEditorWrapper.prototype.getGui = function () {\n        // we call getGui() on child here (rather than in the constructor)\n        // as we should wait for 'init' to be called on child first.\n        if (!this.getGuiCalledOnChild) {\n            this.appendChild(this.cellEditor.getGui());\n            this.getGuiCalledOnChild = true;\n        }\n        return _super.prototype.getGui.call(this);\n    };\n    PopupEditorWrapper.prototype.init = function (params) {\n        var _this = this;\n        this.params = params;\n        this.gridOptionsWrapper.setDomData(this.getGui(), PopupEditorWrapper.DOM_KEY_POPUP_EDITOR_WRAPPER, true);\n        this.addDestroyFunc(function () {\n            if (_this.cellEditor.destroy) {\n                _this.cellEditor.destroy();\n            }\n        });\n        this.addDestroyableEventListener(\n        // this needs to be 'super' and not 'this' as if we call 'this',\n        // it ends up called 'getGui()' on the child before 'init' was called,\n        // which is not good\n        _super.prototype.getGui.call(this), 'keydown', this.onKeyDown.bind(this));\n    };\n    PopupEditorWrapper.prototype.afterGuiAttached = function () {\n        if (this.cellEditor.afterGuiAttached) {\n            this.cellEditor.afterGuiAttached();\n        }\n    };\n    PopupEditorWrapper.prototype.getValue = function () {\n        return this.cellEditor.getValue();\n    };\n    PopupEditorWrapper.prototype.isPopup = function () {\n        return true;\n    };\n    PopupEditorWrapper.prototype.isCancelBeforeStart = function () {\n        if (this.cellEditor.isCancelBeforeStart) {\n            return this.cellEditor.isCancelBeforeStart();\n        }\n    };\n    PopupEditorWrapper.prototype.isCancelAfterEnd = function () {\n        if (this.cellEditor.isCancelAfterEnd) {\n            return this.cellEditor.isCancelAfterEnd();\n        }\n    };\n    PopupEditorWrapper.prototype.focusIn = function () {\n        if (this.cellEditor.focusIn) {\n            this.cellEditor.focusIn();\n        }\n    };\n    PopupEditorWrapper.prototype.focusOut = function () {\n        if (this.cellEditor.focusOut) {\n            this.cellEditor.focusOut();\n        }\n    };\n    PopupEditorWrapper.DOM_KEY_POPUP_EDITOR_WRAPPER = 'popupEditorWrapper';\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], PopupEditorWrapper.prototype, \"gridOptionsWrapper\", void 0);\n    return PopupEditorWrapper;\n}(component_1.Component));\nexports.PopupEditorWrapper = PopupEditorWrapper;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rendering/cellEditors/popupEditorWrapper.js\n// module id = 191\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar textCellEditor_1 = require(\"../../rendering/cellEditors/textCellEditor\");\nvar context_1 = require(\"../../context/context\");\nvar dateFilter_1 = require(\"../../filter/dateFilter\");\nvar headerComp_1 = require(\"../../headerRendering/header/headerComp\");\nvar headerGroupComp_1 = require(\"../../headerRendering/headerGroup/headerGroupComp\");\nvar floatingFilter_1 = require(\"../../filter/floatingFilter\");\nvar floatingFilterWrapper_1 = require(\"../../filter/floatingFilterWrapper\");\nvar componentResolver_1 = require(\"./componentResolver\");\nvar groupCellRenderer_1 = require(\"../../rendering/cellRenderers/groupCellRenderer\");\nvar animateShowChangeCellRenderer_1 = require(\"../../rendering/cellRenderers/animateShowChangeCellRenderer\");\nvar animateSlideCellRenderer_1 = require(\"../../rendering/cellRenderers/animateSlideCellRenderer\");\nvar rowComp_1 = require(\"../../rendering/rowComp\");\nvar selectCellEditor_1 = require(\"../../rendering/cellEditors/selectCellEditor\");\nvar popupTextCellEditor_1 = require(\"../../rendering/cellEditors/popupTextCellEditor\");\nvar popupSelectCellEditor_1 = require(\"../../rendering/cellEditors/popupSelectCellEditor\");\nvar largeTextCellEditor_1 = require(\"../../rendering/cellEditors/largeTextCellEditor\");\nvar textFilter_1 = require(\"../../filter/textFilter\");\nvar numberFilter_1 = require(\"../../filter/numberFilter\");\nvar overlayWrapperComponent_1 = require(\"../../rendering/overlays/overlayWrapperComponent\");\nvar loadingOverlayComponent_1 = require(\"../../rendering/overlays/loadingOverlayComponent\");\nvar noRowsOverlayComponent_1 = require(\"../../rendering/overlays/noRowsOverlayComponent\");\nvar utils_1 = require(\"../../utils\");\nvar RegisteredComponentSource;\n(function (RegisteredComponentSource) {\n    RegisteredComponentSource[RegisteredComponentSource[\"DEFAULT\"] = 0] = \"DEFAULT\";\n    RegisteredComponentSource[RegisteredComponentSource[\"REGISTERED\"] = 1] = \"REGISTERED\";\n})(RegisteredComponentSource = exports.RegisteredComponentSource || (exports.RegisteredComponentSource = {}));\nvar ComponentProvider = (function () {\n    function ComponentProvider() {\n        this.agDeprecatedNames = {};\n        this.jsComponents = {};\n        this.frameworkComponents = {};\n    }\n    ComponentProvider.prototype.postConstruct = function () {\n        this.agDeprecatedNames = {\n            set: {\n                newComponentName: 'agSetColumnFilter',\n                propertyHolder: 'filter'\n            },\n            text: {\n                newComponentName: 'agTextColumnFilter',\n                propertyHolder: 'filter'\n            },\n            number: {\n                newComponentName: 'agNumberColumnFilter',\n                propertyHolder: 'filter'\n            },\n            date: {\n                newComponentName: 'agDateColumnFilter',\n                propertyHolder: 'filter'\n            },\n            group: {\n                newComponentName: 'agGroupCellRenderer',\n                propertyHolder: 'cellRenderer'\n            },\n            animateShowChange: {\n                newComponentName: 'agAnimateShowChangeCellRenderer',\n                propertyHolder: 'cellRenderer'\n            },\n            animateSlide: {\n                newComponentName: 'agAnimateSlideCellRenderer',\n                propertyHolder: 'cellRenderer'\n            },\n            select: {\n                newComponentName: 'agSelectCellEditor',\n                propertyHolder: 'cellEditor'\n            },\n            largeText: {\n                newComponentName: 'agLargeTextCellEditor',\n                propertyHolder: 'cellEditor'\n            },\n            popupSelect: {\n                newComponentName: 'agPopupSelectCellEditor',\n                propertyHolder: 'cellEditor'\n            },\n            popupText: {\n                newComponentName: 'agPopupTextCellEditor',\n                propertyHolder: 'cellEditor'\n            },\n            richSelect: {\n                newComponentName: 'agRichSelectCellEditor',\n                propertyHolder: 'cellEditor'\n            },\n            headerComponent: {\n                newComponentName: 'agColumnHeader',\n                propertyHolder: 'headerComponent'\n            }\n        };\n        this.agGridDefaults = {\n            //THE FOLLOWING COMPONENTS HAVE NO DEFAULTS, THEY NEED TO BE SPECIFIED AS AN SPECIFIC FLAVOUR\n            //THERE ARE NO DEFAULTS THAT FIT ALL PURPOSES\n            //THEY ARE ADDED HERE TO AVOID THE NOT FOUND WARNING.\n            agColumnFilter: {\n                defaultImpl: null,\n                overridable: false\n            },\n            agCustomColumnFloatingFilter: {\n                defaultImpl: null,\n                overridable: false\n            },\n            //date\n            agDateInput: {\n                defaultImpl: dateFilter_1.DefaultDateComponent,\n                overridable: true\n            },\n            //header\n            agColumnHeader: {\n                defaultImpl: headerComp_1.HeaderComp,\n                overridable: true\n            },\n            agColumnGroupHeader: {\n                defaultImpl: headerGroupComp_1.HeaderGroupComp,\n                overridable: true\n            },\n            //floating filters\n            agSetColumnFloatingFilter: {\n                defaultImpl: floatingFilter_1.SetFloatingFilterComp,\n                overridable: true\n            },\n            agTextColumnFloatingFilter: {\n                defaultImpl: floatingFilter_1.TextFloatingFilterComp,\n                overridable: true\n            },\n            agNumberColumnFloatingFilter: {\n                defaultImpl: floatingFilter_1.NumberFloatingFilterComp,\n                overridable: true\n            },\n            agDateColumnFloatingFilter: {\n                defaultImpl: floatingFilter_1.DateFloatingFilterComp,\n                overridable: true\n            },\n            agReadModelAsStringFloatingFilter: {\n                defaultImpl: floatingFilter_1.ReadModelAsStringFloatingFilterComp,\n                overridable: false\n            },\n            agFloatingFilterWrapper: {\n                defaultImpl: floatingFilterWrapper_1.FloatingFilterWrapperComp,\n                overridable: false\n            },\n            agEmptyFloatingFilterWrapper: {\n                defaultImpl: floatingFilterWrapper_1.EmptyFloatingFilterWrapperComp,\n                overridable: false\n            },\n            // renderers\n            agCellRenderer: {\n                defaultImpl: null,\n                overridable: false\n            },\n            agFullWidthCellRenderer: {\n                defaultImpl: null,\n                overridable: false\n            },\n            agInnerCellRenderer: {\n                defaultImpl: null,\n                overridable: false\n            },\n            agGroupRowInnerCellRenderer: {\n                defaultImpl: null,\n                overridable: false\n            },\n            agAnimateShowChangeCellRenderer: {\n                defaultImpl: animateShowChangeCellRenderer_1.AnimateShowChangeCellRenderer,\n                overridable: true\n            },\n            agAnimateSlideCellRenderer: {\n                defaultImpl: animateSlideCellRenderer_1.AnimateSlideCellRenderer,\n                overridable: true\n            },\n            agGroupCellRenderer: {\n                defaultImpl: groupCellRenderer_1.GroupCellRenderer,\n                overridable: true\n            },\n            agGroupRowRenderer: {\n                defaultImpl: groupCellRenderer_1.GroupCellRenderer,\n                overridable: false\n            },\n            agLoadingCellRenderer: {\n                defaultImpl: rowComp_1.LoadingCellRenderer,\n                overridable: true\n            },\n            agOverlayWrapper: {\n                defaultImpl: overlayWrapperComponent_1.OverlayWrapperComponent,\n                overridable: false\n            },\n            agLoadingOverlay: {\n                defaultImpl: loadingOverlayComponent_1.LoadingOverlayComponent,\n                overridable: true\n            },\n            agNoRowsOverlay: {\n                defaultImpl: noRowsOverlayComponent_1.NoRowsOverlayComponent,\n                overridable: true\n            },\n            agPinnedRowCellRenderer: {\n                defaultImpl: null,\n                overridable: false\n            },\n            //editors\n            agCellEditor: {\n                defaultImpl: textCellEditor_1.TextCellEditor,\n                overridable: false\n            },\n            agTextCellEditor: {\n                defaultImpl: textCellEditor_1.TextCellEditor,\n                overridable: true\n            },\n            agText: {\n                defaultImpl: textCellEditor_1.TextCellEditor,\n                overridable: false\n            },\n            agSelectCellEditor: {\n                defaultImpl: selectCellEditor_1.SelectCellEditor,\n                overridable: true\n            },\n            agSelect: {\n                defaultImpl: selectCellEditor_1.SelectCellEditor,\n                overridable: false\n            },\n            agPopupTextCellEditor: {\n                defaultImpl: popupTextCellEditor_1.PopupTextCellEditor,\n                overridable: true\n            },\n            agPopupText: {\n                defaultImpl: popupTextCellEditor_1.PopupTextCellEditor,\n                overridable: false\n            },\n            agPopupSelectCellEditor: {\n                defaultImpl: popupSelectCellEditor_1.PopupSelectCellEditor,\n                overridable: true\n            },\n            agPopupSelect: {\n                defaultImpl: popupSelectCellEditor_1.PopupSelectCellEditor,\n                overridable: false\n            },\n            agLargeTextCellEditor: {\n                defaultImpl: largeTextCellEditor_1.LargeTextCellEditor,\n                overridable: true\n            },\n            agLargeText: {\n                defaultImpl: largeTextCellEditor_1.LargeTextCellEditor,\n                overridable: false\n            },\n            //filter\n            agTextColumnFilter: {\n                defaultImpl: textFilter_1.TextFilter,\n                overridable: false\n            },\n            agNumberColumnFilter: {\n                defaultImpl: numberFilter_1.NumberFilter,\n                overridable: false\n            },\n            agDateColumnFilter: {\n                defaultImpl: dateFilter_1.DateFilter,\n                overridable: false\n            }\n        };\n    };\n    ComponentProvider.prototype.init = function () {\n        var _this = this;\n        var componentProvider = this.context.getBean('componentProvider');\n        if (this.gridOptions.components != null) {\n            Object.keys(this.gridOptions.components).forEach(function (it) {\n                componentProvider.registerComponent(it, _this.gridOptions.components[it]);\n            });\n        }\n        if (this.gridOptions.frameworkComponents != null) {\n            Object.keys(this.gridOptions.frameworkComponents).forEach(function (it) {\n                componentProvider.registerFwComponent(it, _this.gridOptions.frameworkComponents[it]);\n            });\n        }\n    };\n    ComponentProvider.prototype.registerComponent = function (rawName, component) {\n        var name = this.translateIfDeprecated(rawName);\n        if (this.frameworkComponents[name]) {\n            console.error(\"Trying to register a component that you have already registered for frameworks: \" + name);\n            return;\n        }\n        this.jsComponents[name] = component;\n    };\n    /**\n     * B the business interface (ie IHeader)\n     * A the agGridComponent interface (ie IHeaderComp). The final object acceptable by ag-grid\n     */\n    ComponentProvider.prototype.registerFwComponent = function (rawName, component) {\n        var name = this.translateIfDeprecated(rawName);\n        if (this.jsComponents[name]) {\n            console.error(\"Trying to register a component that you have already registered for plain javascript: \" + name);\n            return;\n        }\n        this.frameworkComponents[name] = component;\n    };\n    /**\n     * B the business interface (ie IHeader)\n     * A the agGridComponent interface (ie IHeaderComp). The final object acceptable by ag-grid\n     */\n    ComponentProvider.prototype.retrieve = function (rawName) {\n        var name = this.translateIfDeprecated(rawName);\n        if (this.frameworkComponents[name]) {\n            return this.assertCanBeOverride(name, {\n                type: componentResolver_1.ComponentType.FRAMEWORK,\n                component: this.frameworkComponents[name],\n                source: RegisteredComponentSource.REGISTERED\n            });\n        }\n        if (this.jsComponents[name]) {\n            return this.assertCanBeOverride(name, {\n                type: componentResolver_1.ComponentType.AG_GRID,\n                component: this.jsComponents[name],\n                source: RegisteredComponentSource.REGISTERED\n            });\n        }\n        if (this.agGridDefaults[name]) {\n            return this.agGridDefaults[name].defaultImpl ?\n                {\n                    type: componentResolver_1.ComponentType.AG_GRID,\n                    component: this.agGridDefaults[name].defaultImpl,\n                    source: RegisteredComponentSource.DEFAULT\n                } :\n                null;\n        }\n        if (Object.keys(this.agGridDefaults).indexOf(name) < 0) {\n            console.warn(\"ag-grid: Looking for component [\" + name + \"] but it wasn't found.\");\n        }\n        return null;\n    };\n    ComponentProvider.prototype.assertCanBeOverride = function (name, toAssert) {\n        var overridable = this.agGridDefaults[name] ? this.agGridDefaults[name].overridable : true;\n        if (!overridable) {\n            throw Error(\"ag-grid: You are trying to register a component which is not overridable and which name it is used internally in ag-grid: [\" + name + \"]. Please change the name of the component\");\n        }\n        return toAssert;\n    };\n    ComponentProvider.prototype.translateIfDeprecated = function (raw) {\n        var deprecatedInfo = this.agDeprecatedNames[raw];\n        if (deprecatedInfo != null) {\n            utils_1._.doOnce(function () {\n                console.warn(\"ag-grid. Since v15.0 component names have been renamed to be namespaced. You should rename \" + deprecatedInfo.propertyHolder + \":\" + raw + \" to \" + deprecatedInfo.propertyHolder + \":\" + deprecatedInfo.newComponentName);\n            }, 'DEPREACTE_COMPONENT_' + raw);\n            return deprecatedInfo.newComponentName;\n        }\n        return raw;\n    };\n    __decorate([\n        context_1.Autowired('gridOptions'),\n        __metadata(\"design:type\", Object)\n    ], ComponentProvider.prototype, \"gridOptions\", void 0);\n    __decorate([\n        context_1.Autowired('context'),\n        __metadata(\"design:type\", context_1.Context)\n    ], ComponentProvider.prototype, \"context\", void 0);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], ComponentProvider.prototype, \"postConstruct\", null);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], ComponentProvider.prototype, \"init\", null);\n    ComponentProvider = __decorate([\n        context_1.Bean('componentProvider')\n    ], ComponentProvider);\n    return ComponentProvider;\n}());\nexports.ComponentProvider = ComponentProvider;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/components/framework/componentProvider.js\n// module id = 192\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar constants_1 = require(\"../../constants\");\nvar component_1 = require(\"../../widgets/component\");\nvar utils_1 = require(\"../../utils\");\nvar TextCellEditor = (function (_super) {\n    __extends(TextCellEditor, _super);\n    function TextCellEditor() {\n        return _super.call(this, TextCellEditor.TEMPLATE) || this;\n    }\n    TextCellEditor.prototype.init = function (params) {\n        this.params = params;\n        var eInput = this.getGui();\n        var startValue;\n        // cellStartedEdit is only false if we are doing fullRow editing\n        if (params.cellStartedEdit) {\n            this.focusAfterAttached = true;\n            var keyPressBackspaceOrDelete = params.keyPress === constants_1.Constants.KEY_BACKSPACE\n                || params.keyPress === constants_1.Constants.KEY_DELETE;\n            if (keyPressBackspaceOrDelete) {\n                startValue = '';\n            }\n            else if (params.charPress) {\n                startValue = params.charPress;\n            }\n            else {\n                startValue = this.getStartValue(params);\n                if (params.keyPress !== constants_1.Constants.KEY_F2) {\n                    this.highlightAllOnFocus = true;\n                }\n            }\n        }\n        else {\n            this.focusAfterAttached = false;\n            startValue = this.getStartValue(params);\n        }\n        if (utils_1.Utils.exists(startValue)) {\n            eInput.value = startValue;\n        }\n        this.addDestroyableEventListener(eInput, 'keydown', function (event) {\n            var isNavigationKey = event.keyCode === constants_1.Constants.KEY_LEFT\n                || event.keyCode === constants_1.Constants.KEY_RIGHT\n                || event.keyCode === constants_1.Constants.KEY_UP\n                || event.keyCode === constants_1.Constants.KEY_DOWN\n                || event.keyCode === constants_1.Constants.KEY_PAGE_DOWN\n                || event.keyCode === constants_1.Constants.KEY_PAGE_UP\n                || event.keyCode === constants_1.Constants.KEY_PAGE_HOME\n                || event.keyCode === constants_1.Constants.KEY_PAGE_END;\n            if (isNavigationKey) {\n                // this stops the grid from executing keyboard navigation\n                event.stopPropagation();\n                if (!(event.keyCode === constants_1.Constants.KEY_LEFT) && !(event.keyCode === constants_1.Constants.KEY_RIGHT)) {\n                    // this stops the browser from scrolling\n                    event.preventDefault();\n                }\n            }\n        });\n    };\n    TextCellEditor.prototype.afterGuiAttached = function () {\n        if (!this.focusAfterAttached) {\n            return;\n        }\n        var eInput = this.getGui();\n        eInput.focus();\n        if (this.highlightAllOnFocus) {\n            eInput.select();\n        }\n        else {\n            // when we started editing, we want the carot at the end, not the start.\n            // this comes into play in two scenarios: a) when user hits F2 and b)\n            // when user hits a printable character, then on IE (and only IE) the carot\n            // was placed after the first character, thus 'apply' would end up as 'pplea'\n            var length_1 = eInput.value ? eInput.value.length : 0;\n            if (length_1 > 0) {\n                eInput.setSelectionRange(length_1, length_1);\n            }\n        }\n    };\n    // gets called when tabbing trough cells and in full row edit mode\n    TextCellEditor.prototype.focusIn = function () {\n        var eInput = this.getGui();\n        eInput.focus();\n        eInput.select();\n    };\n    TextCellEditor.prototype.getValue = function () {\n        var eInput = this.getGui();\n        return this.params.parseValue(eInput.value);\n    };\n    TextCellEditor.prototype.getStartValue = function (params) {\n        var formatValue = params.useFormatter || params.column.getColDef().refData;\n        return formatValue ? params.formatValue(params.value) : params.value;\n    };\n    TextCellEditor.TEMPLATE = '<input class=\"ag-cell-edit-input\" type=\"text\"/>';\n    return TextCellEditor;\n}(component_1.Component));\nexports.TextCellEditor = TextCellEditor;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rendering/cellEditors/textCellEditor.js\n// module id = 193\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = require(\"../widgets/component\");\nvar componentAnnotations_1 = require(\"../widgets/componentAnnotations\");\nvar utils_1 = require(\"../utils\");\nvar baseFilter_1 = require(\"./baseFilter\");\nvar context_1 = require(\"../context/context\");\nvar componentRecipes_1 = require(\"../components/framework/componentRecipes\");\nvar DateFilter = (function (_super) {\n    __extends(DateFilter, _super);\n    function DateFilter() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    DateFilter.prototype.modelFromFloatingFilter = function (from) {\n        return {\n            dateFrom: from,\n            dateTo: this.getDateTo(),\n            type: this.filter,\n            filterType: 'date'\n        };\n    };\n    DateFilter.prototype.getApplicableFilterTypes = function () {\n        return [baseFilter_1.BaseFilter.EQUALS, baseFilter_1.BaseFilter.GREATER_THAN, baseFilter_1.BaseFilter.LESS_THAN, baseFilter_1.BaseFilter.NOT_EQUAL, baseFilter_1.BaseFilter.IN_RANGE];\n    };\n    DateFilter.prototype.bodyTemplate = function () {\n        return \"<div class=\\\"ag-filter-body\\\">\\n                    <div class=\\\"ag-filter-date-from\\\" id=\\\"filterDateFromPanel\\\">\\n                    </div>\\n                    <div class=\\\"ag-filter-date-to\\\" id=\\\"filterDateToPanel\\\">\\n                    </div>\\n                </div>\";\n    };\n    DateFilter.prototype.initialiseFilterBodyUi = function () {\n        var _this = this;\n        var dateComponentParams = {\n            onDateChanged: this.onDateChanged.bind(this)\n        };\n        this.componentRecipes.newDateComponent(dateComponentParams).then(function (dateToComponent) {\n            _this.dateToComponent = dateToComponent;\n            var dateToElement = _this.dateToComponent.getGui();\n            _this.eDateToPanel.appendChild(dateToElement);\n            if (_this.dateToComponent.afterGuiAttached) {\n                _this.dateToComponent.afterGuiAttached();\n            }\n        });\n        this.componentRecipes.newDateComponent(dateComponentParams).then(function (dateFromComponent) {\n            _this.dateFromComponent = dateFromComponent;\n            var dateFromElement = _this.dateFromComponent.getGui();\n            _this.eDateFromPanel.appendChild(dateFromElement);\n            if (_this.dateFromComponent.afterGuiAttached) {\n                _this.dateFromComponent.afterGuiAttached();\n            }\n        });\n    };\n    DateFilter.prototype.onDateChanged = function () {\n        this.dateFrom = DateFilter.removeTimezone(this.dateFromComponent.getDate());\n        this.dateTo = DateFilter.removeTimezone(this.dateToComponent.getDate());\n        this.onFilterChanged();\n    };\n    DateFilter.prototype.refreshFilterBodyUi = function () {\n        var visible = this.filter === baseFilter_1.BaseFilter.IN_RANGE;\n        utils_1.Utils.setVisible(this.eDateToPanel, visible);\n    };\n    DateFilter.prototype.comparator = function () {\n        return this.filterParams.comparator ? this.filterParams.comparator : this.defaultComparator.bind(this);\n    };\n    DateFilter.prototype.defaultComparator = function (filterDate, cellValue) {\n        //The default comparator assumes that the cellValue is a date\n        var cellAsDate = cellValue;\n        if (cellAsDate < filterDate) {\n            return -1;\n        }\n        if (cellAsDate > filterDate) {\n            return 1;\n        }\n        return cellValue != null ? 0 : -1;\n    };\n    DateFilter.prototype.serialize = function () {\n        return {\n            dateTo: utils_1.Utils.serializeDateToYyyyMmDd(this.dateToComponent.getDate(), \"-\"),\n            dateFrom: utils_1.Utils.serializeDateToYyyyMmDd(this.dateFromComponent.getDate(), \"-\"),\n            type: this.filter ? this.filter : this.defaultFilter,\n            filterType: 'date'\n        };\n    };\n    DateFilter.prototype.filterValues = function () {\n        return this.filter !== baseFilter_1.BaseFilter.IN_RANGE ?\n            this.dateFromComponent.getDate() :\n            [this.dateFromComponent.getDate(), this.dateToComponent.getDate()];\n    };\n    // not used by ag-Grid, but exposed as part of the filter API for the client if they want it\n    DateFilter.prototype.getDateFrom = function () {\n        return utils_1.Utils.serializeDateToYyyyMmDd(this.dateFromComponent.getDate(), \"-\");\n    };\n    // not used by ag-Grid, but exposed as part of the filter API for the client if they want it\n    DateFilter.prototype.getDateTo = function () {\n        return utils_1.Utils.serializeDateToYyyyMmDd(this.dateToComponent.getDate(), \"-\");\n    };\n    // not used by ag-Grid, but exposed as part of the filter API for the client if they want it\n    DateFilter.prototype.getFilterType = function () {\n        return this.filter;\n    };\n    DateFilter.prototype.setDateFrom = function (date) {\n        this.dateFrom = utils_1.Utils.parseYyyyMmDdToDate(date, \"-\");\n        this.dateFromComponent.setDate(this.dateFrom);\n    };\n    DateFilter.prototype.setDateTo = function (date) {\n        this.dateTo = utils_1.Utils.parseYyyyMmDdToDate(date, \"-\");\n        this.dateToComponent.setDate(this.dateTo);\n    };\n    DateFilter.prototype.resetState = function () {\n        this.setDateFrom(null);\n        this.setDateTo(null);\n        this.setFilterType(this.defaultFilter);\n    };\n    DateFilter.prototype.parse = function (model) {\n        this.setDateFrom(model.dateFrom);\n        this.setDateTo(model.dateTo);\n        this.setFilterType(model.type);\n    };\n    DateFilter.prototype.setType = function (filterType) {\n        this.setFilterType(filterType);\n    };\n    DateFilter.removeTimezone = function (from) {\n        if (!from)\n            return null;\n        return new Date(from.getFullYear(), from.getMonth(), from.getDate());\n    };\n    __decorate([\n        context_1.Autowired('componentRecipes'),\n        __metadata(\"design:type\", componentRecipes_1.ComponentRecipes)\n    ], DateFilter.prototype, \"componentRecipes\", void 0);\n    __decorate([\n        componentAnnotations_1.QuerySelector('#filterDateFromPanel'),\n        __metadata(\"design:type\", HTMLElement)\n    ], DateFilter.prototype, \"eDateFromPanel\", void 0);\n    __decorate([\n        componentAnnotations_1.QuerySelector('#filterDateToPanel'),\n        __metadata(\"design:type\", HTMLElement)\n    ], DateFilter.prototype, \"eDateToPanel\", void 0);\n    return DateFilter;\n}(baseFilter_1.ScalarBaseFilter));\nexports.DateFilter = DateFilter;\nvar DefaultDateComponent = (function (_super) {\n    __extends(DefaultDateComponent, _super);\n    function DefaultDateComponent() {\n        return _super.call(this, \"<input class=\\\"ag-filter-filter\\\" type=\\\"text\\\" placeholder=\\\"yyyy-mm-dd\\\">\") || this;\n    }\n    DefaultDateComponent.prototype.init = function (params) {\n        this.eDateInput = this.getGui();\n        if (utils_1.Utils.isBrowserChrome()) {\n            this.eDateInput.type = 'date';\n        }\n        this.listener = params.onDateChanged;\n        this.addGuiEventListener('input', this.listener);\n    };\n    DefaultDateComponent.prototype.getDate = function () {\n        return utils_1.Utils.parseYyyyMmDdToDate(this.eDateInput.value, \"-\");\n    };\n    DefaultDateComponent.prototype.setDate = function (date) {\n        this.eDateInput.value = utils_1.Utils.serializeDateToYyyyMmDd(date, \"-\");\n    };\n    return DefaultDateComponent;\n}(component_1.Component));\nexports.DefaultDateComponent = DefaultDateComponent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/filter/dateFilter.js\n// module id = 194\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar gridPanel_1 = require(\"../gridPanel/gridPanel\");\nvar utils_1 = require(\"../utils\");\nvar ColumnAnimationService = (function () {\n    function ColumnAnimationService() {\n        this.executeNextFuncs = [];\n        this.executeLaterFuncs = [];\n        this.active = false;\n        this.animationThreadCount = 0;\n    }\n    ColumnAnimationService.prototype.isActive = function () {\n        return this.active;\n    };\n    ColumnAnimationService.prototype.start = function () {\n        if (this.active) {\n            return;\n        }\n        if (this.gridOptionsWrapper.isSuppressColumnMoveAnimation()) {\n            return;\n        }\n        // if doing RTL, we don't animate open / close as due to how the pixels are inverted,\n        // the animation moves all the row the the right rather than to the left (ie it's the static\n        // columns that actually get their coordinates updated)\n        if (this.gridOptionsWrapper.isEnableRtl()) {\n            return;\n        }\n        this.ensureAnimationCssClassPresent();\n        this.active = true;\n    };\n    ColumnAnimationService.prototype.finish = function () {\n        if (!this.active) {\n            return;\n        }\n        this.flush();\n        this.active = false;\n    };\n    ColumnAnimationService.prototype.executeNextVMTurn = function (func) {\n        if (this.active) {\n            this.executeNextFuncs.push(func);\n        }\n        else {\n            func();\n        }\n    };\n    ColumnAnimationService.prototype.executeLaterVMTurn = function (func) {\n        if (this.active) {\n            this.executeLaterFuncs.push(func);\n        }\n        else {\n            func();\n        }\n    };\n    ColumnAnimationService.prototype.ensureAnimationCssClassPresent = function () {\n        var _this = this;\n        // up the count, so we can tell if someone else has updated the count\n        // by the time the 'wait' func executes\n        this.animationThreadCount++;\n        var animationThreadCountCopy = this.animationThreadCount;\n        utils_1.Utils.addCssClass(this.gridPanel.getRoot(), 'ag-column-moving');\n        this.executeLaterFuncs.push(function () {\n            // only remove the class if this thread was the last one to update it\n            if (_this.animationThreadCount === animationThreadCountCopy) {\n                utils_1.Utils.removeCssClass(_this.gridPanel.getRoot(), 'ag-column-moving');\n            }\n        });\n    };\n    ColumnAnimationService.prototype.flush = function () {\n        var nowFuncs = this.executeNextFuncs;\n        this.executeNextFuncs = [];\n        var waitFuncs = this.executeLaterFuncs;\n        this.executeLaterFuncs = [];\n        if (nowFuncs.length === 0 && waitFuncs.length === 0) {\n            return;\n        }\n        setTimeout(function () { return nowFuncs.forEach(function (func) { return func(); }); }, 0);\n        setTimeout(function () { return waitFuncs.forEach(function (func) { return func(); }); }, 300);\n    };\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], ColumnAnimationService.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('gridPanel'),\n        __metadata(\"design:type\", gridPanel_1.GridPanel)\n    ], ColumnAnimationService.prototype, \"gridPanel\", void 0);\n    ColumnAnimationService = __decorate([\n        context_1.Bean('columnAnimationService')\n    ], ColumnAnimationService);\n    return ColumnAnimationService;\n}());\nexports.ColumnAnimationService = ColumnAnimationService;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rendering/columnAnimationService.js\n// module id = 195\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../../utils\");\nvar component_1 = require(\"../../widgets/component\");\nvar AnimateSlideCellRenderer = (function (_super) {\n    __extends(AnimateSlideCellRenderer, _super);\n    function AnimateSlideCellRenderer() {\n        var _this = _super.call(this, AnimateSlideCellRenderer.TEMPLATE) || this;\n        _this.refreshCount = 0;\n        _this.eCurrent = _this.queryForHtmlElement('.ag-value-slide-current');\n        return _this;\n    }\n    AnimateSlideCellRenderer.prototype.init = function (params) {\n        this.params = params;\n        this.refresh(params);\n    };\n    AnimateSlideCellRenderer.prototype.addSlideAnimation = function () {\n        var _this = this;\n        this.refreshCount++;\n        // below we keep checking this, and stop working on the animation\n        // if it no longer matches - this means another animation has started\n        // and this one is stale.\n        var refreshCountCopy = this.refreshCount;\n        // if old animation, remove it\n        if (this.ePrevious) {\n            this.getGui().removeChild(this.ePrevious);\n        }\n        this.ePrevious = utils_1.Utils.loadTemplate('<span class=\"ag-value-slide-previous ag-value-slide-out\"></span>');\n        this.ePrevious.innerHTML = this.eCurrent.innerHTML;\n        this.getGui().insertBefore(this.ePrevious, this.eCurrent);\n        // having timeout of 0 allows use to skip to the next css turn,\n        // so we know the previous css classes have been applied. so the\n        // complex set of setTimeout below creates the animation\n        setTimeout(function () {\n            if (refreshCountCopy !== _this.refreshCount) {\n                return;\n            }\n            utils_1.Utils.addCssClass(_this.ePrevious, 'ag-value-slide-out-end');\n        }, 50);\n        setTimeout(function () {\n            if (refreshCountCopy !== _this.refreshCount) {\n                return;\n            }\n            _this.getGui().removeChild(_this.ePrevious);\n            _this.ePrevious = null;\n        }, 3000);\n    };\n    AnimateSlideCellRenderer.prototype.refresh = function (params) {\n        var value = params.value;\n        if (utils_1.Utils.missing(value)) {\n            value = '';\n        }\n        if (value === this.lastValue) {\n            return;\n        }\n        this.addSlideAnimation();\n        this.lastValue = value;\n        if (utils_1.Utils.exists(params.valueFormatted)) {\n            this.eCurrent.innerHTML = params.valueFormatted;\n        }\n        else if (utils_1.Utils.exists(params.value)) {\n            this.eCurrent.innerHTML = value;\n        }\n        else {\n            this.eCurrent.innerHTML = '';\n        }\n        return true;\n    };\n    AnimateSlideCellRenderer.TEMPLATE = '<span>' +\n        '<span class=\"ag-value-slide-current\"></span>' +\n        '</span>';\n    return AnimateSlideCellRenderer;\n}(component_1.Component));\nexports.AnimateSlideCellRenderer = AnimateSlideCellRenderer;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rendering/cellRenderers/animateSlideCellRenderer.js\n// module id = 196\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../../utils\");\nvar component_1 = require(\"../../widgets/component\");\nvar ARROW_UP = '&#65514;';\nvar ARROW_DOWN = '&#65516;';\nvar AnimateShowChangeCellRenderer = (function (_super) {\n    __extends(AnimateShowChangeCellRenderer, _super);\n    function AnimateShowChangeCellRenderer() {\n        var _this = _super.call(this, AnimateShowChangeCellRenderer.TEMPLATE) || this;\n        _this.refreshCount = 0;\n        return _this;\n    }\n    AnimateShowChangeCellRenderer.prototype.init = function (params) {\n        // this.params = params;\n        this.eValue = this.queryForHtmlElement('.ag-value-change-value');\n        this.eDelta = this.queryForHtmlElement('.ag-value-change-delta');\n        this.refresh(params);\n    };\n    AnimateShowChangeCellRenderer.prototype.showDelta = function (params, delta) {\n        var absDelta = Math.abs(delta);\n        var valueFormatted = params.formatValue(absDelta);\n        var valueToUse = utils_1.Utils.exists(valueFormatted) ? valueFormatted : absDelta;\n        var deltaUp = (delta >= 0);\n        if (deltaUp) {\n            this.eDelta.innerHTML = ARROW_UP + valueToUse;\n        }\n        else {\n            // because negative, use ABS to remove sign\n            this.eDelta.innerHTML = ARROW_DOWN + valueToUse;\n        }\n        // class makes it green (in ag-fresh)\n        utils_1.Utils.addOrRemoveCssClass(this.eDelta, 'ag-value-change-delta-up', deltaUp);\n        // class makes it red (in ag-fresh)\n        utils_1.Utils.addOrRemoveCssClass(this.eDelta, 'ag-value-change-delta-down', !deltaUp);\n    };\n    AnimateShowChangeCellRenderer.prototype.setTimerToRemoveDelta = function () {\n        var _this = this;\n        // the refreshCount makes sure that if the value updates again while\n        // the below timer is waiting, then the below timer will realise it\n        // is not the most recent and will not try to remove the delta value.\n        this.refreshCount++;\n        var refreshCountCopy = this.refreshCount;\n        setTimeout(function () {\n            if (refreshCountCopy === _this.refreshCount) {\n                _this.hideDeltaValue();\n            }\n        }, 2000);\n    };\n    AnimateShowChangeCellRenderer.prototype.hideDeltaValue = function () {\n        utils_1.Utils.removeCssClass(this.eValue, 'ag-value-change-value-highlight');\n        this.eDelta.innerHTML = '';\n    };\n    AnimateShowChangeCellRenderer.prototype.refresh = function (params) {\n        var value = params.value;\n        if (value === this.lastValue) {\n            return;\n        }\n        if (utils_1.Utils.exists(params.valueFormatted)) {\n            this.eValue.innerHTML = params.valueFormatted;\n        }\n        else if (utils_1.Utils.exists(params.value)) {\n            this.eValue.innerHTML = value;\n        }\n        else {\n            this.eValue.innerHTML = '';\n        }\n        if (typeof value === 'number' && typeof this.lastValue === 'number') {\n            var delta = value - this.lastValue;\n            this.showDelta(params, delta);\n        }\n        // highlight the current value, but only if it's not new, otherwise it\n        // would get highlighted first time the value is shown\n        if (this.lastValue) {\n            utils_1.Utils.addCssClass(this.eValue, 'ag-value-change-value-highlight');\n        }\n        this.setTimerToRemoveDelta();\n        this.lastValue = value;\n        return true;\n    };\n    AnimateShowChangeCellRenderer.TEMPLATE = '<span>' +\n        '<span class=\"ag-value-change-delta\"></span>' +\n        '<span class=\"ag-value-change-value\"></span>' +\n        '</span>';\n    return AnimateShowChangeCellRenderer;\n}(component_1.Component));\nexports.AnimateShowChangeCellRenderer = AnimateShowChangeCellRenderer;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rendering/cellRenderers/animateShowChangeCellRenderer.js\n// module id = 197\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar expressionService_1 = require(\"../../valueService/expressionService\");\nvar eventService_1 = require(\"../../eventService\");\nvar constants_1 = require(\"../../constants\");\nvar utils_1 = require(\"../../utils\");\nvar context_1 = require(\"../../context/context\");\nvar component_1 = require(\"../../widgets/component\");\nvar rowNode_1 = require(\"../../entities/rowNode\");\nvar cellRendererService_1 = require(\"../cellRendererService\");\nvar valueFormatterService_1 = require(\"../valueFormatterService\");\nvar checkboxSelectionComponent_1 = require(\"../checkboxSelectionComponent\");\nvar columnController_1 = require(\"../../columnController/columnController\");\nvar column_1 = require(\"../../entities/column\");\nvar componentAnnotations_1 = require(\"../../widgets/componentAnnotations\");\nvar mouseEventService_1 = require(\"../../gridPanel/mouseEventService\");\nvar GroupCellRenderer = (function (_super) {\n    __extends(GroupCellRenderer, _super);\n    function GroupCellRenderer() {\n        return _super.call(this, GroupCellRenderer.TEMPLATE) || this;\n    }\n    GroupCellRenderer.prototype.init = function (params) {\n        this.params = params;\n        var embeddedRowMismatch = this.isEmbeddedRowMismatch();\n        // This allows for empty strings to appear as groups since\n        // it will only return for null or undefined.\n        var cellIsEmpty = params.value == null;\n        this.cellIsBlank = embeddedRowMismatch || cellIsEmpty;\n        if (this.cellIsBlank) {\n            return;\n        }\n        this.setupDragOpenParents();\n        this.addExpandAndContract();\n        this.addCheckboxIfNeeded();\n        this.addValueElement();\n        this.setupIndent();\n    };\n    // if we are doing embedded full width rows, we only show the renderer when\n    // in the body, or if pinning in the pinned section, or if pinning and RTL,\n    // in the right section. otherwise we would have the cell repeated in each section.\n    GroupCellRenderer.prototype.isEmbeddedRowMismatch = function () {\n        if (this.params.fullWidth && this.gridOptionsWrapper.isEmbedFullWidthRows()) {\n            var pinnedLeftCell = this.params.pinned === column_1.Column.PINNED_LEFT;\n            var pinnedRightCell = this.params.pinned === column_1.Column.PINNED_RIGHT;\n            var bodyCell = !pinnedLeftCell && !pinnedRightCell;\n            if (this.gridOptionsWrapper.isEnableRtl()) {\n                if (this.columnController.isPinningLeft()) {\n                    return !pinnedRightCell;\n                }\n                else {\n                    return !bodyCell;\n                }\n            }\n            else {\n                if (this.columnController.isPinningLeft()) {\n                    return !pinnedLeftCell;\n                }\n                else {\n                    return !bodyCell;\n                }\n            }\n        }\n        else {\n            return false;\n        }\n    };\n    GroupCellRenderer.prototype.setIndent = function () {\n        if (this.gridOptionsWrapper.isGroupHideOpenParents()) {\n            return;\n        }\n        var params = this.params;\n        var rowNode = params.node;\n        // let paddingPx: number;\n        var paddingCount = rowNode.uiLevel;\n        var pivotModeAndLeafGroup = this.columnController.isPivotMode() && params.node.leafGroup;\n        var notExpandable = !rowNode.isExpandable();\n        if (rowNode.footer || notExpandable || pivotModeAndLeafGroup) {\n            paddingCount += 1;\n        }\n        var userProvidedPaddingPixelsTheDeprecatedWay = params.padding >= 0;\n        if (userProvidedPaddingPixelsTheDeprecatedWay) {\n            this.setPaddingDeprecatedWay(paddingCount, params.padding);\n            return;\n        }\n        if (this.indentClass) {\n            this.removeCssClass(this.indentClass);\n        }\n        this.indentClass = 'ag-row-group-indent-' + paddingCount;\n        this.addCssClass(this.indentClass);\n    };\n    GroupCellRenderer.prototype.setPaddingDeprecatedWay = function (paddingCount, padding) {\n        utils_1.Utils.doOnce(function () { return console.warn('ag-Grid: since v14.2, configuring padding for groupCellRenderer should be done with Sass variables and themes. Please see the ag-Grid documentation.'); }, 'groupCellRenderer->doDeprecatedWay');\n        var paddingPx = paddingCount * padding;\n        if (this.gridOptionsWrapper.isEnableRtl()) {\n            // if doing rtl, padding is on the right\n            this.getGui().style.paddingRight = paddingPx + 'px';\n        }\n        else {\n            // otherwise it is on the left\n            this.getGui().style.paddingLeft = paddingPx + 'px';\n        }\n    };\n    GroupCellRenderer.prototype.setupIndent = function () {\n        // only do this if an indent - as this overwrites the padding that\n        // the theme set, which will make things look 'not aligned' for the\n        // first group level.\n        var node = this.params.node;\n        var suppressPadding = this.params.suppressPadding;\n        if (!suppressPadding) {\n            this.addDestroyableEventListener(node, rowNode_1.RowNode.EVENT_UI_LEVEL_CHANGED, this.setIndent.bind(this));\n            this.setIndent();\n        }\n    };\n    GroupCellRenderer.prototype.addValueElement = function () {\n        var params = this.params;\n        var rowNode = this.displayedGroup;\n        if (rowNode.footer) {\n            this.createFooterCell();\n        }\n        else if (rowNode.hasChildren() ||\n            utils_1.Utils.get(params.colDef, 'cellRendererParams.innerRenderer', null) ||\n            utils_1.Utils.get(params.colDef, 'cellRendererParams.innerRendererFramework', null)) {\n            this.createGroupCell();\n            if (rowNode.hasChildren()) {\n                this.addChildCount();\n            }\n        }\n        else {\n            this.createLeafCell();\n        }\n    };\n    GroupCellRenderer.prototype.createFooterCell = function () {\n        var footerValue;\n        var footerValueGetter = this.params.footerValueGetter;\n        if (footerValueGetter) {\n            // params is same as we were given, except we set the value as the item to display\n            var paramsClone = utils_1.Utils.cloneObject(this.params);\n            paramsClone.value = this.params.value;\n            if (typeof footerValueGetter === 'function') {\n                footerValue = footerValueGetter(paramsClone);\n            }\n            else if (typeof footerValueGetter === 'string') {\n                footerValue = this.expressionService.evaluate(footerValueGetter, paramsClone);\n            }\n            else {\n                console.warn('ag-Grid: footerValueGetter should be either a function or a string (expression)');\n            }\n        }\n        else {\n            footerValue = 'Total ' + this.params.value;\n        }\n        this.eValue.innerHTML = footerValue;\n    };\n    GroupCellRenderer.prototype.createGroupCell = function () {\n        var params = this.params;\n        var rowGroupColumn = this.displayedGroup.rowGroupColumn;\n        // we try and use the cellRenderer of the column used for the grouping if we can\n        var columnToUse = rowGroupColumn ? rowGroupColumn : params.column;\n        var groupName = this.params.value;\n        var valueFormatted = columnToUse ?\n            this.valueFormatterService.formatValue(columnToUse, params.node, params.scope, groupName) : null;\n        params.valueFormatted = valueFormatted;\n        if (params.fullWidth == true) {\n            this.cellRendererService.useFullWidthGroupRowInnerCellRenderer(this.eValue, params);\n        }\n        else {\n            this.cellRendererService.useInnerCellRenderer(this.params.colDef.cellRendererParams, columnToUse.getColDef(), this.eValue, params);\n        }\n    };\n    GroupCellRenderer.prototype.addChildCount = function () {\n        // only include the child count if it's included, eg if user doing custom aggregation,\n        // then this could be left out, or set to -1, ie no child count\n        if (this.params.suppressCount) {\n            return;\n        }\n        this.addDestroyableEventListener(this.displayedGroup, rowNode_1.RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED, this.updateChildCount.bind(this));\n        // filtering changes the child count, so need to cater for it\n        this.updateChildCount();\n    };\n    GroupCellRenderer.prototype.updateChildCount = function () {\n        var allChildrenCount = this.displayedGroup.allChildrenCount;\n        this.eChildCount.innerHTML = allChildrenCount >= 0 ? \"(\" + allChildrenCount + \")\" : \"\";\n    };\n    GroupCellRenderer.prototype.createLeafCell = function () {\n        if (utils_1.Utils.exists(this.params.value)) {\n            this.eValue.innerHTML = this.params.valueFormatted ? this.params.valueFormatted : this.params.value;\n        }\n    };\n    GroupCellRenderer.prototype.isUserWantsSelected = function () {\n        var paramsCheckbox = this.params.checkbox;\n        if (typeof paramsCheckbox === 'function') {\n            return paramsCheckbox(this.params);\n        }\n        else {\n            return paramsCheckbox === true;\n        }\n    };\n    GroupCellRenderer.prototype.addCheckboxIfNeeded = function () {\n        var rowNode = this.params.node;\n        var checkboxNeeded = this.isUserWantsSelected()\n            && !rowNode.footer\n            && !rowNode.rowPinned\n            && !rowNode.detail;\n        if (checkboxNeeded) {\n            var cbSelectionComponent_1 = new checkboxSelectionComponent_1.CheckboxSelectionComponent();\n            this.context.wireBean(cbSelectionComponent_1);\n            cbSelectionComponent_1.init({ rowNode: rowNode, column: this.params.column });\n            this.eCheckbox.appendChild(cbSelectionComponent_1.getGui());\n            this.addDestroyFunc(function () { return cbSelectionComponent_1.destroy(); });\n        }\n    };\n    GroupCellRenderer.prototype.addExpandAndContract = function () {\n        var params = this.params;\n        var eGroupCell = params.eGridCell;\n        var eExpandedIcon = utils_1.Utils.createIconNoSpan('groupExpanded', this.gridOptionsWrapper, null);\n        var eContractedIcon = utils_1.Utils.createIconNoSpan('groupContracted', this.gridOptionsWrapper, null);\n        this.eExpanded.appendChild(eExpandedIcon);\n        this.eContracted.appendChild(eContractedIcon);\n        this.addDestroyableEventListener(this.eExpanded, 'click', this.onExpandClicked.bind(this));\n        this.addDestroyableEventListener(this.eContracted, 'click', this.onExpandClicked.bind(this));\n        // expand / contract as the user hits enter\n        this.addDestroyableEventListener(eGroupCell, 'keydown', this.onKeyDown.bind(this));\n        this.addDestroyableEventListener(params.node, rowNode_1.RowNode.EVENT_EXPANDED_CHANGED, this.showExpandAndContractIcons.bind(this));\n        this.showExpandAndContractIcons();\n        // because we don't show the expand / contract when there are no children, we need to check every time\n        // the number of children change.\n        this.addDestroyableEventListener(this.displayedGroup, rowNode_1.RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED, this.onAllChildrenCountChanged.bind(this));\n        // if editing groups, then double click is to start editing\n        if (!this.gridOptionsWrapper.isEnableGroupEdit() && this.isExpandable()) {\n            this.addDestroyableEventListener(eGroupCell, 'dblclick', this.onCellDblClicked.bind(this));\n        }\n    };\n    GroupCellRenderer.prototype.onAllChildrenCountChanged = function () {\n        // maybe if no children now, we should hide the expand / contract icons\n        this.showExpandAndContractIcons();\n        // if we have no children, this impacts the indent\n        this.setIndent();\n    };\n    GroupCellRenderer.prototype.onKeyDown = function (event) {\n        if (utils_1.Utils.isKeyPressed(event, constants_1.Constants.KEY_ENTER)) {\n            var cellEditable = this.params.column.isCellEditable(this.params.node);\n            if (cellEditable) {\n                return;\n            }\n            event.preventDefault();\n            this.onExpandOrContract();\n        }\n    };\n    GroupCellRenderer.prototype.setupDragOpenParents = function () {\n        var column = this.params.column;\n        var rowNode = this.params.node;\n        if (!this.gridOptionsWrapper.isGroupHideOpenParents()) {\n            this.draggedFromHideOpenParents = false;\n        }\n        else if (!rowNode.hasChildren()) {\n            // if we are here, and we are not a group, then we must of been dragged down,\n            // as otherwise the cell would be blank, and if cell is blank, this method is never called.\n            this.draggedFromHideOpenParents = true;\n        }\n        else {\n            var rowGroupColumn = rowNode.rowGroupColumn;\n            // if the displayGroup column for this col matches the rowGroupColumn we grouped by for this node,\n            // then nothing was dragged down\n            this.draggedFromHideOpenParents = !column.isRowGroupDisplayed(rowGroupColumn.getId());\n        }\n        if (this.draggedFromHideOpenParents) {\n            var pointer = rowNode.parent;\n            while (true) {\n                if (utils_1.Utils.missing(pointer)) {\n                    break;\n                }\n                if (pointer.rowGroupColumn && column.isRowGroupDisplayed(pointer.rowGroupColumn.getId())) {\n                    this.displayedGroup = pointer;\n                    break;\n                }\n                pointer = pointer.parent;\n            }\n        }\n        // if we didn't find a displayed group, set it to the row node\n        if (utils_1.Utils.missing(this.displayedGroup)) {\n            this.displayedGroup = rowNode;\n        }\n    };\n    GroupCellRenderer.prototype.onExpandClicked = function (mouseEvent) {\n        if (utils_1.Utils.isStopPropagationForAgGrid(mouseEvent)) {\n            return;\n        }\n        this.onExpandOrContract();\n    };\n    GroupCellRenderer.prototype.onCellDblClicked = function (mouseEvent) {\n        if (utils_1.Utils.isStopPropagationForAgGrid(mouseEvent)) {\n            return;\n        }\n        // we want to avoid acting on double click events on the expand / contract icon,\n        // as that icons already has expand / collapse functionality on it. otherwise if\n        // the icon was double clicked, we would get 'click', 'click', 'dblclick' which\n        // is open->close->open, however double click should be open->close only.\n        var targetIsExpandIcon = utils_1.Utils.isElementInEventPath(this.eExpanded, mouseEvent)\n            || utils_1.Utils.isElementInEventPath(this.eContracted, mouseEvent);\n        if (!targetIsExpandIcon) {\n            this.onExpandOrContract();\n        }\n    };\n    GroupCellRenderer.prototype.onExpandOrContract = function () {\n        // must use the displayedGroup, so if data was dragged down, we expand the parent, not this row\n        var rowNode = this.displayedGroup;\n        rowNode.setExpanded(!rowNode.expanded);\n        if (this.gridOptionsWrapper.isGroupIncludeFooter()) {\n            this.params.api.redrawRows({ rowNodes: [rowNode] });\n        }\n    };\n    GroupCellRenderer.prototype.isExpandable = function () {\n        var rowNode = this.params.node;\n        var reducedLeafNode = this.columnController.isPivotMode() && rowNode.leafGroup;\n        return this.draggedFromHideOpenParents ||\n            (rowNode.isExpandable() && !rowNode.footer && !reducedLeafNode);\n    };\n    GroupCellRenderer.prototype.showExpandAndContractIcons = function () {\n        var rowNode = this.params.node;\n        if (this.isExpandable()) {\n            // if expandable, show one based on expand state.\n            // if we were dragged down, means our parent is always expanded\n            var expanded = this.draggedFromHideOpenParents ? true : rowNode.expanded;\n            utils_1.Utils.setVisible(this.eContracted, !expanded);\n            utils_1.Utils.setVisible(this.eExpanded, expanded);\n        }\n        else {\n            // it not expandable, show neither\n            utils_1.Utils.setVisible(this.eExpanded, false);\n            utils_1.Utils.setVisible(this.eContracted, false);\n        }\n    };\n    GroupCellRenderer.prototype.refresh = function () {\n        return false;\n    };\n    GroupCellRenderer.TEMPLATE = '<span>' +\n        '<span class=\"ag-group-expanded\" ref=\"eExpanded\"></span>' +\n        '<span class=\"ag-group-contracted\" ref=\"eContracted\"></span>' +\n        '<span class=\"ag-group-checkbox\" ref=\"eCheckbox\"></span>' +\n        '<span class=\"ag-group-value\" ref=\"eValue\"></span>' +\n        '<span class=\"ag-group-child-count\" ref=\"eChildCount\"></span>' +\n        '</span>';\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], GroupCellRenderer.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('expressionService'),\n        __metadata(\"design:type\", expressionService_1.ExpressionService)\n    ], GroupCellRenderer.prototype, \"expressionService\", void 0);\n    __decorate([\n        context_1.Autowired('eventService'),\n        __metadata(\"design:type\", eventService_1.EventService)\n    ], GroupCellRenderer.prototype, \"eventService\", void 0);\n    __decorate([\n        context_1.Autowired('cellRendererService'),\n        __metadata(\"design:type\", cellRendererService_1.CellRendererService)\n    ], GroupCellRenderer.prototype, \"cellRendererService\", void 0);\n    __decorate([\n        context_1.Autowired('valueFormatterService'),\n        __metadata(\"design:type\", valueFormatterService_1.ValueFormatterService)\n    ], GroupCellRenderer.prototype, \"valueFormatterService\", void 0);\n    __decorate([\n        context_1.Autowired('context'),\n        __metadata(\"design:type\", context_1.Context)\n    ], GroupCellRenderer.prototype, \"context\", void 0);\n    __decorate([\n        context_1.Autowired('columnController'),\n        __metadata(\"design:type\", columnController_1.ColumnController)\n    ], GroupCellRenderer.prototype, \"columnController\", void 0);\n    __decorate([\n        context_1.Autowired('mouseEventService'),\n        __metadata(\"design:type\", mouseEventService_1.MouseEventService)\n    ], GroupCellRenderer.prototype, \"mouseEventService\", void 0);\n    __decorate([\n        componentAnnotations_1.RefSelector('eExpanded'),\n        __metadata(\"design:type\", HTMLElement)\n    ], GroupCellRenderer.prototype, \"eExpanded\", void 0);\n    __decorate([\n        componentAnnotations_1.RefSelector('eContracted'),\n        __metadata(\"design:type\", HTMLElement)\n    ], GroupCellRenderer.prototype, \"eContracted\", void 0);\n    __decorate([\n        componentAnnotations_1.RefSelector('eCheckbox'),\n        __metadata(\"design:type\", HTMLElement)\n    ], GroupCellRenderer.prototype, \"eCheckbox\", void 0);\n    __decorate([\n        componentAnnotations_1.RefSelector('eValue'),\n        __metadata(\"design:type\", HTMLElement)\n    ], GroupCellRenderer.prototype, \"eValue\", void 0);\n    __decorate([\n        componentAnnotations_1.RefSelector('eChildCount'),\n        __metadata(\"design:type\", HTMLElement)\n    ], GroupCellRenderer.prototype, \"eChildCount\", void 0);\n    return GroupCellRenderer;\n}(component_1.Component));\nexports.GroupCellRenderer = GroupCellRenderer;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rendering/cellRenderers/groupCellRenderer.js\n// module id = 198\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar expressionService_1 = require(\"../valueService/expressionService\");\nvar StylingService = (function () {\n    function StylingService() {\n    }\n    StylingService.prototype.processAllCellClasses = function (colDef, params, onApplicableClass, onNotApplicableClass) {\n        this.processClassRules(colDef.cellClassRules, params, onApplicableClass, onNotApplicableClass);\n        this.processStaticCellClasses(colDef, params, onApplicableClass);\n    };\n    StylingService.prototype.processClassRules = function (classRules, params, onApplicableClass, onNotApplicableClass) {\n        if (typeof classRules === 'object' && classRules !== null) {\n            var classNames = Object.keys(classRules);\n            for (var i = 0; i < classNames.length; i++) {\n                var className = classNames[i];\n                var rule = classRules[className];\n                var resultOfRule = void 0;\n                if (typeof rule === 'string') {\n                    resultOfRule = this.expressionService.evaluate(rule, params);\n                }\n                else if (typeof rule === 'function') {\n                    resultOfRule = rule(params);\n                }\n                if (resultOfRule) {\n                    onApplicableClass(className);\n                }\n                else if (onNotApplicableClass) {\n                    onNotApplicableClass(className);\n                }\n            }\n        }\n    };\n    StylingService.prototype.processStaticCellClasses = function (colDef, params, onApplicableClass) {\n        var cellClass = colDef.cellClass;\n        if (cellClass) {\n            var classOrClasses = void 0;\n            if (typeof colDef.cellClass === 'function') {\n                var cellClassFunc = colDef.cellClass;\n                classOrClasses = cellClassFunc(params);\n            }\n            else {\n                classOrClasses = colDef.cellClass;\n            }\n            if (typeof classOrClasses === 'string') {\n                onApplicableClass(classOrClasses);\n            }\n            else if (Array.isArray(classOrClasses)) {\n                classOrClasses.forEach(function (cssClassItem) {\n                    onApplicableClass(cssClassItem);\n                });\n            }\n        }\n    };\n    __decorate([\n        context_1.Autowired('expressionService'),\n        __metadata(\"design:type\", expressionService_1.ExpressionService)\n    ], StylingService.prototype, \"expressionService\", void 0);\n    StylingService = __decorate([\n        context_1.Bean('stylingService')\n    ], StylingService);\n    return StylingService;\n}());\nexports.StylingService = StylingService;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/styling/stylingService.js\n// module id = 199\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar eventService_1 = require(\"../eventService\");\nvar context_1 = require(\"../context/context\");\nvar events_1 = require(\"../events\");\nvar beanStub_1 = require(\"../context/beanStub\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar gridApi_1 = require(\"../gridApi\");\nvar ColumnHoverService = (function (_super) {\n    __extends(ColumnHoverService, _super);\n    function ColumnHoverService() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    ColumnHoverService.prototype.init = function () {\n        this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_CELL_MOUSE_OVER, this.onCellMouseOver.bind(this));\n        this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_CELL_MOUSE_OUT, this.onCellMouseOut.bind(this));\n    };\n    ColumnHoverService.prototype.onCellMouseOver = function (cellEvent) {\n        this.currentlySelectedColumn = cellEvent.column;\n        var event = {\n            type: events_1.Events.EVENT_COLUMN_HOVER_CHANGED,\n            api: this.gridApi,\n            columnApi: this.columnApi\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    ColumnHoverService.prototype.onCellMouseOut = function () {\n        this.currentlySelectedColumn = null;\n        var event = {\n            type: events_1.Events.EVENT_COLUMN_HOVER_CHANGED,\n            api: this.gridApi,\n            columnApi: this.columnApi\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    ColumnHoverService.prototype.isHovered = function (column) {\n        return column == this.currentlySelectedColumn;\n    };\n    __decorate([\n        context_1.Autowired('eventService'),\n        __metadata(\"design:type\", eventService_1.EventService)\n    ], ColumnHoverService.prototype, \"eventService\", void 0);\n    __decorate([\n        context_1.Autowired('columnApi'),\n        __metadata(\"design:type\", columnController_1.ColumnApi)\n    ], ColumnHoverService.prototype, \"columnApi\", void 0);\n    __decorate([\n        context_1.Autowired('gridApi'),\n        __metadata(\"design:type\", gridApi_1.GridApi)\n    ], ColumnHoverService.prototype, \"gridApi\", void 0);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], ColumnHoverService.prototype, \"init\", null);\n    ColumnHoverService = __decorate([\n        context_1.Bean('columnHoverService')\n    ], ColumnHoverService);\n    return ColumnHoverService;\n}(beanStub_1.BeanStub));\nexports.ColumnHoverService = ColumnHoverService;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rendering/columnHoverService.js\n// module id = 200\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = require(\"../../widgets/component\");\nvar utils_1 = require(\"../../utils\");\nvar constants_1 = require(\"../../constants\");\nvar context_1 = require(\"../../context/context\");\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar valueFormatterService_1 = require(\"../valueFormatterService\");\nvar SelectCellEditor = (function (_super) {\n    __extends(SelectCellEditor, _super);\n    function SelectCellEditor() {\n        var _this = _super.call(this, '<div class=\"ag-cell-edit-input\"><select class=\"ag-cell-edit-input\"/></div>') || this;\n        _this.eSelect = _this.getGui().querySelector('select');\n        return _this;\n    }\n    SelectCellEditor.prototype.init = function (params) {\n        var _this = this;\n        this.focusAfterAttached = params.cellStartedEdit;\n        if (utils_1.Utils.missing(params.values)) {\n            console.log('ag-Grid: no values found for select cellEditor');\n            return;\n        }\n        params.values.forEach(function (value) {\n            var option = document.createElement('option');\n            option.value = value;\n            var valueFormatted = _this.valueFormatterService.formatValue(params.column, null, null, value);\n            var valueFormattedExits = valueFormatted !== null && valueFormatted !== undefined;\n            option.text = valueFormattedExits ? valueFormatted : value;\n            if (params.value === value) {\n                option.selected = true;\n            }\n            _this.eSelect.appendChild(option);\n        });\n        // we don't want to add this if full row editing, otherwise selecting will stop the\n        // full row editing.\n        if (!this.gridOptionsWrapper.isFullRowEdit()) {\n            this.addDestroyableEventListener(this.eSelect, 'change', function () { return params.stopEditing(); });\n        }\n        this.addDestroyableEventListener(this.eSelect, 'keydown', function (event) {\n            var isNavigationKey = event.keyCode === constants_1.Constants.KEY_UP || event.keyCode === constants_1.Constants.KEY_DOWN;\n            if (isNavigationKey) {\n                event.stopPropagation();\n            }\n        });\n        this.addDestroyableEventListener(this.eSelect, 'mousedown', function (event) {\n            event.stopPropagation();\n        });\n    };\n    SelectCellEditor.prototype.afterGuiAttached = function () {\n        if (this.focusAfterAttached) {\n            this.eSelect.focus();\n        }\n    };\n    SelectCellEditor.prototype.focusIn = function () {\n        this.eSelect.focus();\n    };\n    SelectCellEditor.prototype.getValue = function () {\n        return this.eSelect.value;\n    };\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], SelectCellEditor.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('valueFormatterService'),\n        __metadata(\"design:type\", valueFormatterService_1.ValueFormatterService)\n    ], SelectCellEditor.prototype, \"valueFormatterService\", void 0);\n    return SelectCellEditor;\n}(component_1.Component));\nexports.SelectCellEditor = SelectCellEditor;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rendering/cellEditors/selectCellEditor.js\n// module id = 201\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../../context/context\");\nvar agComponentUtils_1 = require(\"./agComponentUtils\");\nvar ComponentMetadataProvider = (function () {\n    function ComponentMetadataProvider() {\n    }\n    ComponentMetadataProvider.prototype.postConstruct = function () {\n        this.componentMetaData = {\n            dateComponent: {\n                mandatoryMethodList: ['getDate', 'setDate'],\n                optionalMethodList: []\n            },\n            detailCellRenderer: {\n                mandatoryMethodList: [],\n                optionalMethodList: []\n            },\n            headerComponent: {\n                mandatoryMethodList: [],\n                optionalMethodList: []\n            },\n            headerGroupComponent: {\n                mandatoryMethodList: [],\n                optionalMethodList: []\n            },\n            loadingOverlayComponent: {\n                mandatoryMethodList: [],\n                optionalMethodList: []\n            },\n            noRowsOverlayComponent: {\n                mandatoryMethodList: [],\n                optionalMethodList: []\n            },\n            floatingFilterComponent: {\n                mandatoryMethodList: ['onParentModelChanged'],\n                optionalMethodList: ['afterGuiAttached']\n            },\n            floatingFilterWrapperComponent: {\n                mandatoryMethodList: [],\n                optionalMethodList: []\n            },\n            cellRenderer: {\n                mandatoryMethodList: ['refresh'],\n                optionalMethodList: ['afterGuiAttached'],\n                functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n            },\n            cellEditor: {\n                mandatoryMethodList: ['getValue'],\n                optionalMethodList: ['isPopup', 'isCancelBeforeStart', 'isCancelAfterEnd', 'focusIn', 'focusOut', 'afterGuiAttached']\n            },\n            innerRenderer: {\n                mandatoryMethodList: [],\n                optionalMethodList: ['afterGuiAttached'],\n                functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n            },\n            fullWidthCellRenderer: {\n                mandatoryMethodList: [],\n                optionalMethodList: ['afterGuiAttached'],\n                functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n            },\n            pinnedRowCellRenderer: {\n                mandatoryMethodList: [],\n                optionalMethodList: ['afterGuiAttached'],\n                functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n            },\n            groupRowInnerRenderer: {\n                mandatoryMethodList: [],\n                optionalMethodList: ['afterGuiAttached'],\n                functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n            },\n            filter: {\n                mandatoryMethodList: ['isFilterActive', 'doesFilterPass', 'getModel', 'setModel'],\n                optionalMethodList: ['afterGuiAttached', 'onNewRowsLoaded', 'getModelAsString', 'onFloatingFilterChanged', 'afterGuiAttached']\n            },\n            filterComponent: {\n                mandatoryMethodList: ['isFilterActive', 'doesFilterPass', 'getModel', 'setModel'],\n                optionalMethodList: ['afterGuiAttached', 'onNewRowsLoaded', 'getModelAsString', 'onFloatingFilterChanged', 'afterGuiAttached']\n            }\n        };\n    };\n    ComponentMetadataProvider.prototype.retrieve = function (name) {\n        return this.componentMetaData[name];\n    };\n    __decorate([\n        context_1.Autowired(\"agComponentUtils\"),\n        __metadata(\"design:type\", agComponentUtils_1.AgComponentUtils)\n    ], ComponentMetadataProvider.prototype, \"agComponentUtils\", void 0);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], ComponentMetadataProvider.prototype, \"postConstruct\", null);\n    ComponentMetadataProvider = __decorate([\n        context_1.Bean(\"componentMetadataProvider\")\n    ], ComponentMetadataProvider);\n    return ComponentMetadataProvider;\n}());\nexports.ComponentMetadataProvider = ComponentMetadataProvider;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/components/framework/componentMetadataProvider.js\n// module id = 202\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"./context/context\");\nvar constants_1 = require(\"./constants\");\nvar columnController_1 = require(\"./columnController/columnController\");\nvar utils_1 = require(\"./utils\");\nvar gridRow_1 = require(\"./entities/gridRow\");\nvar gridCell_1 = require(\"./entities/gridCell\");\nvar gridOptionsWrapper_1 = require(\"./gridOptionsWrapper\");\nvar pinnedRowModel_1 = require(\"./rowModels/pinnedRowModel\");\nvar CellNavigationService = (function () {\n    function CellNavigationService() {\n    }\n    // returns null if no cell to focus on, ie at the end of the grid\n    CellNavigationService.prototype.getNextCellToFocus = function (key, lastCellToFocus) {\n        // starting with the provided cell, we keep moving until we find a cell we can\n        // focus on.\n        var pointer = lastCellToFocus;\n        var finished = false;\n        // finished will be true when either:\n        // a) cell found that we can focus on\n        // b) run out of cells (ie the method returns null)\n        while (!finished) {\n            switch (key) {\n                case constants_1.Constants.KEY_UP:\n                    pointer = this.getCellAbove(pointer);\n                    break;\n                case constants_1.Constants.KEY_DOWN:\n                    pointer = this.getCellBelow(pointer);\n                    break;\n                case constants_1.Constants.KEY_RIGHT:\n                    if (this.gridOptionsWrapper.isEnableRtl()) {\n                        pointer = this.getCellToLeft(pointer);\n                    }\n                    else {\n                        pointer = this.getCellToRight(pointer);\n                    }\n                    break;\n                case constants_1.Constants.KEY_LEFT:\n                    if (this.gridOptionsWrapper.isEnableRtl()) {\n                        pointer = this.getCellToRight(pointer);\n                    }\n                    else {\n                        pointer = this.getCellToLeft(pointer);\n                    }\n                    break;\n                default:\n                    console.log('ag-Grid: unknown key for navigation ' + key);\n                    pointer = null;\n                    break;\n            }\n            if (pointer) {\n                finished = this.isCellGoodToFocusOn(pointer);\n            }\n            else {\n                finished = true;\n            }\n        }\n        return pointer;\n    };\n    CellNavigationService.prototype.isCellGoodToFocusOn = function (gridCell) {\n        var column = gridCell.column;\n        var rowNode;\n        switch (gridCell.floating) {\n            case constants_1.Constants.PINNED_TOP:\n                rowNode = this.pinnedRowModel.getPinnedTopRow(gridCell.rowIndex);\n                break;\n            case constants_1.Constants.PINNED_BOTTOM:\n                rowNode = this.pinnedRowModel.getPinnedBottomRow(gridCell.rowIndex);\n                break;\n            default:\n                rowNode = this.rowModel.getRow(gridCell.rowIndex);\n                break;\n        }\n        var suppressNavigable = column.isSuppressNavigable(rowNode);\n        return !suppressNavigable;\n    };\n    CellNavigationService.prototype.getCellToLeft = function (lastCell) {\n        var colToLeft = this.columnController.getDisplayedColBefore(lastCell.column);\n        if (!colToLeft) {\n            return null;\n        }\n        else {\n            var gridCellDef = { rowIndex: lastCell.rowIndex, column: colToLeft, floating: lastCell.floating };\n            return new gridCell_1.GridCell(gridCellDef);\n        }\n    };\n    CellNavigationService.prototype.getCellToRight = function (lastCell) {\n        var colToRight = this.columnController.getDisplayedColAfter(lastCell.column);\n        // if already on right, do nothing\n        if (!colToRight) {\n            return null;\n        }\n        else {\n            var gridCellDef = { rowIndex: lastCell.rowIndex, column: colToRight, floating: lastCell.floating };\n            return new gridCell_1.GridCell(gridCellDef);\n        }\n    };\n    CellNavigationService.prototype.getRowBelow = function (lastRow) {\n        // if already on top row, do nothing\n        if (this.isLastRowInContainer(lastRow)) {\n            if (lastRow.isFloatingBottom()) {\n                return null;\n            }\n            else if (lastRow.isNotFloating()) {\n                if (this.pinnedRowModel.isRowsToRender(constants_1.Constants.PINNED_BOTTOM)) {\n                    return new gridRow_1.GridRow(0, constants_1.Constants.PINNED_BOTTOM);\n                }\n                else {\n                    return null;\n                }\n            }\n            else {\n                if (this.rowModel.isRowsToRender()) {\n                    return new gridRow_1.GridRow(0, null);\n                }\n                else if (this.pinnedRowModel.isRowsToRender(constants_1.Constants.PINNED_BOTTOM)) {\n                    return new gridRow_1.GridRow(0, constants_1.Constants.PINNED_BOTTOM);\n                }\n                else {\n                    return null;\n                }\n            }\n        }\n        else {\n            return new gridRow_1.GridRow(lastRow.rowIndex + 1, lastRow.floating);\n        }\n    };\n    CellNavigationService.prototype.getCellBelow = function (lastCell) {\n        var rowBelow = this.getRowBelow(lastCell.getGridRow());\n        if (rowBelow) {\n            var gridCellDef = { rowIndex: rowBelow.rowIndex, column: lastCell.column, floating: rowBelow.floating };\n            return new gridCell_1.GridCell(gridCellDef);\n        }\n        else {\n            return null;\n        }\n    };\n    CellNavigationService.prototype.isLastRowInContainer = function (gridRow) {\n        if (gridRow.isFloatingTop()) {\n            var lastTopIndex = this.pinnedRowModel.getPinnedTopRowData().length - 1;\n            return lastTopIndex <= gridRow.rowIndex;\n        }\n        else if (gridRow.isFloatingBottom()) {\n            var lastBottomIndex = this.pinnedRowModel.getPinnedBottomRowData().length - 1;\n            return lastBottomIndex <= gridRow.rowIndex;\n        }\n        else {\n            var lastBodyIndex = this.rowModel.getPageLastRow();\n            return lastBodyIndex <= gridRow.rowIndex;\n        }\n    };\n    CellNavigationService.prototype.getRowAbove = function (lastRow) {\n        // if already on top row, do nothing\n        if (lastRow.rowIndex === 0) {\n            if (lastRow.isFloatingTop()) {\n                return null;\n            }\n            else if (lastRow.isNotFloating()) {\n                if (this.pinnedRowModel.isRowsToRender(constants_1.Constants.PINNED_TOP)) {\n                    return this.getLastFloatingTopRow();\n                }\n                else {\n                    return null;\n                }\n            }\n            else {\n                // last floating bottom\n                if (this.rowModel.isRowsToRender()) {\n                    return this.getLastBodyCell();\n                }\n                else if (this.pinnedRowModel.isRowsToRender(constants_1.Constants.PINNED_TOP)) {\n                    return this.getLastFloatingTopRow();\n                }\n                else {\n                    return null;\n                }\n            }\n        }\n        else {\n            return new gridRow_1.GridRow(lastRow.rowIndex - 1, lastRow.floating);\n        }\n    };\n    CellNavigationService.prototype.getCellAbove = function (lastCell) {\n        var rowAbove = this.getRowAbove(lastCell.getGridRow());\n        if (rowAbove) {\n            var gridCellDef = { rowIndex: rowAbove.rowIndex, column: lastCell.column, floating: rowAbove.floating };\n            return new gridCell_1.GridCell(gridCellDef);\n        }\n        else {\n            return null;\n        }\n    };\n    CellNavigationService.prototype.getLastBodyCell = function () {\n        var lastBodyRow = this.rowModel.getPageLastRow();\n        return new gridRow_1.GridRow(lastBodyRow, null);\n    };\n    CellNavigationService.prototype.getLastFloatingTopRow = function () {\n        var lastFloatingRow = this.pinnedRowModel.getPinnedTopRowData().length - 1;\n        return new gridRow_1.GridRow(lastFloatingRow, constants_1.Constants.PINNED_TOP);\n    };\n    CellNavigationService.prototype.getNextTabbedCell = function (gridCell, backwards) {\n        if (backwards) {\n            return this.getNextTabbedCellBackwards(gridCell);\n        }\n        else {\n            return this.getNextTabbedCellForwards(gridCell);\n        }\n    };\n    CellNavigationService.prototype.getNextTabbedCellForwards = function (gridCell) {\n        var displayedColumns = this.columnController.getAllDisplayedColumns();\n        var newRowIndex = gridCell.rowIndex;\n        var newFloating = gridCell.floating;\n        // move along to the next cell\n        var newColumn = this.columnController.getDisplayedColAfter(gridCell.column);\n        // check if end of the row, and if so, go forward a row\n        if (!newColumn) {\n            newColumn = displayedColumns[0];\n            var rowBelow = this.getRowBelow(gridCell.getGridRow());\n            if (utils_1.Utils.missing(rowBelow)) {\n                return;\n            }\n            newRowIndex = rowBelow.rowIndex;\n            newFloating = rowBelow.floating;\n        }\n        var gridCellDef = { rowIndex: newRowIndex, column: newColumn, floating: newFloating };\n        return new gridCell_1.GridCell(gridCellDef);\n    };\n    CellNavigationService.prototype.getNextTabbedCellBackwards = function (gridCell) {\n        var displayedColumns = this.columnController.getAllDisplayedColumns();\n        var newRowIndex = gridCell.rowIndex;\n        var newFloating = gridCell.floating;\n        // move along to the next cell\n        var newColumn = this.columnController.getDisplayedColBefore(gridCell.column);\n        // check if end of the row, and if so, go forward a row\n        if (!newColumn) {\n            newColumn = displayedColumns[displayedColumns.length - 1];\n            var rowAbove = this.getRowAbove(gridCell.getGridRow());\n            if (utils_1.Utils.missing(rowAbove)) {\n                return;\n            }\n            newRowIndex = rowAbove.rowIndex;\n            newFloating = rowAbove.floating;\n        }\n        var gridCellDef = { rowIndex: newRowIndex, column: newColumn, floating: newFloating };\n        return new gridCell_1.GridCell(gridCellDef);\n    };\n    __decorate([\n        context_1.Autowired('columnController'),\n        __metadata(\"design:type\", columnController_1.ColumnController)\n    ], CellNavigationService.prototype, \"columnController\", void 0);\n    __decorate([\n        context_1.Autowired('rowModel'),\n        __metadata(\"design:type\", Object)\n    ], CellNavigationService.prototype, \"rowModel\", void 0);\n    __decorate([\n        context_1.Autowired('pinnedRowModel'),\n        __metadata(\"design:type\", pinnedRowModel_1.PinnedRowModel)\n    ], CellNavigationService.prototype, \"pinnedRowModel\", void 0);\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], CellNavigationService.prototype, \"gridOptionsWrapper\", void 0);\n    CellNavigationService = __decorate([\n        context_1.Bean('cellNavigationService')\n    ], CellNavigationService);\n    return CellNavigationService;\n}());\nexports.CellNavigationService = CellNavigationService;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/cellNavigationService.js\n// module id = 203\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar CssClassApplier = (function () {\n    function CssClassApplier() {\n    }\n    CssClassApplier.addHeaderClassesFromColDef = function (abstractColDef, eHeaderCell, gridOptionsWrapper, column, columnGroup) {\n        if (utils_1.Utils.missing(abstractColDef)) {\n            return;\n        }\n        this.addColumnClassesFromCollDef(abstractColDef.headerClass, abstractColDef, eHeaderCell, gridOptionsWrapper, column, columnGroup);\n    };\n    CssClassApplier.addToolPanelClassesFromColDef = function (abstractColDef, eHeaderCell, gridOptionsWrapper, column, columnGroup) {\n        if (utils_1.Utils.missing(abstractColDef)) {\n            return;\n        }\n        this.addColumnClassesFromCollDef(abstractColDef.toolPanelClass, abstractColDef, eHeaderCell, gridOptionsWrapper, column, columnGroup);\n    };\n    CssClassApplier.addColumnClassesFromCollDef = function (classesOrFunc, abstractColDef, eHeaderCell, gridOptionsWrapper, column, columnGroup) {\n        if (utils_1.Utils.missing(classesOrFunc)) {\n            return;\n        }\n        var classToUse;\n        if (typeof classesOrFunc === 'function') {\n            var params = {\n                // bad naming, as colDef here can be a group or a column,\n                // however most people won't appreciate the difference,\n                // so keeping it as colDef to avoid confusion.\n                colDef: abstractColDef,\n                column: column,\n                columnGroup: columnGroup,\n                context: gridOptionsWrapper.getContext(),\n                api: gridOptionsWrapper.getApi()\n            };\n            var headerClassFunc = classesOrFunc;\n            classToUse = headerClassFunc(params);\n        }\n        else {\n            classToUse = classesOrFunc;\n        }\n        if (typeof classToUse === 'string') {\n            utils_1.Utils.addCssClass(eHeaderCell, classToUse);\n        }\n        else if (Array.isArray(classToUse)) {\n            classToUse.forEach(function (cssClassItem) {\n                utils_1.Utils.addCssClass(eHeaderCell, cssClassItem);\n            });\n        }\n    };\n    return CssClassApplier;\n}());\nexports.CssClassApplier = CssClassApplier;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/headerRendering/cssClassApplier.js\n// module id = 204\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// class returns unique instance id's for columns.\n// eg, the following calls (in this order) will result in:\n//\n// getInstanceIdForKey('country') => 0\n// getInstanceIdForKey('country') => 1\n// getInstanceIdForKey('country') => 2\n// getInstanceIdForKey('country') => 3\n// getInstanceIdForKey('age') => 0\n// getInstanceIdForKey('age') => 1\n// getInstanceIdForKey('country') => 4\nvar GroupInstanceIdCreator = (function () {\n    function GroupInstanceIdCreator() {\n        // this map contains keys to numbers, so we remember what the last call was\n        this.existingIds = {};\n    }\n    GroupInstanceIdCreator.prototype.getInstanceIdForKey = function (key) {\n        var lastResult = this.existingIds[key];\n        var result;\n        if (typeof lastResult !== 'number') {\n            // first time this key\n            result = 0;\n        }\n        else {\n            result = lastResult + 1;\n        }\n        this.existingIds[key] = result;\n        return result;\n    };\n    return GroupInstanceIdCreator;\n}());\nexports.GroupInstanceIdCreator = GroupInstanceIdCreator;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/columnController/groupInstanceIdCreator.js\n// module id = 205\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"./context/context\");\nvar Downloader = (function () {\n    function Downloader() {\n    }\n    Downloader.prototype.download = function (fileName, content, mimeType) {\n        // for Excel, we need \\ufeff at the start\n        // http://stackoverflow.com/questions/17879198/adding-utf-8-bom-to-string-blob\n        var blobObject = new Blob([\"\\ufeff\", content], {\n            type: mimeType\n        });\n        // Internet Explorer\n        if (window.navigator.msSaveOrOpenBlob) {\n            window.navigator.msSaveOrOpenBlob(blobObject, fileName);\n        }\n        else {\n            // Chrome\n            var downloadLink = document.createElement(\"a\");\n            downloadLink.href = window.URL.createObjectURL(blobObject);\n            downloadLink.download = fileName;\n            document.body.appendChild(downloadLink);\n            downloadLink.click();\n            document.body.removeChild(downloadLink);\n        }\n    };\n    Downloader = __decorate([\n        context_1.Bean('downloader')\n    ], Downloader);\n    return Downloader;\n}());\nexports.Downloader = Downloader;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/downloader.js\n// module id = 206\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"./gridOptionsWrapper\");\nvar selectionController_1 = require(\"./selectionController\");\nvar columnController_1 = require(\"./columnController/columnController\");\nvar rowRenderer_1 = require(\"./rendering/rowRenderer\");\nvar headerRenderer_1 = require(\"./headerRendering/headerRenderer\");\nvar filterManager_1 = require(\"./filter/filterManager\");\nvar valueService_1 = require(\"./valueService/valueService\");\nvar eventService_1 = require(\"./eventService\");\nvar gridPanel_1 = require(\"./gridPanel/gridPanel\");\nvar gridApi_1 = require(\"./gridApi\");\nvar balancedColumnTreeBuilder_1 = require(\"./columnController/balancedColumnTreeBuilder\");\nvar displayedGroupCreator_1 = require(\"./columnController/displayedGroupCreator\");\nvar expressionService_1 = require(\"./valueService/expressionService\");\nvar templateService_1 = require(\"./templateService\");\nvar popupService_1 = require(\"./widgets/popupService\");\nvar logger_1 = require(\"./logger\");\nvar columnUtils_1 = require(\"./columnController/columnUtils\");\nvar autoWidthCalculator_1 = require(\"./rendering/autoWidthCalculator\");\nvar horizontalDragService_1 = require(\"./headerRendering/horizontalDragService\");\nvar context_1 = require(\"./context/context\");\nvar csvCreator_1 = require(\"./csvCreator\");\nvar gridCore_1 = require(\"./gridCore\");\nvar standardMenu_1 = require(\"./headerRendering/standardMenu\");\nvar dragAndDropService_1 = require(\"./dragAndDrop/dragAndDropService\");\nvar dragService_1 = require(\"./dragAndDrop/dragService\");\nvar sortController_1 = require(\"./sortController\");\nvar focusedCellController_1 = require(\"./focusedCellController\");\nvar mouseEventService_1 = require(\"./gridPanel/mouseEventService\");\nvar cellNavigationService_1 = require(\"./cellNavigationService\");\nvar utils_1 = require(\"./utils\");\nvar filterStage_1 = require(\"./rowModels/inMemory/filterStage\");\nvar sortStage_1 = require(\"./rowModels/inMemory/sortStage\");\nvar flattenStage_1 = require(\"./rowModels/inMemory/flattenStage\");\nvar cellEditorFactory_1 = require(\"./rendering/cellEditorFactory\");\nvar events_1 = require(\"./events\");\nvar infiniteRowModel_1 = require(\"./rowModels/infinite/infiniteRowModel\");\nvar inMemoryRowModel_1 = require(\"./rowModels/inMemory/inMemoryRowModel\");\nvar cellRendererFactory_1 = require(\"./rendering/cellRendererFactory\");\nvar cellRendererService_1 = require(\"./rendering/cellRendererService\");\nvar valueFormatterService_1 = require(\"./rendering/valueFormatterService\");\nvar agCheckbox_1 = require(\"./widgets/agCheckbox\");\nvar baseFrameworkFactory_1 = require(\"./baseFrameworkFactory\");\nvar scrollVisibleService_1 = require(\"./gridPanel/scrollVisibleService\");\nvar downloader_1 = require(\"./downloader\");\nvar xmlFactory_1 = require(\"./xmlFactory\");\nvar gridSerializer_1 = require(\"./gridSerializer\");\nvar stylingService_1 = require(\"./styling/stylingService\");\nvar columnHoverService_1 = require(\"./rendering/columnHoverService\");\nvar columnAnimationService_1 = require(\"./rendering/columnAnimationService\");\nvar sortService_1 = require(\"./rowNodes/sortService\");\nvar filterService_1 = require(\"./rowNodes/filterService\");\nvar rowNodeFactory_1 = require(\"./rowNodes/rowNodeFactory\");\nvar autoGroupColService_1 = require(\"./columnController/autoGroupColService\");\nvar paginationProxy_1 = require(\"./rowModels/paginationProxy\");\nvar immutableService_1 = require(\"./rowModels/inMemory/immutableService\");\nvar constants_1 = require(\"./constants\");\nvar valueCache_1 = require(\"./valueService/valueCache\");\nvar changeDetectionService_1 = require(\"./valueService/changeDetectionService\");\nvar alignedGridsService_1 = require(\"./alignedGridsService\");\nvar pinnedRowModel_1 = require(\"./rowModels/pinnedRowModel\");\nvar componentResolver_1 = require(\"./components/framework/componentResolver\");\nvar componentRecipes_1 = require(\"./components/framework/componentRecipes\");\nvar componentProvider_1 = require(\"./components/framework/componentProvider\");\nvar agComponentUtils_1 = require(\"./components/framework/agComponentUtils\");\nvar componentMetadataProvider_1 = require(\"./components/framework/componentMetadataProvider\");\nvar namedComponentResolver_1 = require(\"./components/framework/namedComponentResolver\");\nvar beans_1 = require(\"./rendering/beans\");\nvar environment_1 = require(\"./environment\");\nvar animationFrameService_1 = require(\"./misc/animationFrameService\");\nvar navigationService_1 = require(\"./gridPanel/navigationService\");\nvar Grid = (function () {\n    function Grid(eGridDiv, gridOptions, params) {\n        if (!eGridDiv) {\n            console.error('ag-Grid: no div element provided to the grid');\n        }\n        if (!gridOptions) {\n            console.error('ag-Grid: no gridOptions provided to the grid');\n        }\n        var rowModelClass = this.getRowModelClass(gridOptions);\n        var enterprise = utils_1.Utils.exists(Grid.enterpriseBeans);\n        var frameworkFactory = params ? params.frameworkFactory : null;\n        if (utils_1.Utils.missing(frameworkFactory)) {\n            frameworkFactory = new baseFrameworkFactory_1.BaseFrameworkFactory();\n        }\n        var overrideBeans = [];\n        if (Grid.enterpriseBeans) {\n            overrideBeans = overrideBeans.concat(Grid.enterpriseBeans);\n        }\n        if (Grid.frameworkBeans) {\n            overrideBeans = overrideBeans.concat(Grid.frameworkBeans);\n        }\n        var seed = {\n            enterprise: enterprise,\n            gridOptions: gridOptions,\n            eGridDiv: eGridDiv,\n            $scope: params ? params.$scope : null,\n            $compile: params ? params.$compile : null,\n            quickFilterOnScope: params ? params.quickFilterOnScope : null,\n            globalEventListener: params ? params.globalEventListener : null,\n            frameworkFactory: frameworkFactory\n        };\n        if (params && params.seedBeanInstances) {\n            utils_1.Utils.assign(seed, params.seedBeanInstances);\n        }\n        var contextParams = {\n            overrideBeans: overrideBeans,\n            seed: seed,\n            //Careful with the order of the beans here, there are dependencies between them that need to be kept\n            beans: [rowModelClass, paginationProxy_1.PaginationAutoPageSizeService, gridApi_1.GridApi, componentProvider_1.ComponentProvider, agComponentUtils_1.AgComponentUtils, componentMetadataProvider_1.ComponentMetadataProvider,\n                componentProvider_1.ComponentProvider, componentResolver_1.ComponentResolver, componentRecipes_1.ComponentRecipes, namedComponentResolver_1.NamedComponentResolver,\n                cellRendererFactory_1.CellRendererFactory, horizontalDragService_1.HorizontalDragService, pinnedRowModel_1.PinnedRowModel, dragService_1.DragService,\n                displayedGroupCreator_1.DisplayedGroupCreator, eventService_1.EventService, gridOptionsWrapper_1.GridOptionsWrapper, selectionController_1.SelectionController,\n                filterManager_1.FilterManager, columnController_1.ColumnController, paginationProxy_1.PaginationProxy, rowRenderer_1.RowRenderer, headerRenderer_1.HeaderRenderer, expressionService_1.ExpressionService,\n                balancedColumnTreeBuilder_1.BalancedColumnTreeBuilder, csvCreator_1.CsvCreator, downloader_1.Downloader, xmlFactory_1.XmlFactory, gridSerializer_1.GridSerializer, templateService_1.TemplateService,\n                navigationService_1.NavigationService, gridPanel_1.GridPanel, popupService_1.PopupService, valueCache_1.ValueCache, valueService_1.ValueService, alignedGridsService_1.AlignedGridsService,\n                logger_1.LoggerFactory, columnUtils_1.ColumnUtils, autoWidthCalculator_1.AutoWidthCalculator, popupService_1.PopupService, gridCore_1.GridCore, standardMenu_1.StandardMenuFactory,\n                dragAndDropService_1.DragAndDropService, columnController_1.ColumnApi, focusedCellController_1.FocusedCellController, mouseEventService_1.MouseEventService,\n                cellNavigationService_1.CellNavigationService, filterStage_1.FilterStage, sortStage_1.SortStage, flattenStage_1.FlattenStage, filterService_1.FilterService, rowNodeFactory_1.RowNodeFactory,\n                cellEditorFactory_1.CellEditorFactory, cellRendererService_1.CellRendererService, valueFormatterService_1.ValueFormatterService, stylingService_1.StylingService, scrollVisibleService_1.ScrollVisibleService,\n                columnHoverService_1.ColumnHoverService, columnAnimationService_1.ColumnAnimationService, sortService_1.SortService, autoGroupColService_1.AutoGroupColService, immutableService_1.ImmutableService,\n                changeDetectionService_1.ChangeDetectionService, environment_1.Environment, beans_1.Beans, animationFrameService_1.AnimationFrameService, sortController_1.SortController],\n            components: [\n                { componentName: 'AgCheckbox', theClass: agCheckbox_1.AgCheckbox }\n            ],\n            debug: !!gridOptions.debug\n        };\n        var isLoggingFunc = function () { return contextParams.debug; };\n        this.context = new context_1.Context(contextParams, new logger_1.Logger('Context', isLoggingFunc));\n        this.setColumnsAndData();\n        this.dispatchGridReadyEvent(gridOptions);\n        if (gridOptions.debug) {\n            console.log('ag-Grid -> initialised successfully, enterprise = ' + enterprise);\n        }\n    }\n    Grid.setEnterpriseBeans = function (enterpriseBeans, rowModelClasses) {\n        this.enterpriseBeans = enterpriseBeans;\n        // the enterprise can inject additional row models. this is how it injects the viewportRowModel\n        utils_1.Utils.iterateObject(rowModelClasses, function (key, value) { return Grid.RowModelClasses[key] = value; });\n    };\n    Grid.setFrameworkBeans = function (frameworkBeans) {\n        this.frameworkBeans = frameworkBeans;\n    };\n    Grid.prototype.setColumnsAndData = function () {\n        var gridOptionsWrapper = this.context.getBean('gridOptionsWrapper');\n        var columnController = this.context.getBean('columnController');\n        var rowModel = this.context.getBean('rowModel');\n        var columnDefs = gridOptionsWrapper.getColumnDefs();\n        var rowData = gridOptionsWrapper.getRowData();\n        var nothingToSet = utils_1.Utils.missing(columnDefs) && utils_1.Utils.missing(rowData);\n        if (nothingToSet) {\n            return;\n        }\n        var valueService = this.context.getBean('valueService');\n        if (utils_1.Utils.exists(columnDefs)) {\n            columnController.setColumnDefs(columnDefs);\n        }\n        if (utils_1.Utils.exists(rowData) && rowModel.getType() === constants_1.Constants.ROW_MODEL_TYPE_IN_MEMORY) {\n            var inMemoryRowModel = rowModel;\n            inMemoryRowModel.setRowData(rowData);\n        }\n    };\n    Grid.prototype.dispatchGridReadyEvent = function (gridOptions) {\n        var eventService = this.context.getBean('eventService');\n        var readyEvent = {\n            type: events_1.Events.EVENT_GRID_READY,\n            api: gridOptions.api,\n            columnApi: gridOptions.columnApi\n        };\n        eventService.dispatchEvent(readyEvent);\n    };\n    Grid.prototype.getRowModelClass = function (gridOptions) {\n        var rowModelType = gridOptions.rowModelType;\n        if (utils_1.Utils.exists(rowModelType)) {\n            var rowModelClass = Grid.RowModelClasses[rowModelType];\n            if (utils_1.Utils.exists(rowModelClass)) {\n                return rowModelClass;\n            }\n            else {\n                if (rowModelType === 'normal') {\n                    console.warn(\"ag-Grid: normal rowModel deprecated. Should now be called inMemory rowModel instead.\");\n                    return inMemoryRowModel_1.InMemoryRowModel;\n                }\n                console.error('ag-Grid: could not find matching row model for rowModelType ' + rowModelType);\n                if (rowModelType === 'viewport') {\n                    console.error('ag-Grid: rowModelType viewport is only available in ag-Grid Enterprise');\n                }\n                if (rowModelType === 'enterprise') {\n                    console.error('ag-Grid: rowModelType viewport is only available in ag-Grid Enterprise');\n                }\n            }\n        }\n        return inMemoryRowModel_1.InMemoryRowModel;\n    };\n    ;\n    Grid.prototype.destroy = function () {\n        this.context.destroy();\n    };\n    // the default is InMemoryRowModel, which is also used for pagination.\n    // the enterprise adds viewport to this list.\n    Grid.RowModelClasses = {\n        infinite: infiniteRowModel_1.InfiniteRowModel,\n        inMemory: inMemoryRowModel_1.InMemoryRowModel\n    };\n    return Grid;\n}());\nexports.Grid = Grid;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/grid.js\n// module id = 207\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../../utils\");\nvar beanStub_1 = require(\"../../context/beanStub\");\nvar rowNodeBlock_1 = require(\"./rowNodeBlock\");\nvar RowNodeCache = (function (_super) {\n    __extends(RowNodeCache, _super);\n    function RowNodeCache(cacheParams) {\n        var _this = _super.call(this) || this;\n        _this.maxRowFound = false;\n        _this.blocks = {};\n        _this.blockCount = 0;\n        _this.virtualRowCount = cacheParams.initialRowCount;\n        _this.cacheParams = cacheParams;\n        return _this;\n    }\n    RowNodeCache.prototype.destroy = function () {\n        var _this = this;\n        _super.prototype.destroy.call(this);\n        this.forEachBlockInOrder(function (block) { return _this.destroyBlock(block); });\n    };\n    RowNodeCache.prototype.init = function () {\n        var _this = this;\n        this.active = true;\n        this.addDestroyFunc(function () { return _this.active = false; });\n    };\n    RowNodeCache.prototype.isActive = function () {\n        return this.active;\n    };\n    RowNodeCache.prototype.getVirtualRowCount = function () {\n        return this.virtualRowCount;\n    };\n    RowNodeCache.prototype.hack_setVirtualRowCount = function (virtualRowCount) {\n        this.virtualRowCount = virtualRowCount;\n    };\n    RowNodeCache.prototype.isMaxRowFound = function () {\n        return this.maxRowFound;\n    };\n    // listener on EVENT_LOAD_COMPLETE\n    RowNodeCache.prototype.onPageLoaded = function (event) {\n        // if we are not active, then we ignore all events, otherwise we could end up getting the\n        // grid to refresh even though we are no longer the active cache\n        if (!this.isActive()) {\n            return;\n        }\n        this.logger.log(\"onPageLoaded: page = \" + event.page.getBlockNumber() + \", lastRow = \" + event.lastRow);\n        this.cacheParams.rowNodeBlockLoader.loadComplete();\n        this.checkBlockToLoad();\n        if (event.success) {\n            this.checkVirtualRowCount(event.page, event.lastRow);\n        }\n    };\n    RowNodeCache.prototype.purgeBlocksIfNeeded = function (blockToExclude) {\n        var _this = this;\n        // no purge if user didn't give maxBlocksInCache\n        if (utils_1.Utils.missing(this.cacheParams.maxBlocksInCache)) {\n            return;\n        }\n        // no purge if block count is less than max allowed\n        if (this.blockCount <= this.cacheParams.maxBlocksInCache) {\n            return;\n        }\n        // put all candidate blocks into a list for sorting\n        var blocksForPurging = [];\n        this.forEachBlockInOrder(function (block) {\n            // we exclude checking for the page just created, as this has yet to be accessed and hence\n            // the lastAccessed stamp will not be updated for the first time yet\n            if (block === blockToExclude) {\n                return;\n            }\n            blocksForPurging.push(block);\n        });\n        // todo: need to verify that this sorts items in the right order\n        blocksForPurging.sort(function (a, b) { return b.getLastAccessed() - a.getLastAccessed(); });\n        // we remove (maxBlocksInCache - 1) as we already excluded the 'just created' page.\n        // in other words, after the splice operation below, we have taken out the blocks\n        // we want to keep, which means we are left with blocks that we can potentially purge\n        var blocksToKeep = this.cacheParams.maxBlocksInCache - 1;\n        blocksForPurging.splice(0, blocksToKeep);\n        // try and purge each block\n        blocksForPurging.forEach(function (block) {\n            // we never purge blocks if they are open, as purging them would mess up with\n            // our indexes, it would be very messy to restore the purged block to it's\n            // previous state if it had open children (and what if open children of open\n            // children, jeeeesus, just thinking about it freaks me out) so best is have a\n            // rule, if block is open, we never purge.\n            if (block.isAnyNodeOpen(_this.virtualRowCount)) {\n                return;\n            }\n            // at this point, block is not needed, and no open nodes, so burn baby burn\n            _this.removeBlockFromCache(block);\n        });\n    };\n    RowNodeCache.prototype.postCreateBlock = function (newBlock) {\n        newBlock.addEventListener(rowNodeBlock_1.RowNodeBlock.EVENT_LOAD_COMPLETE, this.onPageLoaded.bind(this));\n        this.setBlock(newBlock.getBlockNumber(), newBlock);\n        this.purgeBlocksIfNeeded(newBlock);\n        this.checkBlockToLoad();\n    };\n    RowNodeCache.prototype.removeBlockFromCache = function (blockToRemove) {\n        if (!blockToRemove) {\n            return;\n        }\n        this.destroyBlock(blockToRemove);\n        // we do not want to remove the 'loaded' event listener, as the\n        // concurrent loads count needs to be updated when the load is complete\n        // if the purged page is in loading state\n    };\n    // gets called after: 1) block loaded 2) block created 3) cache refresh\n    RowNodeCache.prototype.checkBlockToLoad = function () {\n        this.cacheParams.rowNodeBlockLoader.checkBlockToLoad();\n    };\n    RowNodeCache.prototype.checkVirtualRowCount = function (block, lastRow) {\n        // if client provided a last row, we always use it, as it could change between server calls\n        // if user deleted data and then called refresh on the grid.\n        if (typeof lastRow === 'number' && lastRow >= 0) {\n            this.virtualRowCount = lastRow;\n            this.maxRowFound = true;\n            this.onCacheUpdated();\n        }\n        else if (!this.maxRowFound) {\n            // otherwise, see if we need to add some virtual rows\n            var lastRowIndex = (block.getBlockNumber() + 1) * this.cacheParams.blockSize;\n            var lastRowIndexPlusOverflow = lastRowIndex + this.cacheParams.overflowSize;\n            if (this.virtualRowCount < lastRowIndexPlusOverflow) {\n                this.virtualRowCount = lastRowIndexPlusOverflow;\n                this.onCacheUpdated();\n            }\n            else if (this.cacheParams.dynamicRowHeight) {\n                // the only other time is if dynamic row height, as loading rows\n                // will change the height of the block, given the height of the rows\n                // is only known after the row is loaded.\n                this.onCacheUpdated();\n            }\n        }\n    };\n    RowNodeCache.prototype.setVirtualRowCount = function (rowCount, maxRowFound) {\n        this.virtualRowCount = rowCount;\n        // if undefined is passed, we do not set this value, if one of {true,false}\n        // is passed, we do set the value.\n        if (utils_1.Utils.exists(maxRowFound)) {\n            this.maxRowFound = maxRowFound;\n        }\n        // if we are still searching, then the row count must not end at the end\n        // of a particular page, otherwise the searching will not pop into the\n        // next page\n        if (!this.maxRowFound) {\n            if (this.virtualRowCount % this.cacheParams.blockSize === 0) {\n                this.virtualRowCount++;\n            }\n        }\n        this.onCacheUpdated();\n    };\n    RowNodeCache.prototype.forEachNodeDeep = function (callback, sequence) {\n        var _this = this;\n        this.forEachBlockInOrder(function (block) {\n            block.forEachNodeDeep(callback, sequence, _this.virtualRowCount);\n        });\n    };\n    RowNodeCache.prototype.forEachBlockInOrder = function (callback) {\n        var ids = this.getBlockIdsSorted();\n        this.forEachBlockId(ids, callback);\n    };\n    RowNodeCache.prototype.forEachBlockInReverseOrder = function (callback) {\n        var ids = this.getBlockIdsSorted().reverse();\n        this.forEachBlockId(ids, callback);\n    };\n    RowNodeCache.prototype.forEachBlockId = function (ids, callback) {\n        var _this = this;\n        ids.forEach(function (id) {\n            var block = _this.blocks[id];\n            callback(block, id);\n        });\n    };\n    RowNodeCache.prototype.getBlockIdsSorted = function () {\n        // get all page id's as NUMBERS (not strings, as we need to sort as numbers) and in descending order\n        var numberComparator = function (a, b) { return a - b; }; // default comparator for array is string comparison\n        var blockIds = Object.keys(this.blocks).map(function (idStr) { return parseInt(idStr); }).sort(numberComparator);\n        return blockIds;\n    };\n    RowNodeCache.prototype.getBlock = function (blockId) {\n        return this.blocks[blockId];\n    };\n    RowNodeCache.prototype.setBlock = function (id, block) {\n        this.blocks[id] = block;\n        this.blockCount++;\n        this.cacheParams.rowNodeBlockLoader.addBlock(block);\n    };\n    RowNodeCache.prototype.destroyBlock = function (block) {\n        delete this.blocks[block.getBlockNumber()];\n        block.destroy();\n        this.blockCount--;\n        this.cacheParams.rowNodeBlockLoader.removeBlock(block);\n    };\n    // gets called 1) row count changed 2) cache purged 3) items inserted\n    RowNodeCache.prototype.onCacheUpdated = function () {\n        if (this.isActive()) {\n            // this results in both row models (infinite and enterprise) firing ModelUpdated,\n            // however enterprise also updates the row indexes first\n            var event_1 = {\n                type: RowNodeCache.EVENT_CACHE_UPDATED\n            };\n            this.dispatchEvent(event_1);\n        }\n    };\n    RowNodeCache.prototype.purgeCache = function () {\n        var _this = this;\n        this.forEachBlockInOrder(function (block) { return _this.removeBlockFromCache(block); });\n        this.onCacheUpdated();\n    };\n    RowNodeCache.prototype.getRowNodesInRange = function (firstInRange, lastInRange) {\n        var _this = this;\n        var result = [];\n        var lastBlockId = -1;\n        var inActiveRange = false;\n        var numberSequence = new utils_1.NumberSequence();\n        // if only one node passed, we start the selection at the top\n        if (utils_1.Utils.missing(firstInRange)) {\n            inActiveRange = true;\n        }\n        var foundGapInSelection = false;\n        this.forEachBlockInOrder(function (block, id) {\n            if (foundGapInSelection)\n                return;\n            if (inActiveRange && (lastBlockId + 1 !== id)) {\n                foundGapInSelection = true;\n                return;\n            }\n            lastBlockId = id;\n            block.forEachNodeShallow(function (rowNode) {\n                var hitFirstOrLast = rowNode === firstInRange || rowNode === lastInRange;\n                if (inActiveRange || hitFirstOrLast) {\n                    result.push(rowNode);\n                }\n                if (hitFirstOrLast) {\n                    inActiveRange = !inActiveRange;\n                }\n            }, numberSequence, _this.virtualRowCount);\n        });\n        // inActiveRange will be still true if we never hit the second rowNode\n        var invalidRange = foundGapInSelection || inActiveRange;\n        return invalidRange ? [] : result;\n    };\n    RowNodeCache.EVENT_CACHE_UPDATED = 'cacheUpdated';\n    return RowNodeCache;\n}(beanStub_1.BeanStub));\nexports.RowNodeCache = RowNodeCache;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rowModels/cache/rowNodeCache.js\n// module id = 208\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar rowNode_1 = require(\"../../entities/rowNode\");\nvar utils_1 = require(\"../../utils\");\nvar InMemoryNodeManager = (function () {\n    function InMemoryNodeManager(rootNode, gridOptionsWrapper, context, eventService, columnController) {\n        this.nextId = 0;\n        // when user is provide the id's, we also keep a map of ids to row nodes for convenience\n        this.allNodesMap = {};\n        this.rootNode = rootNode;\n        this.gridOptionsWrapper = gridOptionsWrapper;\n        this.context = context;\n        this.eventService = eventService;\n        this.columnController = columnController;\n        this.rootNode.group = true;\n        this.rootNode.level = -1;\n        this.rootNode.id = InMemoryNodeManager.ROOT_NODE_ID;\n        this.rootNode.allLeafChildren = [];\n        this.rootNode.childrenAfterGroup = [];\n        this.rootNode.childrenAfterSort = [];\n        this.rootNode.childrenAfterFilter = [];\n        // if we make this class a bean, then can annotate postConstruct\n        this.postConstruct();\n    }\n    // @PostConstruct - this is not a bean, so postConstruct called by constructor\n    InMemoryNodeManager.prototype.postConstruct = function () {\n        // func below doesn't have 'this' pointer, so need to pull out these bits\n        this.getNodeChildDetails = this.gridOptionsWrapper.getNodeChildDetailsFunc();\n        this.suppressParentsInRowNodes = this.gridOptionsWrapper.isSuppressParentsInRowNodes();\n        this.doesDataFlower = this.gridOptionsWrapper.getDoesDataFlowerFunc();\n        this.isRowMasterFunc = this.gridOptionsWrapper.getIsRowMasterFunc();\n        this.doingLegacyTreeData = utils_1.Utils.exists(this.getNodeChildDetails);\n        this.doingMasterDetail = this.gridOptionsWrapper.isMasterDetail();\n    };\n    InMemoryNodeManager.prototype.getCopyOfNodesMap = function () {\n        var result = utils_1.Utils.cloneObject(this.allNodesMap);\n        return result;\n    };\n    InMemoryNodeManager.prototype.getRowNode = function (id) {\n        return this.allNodesMap[id];\n    };\n    InMemoryNodeManager.prototype.setRowData = function (rowData) {\n        this.rootNode.childrenAfterFilter = null;\n        this.rootNode.childrenAfterGroup = null;\n        this.rootNode.childrenAfterSort = null;\n        this.rootNode.childrenMapped = null;\n        this.nextId = 0;\n        this.allNodesMap = {};\n        if (!rowData) {\n            this.rootNode.allLeafChildren = [];\n            this.rootNode.childrenAfterGroup = [];\n            return;\n        }\n        // kick off recursion\n        var result = this.recursiveFunction(rowData, null, InMemoryNodeManager.TOP_LEVEL);\n        if (this.doingLegacyTreeData) {\n            this.rootNode.childrenAfterGroup = result;\n            this.setLeafChildren(this.rootNode);\n        }\n        else {\n            this.rootNode.allLeafChildren = result;\n        }\n    };\n    InMemoryNodeManager.prototype.updateRowData = function (rowDataTran, rowNodeOrder) {\n        var _this = this;\n        if (this.isLegacyTreeData()) {\n            return null;\n        }\n        var add = rowDataTran.add, addIndex = rowDataTran.addIndex, remove = rowDataTran.remove, update = rowDataTran.update;\n        var rowNodeTransaction = {\n            remove: [],\n            update: [],\n            add: []\n        };\n        if (utils_1.Utils.exists(add)) {\n            var useIndex = typeof addIndex === 'number' && addIndex >= 0;\n            if (useIndex) {\n                // items get inserted in reverse order for index insertion\n                add.reverse().forEach(function (item) {\n                    var newRowNode = _this.addRowNode(item, addIndex);\n                    rowNodeTransaction.add.push(newRowNode);\n                });\n            }\n            else {\n                add.forEach(function (item) {\n                    var newRowNode = _this.addRowNode(item);\n                    rowNodeTransaction.add.push(newRowNode);\n                });\n            }\n        }\n        if (utils_1.Utils.exists(remove)) {\n            remove.forEach(function (item) {\n                var removedRowNode = _this.updatedRowNode(item, false);\n                if (removedRowNode) {\n                    rowNodeTransaction.remove.push(removedRowNode);\n                }\n            });\n        }\n        if (utils_1.Utils.exists(update)) {\n            update.forEach(function (item) {\n                var updatedRowNode = _this.updatedRowNode(item, true);\n                if (updatedRowNode) {\n                    rowNodeTransaction.update.push(updatedRowNode);\n                }\n            });\n        }\n        if (rowNodeOrder) {\n            utils_1.Utils.sortRowNodesByOrder(this.rootNode.allLeafChildren, rowNodeOrder);\n        }\n        return rowNodeTransaction;\n    };\n    InMemoryNodeManager.prototype.addRowNode = function (data, index) {\n        var newNode = this.createNode(data, null, InMemoryNodeManager.TOP_LEVEL);\n        if (utils_1.Utils.exists(index)) {\n            utils_1.Utils.insertIntoArray(this.rootNode.allLeafChildren, newNode, index);\n        }\n        else {\n            this.rootNode.allLeafChildren.push(newNode);\n        }\n        return newNode;\n    };\n    InMemoryNodeManager.prototype.updatedRowNode = function (data, update) {\n        var rowNodeIdFunc = this.gridOptionsWrapper.getRowNodeIdFunc();\n        var rowNode;\n        if (utils_1.Utils.exists(rowNodeIdFunc)) {\n            // find rowNode using id\n            var id = rowNodeIdFunc(data);\n            rowNode = this.allNodesMap[id];\n            if (!rowNode) {\n                console.error(\"ag-Grid: could not find row id=\" + id + \", data item was not found for this id\");\n                return null;\n            }\n        }\n        else {\n            // find rowNode using object references\n            rowNode = utils_1.Utils.find(this.rootNode.allLeafChildren, function (rowNode) { return rowNode.data === data; });\n            if (!rowNode) {\n                console.error(\"ag-Grid: could not find data item as object was not found\", data);\n                return null;\n            }\n        }\n        if (update) {\n            // do update\n            rowNode.updateData(data);\n        }\n        else {\n            // do delete\n            rowNode.setSelected(false);\n            utils_1.Utils.removeFromArray(this.rootNode.allLeafChildren, rowNode);\n            this.allNodesMap[rowNode.id] = undefined;\n        }\n        return rowNode;\n    };\n    InMemoryNodeManager.prototype.recursiveFunction = function (rowData, parent, level) {\n        var _this = this;\n        // make sure the rowData is an array and not a string of json - this was a commonly reported problem on the forum\n        if (typeof rowData === 'string') {\n            console.warn('ag-Grid: rowData must be an array, however you passed in a string. If you are loading JSON, make sure you convert the JSON string to JavaScript objects first');\n            return;\n        }\n        var rowNodes = [];\n        rowData.forEach(function (dataItem) {\n            var node = _this.createNode(dataItem, parent, level);\n            rowNodes.push(node);\n        });\n        return rowNodes;\n    };\n    InMemoryNodeManager.prototype.createNode = function (dataItem, parent, level) {\n        var node = new rowNode_1.RowNode();\n        this.context.wireBean(node);\n        var doingTreeData = this.gridOptionsWrapper.isTreeData();\n        var doingLegacyTreeData = !doingTreeData && utils_1.Utils.exists(this.getNodeChildDetails);\n        var nodeChildDetails = doingLegacyTreeData ? this.getNodeChildDetails(dataItem) : null;\n        if (nodeChildDetails && nodeChildDetails.group) {\n            node.group = true;\n            node.childrenAfterGroup = this.recursiveFunction(nodeChildDetails.children, node, level + 1);\n            node.expanded = nodeChildDetails.expanded === true;\n            node.field = nodeChildDetails.field;\n            node.key = nodeChildDetails.key;\n            node.canFlower = node.master; // deprecated, is now 'master'\n            // pull out all the leaf children and add to our node\n            this.setLeafChildren(node);\n        }\n        else {\n            node.group = false;\n            if (doingTreeData) {\n                node.master = false;\n                node.expanded = false;\n            }\n            else {\n                // this is the default, for when doing grid data\n                if (this.doesDataFlower) {\n                    node.master = this.doesDataFlower(dataItem);\n                }\n                else if (this.doingMasterDetail) {\n                    // if we are doing master detail, then the\n                    // default is that everything can flower.\n                    if (this.isRowMasterFunc) {\n                        node.master = this.isRowMasterFunc(dataItem);\n                    }\n                    else {\n                        node.master = true;\n                    }\n                }\n                else {\n                    node.master = false;\n                }\n                node.expanded = node.master ? this.isExpanded(level) : false;\n            }\n        }\n        // support for backwards compatibility, canFlow is now called 'master'\n        node.canFlower = node.master;\n        if (parent && !this.suppressParentsInRowNodes) {\n            node.parent = parent;\n        }\n        node.level = level;\n        node.setDataAndId(dataItem, this.nextId.toString());\n        this.allNodesMap[node.id] = node;\n        this.nextId++;\n        return node;\n    };\n    InMemoryNodeManager.prototype.isExpanded = function (level) {\n        var expandByDefault = this.gridOptionsWrapper.getGroupDefaultExpanded();\n        if (expandByDefault === -1) {\n            return true;\n        }\n        else {\n            return level < expandByDefault;\n        }\n    };\n    // this is only used for doing legacy tree data\n    InMemoryNodeManager.prototype.setLeafChildren = function (node) {\n        node.allLeafChildren = [];\n        if (node.childrenAfterGroup) {\n            node.childrenAfterGroup.forEach(function (childAfterGroup) {\n                if (childAfterGroup.group) {\n                    if (childAfterGroup.allLeafChildren) {\n                        childAfterGroup.allLeafChildren.forEach(function (leafChild) { return node.allLeafChildren.push(leafChild); });\n                    }\n                }\n                else {\n                    node.allLeafChildren.push(childAfterGroup);\n                }\n            });\n        }\n    };\n    InMemoryNodeManager.prototype.insertItemsAtIndex = function (index, rowData) {\n        if (this.isLegacyTreeData()) {\n            return null;\n        }\n        var nodeList = this.rootNode.allLeafChildren;\n        if (index > nodeList.length) {\n            console.warn(\"ag-Grid: invalid index \" + index + \", max index is \" + nodeList.length);\n            return;\n        }\n        var newNodes = [];\n        // go through the items backwards, otherwise they get added in reverse order\n        for (var i = rowData.length - 1; i >= 0; i--) {\n            var data = rowData[i];\n            var newNode = this.createNode(data, null, InMemoryNodeManager.TOP_LEVEL);\n            utils_1.Utils.insertIntoArray(nodeList, newNode, index);\n            newNodes.push(newNode);\n        }\n        return newNodes.length > 0 ? newNodes : null;\n    };\n    InMemoryNodeManager.prototype.addItems = function (items) {\n        var nodeList = this.rootNode.allLeafChildren;\n        return this.insertItemsAtIndex(nodeList.length, items);\n    };\n    InMemoryNodeManager.prototype.isLegacyTreeData = function () {\n        var rowsAlreadyGrouped = utils_1.Utils.exists(this.gridOptionsWrapper.getNodeChildDetailsFunc());\n        if (rowsAlreadyGrouped) {\n            console.warn('ag-Grid: adding and removing rows is not supported when using nodeChildDetailsFunc, ie it is not ' +\n                'supported for legacy tree data. Please see the docs on the new preferred way of providing tree data that works with delta updates.');\n            return true;\n        }\n        else {\n            return false;\n        }\n    };\n    InMemoryNodeManager.TOP_LEVEL = 0;\n    InMemoryNodeManager.ROOT_NODE_ID = 'ROOT_NODE_ID';\n    return InMemoryNodeManager;\n}());\nexports.InMemoryNodeManager = InMemoryNodeManager;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rowModels/inMemory/inMemoryNodeManager.js\n// module id = 209\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ChangedPath = (function () {\n    function ChangedPath(keepingColumns) {\n        this.nodeIdsToBoolean = {};\n        this.nodeIdsToColumns = {};\n        this.keepingColumns = keepingColumns;\n    }\n    ChangedPath.prototype.addParentNode = function (rowNode, columns) {\n        var _this = this;\n        var pointer = rowNode;\n        while (pointer) {\n            // add this item to the path, all the way to parent\n            this.nodeIdsToBoolean[pointer.id] = true;\n            // if columns, add the columns in all the way to parent, merging\n            // in any other columns that might be there already\n            if (this.keepingColumns && columns) {\n                if (!this.nodeIdsToColumns[pointer.id]) {\n                    this.nodeIdsToColumns[pointer.id] = {};\n                }\n                columns.forEach(function (col) { return _this.nodeIdsToColumns[pointer.id][col.getId()] = true; });\n            }\n            pointer = pointer.parent;\n        }\n    };\n    ChangedPath.prototype.isInPath = function (rowNode) {\n        return this.nodeIdsToBoolean[rowNode.id];\n    };\n    ChangedPath.prototype.getValueColumnsForNode = function (rowNode, valueColumns) {\n        if (!this.keepingColumns) {\n            return valueColumns;\n        }\n        var colsForThisNode = this.nodeIdsToColumns[rowNode.id];\n        var result = valueColumns.filter(function (col) { return colsForThisNode[col.getId()]; });\n        return result;\n    };\n    ChangedPath.prototype.getNotValueColumnsForNode = function (rowNode, valueColumns) {\n        if (!this.keepingColumns) {\n            return null;\n        }\n        var colsForThisNode = this.nodeIdsToColumns[rowNode.id];\n        var result = valueColumns.filter(function (col) { return !colsForThisNode[col.getId()]; });\n        return result;\n    };\n    return ChangedPath;\n}());\nexports.ChangedPath = ChangedPath;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rowModels/inMemory/changedPath.js\n// module id = 210\n// module chunks = 0","'use strict';\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 * @typechecks\n */\n\nvar emptyFunction = require('./emptyFunction');\n\n/**\n * Upstream version of event listener. Does not take into account specific\n * nature of platform.\n */\nvar EventListener = {\n  /**\n   * Listen to DOM events during the bubble phase.\n   *\n   * @param {DOMEventTarget} target DOM element to register listener on.\n   * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.\n   * @param {function} callback Callback function.\n   * @return {object} Object with a `remove` method.\n   */\n  listen: function listen(target, eventType, callback) {\n    if (target.addEventListener) {\n      target.addEventListener(eventType, callback, false);\n      return {\n        remove: function remove() {\n          target.removeEventListener(eventType, callback, false);\n        }\n      };\n    } else if (target.attachEvent) {\n      target.attachEvent('on' + eventType, callback);\n      return {\n        remove: function remove() {\n          target.detachEvent('on' + eventType, callback);\n        }\n      };\n    }\n  },\n\n  /**\n   * Listen to DOM events during the capture phase.\n   *\n   * @param {DOMEventTarget} target DOM element to register listener on.\n   * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.\n   * @param {function} callback Callback function.\n   * @return {object} Object with a `remove` method.\n   */\n  capture: function capture(target, eventType, callback) {\n    if (target.addEventListener) {\n      target.addEventListener(eventType, callback, true);\n      return {\n        remove: function remove() {\n          target.removeEventListener(eventType, callback, true);\n        }\n      };\n    } else {\n      if (process.env.NODE_ENV !== 'production') {\n        console.error('Attempted to listen to events during the capture phase on a ' + 'browser that does not support the capture phase. Your application ' + 'will not receive some events.');\n      }\n      return {\n        remove: emptyFunction\n      };\n    }\n  },\n\n  registerDefault: function registerDefault() {}\n};\n\nmodule.exports = EventListener;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/EventListener.js\n// module id = 211\n// module chunks = 0","/**\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 * @typechecks\n * \n */\n\n/*eslint-disable no-self-compare */\n\n'use strict';\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n  // SameValue algorithm\n  if (x === y) {\n    // Steps 1-5, 7-10\n    // Steps 6.b-6.e: +0 != -0\n    // Added the nonzero y check to make Flow happy, but it is redundant\n    return x !== 0 || y !== 0 || 1 / x === 1 / y;\n  } else {\n    // Step 6.a: NaN == NaN\n    return x !== x && y !== y;\n  }\n}\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n */\nfunction shallowEqual(objA, objB) {\n  if (is(objA, objB)) {\n    return true;\n  }\n\n  if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n    return false;\n  }\n\n  var keysA = Object.keys(objA);\n  var keysB = Object.keys(objB);\n\n  if (keysA.length !== keysB.length) {\n    return false;\n  }\n\n  // Test for A's keys different from B.\n  for (var i = 0; i < keysA.length; i++) {\n    if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nmodule.exports = shallowEqual;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/shallowEqual.js\n// module id = 212\n// module chunks = 0","'use strict';\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 */\n\nvar isTextNode = require('./isTextNode');\n\n/*eslint-disable no-bitwise */\n\n/**\n * Checks if a given DOM node contains or is another DOM node.\n */\nfunction containsNode(outerNode, innerNode) {\n  if (!outerNode || !innerNode) {\n    return false;\n  } else if (outerNode === innerNode) {\n    return true;\n  } else if (isTextNode(outerNode)) {\n    return false;\n  } else if (isTextNode(innerNode)) {\n    return containsNode(outerNode, innerNode.parentNode);\n  } else if ('contains' in outerNode) {\n    return outerNode.contains(innerNode);\n  } else if (outerNode.compareDocumentPosition) {\n    return !!(outerNode.compareDocumentPosition(innerNode) & 16);\n  } else {\n    return false;\n  }\n}\n\nmodule.exports = containsNode;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/containsNode.js\n// module id = 213\n// module chunks = 0","/**\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\n'use strict';\n\n/**\n * @param {DOMElement} node input/textarea to focus\n */\n\nfunction focusNode(node) {\n  // IE8 can throw \"Can't move focus to the control because it is invisible,\n  // not enabled, or of a type that does not accept the focus.\" for all kinds of\n  // reasons that are too expensive and fragile to test.\n  try {\n    node.focus();\n  } catch (e) {}\n}\n\nmodule.exports = focusNode;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/focusNode.js\n// module id = 214\n// module chunks = 0","'use strict';\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 * @typechecks\n */\n\n/* eslint-disable fb-www/typeof-undefined */\n\n/**\n * Same as document.activeElement but wraps in a try-catch block. In IE it is\n * not safe to call document.activeElement if there is nothing focused.\n *\n * The activeElement will be null only if the document or document body is not\n * yet defined.\n *\n * @param {?DOMDocument} doc Defaults to current document.\n * @return {?DOMElement}\n */\nfunction getActiveElement(doc) /*?DOMElement*/{\n  doc = doc || (typeof document !== 'undefined' ? document : undefined);\n  if (typeof doc === 'undefined') {\n    return null;\n  }\n  try {\n    return doc.activeElement || doc.body;\n  } catch (e) {\n    return doc.body;\n  }\n}\n\nmodule.exports = getActiveElement;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/getActiveElement.js\n// module id = 215\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _LocationUtils = require('./LocationUtils');\n\nvar _PathUtils = require('./PathUtils');\n\nvar _createTransitionManager = require('./createTransitionManager');\n\nvar _createTransitionManager2 = _interopRequireDefault(_createTransitionManager);\n\nvar _DOMUtils = require('./DOMUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nvar getHistoryState = function 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/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\nvar createBrowserHistory = function createBrowserHistory() {\n  var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n  (0, _invariant2.default)(_DOMUtils.canUseDOM, 'Browser history needs a DOM');\n\n  var globalHistory = window.history;\n  var canUseHistory = (0, _DOMUtils.supportsHistory)();\n  var needsHashChangeListener = !(0, _DOMUtils.supportsPopStateOnHashChange)();\n\n  var _props$forceRefresh = props.forceRefresh,\n      forceRefresh = _props$forceRefresh === undefined ? false : _props$forceRefresh,\n      _props$getUserConfirm = props.getUserConfirmation,\n      getUserConfirmation = _props$getUserConfirm === undefined ? _DOMUtils.getConfirmation : _props$getUserConfirm,\n      _props$keyLength = props.keyLength,\n      keyLength = _props$keyLength === undefined ? 6 : _props$keyLength;\n\n  var basename = props.basename ? (0, _PathUtils.stripTrailingSlash)((0, _PathUtils.addLeadingSlash)(props.basename)) : '';\n\n  var getDOMLocation = 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\n\n    var path = pathname + search + hash;\n\n    (0, _warning2.default)(!basename || (0, _PathUtils.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 + '\".');\n\n    if (basename) path = (0, _PathUtils.stripBasename)(path, basename);\n\n    return (0, _LocationUtils.createLocation)(path, state, key);\n  };\n\n  var createKey = function createKey() {\n    return Math.random().toString(36).substr(2, keyLength);\n  };\n\n  var transitionManager = (0, _createTransitionManager2.default)();\n\n  var setState = function setState(nextState) {\n    _extends(history, nextState);\n\n    history.length = globalHistory.length;\n\n    transitionManager.notifyListeners(history.location, history.action);\n  };\n\n  var handlePopState = function handlePopState(event) {\n    // Ignore extraneous popstate events in WebKit.\n    if ((0, _DOMUtils.isExtraneousPopstateEvent)(event)) return;\n\n    handlePop(getDOMLocation(event.state));\n  };\n\n  var handleHashChange = function handleHashChange() {\n    handlePop(getDOMLocation(getHistoryState()));\n  };\n\n  var forceNextPop = false;\n\n  var handlePop = function handlePop(location) {\n    if (forceNextPop) {\n      forceNextPop = false;\n      setState();\n    } else {\n      var action = 'POP';\n\n      transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n        if (ok) {\n          setState({ action: action, location: location });\n        } else {\n          revertPop(location);\n        }\n      });\n    }\n  };\n\n  var revertPop = function revertPop(fromLocation) {\n    var toLocation = history.location;\n\n    // 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\n    if (toIndex === -1) toIndex = 0;\n\n    var fromIndex = allKeys.indexOf(fromLocation.key);\n\n    if (fromIndex === -1) fromIndex = 0;\n\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];\n\n  // Public interface\n\n  var createHref = function createHref(location) {\n    return basename + (0, _PathUtils.createPath)(location);\n  };\n\n  var push = function push(path, state) {\n    (0, _warning2.default)(!((typeof path === 'undefined' ? 'undefined' : _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');\n\n    var action = 'PUSH';\n    var location = (0, _LocationUtils.createLocation)(path, state, createKey(), history.location);\n\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n\n      var href = createHref(location);\n      var key = location.key,\n          state = location.state;\n\n\n      if (canUseHistory) {\n        globalHistory.pushState({ key: key, state: state }, 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 ? 0 : prevIndex + 1);\n\n          nextKeys.push(location.key);\n          allKeys = nextKeys;\n\n          setState({ action: action, location: location });\n        }\n      } else {\n        (0, _warning2.default)(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history');\n\n        window.location.href = href;\n      }\n    });\n  };\n\n  var replace = function replace(path, state) {\n    (0, _warning2.default)(!((typeof path === 'undefined' ? 'undefined' : _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');\n\n    var action = 'REPLACE';\n    var location = (0, _LocationUtils.createLocation)(path, state, createKey(), history.location);\n\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n\n      var href = createHref(location);\n      var key = location.key,\n          state = location.state;\n\n\n      if (canUseHistory) {\n        globalHistory.replaceState({ key: key, state: state }, null, href);\n\n        if (forceRefresh) {\n          window.location.replace(href);\n        } else {\n          var prevIndex = allKeys.indexOf(history.location.key);\n\n          if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n\n          setState({ action: action, location: location });\n        }\n      } else {\n        (0, _warning2.default)(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history');\n\n        window.location.replace(href);\n      }\n    });\n  };\n\n  var go = function go(n) {\n    globalHistory.go(n);\n  };\n\n  var goBack = function goBack() {\n    return go(-1);\n  };\n\n  var goForward = function goForward() {\n    return go(1);\n  };\n\n  var listenerCount = 0;\n\n  var checkDOMListeners = function checkDOMListeners(delta) {\n    listenerCount += delta;\n\n    if (listenerCount === 1) {\n      (0, _DOMUtils.addEventListener)(window, PopStateEvent, handlePopState);\n\n      if (needsHashChangeListener) (0, _DOMUtils.addEventListener)(window, HashChangeEvent, handleHashChange);\n    } else if (listenerCount === 0) {\n      (0, _DOMUtils.removeEventListener)(window, PopStateEvent, handlePopState);\n\n      if (needsHashChangeListener) (0, _DOMUtils.removeEventListener)(window, HashChangeEvent, handleHashChange);\n    }\n  };\n\n  var isBlocked = false;\n\n  var block = function block() {\n    var prompt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\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  var listen = function listen(listener) {\n    var unlisten = transitionManager.appendListener(listener);\n    checkDOMListeners(1);\n\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\n  return history;\n};\n\nexports.default = createBrowserHistory;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/history/createBrowserHistory.js\n// module id = 216\n// module chunks = 0","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) {\n  var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\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 = void 0;\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) {\n    fromParts.unshift('..');\n  }if (mustEndAbs && fromParts[0] !== '' && (!fromParts[0] || !isAbsolute(fromParts[0]))) 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\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/resolve-pathname/index.js\n// module id = 217\n// module chunks = 0","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction valueEqual(a, b) {\n  if (a === b) return true;\n\n  if (a == null || b == null) return false;\n\n  if (Array.isArray(a)) {\n    return Array.isArray(b) && a.length === b.length && a.every(function (item, index) {\n      return valueEqual(item, b[index]);\n    });\n  }\n\n  var aType = typeof a === 'undefined' ? 'undefined' : _typeof(a);\n  var bType = typeof b === 'undefined' ? 'undefined' : _typeof(b);\n\n  if (aType !== bType) return false;\n\n  if (aType === 'object') {\n    var aValue = a.valueOf();\n    var bValue = b.valueOf();\n\n    if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n    var aKeys = Object.keys(a);\n    var bKeys = Object.keys(b);\n\n    if (aKeys.length !== bKeys.length) return false;\n\n    return aKeys.every(function (key) {\n      return valueEqual(a[key], b[key]);\n    });\n  }\n\n  return false;\n}\n\nexport default valueEqual;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/value-equal/index.js\n// module id = 218\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\nvar canUseDOM = exports.canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nvar addEventListener = exports.addEventListener = function addEventListener(node, event, listener) {\n  return node.addEventListener ? node.addEventListener(event, listener, false) : node.attachEvent('on' + event, listener);\n};\n\nvar removeEventListener = exports.removeEventListener = function removeEventListener(node, event, listener) {\n  return node.removeEventListener ? node.removeEventListener(event, listener, false) : node.detachEvent('on' + event, listener);\n};\n\nvar getConfirmation = exports.getConfirmation = function getConfirmation(message, callback) {\n  return callback(window.confirm(message));\n}; // 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 */\nvar supportsHistory = exports.supportsHistory = function supportsHistory() {\n  var ua = window.navigator.userAgent;\n\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\n  return window.history && 'pushState' in window.history;\n};\n\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\nvar supportsPopStateOnHashChange = exports.supportsPopStateOnHashChange = function supportsPopStateOnHashChange() {\n  return window.navigator.userAgent.indexOf('Trident') === -1;\n};\n\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\nvar supportsGoWithoutReloadUsingHash = exports.supportsGoWithoutReloadUsingHash = function supportsGoWithoutReloadUsingHash() {\n  return window.navigator.userAgent.indexOf('Firefox') === -1;\n};\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 */\nvar isExtraneousPopstateEvent = exports.isExtraneousPopstateEvent = function isExtraneousPopstateEvent(event) {\n  return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/history/DOMUtils.js\n// module id = 219\n// module chunks = 0","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport invariant from 'invariant';\n\nvar isModifiedEvent = function isModifiedEvent(event) {\n  return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n};\n\n/**\n * The public API for rendering a history-aware <a>.\n */\n\nvar Link = function (_React$Component) {\n  _inherits(Link, _React$Component);\n\n  function Link() {\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, Link);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.handleClick = function (event) {\n      if (_this.props.onClick) _this.props.onClick(event);\n\n      if (!event.defaultPrevented && // onClick prevented default\n      event.button === 0 && // ignore right clicks\n      !_this.props.target && // let browser handle \"target=_blank\" etc.\n      !isModifiedEvent(event) // ignore clicks with modifier keys\n      ) {\n          event.preventDefault();\n\n          var history = _this.context.router.history;\n          var _this$props = _this.props,\n              replace = _this$props.replace,\n              to = _this$props.to;\n\n\n          if (replace) {\n            history.replace(to);\n          } else {\n            history.push(to);\n          }\n        }\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  Link.prototype.render = function render() {\n    var _props = this.props,\n        replace = _props.replace,\n        to = _props.to,\n        innerRef = _props.innerRef,\n        props = _objectWithoutProperties(_props, ['replace', 'to', 'innerRef']); // eslint-disable-line no-unused-vars\n\n    invariant(this.context.router, 'You should not use <Link> outside a <Router>');\n\n    var href = this.context.router.history.createHref(typeof to === 'string' ? { pathname: to } : to);\n\n    return React.createElement('a', _extends({}, props, { onClick: this.handleClick, href: href, ref: innerRef }));\n  };\n\n  return Link;\n}(React.Component);\n\nLink.propTypes = {\n  onClick: PropTypes.func,\n  target: PropTypes.string,\n  replace: PropTypes.bool,\n  to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired,\n  innerRef: PropTypes.oneOfType([PropTypes.string, PropTypes.func])\n};\nLink.defaultProps = {\n  replace: false\n};\nLink.contextTypes = {\n  router: PropTypes.shape({\n    history: PropTypes.shape({\n      push: PropTypes.func.isRequired,\n      replace: PropTypes.func.isRequired,\n      createHref: PropTypes.func.isRequired\n    }).isRequired\n  }).isRequired\n};\n\n\nexport default Link;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router-dom/es/Link.js\n// module id = 220\n// module chunks = 0","// Written in this round about way for babel-transform-imports\nimport Route from 'react-router/es/Route';\n\nexport default Route;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router-dom/es/Route.js\n// module id = 221\n// module chunks = 0","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from 'warning';\nimport invariant from 'invariant';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport matchPath from './matchPath';\n\nvar isEmptyChildren = function isEmptyChildren(children) {\n  return React.Children.count(children) === 0;\n};\n\n/**\n * The public API for matching a single path and rendering.\n */\n\nvar Route = function (_React$Component) {\n  _inherits(Route, _React$Component);\n\n  function Route() {\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, Route);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n      match: _this.computeMatch(_this.props, _this.context.router)\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  Route.prototype.getChildContext = function getChildContext() {\n    return {\n      router: _extends({}, this.context.router, {\n        route: {\n          location: this.props.location || this.context.router.route.location,\n          match: this.state.match\n        }\n      })\n    };\n  };\n\n  Route.prototype.computeMatch = function computeMatch(_ref, router) {\n    var computedMatch = _ref.computedMatch,\n        location = _ref.location,\n        path = _ref.path,\n        strict = _ref.strict,\n        exact = _ref.exact,\n        sensitive = _ref.sensitive;\n\n    if (computedMatch) return computedMatch; // <Switch> already computed the match for us\n\n    invariant(router, 'You should not use <Route> or withRouter() outside a <Router>');\n\n    var route = router.route;\n\n    var pathname = (location || route.location).pathname;\n\n    return path ? matchPath(pathname, { path: path, strict: strict, exact: exact, sensitive: sensitive }) : route.match;\n  };\n\n  Route.prototype.componentWillMount = function componentWillMount() {\n    warning(!(this.props.component && this.props.render), 'You should not use <Route component> and <Route render> in the same route; <Route render> will be ignored');\n\n    warning(!(this.props.component && this.props.children && !isEmptyChildren(this.props.children)), 'You should not use <Route component> and <Route children> in the same route; <Route children> will be ignored');\n\n    warning(!(this.props.render && this.props.children && !isEmptyChildren(this.props.children)), 'You should not use <Route render> and <Route children> in the same route; <Route children> will be ignored');\n  };\n\n  Route.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps, nextContext) {\n    warning(!(nextProps.location && !this.props.location), '<Route> 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    warning(!(!nextProps.location && this.props.location), '<Route> 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    this.setState({\n      match: this.computeMatch(nextProps, nextContext.router)\n    });\n  };\n\n  Route.prototype.render = function render() {\n    var match = this.state.match;\n    var _props = this.props,\n        children = _props.children,\n        component = _props.component,\n        render = _props.render;\n    var _context$router = this.context.router,\n        history = _context$router.history,\n        route = _context$router.route,\n        staticContext = _context$router.staticContext;\n\n    var location = this.props.location || route.location;\n    var props = { match: match, location: location, history: history, staticContext: staticContext };\n\n    return component ? // component prop gets first priority, only called if there's a match\n    match ? React.createElement(component, props) : null : render ? // render prop is next, only called if there's a match\n    match ? render(props) : null : children ? // children come last, always called\n    typeof children === 'function' ? children(props) : !isEmptyChildren(children) ? React.Children.only(children) : null : null;\n  };\n\n  return Route;\n}(React.Component);\n\nRoute.propTypes = {\n  computedMatch: PropTypes.object, // private, from <Switch>\n  path: PropTypes.string,\n  exact: PropTypes.bool,\n  strict: PropTypes.bool,\n  sensitive: PropTypes.bool,\n  component: PropTypes.func,\n  render: PropTypes.func,\n  children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n  location: PropTypes.object\n};\nRoute.contextTypes = {\n  router: PropTypes.shape({\n    history: PropTypes.object.isRequired,\n    route: PropTypes.object.isRequired,\n    staticContext: PropTypes.object\n  })\n};\nRoute.childContextTypes = {\n  router: PropTypes.object.isRequired\n};\n\n\nexport default Route;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/es/Route.js\n// module id = 222\n// module chunks = 0","export var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nexport var addEventListener = function addEventListener(node, event, listener) {\n  return node.addEventListener ? node.addEventListener(event, listener, false) : node.attachEvent('on' + event, listener);\n};\n\nexport var removeEventListener = function removeEventListener(node, event, listener) {\n  return node.removeEventListener ? node.removeEventListener(event, listener, false) : node.detachEvent('on' + event, listener);\n};\n\nexport var getConfirmation = function getConfirmation(message, callback) {\n  return callback(window.confirm(message));\n}; // 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 */\nexport var supportsHistory = function supportsHistory() {\n  var ua = window.navigator.userAgent;\n\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\n  return window.history && 'pushState' in window.history;\n};\n\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\nexport var supportsPopStateOnHashChange = function supportsPopStateOnHashChange() {\n  return window.navigator.userAgent.indexOf('Trident') === -1;\n};\n\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\nexport var supportsGoWithoutReloadUsingHash = function supportsGoWithoutReloadUsingHash() {\n  return window.navigator.userAgent.indexOf('Firefox') === -1;\n};\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 */\nexport var isExtraneousPopstateEvent = function isExtraneousPopstateEvent(event) {\n  return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/history/es/DOMUtils.js\n// module id = 223\n// module chunks = 0","/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n'use strict';\n\nvar REACT_STATICS = {\n    childContextTypes: true,\n    contextTypes: true,\n    defaultProps: true,\n    displayName: true,\n    getDefaultProps: true,\n    mixins: true,\n    propTypes: true,\n    type: true\n};\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};\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = getPrototypeOf && getPrototypeOf(Object);\n\nmodule.exports = function hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n    if (typeof sourceComponent !== 'string') { // don't hoist over string (html) components\n\n        if (objectPrototype) {\n            var inheritedComponent = getPrototypeOf(sourceComponent);\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        for (var i = 0; i < keys.length; ++i) {\n            var key = keys[i];\n            if (!REACT_STATICS[key] && !KNOWN_STATICS[key] && (!blacklist || !blacklist[key])) {\n                var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n                try { // Avoid failures from read-only properties\n                    defineProperty(targetComponent, key, descriptor);\n                } catch (e) {}\n            }\n        }\n\n        return targetComponent;\n    }\n\n    return targetComponent;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/hoist-non-react-statics/index.js\n// module id = 224\n// module chunks = 0","import PropTypes from 'prop-types';\n\nexport var subscriptionShape = PropTypes.shape({\n  trySubscribe: PropTypes.func.isRequired,\n  tryUnsubscribe: PropTypes.func.isRequired,\n  notifyNestedSubs: PropTypes.func.isRequired,\n  isSubscribed: PropTypes.func.isRequired\n});\n\nexport var storeShape = PropTypes.shape({\n  subscribe: PropTypes.func.isRequired,\n  dispatch: PropTypes.func.isRequired,\n  getState: PropTypes.func.isRequired\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-redux/es/utils/PropTypes.js\n// module id = 225\n// module chunks = 0","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nimport hoistStatics from 'hoist-non-react-statics';\nimport invariant from 'invariant';\nimport { Component, createElement } from 'react';\n\nimport Subscription from '../utils/Subscription';\nimport { storeShape, subscriptionShape } from '../utils/PropTypes';\n\nvar hotReloadingVersion = 0;\nvar dummyState = {};\nfunction noop() {}\nfunction makeSelectorStateful(sourceSelector, store) {\n  // wrap the selector in an object that tracks its results between runs.\n  var selector = {\n    run: function runComponentSelector(props) {\n      try {\n        var nextProps = sourceSelector(store.getState(), props);\n        if (nextProps !== selector.props || selector.error) {\n          selector.shouldComponentUpdate = true;\n          selector.props = nextProps;\n          selector.error = null;\n        }\n      } catch (error) {\n        selector.shouldComponentUpdate = true;\n        selector.error = error;\n      }\n    }\n  };\n\n  return selector;\n}\n\nexport default function connectAdvanced(\n/*\n  selectorFactory is a func that is responsible for returning the selector function used to\n  compute new props from state, props, and dispatch. For example:\n     export default connectAdvanced((dispatch, options) => (state, props) => ({\n      thing: state.things[props.thingId],\n      saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\n    }))(YourComponent)\n   Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\n  outside of their selector as an optimization. Options passed to connectAdvanced are passed to\n  the selectorFactory, along with displayName and WrappedComponent, as the second argument.\n   Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\n  props. Do not use connectAdvanced directly without memoizing results between calls to your\n  selector, otherwise the Connect component will re-render on every state or props change.\n*/\nselectorFactory) {\n  var _contextTypes, _childContextTypes;\n\n  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n      _ref$getDisplayName = _ref.getDisplayName,\n      getDisplayName = _ref$getDisplayName === undefined ? function (name) {\n    return 'ConnectAdvanced(' + name + ')';\n  } : _ref$getDisplayName,\n      _ref$methodName = _ref.methodName,\n      methodName = _ref$methodName === undefined ? 'connectAdvanced' : _ref$methodName,\n      _ref$renderCountProp = _ref.renderCountProp,\n      renderCountProp = _ref$renderCountProp === undefined ? undefined : _ref$renderCountProp,\n      _ref$shouldHandleStat = _ref.shouldHandleStateChanges,\n      shouldHandleStateChanges = _ref$shouldHandleStat === undefined ? true : _ref$shouldHandleStat,\n      _ref$storeKey = _ref.storeKey,\n      storeKey = _ref$storeKey === undefined ? 'store' : _ref$storeKey,\n      _ref$withRef = _ref.withRef,\n      withRef = _ref$withRef === undefined ? false : _ref$withRef,\n      connectOptions = _objectWithoutProperties(_ref, ['getDisplayName', 'methodName', 'renderCountProp', 'shouldHandleStateChanges', 'storeKey', 'withRef']);\n\n  var subscriptionKey = storeKey + 'Subscription';\n  var version = hotReloadingVersion++;\n\n  var contextTypes = (_contextTypes = {}, _contextTypes[storeKey] = storeShape, _contextTypes[subscriptionKey] = subscriptionShape, _contextTypes);\n  var childContextTypes = (_childContextTypes = {}, _childContextTypes[subscriptionKey] = subscriptionShape, _childContextTypes);\n\n  return function wrapWithConnect(WrappedComponent) {\n    invariant(typeof WrappedComponent == 'function', 'You must pass a component to the function returned by ' + ('connect. Instead received ' + JSON.stringify(WrappedComponent)));\n\n    var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n\n    var displayName = getDisplayName(wrappedComponentName);\n\n    var selectorFactoryOptions = _extends({}, connectOptions, {\n      getDisplayName: getDisplayName,\n      methodName: methodName,\n      renderCountProp: renderCountProp,\n      shouldHandleStateChanges: shouldHandleStateChanges,\n      storeKey: storeKey,\n      withRef: withRef,\n      displayName: displayName,\n      wrappedComponentName: wrappedComponentName,\n      WrappedComponent: WrappedComponent\n    });\n\n    var Connect = function (_Component) {\n      _inherits(Connect, _Component);\n\n      function Connect(props, context) {\n        _classCallCheck(this, Connect);\n\n        var _this = _possibleConstructorReturn(this, _Component.call(this, props, context));\n\n        _this.version = version;\n        _this.state = {};\n        _this.renderCount = 0;\n        _this.store = props[storeKey] || context[storeKey];\n        _this.propsMode = Boolean(props[storeKey]);\n        _this.setWrappedInstance = _this.setWrappedInstance.bind(_this);\n\n        invariant(_this.store, 'Could not find \"' + storeKey + '\" in either the context or props of ' + ('\"' + displayName + '\". Either wrap the root component in a <Provider>, ') + ('or explicitly pass \"' + storeKey + '\" as a prop to \"' + displayName + '\".'));\n\n        _this.initSelector();\n        _this.initSubscription();\n        return _this;\n      }\n\n      Connect.prototype.getChildContext = function getChildContext() {\n        var _ref2;\n\n        // If this component received store from props, its subscription should be transparent\n        // to any descendants receiving store+subscription from context; it passes along\n        // subscription passed to it. Otherwise, it shadows the parent subscription, which allows\n        // Connect to control ordering of notifications to flow top-down.\n        var subscription = this.propsMode ? null : this.subscription;\n        return _ref2 = {}, _ref2[subscriptionKey] = subscription || this.context[subscriptionKey], _ref2;\n      };\n\n      Connect.prototype.componentDidMount = function componentDidMount() {\n        if (!shouldHandleStateChanges) return;\n\n        // componentWillMount fires during server side rendering, but componentDidMount and\n        // componentWillUnmount do not. Because of this, trySubscribe happens during ...didMount.\n        // Otherwise, unsubscription would never take place during SSR, causing a memory leak.\n        // To handle the case where a child component may have triggered a state change by\n        // dispatching an action in its componentWillMount, we have to re-run the select and maybe\n        // re-render.\n        this.subscription.trySubscribe();\n        this.selector.run(this.props);\n        if (this.selector.shouldComponentUpdate) this.forceUpdate();\n      };\n\n      Connect.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n        this.selector.run(nextProps);\n      };\n\n      Connect.prototype.shouldComponentUpdate = function shouldComponentUpdate() {\n        return this.selector.shouldComponentUpdate;\n      };\n\n      Connect.prototype.componentWillUnmount = function componentWillUnmount() {\n        if (this.subscription) this.subscription.tryUnsubscribe();\n        this.subscription = null;\n        this.notifyNestedSubs = noop;\n        this.store = null;\n        this.selector.run = noop;\n        this.selector.shouldComponentUpdate = false;\n      };\n\n      Connect.prototype.getWrappedInstance = function getWrappedInstance() {\n        invariant(withRef, 'To access the wrapped instance, you need to specify ' + ('{ withRef: true } in the options argument of the ' + methodName + '() call.'));\n        return this.wrappedInstance;\n      };\n\n      Connect.prototype.setWrappedInstance = function setWrappedInstance(ref) {\n        this.wrappedInstance = ref;\n      };\n\n      Connect.prototype.initSelector = function initSelector() {\n        var sourceSelector = selectorFactory(this.store.dispatch, selectorFactoryOptions);\n        this.selector = makeSelectorStateful(sourceSelector, this.store);\n        this.selector.run(this.props);\n      };\n\n      Connect.prototype.initSubscription = function initSubscription() {\n        if (!shouldHandleStateChanges) return;\n\n        // parentSub's source should match where store came from: props vs. context. A component\n        // connected to the store via props shouldn't use subscription from context, or vice versa.\n        var parentSub = (this.propsMode ? this.props : this.context)[subscriptionKey];\n        this.subscription = new Subscription(this.store, parentSub, this.onStateChange.bind(this));\n\n        // `notifyNestedSubs` is duplicated to handle the case where the component is  unmounted in\n        // the middle of the notification loop, where `this.subscription` will then be null. An\n        // extra null check every change can be avoided by copying the method onto `this` and then\n        // replacing it with a no-op on unmount. This can probably be avoided if Subscription's\n        // listeners logic is changed to not call listeners that have been unsubscribed in the\n        // middle of the notification loop.\n        this.notifyNestedSubs = this.subscription.notifyNestedSubs.bind(this.subscription);\n      };\n\n      Connect.prototype.onStateChange = function onStateChange() {\n        this.selector.run(this.props);\n\n        if (!this.selector.shouldComponentUpdate) {\n          this.notifyNestedSubs();\n        } else {\n          this.componentDidUpdate = this.notifyNestedSubsOnComponentDidUpdate;\n          this.setState(dummyState);\n        }\n      };\n\n      Connect.prototype.notifyNestedSubsOnComponentDidUpdate = function notifyNestedSubsOnComponentDidUpdate() {\n        // `componentDidUpdate` is conditionally implemented when `onStateChange` determines it\n        // needs to notify nested subs. Once called, it unimplements itself until further state\n        // changes occur. Doing it this way vs having a permanent `componentDidUpdate` that does\n        // a boolean check every time avoids an extra method call most of the time, resulting\n        // in some perf boost.\n        this.componentDidUpdate = undefined;\n        this.notifyNestedSubs();\n      };\n\n      Connect.prototype.isSubscribed = function isSubscribed() {\n        return Boolean(this.subscription) && this.subscription.isSubscribed();\n      };\n\n      Connect.prototype.addExtraProps = function addExtraProps(props) {\n        if (!withRef && !renderCountProp && !(this.propsMode && this.subscription)) return props;\n        // make a shallow copy so that fields added don't leak to the original selector.\n        // this is especially important for 'ref' since that's a reference back to the component\n        // instance. a singleton memoized selector would then be holding a reference to the\n        // instance, preventing the instance from being garbage collected, and that would be bad\n        var withExtras = _extends({}, props);\n        if (withRef) withExtras.ref = this.setWrappedInstance;\n        if (renderCountProp) withExtras[renderCountProp] = this.renderCount++;\n        if (this.propsMode && this.subscription) withExtras[subscriptionKey] = this.subscription;\n        return withExtras;\n      };\n\n      Connect.prototype.render = function render() {\n        var selector = this.selector;\n        selector.shouldComponentUpdate = false;\n\n        if (selector.error) {\n          throw selector.error;\n        } else {\n          return createElement(WrappedComponent, this.addExtraProps(selector.props));\n        }\n      };\n\n      return Connect;\n    }(Component);\n\n    Connect.WrappedComponent = WrappedComponent;\n    Connect.displayName = displayName;\n    Connect.childContextTypes = childContextTypes;\n    Connect.contextTypes = contextTypes;\n    Connect.propTypes = contextTypes;\n\n    if (process.env.NODE_ENV !== 'production') {\n      Connect.prototype.componentWillUpdate = function componentWillUpdate() {\n        var _this2 = this;\n\n        // We are hot reloading!\n        if (this.version !== version) {\n          this.version = version;\n          this.initSelector();\n\n          // If any connected descendants don't hot reload (and resubscribe in the process), their\n          // listeners will be lost when we unsubscribe. Unfortunately, by copying over all\n          // listeners, this does mean that the old versions of connected descendants will still be\n          // notified of state changes; however, their onStateChange function is a no-op so this\n          // isn't a huge deal.\n          var oldListeners = [];\n\n          if (this.subscription) {\n            oldListeners = this.subscription.listeners.get();\n            this.subscription.tryUnsubscribe();\n          }\n          this.initSubscription();\n          if (shouldHandleStateChanges) {\n            this.subscription.trySubscribe();\n            oldListeners.forEach(function (listener) {\n              return _this2.subscription.listeners.subscribe(listener);\n            });\n          }\n        }\n      };\n    }\n\n    return hoistStatics(Connect, WrappedComponent);\n  };\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-redux/es/components/connectAdvanced.js\n// module id = 226\n// module chunks = 0","import createStore from './createStore';\nimport combineReducers from './combineReducers';\nimport bindActionCreators from './bindActionCreators';\nimport applyMiddleware from './applyMiddleware';\nimport compose from './compose';\nimport warning from './utils/warning';\n\n/*\n* This is a dummy function to check if the function name has been altered by minification.\n* If the function has been minified and NODE_ENV !== 'production', warn the user.\n*/\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n  warning('You are currently using minified code outside of NODE_ENV === \\'production\\'. ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or DefinePlugin for webpack (http://stackoverflow.com/questions/30030031) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { createStore, combineReducers, bindActionCreators, applyMiddleware, compose };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/redux/es/index.js\n// module id = 227\n// module chunks = 0","import isPlainObject from 'lodash-es/isPlainObject';\nimport $$observable from 'symbol-observable';\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nexport var ActionTypes = {\n  INIT: '@@redux/INIT'\n\n  /**\n   * Creates a Redux store that holds the state tree.\n   * The only way to change the data in the store is to call `dispatch()` on it.\n   *\n   * There should only be a single store in your app. To specify how different\n   * parts of the state tree respond to actions, you may combine several reducers\n   * into a single reducer function by using `combineReducers`.\n   *\n   * @param {Function} reducer A function that returns the next state tree, given\n   * the current state tree and the action to handle.\n   *\n   * @param {any} [preloadedState] The initial state. You may optionally specify it\n   * to hydrate the state from the server in universal apps, or to restore a\n   * previously serialized user session.\n   * If you use `combineReducers` to produce the root reducer function, this must be\n   * an object with the same shape as `combineReducers` keys.\n   *\n   * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n   * to enhance the store with third-party capabilities such as middleware,\n   * time travel, persistence, etc. The only store enhancer that ships with Redux\n   * is `applyMiddleware()`.\n   *\n   * @returns {Store} A Redux store that lets you read the state, dispatch actions\n   * and subscribe to changes.\n   */\n};export default function createStore(reducer, preloadedState, enhancer) {\n  var _ref2;\n\n  if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n    enhancer = preloadedState;\n    preloadedState = undefined;\n  }\n\n  if (typeof enhancer !== 'undefined') {\n    if (typeof enhancer !== 'function') {\n      throw new Error('Expected the enhancer to be a function.');\n    }\n\n    return enhancer(createStore)(reducer, preloadedState);\n  }\n\n  if (typeof reducer !== 'function') {\n    throw new Error('Expected the reducer to be a function.');\n  }\n\n  var currentReducer = reducer;\n  var currentState = preloadedState;\n  var currentListeners = [];\n  var nextListeners = currentListeners;\n  var isDispatching = false;\n\n  function ensureCanMutateNextListeners() {\n    if (nextListeners === currentListeners) {\n      nextListeners = currentListeners.slice();\n    }\n  }\n\n  /**\n   * Reads the state tree managed by the store.\n   *\n   * @returns {any} The current state tree of your application.\n   */\n  function getState() {\n    return currentState;\n  }\n\n  /**\n   * Adds a change listener. It will be called any time an action is dispatched,\n   * and some part of the state tree may potentially have changed. You may then\n   * call `getState()` to read the current state tree inside the callback.\n   *\n   * You may call `dispatch()` from a change listener, with the following\n   * caveats:\n   *\n   * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n   * If you subscribe or unsubscribe while the listeners are being invoked, this\n   * will not have any effect on the `dispatch()` that is currently in progress.\n   * However, the next `dispatch()` call, whether nested or not, will use a more\n   * recent snapshot of the subscription list.\n   *\n   * 2. The listener should not expect to see all state changes, as the state\n   * might have been updated multiple times during a nested `dispatch()` before\n   * the listener is called. It is, however, guaranteed that all subscribers\n   * registered before the `dispatch()` started will be called with the latest\n   * state by the time it exits.\n   *\n   * @param {Function} listener A callback to be invoked on every dispatch.\n   * @returns {Function} A function to remove this change listener.\n   */\n  function subscribe(listener) {\n    if (typeof listener !== 'function') {\n      throw new Error('Expected listener to be a function.');\n    }\n\n    var isSubscribed = true;\n\n    ensureCanMutateNextListeners();\n    nextListeners.push(listener);\n\n    return function unsubscribe() {\n      if (!isSubscribed) {\n        return;\n      }\n\n      isSubscribed = false;\n\n      ensureCanMutateNextListeners();\n      var index = nextListeners.indexOf(listener);\n      nextListeners.splice(index, 1);\n    };\n  }\n\n  /**\n   * Dispatches an action. It is the only way to trigger a state change.\n   *\n   * The `reducer` function, used to create the store, will be called with the\n   * current state tree and the given `action`. Its return value will\n   * be considered the **next** state of the tree, and the change listeners\n   * will be notified.\n   *\n   * The base implementation only supports plain object actions. If you want to\n   * dispatch a Promise, an Observable, a thunk, or something else, you need to\n   * wrap your store creating function into the corresponding middleware. For\n   * example, see the documentation for the `redux-thunk` package. Even the\n   * middleware will eventually dispatch plain object actions using this method.\n   *\n   * @param {Object} action A plain object representing “what changed”. It is\n   * a good idea to keep actions serializable so you can record and replay user\n   * sessions, or use the time travelling `redux-devtools`. An action must have\n   * a `type` property which may not be `undefined`. It is a good idea to use\n   * string constants for action types.\n   *\n   * @returns {Object} For convenience, the same action object you dispatched.\n   *\n   * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n   * return something else (for example, a Promise you can await).\n   */\n  function dispatch(action) {\n    if (!isPlainObject(action)) {\n      throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n    }\n\n    if (typeof action.type === 'undefined') {\n      throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n    }\n\n    if (isDispatching) {\n      throw new Error('Reducers may not dispatch actions.');\n    }\n\n    try {\n      isDispatching = true;\n      currentState = currentReducer(currentState, action);\n    } finally {\n      isDispatching = false;\n    }\n\n    var listeners = currentListeners = nextListeners;\n    for (var i = 0; i < listeners.length; i++) {\n      var listener = listeners[i];\n      listener();\n    }\n\n    return action;\n  }\n\n  /**\n   * Replaces the reducer currently used by the store to calculate the state.\n   *\n   * You might need this if your app implements code splitting and you want to\n   * load some of the reducers dynamically. You might also need this if you\n   * implement a hot reloading mechanism for Redux.\n   *\n   * @param {Function} nextReducer The reducer for the store to use instead.\n   * @returns {void}\n   */\n  function replaceReducer(nextReducer) {\n    if (typeof nextReducer !== 'function') {\n      throw new Error('Expected the nextReducer to be a function.');\n    }\n\n    currentReducer = nextReducer;\n    dispatch({ type: ActionTypes.INIT });\n  }\n\n  /**\n   * Interoperability point for observable/reactive libraries.\n   * @returns {observable} A minimal observable of state changes.\n   * For more information, see the observable proposal:\n   * https://github.com/tc39/proposal-observable\n   */\n  function observable() {\n    var _ref;\n\n    var outerSubscribe = subscribe;\n    return _ref = {\n      /**\n       * The minimal observable subscription method.\n       * @param {Object} observer Any object that can be used as an observer.\n       * The observer object should have a `next` method.\n       * @returns {subscription} An object with an `unsubscribe` method that can\n       * be used to unsubscribe the observable from the store, and prevent further\n       * emission of values from the observable.\n       */\n      subscribe: function subscribe(observer) {\n        if (typeof observer !== 'object') {\n          throw new TypeError('Expected the observer to be an object.');\n        }\n\n        function observeState() {\n          if (observer.next) {\n            observer.next(getState());\n          }\n        }\n\n        observeState();\n        var unsubscribe = outerSubscribe(observeState);\n        return { unsubscribe: unsubscribe };\n      }\n    }, _ref[$$observable] = function () {\n      return this;\n    }, _ref;\n  }\n\n  // When a store is created, an \"INIT\" action is dispatched so that every\n  // reducer returns their initial state. This effectively populates\n  // the initial state tree.\n  dispatch({ type: ActionTypes.INIT });\n\n  return _ref2 = {\n    dispatch: dispatch,\n    subscribe: subscribe,\n    getState: getState,\n    replaceReducer: replaceReducer\n  }, _ref2[$$observable] = observable, _ref2;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/redux/es/createStore.js\n// module id = 228\n// module chunks = 0","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash-es/_Symbol.js\n// module id = 229\n// module chunks = 0","/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nexport default function warning(message) {\n  /* eslint-disable no-console */\n  if (typeof console !== 'undefined' && typeof console.error === 'function') {\n    console.error(message);\n  }\n  /* eslint-enable no-console */\n  try {\n    // This error was thrown as a convenience so that if you enable\n    // \"break on all exceptions\" in your console,\n    // it would pause the execution at this line.\n    throw new Error(message);\n    /* eslint-disable no-empty */\n  } catch (e) {}\n  /* eslint-enable no-empty */\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/redux/es/utils/warning.js\n// module id = 230\n// module chunks = 0","/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\n\nexport default function compose() {\n  for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {\n    funcs[_key] = arguments[_key];\n  }\n\n  if (funcs.length === 0) {\n    return function (arg) {\n      return arg;\n    };\n  }\n\n  if (funcs.length === 1) {\n    return funcs[0];\n  }\n\n  return funcs.reduce(function (a, b) {\n    return function () {\n      return a(b.apply(undefined, arguments));\n    };\n  });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/redux/es/compose.js\n// module id = 231\n// module chunks = 0","import verifyPlainObject from '../utils/verifyPlainObject';\n\nexport function wrapMapToPropsConstant(getConstant) {\n  return function initConstantSelector(dispatch, options) {\n    var constant = getConstant(dispatch, options);\n\n    function constantSelector() {\n      return constant;\n    }\n    constantSelector.dependsOnOwnProps = false;\n    return constantSelector;\n  };\n}\n\n// dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n// \n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\nexport function getDependsOnOwnProps(mapToProps) {\n  return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n}\n\n// Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n// \n//  * Detects whether the mapToProps function being called depends on props, which\n//    is used by selectorFactory to decide if it should reinvoke on props changes.\n//    \n//  * On first call, handles mapToProps if returns another function, and treats that\n//    new function as the true mapToProps for subsequent calls.\n//    \n//  * On first call, verifies the first result is a plain object, in order to warn\n//    the developer that their mapToProps function is not returning a valid result.\n//    \nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n  return function initProxySelector(dispatch, _ref) {\n    var displayName = _ref.displayName;\n\n    var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n      return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n    };\n\n    // allow detectFactoryAndVerify to get ownProps\n    proxy.dependsOnOwnProps = true;\n\n    proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n      proxy.mapToProps = mapToProps;\n      proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n      var props = proxy(stateOrDispatch, ownProps);\n\n      if (typeof props === 'function') {\n        proxy.mapToProps = props;\n        proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n        props = proxy(stateOrDispatch, ownProps);\n      }\n\n      if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n\n      return props;\n    };\n\n    return proxy;\n  };\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-redux/es/connect/wrapMapToProps.js\n// module id = 232\n// module chunks = 0","import isPlainObject from 'lodash-es/isPlainObject';\nimport warning from './warning';\n\nexport default function verifyPlainObject(value, displayName, methodName) {\n  if (!isPlainObject(value)) {\n    warning(methodName + '() in ' + displayName + ' must return a plain object. Instead received ' + value + '.');\n  }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-redux/es/utils/verifyPlainObject.js\n// module id = 233\n// module chunks = 0","import React from 'react';\n\nimport Aux from '../../hoc/Aux/Aux';\nimport Navigation from '../../components/Navigation/Navigation';\nimport Progress from '../../components/common/Progress';\nimport TopHeader from '../../components/common/TopHeader';\n\nimport classes from './Layout.css';\n\nlet wrapperClass = \"gray-bg \";\n\nconst layout = ( props ) => (\n\n    <Aux>\n        <Progress />\n        <Navigation />\n\n        <div id=\"page-wrapper\" className={classes.mainLayoutStyling}>\n            <TopHeader />\n\n            <main style={{margin: 0, padding: 0}}>\n                {props.children}\n            </main>\n        </div>\n    </Aux>\n\n);\n\nexport default layout;\n\n\n// WEBPACK FOOTER //\n// src/components/Layouts/Layout.js","import React from 'react';\nimport pace from '../../vendor/pace/pace';\n\nclass Progress extends React.Component {\n    render() {\n        return (null)\n    }\n\n    componentDidMount() {\n        pace.start();\n    }\n\n\n}\n\nexport default Progress\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/common/Progress.js","import _Accordion from './Accordion';\nexport { _Accordion as Accordion };\nimport _Alert from './Alert';\nexport { _Alert as Alert };\nimport _Badge from './Badge';\nexport { _Badge as Badge };\nimport _Breadcrumb from './Breadcrumb';\nexport { _Breadcrumb as Breadcrumb };\nimport _BreadcrumbItem from './BreadcrumbItem';\nexport { _BreadcrumbItem as BreadcrumbItem };\nimport _Button from './Button';\nexport { _Button as Button };\nimport _ButtonGroup from './ButtonGroup';\nexport { _ButtonGroup as ButtonGroup };\nimport _ButtonToolbar from './ButtonToolbar';\nexport { _ButtonToolbar as ButtonToolbar };\nimport _Carousel from './Carousel';\nexport { _Carousel as Carousel };\nimport _CarouselItem from './CarouselItem';\nexport { _CarouselItem as CarouselItem };\nimport _Checkbox from './Checkbox';\nexport { _Checkbox as Checkbox };\nimport _Clearfix from './Clearfix';\nexport { _Clearfix as Clearfix };\nimport _CloseButton from './CloseButton';\nexport { _CloseButton as CloseButton };\nimport _ControlLabel from './ControlLabel';\nexport { _ControlLabel as ControlLabel };\nimport _Col from './Col';\nexport { _Col as Col };\nimport _Collapse from './Collapse';\nexport { _Collapse as Collapse };\nimport _Dropdown from './Dropdown';\nexport { _Dropdown as Dropdown };\nimport _DropdownButton from './DropdownButton';\nexport { _DropdownButton as DropdownButton };\nimport _Fade from './Fade';\nexport { _Fade as Fade };\nimport _Form from './Form';\nexport { _Form as Form };\nimport _FormControl from './FormControl';\nexport { _FormControl as FormControl };\nimport _FormGroup from './FormGroup';\nexport { _FormGroup as FormGroup };\nimport _Glyphicon from './Glyphicon';\nexport { _Glyphicon as Glyphicon };\nimport _Grid from './Grid';\nexport { _Grid as Grid };\nimport _HelpBlock from './HelpBlock';\nexport { _HelpBlock as HelpBlock };\nimport _Image from './Image';\nexport { _Image as Image };\nimport _InputGroup from './InputGroup';\nexport { _InputGroup as InputGroup };\nimport _Jumbotron from './Jumbotron';\nexport { _Jumbotron as Jumbotron };\nimport _Label from './Label';\nexport { _Label as Label };\nimport _ListGroup from './ListGroup';\nexport { _ListGroup as ListGroup };\nimport _ListGroupItem from './ListGroupItem';\nexport { _ListGroupItem as ListGroupItem };\nimport _Media from './Media';\nexport { _Media as Media };\nimport _MenuItem from './MenuItem';\nexport { _MenuItem as MenuItem };\nimport _Modal from './Modal';\nexport { _Modal as Modal };\nimport _ModalBody from './ModalBody';\nexport { _ModalBody as ModalBody };\nimport _ModalFooter from './ModalFooter';\nexport { _ModalFooter as ModalFooter };\nimport _ModalHeader from './ModalHeader';\nexport { _ModalHeader as ModalHeader };\nimport _ModalTitle from './ModalTitle';\nexport { _ModalTitle as ModalTitle };\nimport _Nav from './Nav';\nexport { _Nav as Nav };\nimport _Navbar from './Navbar';\nexport { _Navbar as Navbar };\nimport _NavbarBrand from './NavbarBrand';\nexport { _NavbarBrand as NavbarBrand };\nimport _NavDropdown from './NavDropdown';\nexport { _NavDropdown as NavDropdown };\nimport _NavItem from './NavItem';\nexport { _NavItem as NavItem };\nimport _Overlay from './Overlay';\nexport { _Overlay as Overlay };\nimport _OverlayTrigger from './OverlayTrigger';\nexport { _OverlayTrigger as OverlayTrigger };\nimport _PageHeader from './PageHeader';\nexport { _PageHeader as PageHeader };\nimport _PageItem from './PageItem';\nexport { _PageItem as PageItem };\nimport _Pager from './Pager';\nexport { _Pager as Pager };\nimport _Pagination from './Pagination';\nexport { _Pagination as Pagination };\nimport _PaginationButton from './PaginationButton';\nexport { _PaginationButton as PaginationButton };\nimport _Panel from './Panel';\nexport { _Panel as Panel };\nimport _PanelGroup from './PanelGroup';\nexport { _PanelGroup as PanelGroup };\nimport _Popover from './Popover';\nexport { _Popover as Popover };\nimport _ProgressBar from './ProgressBar';\nexport { _ProgressBar as ProgressBar };\nimport _Radio from './Radio';\nexport { _Radio as Radio };\nimport _ResponsiveEmbed from './ResponsiveEmbed';\nexport { _ResponsiveEmbed as ResponsiveEmbed };\nimport _Row from './Row';\nexport { _Row as Row };\nimport _SafeAnchor from './SafeAnchor';\nexport { _SafeAnchor as SafeAnchor };\nimport _SplitButton from './SplitButton';\nexport { _SplitButton as SplitButton };\nimport _Tab from './Tab';\nexport { _Tab as Tab };\nimport _TabContainer from './TabContainer';\nexport { _TabContainer as TabContainer };\nimport _TabContent from './TabContent';\nexport { _TabContent as TabContent };\nimport _Table from './Table';\nexport { _Table as Table };\nimport _TabPane from './TabPane';\nexport { _TabPane as TabPane };\nimport _Tabs from './Tabs';\nexport { _Tabs as Tabs };\nimport _Thumbnail from './Thumbnail';\nexport { _Thumbnail as Thumbnail };\nimport _ToggleButton from './ToggleButton';\nexport { _ToggleButton as ToggleButton };\nimport _ToggleButtonGroup from './ToggleButtonGroup';\nexport { _ToggleButtonGroup as ToggleButtonGroup };\nimport _Tooltip from './Tooltip';\nexport { _Tooltip as Tooltip };\nimport _Well from './Well';\nexport { _Well as Well };\nimport * as _utils from './utils';\nexport { _utils as utils };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/index.js\n// module id = 236\n// module chunks = 0","module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/core-js/object/assign.js\n// module id = 237\n// module chunks = 0","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n  return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_ie8-dom-define.js\n// module id = 238\n// module chunks = 0","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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_dom-create.js\n// module id = 239\n// module chunks = 0","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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-keys-internal.js\n// module id = 240\n// module chunks = 0","// 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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_iobject.js\n// module id = 241\n// module chunks = 0","// 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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-length.js\n// module id = 242\n// module chunks = 0","'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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.string.iterator.js\n// module id = 243\n// module chunks = 0","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar has = require('./_has');\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 && !has(IteratorPrototype, ITERATOR)) 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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_iter-define.js\n// module id = 244\n// module chunks = 0","module.exports = require('./_hide');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_redefine.js\n// module id = 245\n// module chunks = 0","// 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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gopn.js\n// module id = 246\n// module chunks = 0","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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gopd.js\n// module id = 247\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _Object$assign from 'babel-runtime/core-js/object/assign';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React, { cloneElement } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { bsClass, getClassSet, splitBsPropsAndOmit } from './utils/bootstrapUtils';\nimport createChainedFunction from './utils/createChainedFunction';\nimport ValidComponentChildren from './utils/ValidComponentChildren';\n\nvar propTypes = {\n  accordion: PropTypes.bool,\n  activeKey: PropTypes.any,\n  defaultActiveKey: PropTypes.any,\n  onSelect: PropTypes.func,\n  role: PropTypes.string\n};\n\nvar defaultProps = {\n  accordion: false\n};\n\n// TODO: Use uncontrollable.\n\nvar PanelGroup = function (_React$Component) {\n  _inherits(PanelGroup, _React$Component);\n\n  function PanelGroup(props, context) {\n    _classCallCheck(this, PanelGroup);\n\n    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n\n    _this.handleSelect = _this.handleSelect.bind(_this);\n\n    _this.state = {\n      activeKey: props.defaultActiveKey\n    };\n    return _this;\n  }\n\n  PanelGroup.prototype.handleSelect = function handleSelect(key, e) {\n    e.preventDefault();\n\n    if (this.props.onSelect) {\n      this.props.onSelect(key, e);\n    }\n\n    if (this.state.activeKey === key) {\n      key = null;\n    }\n\n    this.setState({ activeKey: key });\n  };\n\n  PanelGroup.prototype.render = function render() {\n    var _this2 = this;\n\n    var _props = this.props,\n        accordion = _props.accordion,\n        propsActiveKey = _props.activeKey,\n        className = _props.className,\n        children = _props.children,\n        props = _objectWithoutProperties(_props, ['accordion', 'activeKey', 'className', 'children']);\n\n    var _splitBsPropsAndOmit = splitBsPropsAndOmit(props, ['defaultActiveKey', 'onSelect']),\n        bsProps = _splitBsPropsAndOmit[0],\n        elementProps = _splitBsPropsAndOmit[1];\n\n    var activeKey = void 0;\n    if (accordion) {\n      activeKey = propsActiveKey != null ? propsActiveKey : this.state.activeKey;\n      elementProps.role = elementProps.role || 'tablist';\n    }\n\n    var classes = getClassSet(bsProps);\n\n    return React.createElement(\n      'div',\n      _extends({}, elementProps, {\n        className: classNames(className, classes)\n      }),\n      ValidComponentChildren.map(children, function (child) {\n        var childProps = {\n          bsStyle: child.props.bsStyle || bsProps.bsStyle\n        };\n\n        if (accordion) {\n          _Object$assign(childProps, {\n            headerRole: 'tab',\n            panelRole: 'tabpanel',\n            collapsible: true,\n            expanded: child.props.eventKey === activeKey,\n            onSelect: createChainedFunction(_this2.handleSelect, child.props.onSelect)\n          });\n        }\n\n        return cloneElement(child, childProps);\n      })\n    );\n  };\n\n  return PanelGroup;\n}(React.Component);\n\nPanelGroup.propTypes = propTypes;\nPanelGroup.defaultProps = defaultProps;\n\nexport default bsClass('panel-group', PanelGroup);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/PanelGroup.js\n// module id = 248\n// module chunks = 0","module.exports = { \"default\": require(\"core-js/library/fn/object/entries\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/core-js/object/entries.js\n// module id = 249\n// module chunks = 0","var getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n  return function (it) {\n    var O = toIObject(it);\n    var keys = getKeys(O);\n    var length = keys.length;\n    var i = 0;\n    var result = [];\n    var key;\n    while (length > i) if (isEnum.call(O, key = keys[i++])) {\n      result.push(isEntries ? [key, O[key]] : O[key]);\n    } return result;\n  };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-to-array.js\n// module id = 250\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport SafeAnchor from './SafeAnchor';\n\nvar propTypes = {\n  /**\n   * If set to true, renders `span` instead of `a`\n   */\n  active: PropTypes.bool,\n  /**\n   * `href` attribute for the inner `a` element\n   */\n  href: PropTypes.string,\n  /**\n   * `title` attribute for the inner `a` element\n   */\n  title: PropTypes.node,\n  /**\n   * `target` attribute for the inner `a` element\n   */\n  target: PropTypes.string\n};\n\nvar defaultProps = {\n  active: false\n};\n\nvar BreadcrumbItem = function (_React$Component) {\n  _inherits(BreadcrumbItem, _React$Component);\n\n  function BreadcrumbItem() {\n    _classCallCheck(this, BreadcrumbItem);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  BreadcrumbItem.prototype.render = function render() {\n    var _props = this.props,\n        active = _props.active,\n        href = _props.href,\n        title = _props.title,\n        target = _props.target,\n        className = _props.className,\n        props = _objectWithoutProperties(_props, ['active', 'href', 'title', 'target', 'className']);\n\n    // Don't try to render these props on non-active <span>.\n\n\n    var linkProps = { href: href, title: title, target: target };\n\n    return React.createElement(\n      'li',\n      { className: classNames(className, { active: active }) },\n      active ? React.createElement('span', props) : React.createElement(SafeAnchor, _extends({}, props, linkProps))\n    );\n  };\n\n  return BreadcrumbItem;\n}(React.Component);\n\nBreadcrumbItem.propTypes = propTypes;\nBreadcrumbItem.defaultProps = defaultProps;\n\nexport default BreadcrumbItem;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/BreadcrumbItem.js\n// module id = 251\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\n\nimport TransitionEvents from './utils/TransitionEvents';\n\n// TODO: This should use a timeout instead of TransitionEvents, or else just\n// not wait until transition end to trigger continuing animations.\n\nvar propTypes = {\n  direction: PropTypes.oneOf(['prev', 'next']),\n  onAnimateOutEnd: PropTypes.func,\n  active: PropTypes.bool,\n  animateIn: PropTypes.bool,\n  animateOut: PropTypes.bool,\n  index: PropTypes.number\n};\n\nvar defaultProps = {\n  active: false,\n  animateIn: false,\n  animateOut: false\n};\n\nvar CarouselItem = function (_React$Component) {\n  _inherits(CarouselItem, _React$Component);\n\n  function CarouselItem(props, context) {\n    _classCallCheck(this, CarouselItem);\n\n    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n\n    _this.handleAnimateOutEnd = _this.handleAnimateOutEnd.bind(_this);\n\n    _this.state = {\n      direction: null\n    };\n\n    _this.isUnmounted = false;\n    return _this;\n  }\n\n  CarouselItem.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n    if (this.props.active !== nextProps.active) {\n      this.setState({ direction: null });\n    }\n  };\n\n  CarouselItem.prototype.componentDidUpdate = function componentDidUpdate(prevProps) {\n    var _this2 = this;\n\n    var active = this.props.active;\n\n    var prevActive = prevProps.active;\n\n    if (!active && prevActive) {\n      TransitionEvents.addEndEventListener(ReactDOM.findDOMNode(this), this.handleAnimateOutEnd);\n    }\n\n    if (active !== prevActive) {\n      setTimeout(function () {\n        return _this2.startAnimation();\n      }, 20);\n    }\n  };\n\n  CarouselItem.prototype.componentWillUnmount = function componentWillUnmount() {\n    this.isUnmounted = true;\n  };\n\n  CarouselItem.prototype.handleAnimateOutEnd = function handleAnimateOutEnd() {\n    if (this.isUnmounted) {\n      return;\n    }\n\n    if (this.props.onAnimateOutEnd) {\n      this.props.onAnimateOutEnd(this.props.index);\n    }\n  };\n\n  CarouselItem.prototype.startAnimation = function startAnimation() {\n    if (this.isUnmounted) {\n      return;\n    }\n\n    this.setState({\n      direction: this.props.direction === 'prev' ? 'right' : 'left'\n    });\n  };\n\n  CarouselItem.prototype.render = function render() {\n    var _props = this.props,\n        direction = _props.direction,\n        active = _props.active,\n        animateIn = _props.animateIn,\n        animateOut = _props.animateOut,\n        className = _props.className,\n        props = _objectWithoutProperties(_props, ['direction', 'active', 'animateIn', 'animateOut', 'className']);\n\n    delete props.onAnimateOutEnd;\n    delete props.index;\n\n    var classes = {\n      item: true,\n      active: active && !animateIn || animateOut\n    };\n    if (direction && active && animateIn) {\n      classes[direction] = true;\n    }\n    if (this.state.direction && (animateIn || animateOut)) {\n      classes[this.state.direction] = true;\n    }\n\n    return React.createElement('div', _extends({}, props, {\n      className: classNames(className, classes)\n    }));\n  };\n\n  return CarouselItem;\n}(React.Component);\n\nCarouselItem.propTypes = propTypes;\nCarouselItem.defaultProps = defaultProps;\n\nexport default CarouselItem;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/CarouselItem.js\n// module id = 252\n// module chunks = 0","export default function capitalize(string) {\n  return \"\" + string.charAt(0).toUpperCase() + string.slice(1);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/utils/capitalize.js\n// module id = 253\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = camelizeStyleName;\n\nvar _camelize = require('./camelize');\n\nvar _camelize2 = _interopRequireDefault(_camelize);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar msPattern = /^-ms-/; /**\n                          * Copyright 2014-2015, Facebook, Inc.\n                          * All rights reserved.\n                          * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/camelizeStyleName.js\n                          */\nfunction camelizeStyleName(string) {\n  return (0, _camelize2.default)(string.replace(msPattern, 'ms-'));\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-helpers/util/camelizeStyle.js\n// module id = 254\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.animationEnd = exports.animationDelay = exports.animationTiming = exports.animationDuration = exports.animationName = exports.transitionEnd = exports.transitionDuration = exports.transitionDelay = exports.transitionTiming = exports.transitionProperty = exports.transform = undefined;\n\nvar _inDOM = require('../util/inDOM');\n\nvar _inDOM2 = _interopRequireDefault(_inDOM);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar transform = 'transform';\nvar prefix = void 0,\n    transitionEnd = void 0,\n    animationEnd = void 0;\nvar transitionProperty = void 0,\n    transitionDuration = void 0,\n    transitionTiming = void 0,\n    transitionDelay = void 0;\nvar animationName = void 0,\n    animationDuration = void 0,\n    animationTiming = void 0,\n    animationDelay = void 0;\n\nif (_inDOM2.default) {\n  var _getTransitionPropert = getTransitionProperties();\n\n  prefix = _getTransitionPropert.prefix;\n  exports.transitionEnd = transitionEnd = _getTransitionPropert.transitionEnd;\n  exports.animationEnd = animationEnd = _getTransitionPropert.animationEnd;\n\n\n  exports.transform = transform = prefix + '-' + transform;\n  exports.transitionProperty = transitionProperty = prefix + '-transition-property';\n  exports.transitionDuration = transitionDuration = prefix + '-transition-duration';\n  exports.transitionDelay = transitionDelay = prefix + '-transition-delay';\n  exports.transitionTiming = transitionTiming = prefix + '-transition-timing-function';\n\n  exports.animationName = animationName = prefix + '-animation-name';\n  exports.animationDuration = animationDuration = prefix + '-animation-duration';\n  exports.animationTiming = animationTiming = prefix + '-animation-delay';\n  exports.animationDelay = animationDelay = prefix + '-animation-timing-function';\n}\n\nexports.transform = transform;\nexports.transitionProperty = transitionProperty;\nexports.transitionTiming = transitionTiming;\nexports.transitionDelay = transitionDelay;\nexports.transitionDuration = transitionDuration;\nexports.transitionEnd = transitionEnd;\nexports.animationName = animationName;\nexports.animationDuration = animationDuration;\nexports.animationTiming = animationTiming;\nexports.animationDelay = animationDelay;\nexports.animationEnd = animationEnd;\nexports.default = {\n  transform: transform,\n  end: transitionEnd,\n  property: transitionProperty,\n  timing: transitionTiming,\n  delay: transitionDelay,\n  duration: transitionDuration\n};\n\n\nfunction getTransitionProperties() {\n  var style = document.createElement('div').style;\n\n  var vendorMap = {\n    O: function O(e) {\n      return 'o' + e.toLowerCase();\n    },\n    Moz: function Moz(e) {\n      return e.toLowerCase();\n    },\n    Webkit: function Webkit(e) {\n      return 'webkit' + e;\n    },\n    ms: function ms(e) {\n      return 'MS' + e;\n    }\n  };\n\n  var vendors = Object.keys(vendorMap);\n\n  var transitionEnd = void 0,\n      animationEnd = void 0;\n  var prefix = '';\n\n  for (var i = 0; i < vendors.length; i++) {\n    var vendor = vendors[i];\n\n    if (vendor + 'TransitionProperty' in style) {\n      prefix = '-' + vendor.toLowerCase();\n      transitionEnd = vendorMap[vendor]('TransitionEnd');\n      animationEnd = vendorMap[vendor]('AnimationEnd');\n      break;\n    }\n  }\n\n  if (!transitionEnd && 'transitionProperty' in style) transitionEnd = 'transitionend';\n\n  if (!animationEnd && 'animationName' in style) animationEnd = 'animationend';\n\n  style = null;\n\n  return { animationEnd: animationEnd, transitionEnd: transitionEnd, prefix: prefix };\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-helpers/transition/properties.js\n// module id = 255\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\nexports.EXITING = exports.ENTERED = exports.ENTERING = exports.EXITED = exports.UNMOUNTED = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _on = require('dom-helpers/events/on');\n\nvar _on2 = _interopRequireDefault(_on);\n\nvar _properties = require('dom-helpers/transition/properties');\n\nvar _properties2 = _interopRequireDefault(_properties);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar transitionEndEvent = _properties2.default.end;\n\nvar UNMOUNTED = exports.UNMOUNTED = 0;\nvar EXITED = exports.EXITED = 1;\nvar ENTERING = exports.ENTERING = 2;\nvar ENTERED = exports.ENTERED = 3;\nvar EXITING = exports.EXITING = 4;\n\n/**\n * The Transition component lets you define and run css transitions with a simple declarative api.\n * It works similar to React's own [CSSTransitionGroup](http://facebook.github.io/react/docs/animation.html#high-level-api-reactcsstransitiongroup)\n * but is specifically optimized for transitioning a single child \"in\" or \"out\".\n *\n * You don't even need to use class based css transitions if you don't want to (but it is easiest).\n * The extensive set of lifecycle callbacks means you have control over\n * the transitioning now at each step of the way.\n */\n\nvar Transition = function (_React$Component) {\n  _inherits(Transition, _React$Component);\n\n  function Transition(props, context) {\n    _classCallCheck(this, Transition);\n\n    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n\n    _this.updateStatus = function () {\n      if (_this.nextStatus !== null) {\n        // nextStatus will always be ENTERING or EXITING.\n        _this.cancelNextCallback();\n        var node = _reactDom2.default.findDOMNode(_this);\n\n        if (_this.nextStatus === ENTERING) {\n          _this.props.onEnter(node);\n\n          _this.safeSetState({ status: ENTERING }, function () {\n            _this.props.onEntering(node);\n\n            _this.onTransitionEnd(node, function () {\n              _this.safeSetState({ status: ENTERED }, function () {\n                _this.props.onEntered(node);\n              });\n            });\n          });\n        } else {\n          _this.props.onExit(node);\n\n          _this.safeSetState({ status: EXITING }, function () {\n            _this.props.onExiting(node);\n\n            _this.onTransitionEnd(node, function () {\n              _this.safeSetState({ status: EXITED }, function () {\n                _this.props.onExited(node);\n              });\n            });\n          });\n        }\n\n        _this.nextStatus = null;\n      } else if (_this.props.unmountOnExit && _this.state.status === EXITED) {\n        _this.setState({ status: UNMOUNTED });\n      }\n    };\n\n    _this.cancelNextCallback = function () {\n      if (_this.nextCallback !== null) {\n        _this.nextCallback.cancel();\n        _this.nextCallback = null;\n      }\n    };\n\n    _this.safeSetState = function (nextState, callback) {\n      // This shouldn't be necessary, but there are weird race conditions with\n      // setState callbacks and unmounting in testing, so always make sure that\n      // we can cancel any pending setState callbacks after we unmount.\n      _this.setState(nextState, _this.setNextCallback(callback));\n    };\n\n    _this.setNextCallback = function (callback) {\n      var active = true;\n\n      _this.nextCallback = function (event) {\n        if (active) {\n          active = false;\n          _this.nextCallback = null;\n\n          callback(event);\n        }\n      };\n\n      _this.nextCallback.cancel = function () {\n        active = false;\n      };\n\n      return _this.nextCallback;\n    };\n\n    _this.onTransitionEnd = function (node, handler) {\n      _this.setNextCallback(handler);\n\n      if (node) {\n        (0, _on2.default)(node, transitionEndEvent, _this.nextCallback);\n        setTimeout(_this.nextCallback, _this.props.timeout);\n      } else {\n        setTimeout(_this.nextCallback, 0);\n      }\n    };\n\n    var initialStatus = void 0;\n    _this.nextStatus = null;\n\n    if (props.in) {\n      if (props.transitionAppear) {\n        initialStatus = EXITED;\n        _this.nextStatus = ENTERING;\n      } else {\n        initialStatus = ENTERED;\n      }\n    } else {\n      if (props.unmountOnExit || props.mountOnEnter) {\n        initialStatus = UNMOUNTED;\n      } else {\n        initialStatus = EXITED;\n      }\n    }\n\n    _this.state = { status: initialStatus };\n\n    _this.nextCallback = null;\n    return _this;\n  }\n\n  Transition.prototype.componentDidMount = function componentDidMount() {\n    this.updateStatus();\n  };\n\n  Transition.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n    var status = this.state.status;\n\n\n    if (nextProps.in) {\n      if (status === UNMOUNTED) {\n        this.setState({ status: EXITED });\n      }\n      if (status !== ENTERING && status !== ENTERED) {\n        this.nextStatus = ENTERING;\n      }\n    } else {\n      if (status === ENTERING || status === ENTERED) {\n        this.nextStatus = EXITING;\n      }\n    }\n  };\n\n  Transition.prototype.componentDidUpdate = function componentDidUpdate() {\n    this.updateStatus();\n  };\n\n  Transition.prototype.componentWillUnmount = function componentWillUnmount() {\n    this.cancelNextCallback();\n  };\n\n  Transition.prototype.render = function render() {\n    var status = this.state.status;\n    if (status === UNMOUNTED) {\n      return null;\n    }\n\n    var _props = this.props,\n        children = _props.children,\n        className = _props.className,\n        childProps = _objectWithoutProperties(_props, ['children', 'className']);\n\n    Object.keys(Transition.propTypes).forEach(function (key) {\n      return delete childProps[key];\n    });\n\n    var transitionClassName = void 0;\n    if (status === EXITED) {\n      transitionClassName = this.props.exitedClassName;\n    } else if (status === ENTERING) {\n      transitionClassName = this.props.enteringClassName;\n    } else if (status === ENTERED) {\n      transitionClassName = this.props.enteredClassName;\n    } else if (status === EXITING) {\n      transitionClassName = this.props.exitingClassName;\n    }\n\n    var child = _react2.default.Children.only(children);\n    return _react2.default.cloneElement(child, _extends({}, childProps, {\n      className: (0, _classnames2.default)(child.props.className, className, transitionClassName)\n    }));\n  };\n\n  return Transition;\n}(_react2.default.Component);\n\nTransition.propTypes = {\n  /**\n   * Show the component; triggers the enter or exit animation\n   */\n  in: _propTypes2.default.bool,\n\n  /**\n   * Wait until the first \"enter\" transition to mount the component (add it to the DOM)\n   */\n  mountOnEnter: _propTypes2.default.bool,\n\n  /**\n   * Unmount the component (remove it from the DOM) when it is not shown\n   */\n  unmountOnExit: _propTypes2.default.bool,\n\n  /**\n   * Run the enter animation when the component mounts, if it is initially\n   * shown\n   */\n  transitionAppear: _propTypes2.default.bool,\n\n  /**\n   * A Timeout for the animation, in milliseconds, to ensure that a node doesn't\n   * transition indefinately if the browser transitionEnd events are\n   * canceled or interrupted.\n   *\n   * By default this is set to a high number (5 seconds) as a failsafe. You should consider\n   * setting this to the duration of your animation (or a bit above it).\n   */\n  timeout: _propTypes2.default.number,\n\n  /**\n   * CSS class or classes applied when the component is exited\n   */\n  exitedClassName: _propTypes2.default.string,\n  /**\n   * CSS class or classes applied while the component is exiting\n   */\n  exitingClassName: _propTypes2.default.string,\n  /**\n   * CSS class or classes applied when the component is entered\n   */\n  enteredClassName: _propTypes2.default.string,\n  /**\n   * CSS class or classes applied while the component is entering\n   */\n  enteringClassName: _propTypes2.default.string,\n\n  /**\n   * Callback fired before the \"entering\" classes are applied\n   */\n  onEnter: _propTypes2.default.func,\n  /**\n   * Callback fired after the \"entering\" classes are applied\n   */\n  onEntering: _propTypes2.default.func,\n  /**\n   * Callback fired after the \"enter\" classes are applied\n   */\n  onEntered: _propTypes2.default.func,\n  /**\n   * Callback fired before the \"exiting\" classes are applied\n   */\n  onExit: _propTypes2.default.func,\n  /**\n   * Callback fired after the \"exiting\" classes are applied\n   */\n  onExiting: _propTypes2.default.func,\n  /**\n   * Callback fired after the \"exited\" classes are applied\n   */\n  onExited: _propTypes2.default.func\n};\n\n// Name the function so it is clearer in the documentation\nfunction noop() {}\n\nTransition.displayName = 'Transition';\n\nTransition.defaultProps = {\n  in: false,\n  unmountOnExit: false,\n  transitionAppear: false,\n\n  timeout: 5000,\n\n  onEnter: noop,\n  onEntering: noop,\n  onEntered: noop,\n\n  onExit: noop,\n  onExiting: noop,\n  onExited: noop\n};\n\nexports.default = Transition;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-overlays/lib/Transition.js\n// module id = 256\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = activeElement;\n\nvar _ownerDocument = require('./ownerDocument');\n\nvar _ownerDocument2 = _interopRequireDefault(_ownerDocument);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction activeElement() {\n  var doc = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : (0, _ownerDocument2.default)();\n\n  try {\n    return doc.activeElement;\n  } catch (e) {/* ie throws if no active element */}\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-helpers/activeElement.js\n// module id = 257\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _contains = require('dom-helpers/query/contains');\n\nvar _contains2 = _interopRequireDefault(_contains);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _addEventListener = require('./utils/addEventListener');\n\nvar _addEventListener2 = _interopRequireDefault(_addEventListener);\n\nvar _ownerDocument = require('./utils/ownerDocument');\n\nvar _ownerDocument2 = _interopRequireDefault(_ownerDocument);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar escapeKeyCode = 27;\n\nfunction isLeftClickEvent(event) {\n  return event.button === 0;\n}\n\nfunction isModifiedEvent(event) {\n  return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\n/**\n * The `<RootCloseWrapper/>` component registers your callback on the document\n * when rendered. Powers the `<Overlay/>` component. This is used achieve modal\n * style behavior where your callback is triggered when the user tries to\n * interact with the rest of the document or hits the `esc` key.\n */\n\nvar RootCloseWrapper = function (_React$Component) {\n  _inherits(RootCloseWrapper, _React$Component);\n\n  function RootCloseWrapper(props, context) {\n    _classCallCheck(this, RootCloseWrapper);\n\n    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n\n    _this.addEventListeners = function () {\n      var event = _this.props.event;\n\n      var doc = (0, _ownerDocument2.default)(_this);\n\n      // Use capture for this listener so it fires before React's listener, to\n      // avoid false positives in the contains() check below if the target DOM\n      // element is removed in the React mouse callback.\n      _this.documentMouseCaptureListener = (0, _addEventListener2.default)(doc, event, _this.handleMouseCapture, true);\n\n      _this.documentMouseListener = (0, _addEventListener2.default)(doc, event, _this.handleMouse);\n\n      _this.documentKeyupListener = (0, _addEventListener2.default)(doc, 'keyup', _this.handleKeyUp);\n    };\n\n    _this.removeEventListeners = function () {\n      if (_this.documentMouseCaptureListener) {\n        _this.documentMouseCaptureListener.remove();\n      }\n\n      if (_this.documentMouseListener) {\n        _this.documentMouseListener.remove();\n      }\n\n      if (_this.documentKeyupListener) {\n        _this.documentKeyupListener.remove();\n      }\n    };\n\n    _this.handleMouseCapture = function (e) {\n      _this.preventMouseRootClose = isModifiedEvent(e) || !isLeftClickEvent(e) || (0, _contains2.default)(_reactDom2.default.findDOMNode(_this), e.target);\n    };\n\n    _this.handleMouse = function (e) {\n      if (!_this.preventMouseRootClose && _this.props.onRootClose) {\n        _this.props.onRootClose(e);\n      }\n    };\n\n    _this.handleKeyUp = function (e) {\n      if (e.keyCode === escapeKeyCode && _this.props.onRootClose) {\n        _this.props.onRootClose(e);\n      }\n    };\n\n    _this.preventMouseRootClose = false;\n    return _this;\n  }\n\n  RootCloseWrapper.prototype.componentDidMount = function componentDidMount() {\n    if (!this.props.disabled) {\n      this.addEventListeners();\n    }\n  };\n\n  RootCloseWrapper.prototype.componentDidUpdate = function componentDidUpdate(prevProps) {\n    if (!this.props.disabled && prevProps.disabled) {\n      this.addEventListeners();\n    } else if (this.props.disabled && !prevProps.disabled) {\n      this.removeEventListeners();\n    }\n  };\n\n  RootCloseWrapper.prototype.componentWillUnmount = function componentWillUnmount() {\n    if (!this.props.disabled) {\n      this.removeEventListeners();\n    }\n  };\n\n  RootCloseWrapper.prototype.render = function render() {\n    return this.props.children;\n  };\n\n  return RootCloseWrapper;\n}(_react2.default.Component);\n\nRootCloseWrapper.displayName = 'RootCloseWrapper';\n\nRootCloseWrapper.propTypes = {\n  /**\n   * Callback fired after click or mousedown. Also triggers when user hits `esc`.\n   */\n  onRootClose: _propTypes2.default.func,\n  /**\n   * Children to render.\n   */\n  children: _propTypes2.default.element,\n  /**\n   * Disable the the RootCloseWrapper, preventing it from triggering `onRootClose`.\n   */\n  disabled: _propTypes2.default.bool,\n  /**\n   * Choose which document mouse event to bind to.\n   */\n  event: _propTypes2.default.oneOf(['click', 'mousedown'])\n};\n\nRootCloseWrapper.defaultProps = {\n  event: 'click'\n};\n\nexports.default = RootCloseWrapper;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-overlays/lib/RootCloseWrapper.js\n// module id = 258\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nexports.default = function (node, event, handler, capture) {\n  (0, _on2.default)(node, event, handler, capture);\n\n  return {\n    remove: function remove() {\n      (0, _off2.default)(node, event, handler, capture);\n    }\n  };\n};\n\nvar _on = require('dom-helpers/events/on');\n\nvar _on2 = _interopRequireDefault(_on);\n\nvar _off = require('dom-helpers/events/off');\n\nvar _off2 = _interopRequireDefault(_off);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-overlays/lib/utils/addEventListener.js\n// module id = 259\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Button from './Button';\nimport SafeAnchor from './SafeAnchor';\n\nimport { bsClass as setBsClass } from './utils/bootstrapUtils';\n\nvar propTypes = {\n  noCaret: PropTypes.bool,\n  open: PropTypes.bool,\n  title: PropTypes.string,\n  useAnchor: PropTypes.bool\n};\n\nvar defaultProps = {\n  open: false,\n  useAnchor: false,\n  bsRole: 'toggle'\n};\n\nvar DropdownToggle = function (_React$Component) {\n  _inherits(DropdownToggle, _React$Component);\n\n  function DropdownToggle() {\n    _classCallCheck(this, DropdownToggle);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  DropdownToggle.prototype.render = function render() {\n    var _props = this.props,\n        noCaret = _props.noCaret,\n        open = _props.open,\n        useAnchor = _props.useAnchor,\n        bsClass = _props.bsClass,\n        className = _props.className,\n        children = _props.children,\n        props = _objectWithoutProperties(_props, ['noCaret', 'open', 'useAnchor', 'bsClass', 'className', 'children']);\n\n    delete props.bsRole;\n\n    var Component = useAnchor ? SafeAnchor : Button;\n    var useCaret = !noCaret;\n\n    // This intentionally forwards bsSize and bsStyle (if set) to the\n    // underlying component, to allow it to render size and style variants.\n\n    // FIXME: Should this really fall back to `title` as children?\n\n    return React.createElement(\n      Component,\n      _extends({}, props, {\n        role: 'button',\n        className: classNames(className, bsClass),\n        'aria-haspopup': true,\n        'aria-expanded': open\n      }),\n      children || props.title,\n      useCaret && ' ',\n      useCaret && React.createElement('span', { className: 'caret' })\n    );\n  };\n\n  return DropdownToggle;\n}(React.Component);\n\nDropdownToggle.propTypes = propTypes;\nDropdownToggle.defaultProps = defaultProps;\n\nexport default setBsClass('dropdown-toggle', DropdownToggle);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/DropdownToggle.js\n// module id = 260\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport elementType from 'prop-types-extra/lib/elementType';\n\nimport { bsClass, prefix, splitBsProps } from './utils/bootstrapUtils';\n\nvar propTypes = {\n  /**\n   * Turn any fixed-width grid layout into a full-width layout by this property.\n   *\n   * Adds `container-fluid` class.\n   */\n  fluid: PropTypes.bool,\n  /**\n   * You can use a custom element for this component\n   */\n  componentClass: elementType\n};\n\nvar defaultProps = {\n  componentClass: 'div',\n  fluid: false\n};\n\nvar Grid = function (_React$Component) {\n  _inherits(Grid, _React$Component);\n\n  function Grid() {\n    _classCallCheck(this, Grid);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  Grid.prototype.render = function render() {\n    var _props = this.props,\n        fluid = _props.fluid,\n        Component = _props.componentClass,\n        className = _props.className,\n        props = _objectWithoutProperties(_props, ['fluid', 'componentClass', 'className']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = prefix(bsProps, fluid && 'fluid');\n\n    return React.createElement(Component, _extends({}, elementProps, {\n      className: classNames(className, classes)\n    }));\n  };\n\n  return Grid;\n}(React.Component);\n\nGrid.propTypes = propTypes;\nGrid.defaultProps = defaultProps;\n\nexport default bsClass('container', Grid);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/Grid.js\n// module id = 261\n// module chunks = 0","import _Object$values from 'babel-runtime/core-js/object/values';\nimport _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React, { cloneElement } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { bsClass, bsStyles, getClassSet, prefix, splitBsProps } from './utils/bootstrapUtils';\nimport { State } from './utils/StyleConfig';\n\nvar propTypes = {\n  active: PropTypes.any,\n  disabled: PropTypes.any,\n  header: PropTypes.node,\n  listItem: PropTypes.bool,\n  onClick: PropTypes.func,\n  href: PropTypes.string,\n  type: PropTypes.string\n};\n\nvar defaultProps = {\n  listItem: false\n};\n\nvar ListGroupItem = function (_React$Component) {\n  _inherits(ListGroupItem, _React$Component);\n\n  function ListGroupItem() {\n    _classCallCheck(this, ListGroupItem);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  ListGroupItem.prototype.renderHeader = function renderHeader(header, headingClassName) {\n    if (React.isValidElement(header)) {\n      return cloneElement(header, {\n        className: classNames(header.props.className, headingClassName)\n      });\n    }\n\n    return React.createElement(\n      'h4',\n      { className: headingClassName },\n      header\n    );\n  };\n\n  ListGroupItem.prototype.render = function render() {\n    var _props = this.props,\n        active = _props.active,\n        disabled = _props.disabled,\n        className = _props.className,\n        header = _props.header,\n        listItem = _props.listItem,\n        children = _props.children,\n        props = _objectWithoutProperties(_props, ['active', 'disabled', 'className', 'header', 'listItem', 'children']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = _extends({}, getClassSet(bsProps), {\n      active: active,\n      disabled: disabled\n    });\n\n    var Component = void 0;\n\n    if (elementProps.href) {\n      Component = 'a';\n    } else if (elementProps.onClick) {\n      Component = 'button';\n      elementProps.type = elementProps.type || 'button';\n    } else if (listItem) {\n      Component = 'li';\n    } else {\n      Component = 'span';\n    }\n\n    elementProps.className = classNames(className, classes);\n\n    // TODO: Deprecate `header` prop.\n    if (header) {\n      return React.createElement(\n        Component,\n        elementProps,\n        this.renderHeader(header, prefix(bsProps, 'heading')),\n        React.createElement(\n          'p',\n          { className: prefix(bsProps, 'text') },\n          children\n        )\n      );\n    }\n\n    return React.createElement(\n      Component,\n      elementProps,\n      children\n    );\n  };\n\n  return ListGroupItem;\n}(React.Component);\n\nListGroupItem.propTypes = propTypes;\nListGroupItem.defaultProps = defaultProps;\n\nexport default bsClass('list-group-item', bsStyles(_Object$values(State), ListGroupItem));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/ListGroupItem.js\n// module id = 262\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nexports.default = function (recalc) {\n  if (!size || recalc) {\n    if (_inDOM2.default) {\n      var scrollDiv = document.createElement('div');\n\n      scrollDiv.style.position = 'absolute';\n      scrollDiv.style.top = '-9999px';\n      scrollDiv.style.width = '50px';\n      scrollDiv.style.height = '50px';\n      scrollDiv.style.overflow = 'scroll';\n\n      document.body.appendChild(scrollDiv);\n      size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n      document.body.removeChild(scrollDiv);\n    }\n  }\n\n  return size;\n};\n\nvar _inDOM = require('./inDOM');\n\nvar _inDOM2 = _interopRequireDefault(_inDOM);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar size = void 0;\n\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-helpers/util/scrollbarSize.js\n// module id = 263\n// module chunks = 0","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = hasClass;\nfunction hasClass(element, className) {\n  if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + element.className + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\nmodule.exports = exports[\"default\"];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-helpers/class/hasClass.js\n// module id = 264\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\nexports.default = isOverflowing;\n\nvar _isWindow = require('dom-helpers/query/isWindow');\n\nvar _isWindow2 = _interopRequireDefault(_isWindow);\n\nvar _ownerDocument = require('dom-helpers/ownerDocument');\n\nvar _ownerDocument2 = _interopRequireDefault(_ownerDocument);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isBody(node) {\n  return node && node.tagName.toLowerCase() === 'body';\n}\n\nfunction bodyIsOverflowing(node) {\n  var doc = (0, _ownerDocument2.default)(node);\n  var win = (0, _isWindow2.default)(doc);\n  var fullWidth = win.innerWidth;\n\n  // Support: ie8, no innerWidth\n  if (!fullWidth) {\n    var documentElementRect = doc.documentElement.getBoundingClientRect();\n    fullWidth = documentElementRect.right - Math.abs(documentElementRect.left);\n  }\n\n  return doc.body.clientWidth < fullWidth;\n}\n\nfunction isOverflowing(container) {\n  var win = (0, _isWindow2.default)(container);\n\n  return win || isBody(container) ? bodyIsOverflowing(container) : container.scrollHeight > container.clientHeight;\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-overlays/lib/utils/isOverflowing.js\n// module id = 265\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _componentOrElement = require('prop-types-extra/lib/componentOrElement');\n\nvar _componentOrElement2 = _interopRequireDefault(_componentOrElement);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _getContainer = require('./utils/getContainer');\n\nvar _getContainer2 = _interopRequireDefault(_getContainer);\n\nvar _ownerDocument = require('./utils/ownerDocument');\n\nvar _ownerDocument2 = _interopRequireDefault(_ownerDocument);\n\nvar _LegacyPortal = require('./LegacyPortal');\n\nvar _LegacyPortal2 = _interopRequireDefault(_LegacyPortal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * The `<Portal/>` component renders its children into a new \"subtree\" outside of current component hierarchy.\n * You can think of it as a declarative `appendChild()`, or jQuery's `$.fn.appendTo()`.\n * The children of `<Portal/>` component will be appended to the `container` specified.\n */\nvar Portal = function (_React$Component) {\n  _inherits(Portal, _React$Component);\n\n  function Portal() {\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, Portal);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.setContainer = function () {\n      var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _this.props;\n\n      _this._portalContainerNode = (0, _getContainer2.default)(props.container, (0, _ownerDocument2.default)(_this).body);\n    }, _this.getMountNode = function () {\n      return _this._portalContainerNode;\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  Portal.prototype.componentDidMount = function componentDidMount() {\n    this.setContainer();\n    this.forceUpdate(this.props.onRendered);\n  };\n\n  Portal.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n    if (nextProps.container !== this.props.container) {\n      this.setContainer(nextProps);\n    }\n  };\n\n  Portal.prototype.componentWillUnmount = function componentWillUnmount() {\n    this._portalContainerNode = null;\n  };\n\n  Portal.prototype.render = function render() {\n    return this.props.children && this._portalContainerNode ? _reactDom2.default.createPortal(this.props.children, this._portalContainerNode) : null;\n  };\n\n  return Portal;\n}(_react2.default.Component);\n\nPortal.displayName = 'Portal';\nPortal.propTypes = {\n  /**\n   * A Node, Component instance, or function that returns either. The `container` will have the Portal children\n   * appended to it.\n   */\n  container: _propTypes2.default.oneOfType([_componentOrElement2.default, _propTypes2.default.func]),\n\n  onRendered: _propTypes2.default.func\n};\nexports.default = _reactDom2.default.createPortal ? Portal : _LegacyPortal2.default;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-overlays/lib/Portal.js\n// module id = 266\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport elementType from 'prop-types-extra/lib/elementType';\n\nimport { bsClass, getClassSet, splitBsProps } from './utils/bootstrapUtils';\n\nvar propTypes = {\n  componentClass: elementType\n};\n\nvar defaultProps = {\n  componentClass: 'div'\n};\n\nvar ModalBody = function (_React$Component) {\n  _inherits(ModalBody, _React$Component);\n\n  function ModalBody() {\n    _classCallCheck(this, ModalBody);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  ModalBody.prototype.render = function render() {\n    var _props = this.props,\n        Component = _props.componentClass,\n        className = _props.className,\n        props = _objectWithoutProperties(_props, ['componentClass', 'className']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = getClassSet(bsProps);\n\n    return React.createElement(Component, _extends({}, elementProps, {\n      className: classNames(className, classes)\n    }));\n  };\n\n  return ModalBody;\n}(React.Component);\n\nModalBody.propTypes = propTypes;\nModalBody.defaultProps = defaultProps;\n\nexport default bsClass('modal-body', ModalBody);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/ModalBody.js\n// module id = 267\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport elementType from 'prop-types-extra/lib/elementType';\n\nimport { bsClass, getClassSet, splitBsProps } from './utils/bootstrapUtils';\n\nvar propTypes = {\n  componentClass: elementType\n};\n\nvar defaultProps = {\n  componentClass: 'div'\n};\n\nvar ModalFooter = function (_React$Component) {\n  _inherits(ModalFooter, _React$Component);\n\n  function ModalFooter() {\n    _classCallCheck(this, ModalFooter);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  ModalFooter.prototype.render = function render() {\n    var _props = this.props,\n        Component = _props.componentClass,\n        className = _props.className,\n        props = _objectWithoutProperties(_props, ['componentClass', 'className']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = getClassSet(bsProps);\n\n    return React.createElement(Component, _extends({}, elementProps, {\n      className: classNames(className, classes)\n    }));\n  };\n\n  return ModalFooter;\n}(React.Component);\n\nModalFooter.propTypes = propTypes;\nModalFooter.defaultProps = defaultProps;\n\nexport default bsClass('modal-footer', ModalFooter);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/ModalFooter.js\n// module id = 268\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { bsClass, getClassSet, splitBsProps } from './utils/bootstrapUtils';\nimport createChainedFunction from './utils/createChainedFunction';\nimport CloseButton from './CloseButton';\n\n// TODO: `aria-label` should be `closeLabel`.\n\nvar propTypes = {\n  /**\n   * Provides an accessible label for the close\n   * button. It is used for Assistive Technology when the label text is not\n   * readable.\n   */\n  closeLabel: PropTypes.string,\n\n  /**\n   * Specify whether the Component should contain a close button\n   */\n  closeButton: PropTypes.bool,\n\n  /**\n   * A Callback fired when the close button is clicked. If used directly inside\n   * a Modal component, the onHide will automatically be propagated up to the\n   * parent Modal `onHide`.\n   */\n  onHide: PropTypes.func\n};\n\nvar defaultProps = {\n  closeLabel: 'Close',\n  closeButton: false\n};\n\nvar contextTypes = {\n  $bs_modal: PropTypes.shape({\n    onHide: PropTypes.func\n  })\n};\n\nvar ModalHeader = function (_React$Component) {\n  _inherits(ModalHeader, _React$Component);\n\n  function ModalHeader() {\n    _classCallCheck(this, ModalHeader);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  ModalHeader.prototype.render = function render() {\n    var _props = this.props,\n        closeLabel = _props.closeLabel,\n        closeButton = _props.closeButton,\n        onHide = _props.onHide,\n        className = _props.className,\n        children = _props.children,\n        props = _objectWithoutProperties(_props, ['closeLabel', 'closeButton', 'onHide', 'className', 'children']);\n\n    var modal = this.context.$bs_modal;\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = getClassSet(bsProps);\n\n    return React.createElement(\n      'div',\n      _extends({}, elementProps, {\n        className: classNames(className, classes)\n      }),\n      closeButton && React.createElement(CloseButton, {\n        label: closeLabel,\n        onClick: createChainedFunction(modal && modal.onHide, onHide)\n      }),\n      children\n    );\n  };\n\n  return ModalHeader;\n}(React.Component);\n\nModalHeader.propTypes = propTypes;\nModalHeader.defaultProps = defaultProps;\nModalHeader.contextTypes = contextTypes;\n\nexport default bsClass('modal-header', ModalHeader);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/ModalHeader.js\n// module id = 269\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport elementType from 'prop-types-extra/lib/elementType';\n\nimport { bsClass, getClassSet, splitBsProps } from './utils/bootstrapUtils';\n\nvar propTypes = {\n  componentClass: elementType\n};\n\nvar defaultProps = {\n  componentClass: 'h4'\n};\n\nvar ModalTitle = function (_React$Component) {\n  _inherits(ModalTitle, _React$Component);\n\n  function ModalTitle() {\n    _classCallCheck(this, ModalTitle);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  ModalTitle.prototype.render = function render() {\n    var _props = this.props,\n        Component = _props.componentClass,\n        className = _props.className,\n        props = _objectWithoutProperties(_props, ['componentClass', 'className']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = getClassSet(bsProps);\n\n    return React.createElement(Component, _extends({}, elementProps, {\n      className: classNames(className, classes)\n    }));\n  };\n\n  return ModalTitle;\n}(React.Component);\n\nModalTitle.propTypes = propTypes;\nModalTitle.defaultProps = defaultProps;\n\nexport default bsClass('modal-title', ModalTitle);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/ModalTitle.js\n// module id = 270\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport keycode from 'keycode';\nimport React, { cloneElement } from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport all from 'prop-types-extra/lib/all';\nimport warning from 'warning';\n\nimport { bsClass, bsStyles, getClassSet, prefix, splitBsProps } from './utils/bootstrapUtils';\nimport createChainedFunction from './utils/createChainedFunction';\nimport ValidComponentChildren from './utils/ValidComponentChildren';\n\n// TODO: Should we expose `<NavItem>` as `<Nav.Item>`?\n\n// TODO: This `bsStyle` is very unlike the others. Should we rename it?\n\n// TODO: `pullRight` and `pullLeft` don't render right outside of `navbar`.\n// Consider renaming or replacing them.\n\nvar propTypes = {\n  /**\n   * Marks the NavItem with a matching `eventKey` as active. Has a\n   * higher precedence over `activeHref`.\n   */\n  activeKey: PropTypes.any,\n\n  /**\n   * Marks the child NavItem with a matching `href` prop as active.\n   */\n  activeHref: PropTypes.string,\n\n  /**\n   * NavItems are be positioned vertically.\n   */\n  stacked: PropTypes.bool,\n\n  justified: all(PropTypes.bool, function (_ref) {\n    var justified = _ref.justified,\n        navbar = _ref.navbar;\n    return justified && navbar ? Error('justified navbar `Nav`s are not supported') : null;\n  }),\n\n  /**\n   * A callback fired when a NavItem is selected.\n   *\n   * ```js\n   * function (\n   *  Any eventKey,\n   *  SyntheticEvent event?\n   * )\n   * ```\n   */\n  onSelect: PropTypes.func,\n\n  /**\n   * ARIA role for the Nav, in the context of a TabContainer, the default will\n   * be set to \"tablist\", but can be overridden by the Nav when set explicitly.\n   *\n   * When the role is set to \"tablist\" NavItem focus is managed according to\n   * the ARIA authoring practices for tabs:\n   * https://www.w3.org/TR/2013/WD-wai-aria-practices-20130307/#tabpanel\n   */\n  role: PropTypes.string,\n\n  /**\n   * Apply styling an alignment for use in a Navbar. This prop will be set\n   * automatically when the Nav is used inside a Navbar.\n   */\n  navbar: PropTypes.bool,\n\n  /**\n   * Float the Nav to the right. When `navbar` is `true` the appropriate\n   * contextual classes are added as well.\n   */\n  pullRight: PropTypes.bool,\n\n  /**\n   * Float the Nav to the left. When `navbar` is `true` the appropriate\n   * contextual classes are added as well.\n   */\n  pullLeft: PropTypes.bool\n};\n\nvar defaultProps = {\n  justified: false,\n  pullRight: false,\n  pullLeft: false,\n  stacked: false\n};\n\nvar contextTypes = {\n  $bs_navbar: PropTypes.shape({\n    bsClass: PropTypes.string,\n    onSelect: PropTypes.func\n  }),\n\n  $bs_tabContainer: PropTypes.shape({\n    activeKey: PropTypes.any,\n    onSelect: PropTypes.func.isRequired,\n    getTabId: PropTypes.func.isRequired,\n    getPaneId: PropTypes.func.isRequired\n  })\n};\n\nvar Nav = function (_React$Component) {\n  _inherits(Nav, _React$Component);\n\n  function Nav() {\n    _classCallCheck(this, Nav);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  Nav.prototype.componentDidUpdate = function componentDidUpdate() {\n    var _this2 = this;\n\n    if (!this._needsRefocus) {\n      return;\n    }\n\n    this._needsRefocus = false;\n\n    var children = this.props.children;\n\n    var _getActiveProps = this.getActiveProps(),\n        activeKey = _getActiveProps.activeKey,\n        activeHref = _getActiveProps.activeHref;\n\n    var activeChild = ValidComponentChildren.find(children, function (child) {\n      return _this2.isActive(child, activeKey, activeHref);\n    });\n\n    var childrenArray = ValidComponentChildren.toArray(children);\n    var activeChildIndex = childrenArray.indexOf(activeChild);\n\n    var childNodes = ReactDOM.findDOMNode(this).children;\n    var activeNode = childNodes && childNodes[activeChildIndex];\n\n    if (!activeNode || !activeNode.firstChild) {\n      return;\n    }\n\n    activeNode.firstChild.focus();\n  };\n\n  Nav.prototype.getActiveProps = function getActiveProps() {\n    var tabContainer = this.context.$bs_tabContainer;\n\n    if (tabContainer) {\n      process.env.NODE_ENV !== 'production' ? warning(this.props.activeKey == null && !this.props.activeHref, 'Specifying a `<Nav>` `activeKey` or `activeHref` in the context of ' + 'a `<TabContainer>` is not supported. Instead use `<TabContainer ' + ('activeKey={' + this.props.activeKey + '} />`.')) : void 0;\n\n      return tabContainer;\n    }\n\n    return this.props;\n  };\n\n  Nav.prototype.getNextActiveChild = function getNextActiveChild(offset) {\n    var _this3 = this;\n\n    var children = this.props.children;\n\n    var validChildren = children.filter(function (child) {\n      return child.props.eventKey != null && !child.props.disabled;\n    });\n\n    var _getActiveProps2 = this.getActiveProps(),\n        activeKey = _getActiveProps2.activeKey,\n        activeHref = _getActiveProps2.activeHref;\n\n    var activeChild = ValidComponentChildren.find(children, function (child) {\n      return _this3.isActive(child, activeKey, activeHref);\n    });\n\n    // This assumes the active child is not disabled.\n    var activeChildIndex = validChildren.indexOf(activeChild);\n    if (activeChildIndex === -1) {\n      // Something has gone wrong. Select the first valid child we can find.\n      return validChildren[0];\n    }\n\n    var nextIndex = activeChildIndex + offset;\n    var numValidChildren = validChildren.length;\n\n    if (nextIndex >= numValidChildren) {\n      nextIndex = 0;\n    } else if (nextIndex < 0) {\n      nextIndex = numValidChildren - 1;\n    }\n\n    return validChildren[nextIndex];\n  };\n\n  Nav.prototype.getTabProps = function getTabProps(child, tabContainer, navRole, active, onSelect) {\n    var _this4 = this;\n\n    if (!tabContainer && navRole !== 'tablist') {\n      // No tab props here.\n      return null;\n    }\n\n    var _child$props = child.props,\n        id = _child$props.id,\n        controls = _child$props['aria-controls'],\n        eventKey = _child$props.eventKey,\n        role = _child$props.role,\n        onKeyDown = _child$props.onKeyDown,\n        tabIndex = _child$props.tabIndex;\n\n\n    if (tabContainer) {\n      process.env.NODE_ENV !== 'production' ? warning(!id && !controls, 'In the context of a `<TabContainer>`, `<NavItem>`s are given ' + 'generated `id` and `aria-controls` attributes for the sake of ' + 'proper component accessibility. Any provided ones will be ignored. ' + 'To control these attributes directly, provide a `generateChildId` ' + 'prop to the parent `<TabContainer>`.') : void 0;\n\n      id = tabContainer.getTabId(eventKey);\n      controls = tabContainer.getPaneId(eventKey);\n    }\n\n    if (navRole === 'tablist') {\n      role = role || 'tab';\n      onKeyDown = createChainedFunction(function (event) {\n        return _this4.handleTabKeyDown(onSelect, event);\n      }, onKeyDown);\n      tabIndex = active ? tabIndex : -1;\n    }\n\n    return {\n      id: id,\n      role: role,\n      onKeyDown: onKeyDown,\n      'aria-controls': controls,\n      tabIndex: tabIndex\n    };\n  };\n\n  Nav.prototype.handleTabKeyDown = function handleTabKeyDown(onSelect, event) {\n    var nextActiveChild = void 0;\n\n    switch (event.keyCode) {\n      case keycode.codes.left:\n      case keycode.codes.up:\n        nextActiveChild = this.getNextActiveChild(-1);\n        break;\n      case keycode.codes.right:\n      case keycode.codes.down:\n        nextActiveChild = this.getNextActiveChild(1);\n        break;\n      default:\n        // It was a different key; don't handle this keypress.\n        return;\n    }\n\n    event.preventDefault();\n\n    if (onSelect && nextActiveChild && nextActiveChild.props.eventKey != null) {\n      onSelect(nextActiveChild.props.eventKey);\n    }\n\n    this._needsRefocus = true;\n  };\n\n  Nav.prototype.isActive = function isActive(_ref2, activeKey, activeHref) {\n    var props = _ref2.props;\n\n    if (props.active || activeKey != null && props.eventKey === activeKey || activeHref && props.href === activeHref) {\n      return true;\n    }\n\n    return props.active;\n  };\n\n  Nav.prototype.render = function render() {\n    var _extends2,\n        _this5 = this;\n\n    var _props = this.props,\n        stacked = _props.stacked,\n        justified = _props.justified,\n        onSelect = _props.onSelect,\n        propsRole = _props.role,\n        propsNavbar = _props.navbar,\n        pullRight = _props.pullRight,\n        pullLeft = _props.pullLeft,\n        className = _props.className,\n        children = _props.children,\n        props = _objectWithoutProperties(_props, ['stacked', 'justified', 'onSelect', 'role', 'navbar', 'pullRight', 'pullLeft', 'className', 'children']);\n\n    var tabContainer = this.context.$bs_tabContainer;\n    var role = propsRole || (tabContainer ? 'tablist' : null);\n\n    var _getActiveProps3 = this.getActiveProps(),\n        activeKey = _getActiveProps3.activeKey,\n        activeHref = _getActiveProps3.activeHref;\n\n    delete props.activeKey; // Accessed via this.getActiveProps().\n    delete props.activeHref; // Accessed via this.getActiveProps().\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = _extends({}, getClassSet(bsProps), (_extends2 = {}, _extends2[prefix(bsProps, 'stacked')] = stacked, _extends2[prefix(bsProps, 'justified')] = justified, _extends2));\n\n    var navbar = propsNavbar != null ? propsNavbar : this.context.$bs_navbar;\n    var pullLeftClassName = void 0;\n    var pullRightClassName = void 0;\n\n    if (navbar) {\n      var navbarProps = this.context.$bs_navbar || { bsClass: 'navbar' };\n\n      classes[prefix(navbarProps, 'nav')] = true;\n\n      pullRightClassName = prefix(navbarProps, 'right');\n      pullLeftClassName = prefix(navbarProps, 'left');\n    } else {\n      pullRightClassName = 'pull-right';\n      pullLeftClassName = 'pull-left';\n    }\n\n    classes[pullRightClassName] = pullRight;\n    classes[pullLeftClassName] = pullLeft;\n\n    return React.createElement(\n      'ul',\n      _extends({}, elementProps, {\n        role: role,\n        className: classNames(className, classes)\n      }),\n      ValidComponentChildren.map(children, function (child) {\n        var active = _this5.isActive(child, activeKey, activeHref);\n        var childOnSelect = createChainedFunction(child.props.onSelect, onSelect, navbar && navbar.onSelect, tabContainer && tabContainer.onSelect);\n\n        return cloneElement(child, _extends({}, _this5.getTabProps(child, tabContainer, role, active, childOnSelect), {\n          active: active,\n          activeKey: activeKey,\n          activeHref: activeHref,\n          onSelect: childOnSelect\n        }));\n      })\n    );\n  };\n\n  return Nav;\n}(React.Component);\n\nNav.propTypes = propTypes;\nNav.defaultProps = defaultProps;\nNav.contextTypes = contextTypes;\n\nexport default bsClass('nav', bsStyles(['tabs', 'pills'], Nav));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/Nav.js\n// module id = 271\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { prefix } from './utils/bootstrapUtils';\n\nvar contextTypes = {\n  $bs_navbar: PropTypes.shape({\n    bsClass: PropTypes.string\n  })\n};\n\nvar NavbarBrand = function (_React$Component) {\n  _inherits(NavbarBrand, _React$Component);\n\n  function NavbarBrand() {\n    _classCallCheck(this, NavbarBrand);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  NavbarBrand.prototype.render = function render() {\n    var _props = this.props,\n        className = _props.className,\n        children = _props.children,\n        props = _objectWithoutProperties(_props, ['className', 'children']);\n\n    var navbarProps = this.context.$bs_navbar || { bsClass: 'navbar' };\n\n    var bsClassName = prefix(navbarProps, 'brand');\n\n    if (React.isValidElement(children)) {\n      return React.cloneElement(children, {\n        className: classNames(children.props.className, className, bsClassName)\n      });\n    }\n\n    return React.createElement(\n      'span',\n      _extends({}, props, { className: classNames(className, bsClassName) }),\n      children\n    );\n  };\n\n  return NavbarBrand;\n}(React.Component);\n\nNavbarBrand.contextTypes = contextTypes;\n\nexport default NavbarBrand;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/NavbarBrand.js\n// module id = 272\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport SafeAnchor from './SafeAnchor';\nimport createChainedFunction from './utils/createChainedFunction';\n\nvar propTypes = {\n  active: PropTypes.bool,\n  disabled: PropTypes.bool,\n  role: PropTypes.string,\n  href: PropTypes.string,\n  onClick: PropTypes.func,\n  onSelect: PropTypes.func,\n  eventKey: PropTypes.any\n};\n\nvar defaultProps = {\n  active: false,\n  disabled: false\n};\n\nvar NavItem = function (_React$Component) {\n  _inherits(NavItem, _React$Component);\n\n  function NavItem(props, context) {\n    _classCallCheck(this, NavItem);\n\n    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n\n    _this.handleClick = _this.handleClick.bind(_this);\n    return _this;\n  }\n\n  NavItem.prototype.handleClick = function handleClick(e) {\n    if (this.props.onSelect) {\n      e.preventDefault();\n\n      if (!this.props.disabled) {\n        this.props.onSelect(this.props.eventKey, e);\n      }\n    }\n  };\n\n  NavItem.prototype.render = function render() {\n    var _props = this.props,\n        active = _props.active,\n        disabled = _props.disabled,\n        onClick = _props.onClick,\n        className = _props.className,\n        style = _props.style,\n        props = _objectWithoutProperties(_props, ['active', 'disabled', 'onClick', 'className', 'style']);\n\n    delete props.onSelect;\n    delete props.eventKey;\n\n    // These are injected down by `<Nav>` for building `<SubNav>`s.\n    delete props.activeKey;\n    delete props.activeHref;\n\n    if (!props.role) {\n      if (props.href === '#') {\n        props.role = 'button';\n      }\n    } else if (props.role === 'tab') {\n      props['aria-selected'] = active;\n    }\n\n    return React.createElement(\n      'li',\n      {\n        role: 'presentation',\n        className: classNames(className, { active: active, disabled: disabled }),\n        style: style\n      },\n      React.createElement(SafeAnchor, _extends({}, props, {\n        disabled: disabled,\n        onClick: createChainedFunction(onClick, this.handleClick)\n      }))\n    );\n  };\n\n  return NavItem;\n}(React.Component);\n\nNavItem.propTypes = propTypes;\nNavItem.defaultProps = defaultProps;\n\nexport default NavItem;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/NavItem.js\n// module id = 273\n// module chunks = 0","import _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport _extends from 'babel-runtime/helpers/extends';\nimport classNames from 'classnames';\nimport React, { cloneElement } from 'react';\nimport PropTypes from 'prop-types';\nimport BaseOverlay from 'react-overlays/lib/Overlay';\nimport elementType from 'prop-types-extra/lib/elementType';\n\nimport Fade from './Fade';\n\nvar propTypes = _extends({}, BaseOverlay.propTypes, {\n\n  /**\n   * Set the visibility of the Overlay\n   */\n  show: PropTypes.bool,\n  /**\n   * Specify whether the overlay should trigger onHide when the user clicks outside the overlay\n   */\n  rootClose: PropTypes.bool,\n  /**\n   * A callback invoked by the overlay when it wishes to be hidden. Required if\n   * `rootClose` is specified.\n   */\n  onHide: PropTypes.func,\n\n  /**\n   * Use animation\n   */\n  animation: PropTypes.oneOfType([PropTypes.bool, elementType]),\n\n  /**\n   * Callback fired before the Overlay transitions in\n   */\n  onEnter: PropTypes.func,\n\n  /**\n   * Callback fired as the Overlay begins to transition in\n   */\n  onEntering: PropTypes.func,\n\n  /**\n   * Callback fired after the Overlay finishes transitioning in\n   */\n  onEntered: PropTypes.func,\n\n  /**\n   * Callback fired right before the Overlay transitions out\n   */\n  onExit: PropTypes.func,\n\n  /**\n   * Callback fired as the Overlay begins to transition out\n   */\n  onExiting: PropTypes.func,\n\n  /**\n   * Callback fired after the Overlay finishes transitioning out\n   */\n  onExited: PropTypes.func,\n\n  /**\n   * Sets the direction of the Overlay.\n   */\n  placement: PropTypes.oneOf(['top', 'right', 'bottom', 'left'])\n});\n\nvar defaultProps = {\n  animation: Fade,\n  rootClose: false,\n  show: false,\n  placement: 'right'\n};\n\nvar Overlay = function (_React$Component) {\n  _inherits(Overlay, _React$Component);\n\n  function Overlay() {\n    _classCallCheck(this, Overlay);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  Overlay.prototype.render = function render() {\n    var _props = this.props,\n        animation = _props.animation,\n        children = _props.children,\n        props = _objectWithoutProperties(_props, ['animation', 'children']);\n\n    var transition = animation === true ? Fade : animation || null;\n\n    var child = void 0;\n\n    if (!transition) {\n      child = cloneElement(children, {\n        className: classNames(children.props.className, 'in')\n      });\n    } else {\n      child = children;\n    }\n\n    return React.createElement(\n      BaseOverlay,\n      _extends({}, props, {\n        transition: transition\n      }),\n      child\n    );\n  };\n\n  return Overlay;\n}(React.Component);\n\nOverlay.propTypes = propTypes;\nOverlay.defaultProps = defaultProps;\n\nexport default Overlay;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/Overlay.js\n// module id = 274\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = offset;\n\nvar _contains = require('./contains');\n\nvar _contains2 = _interopRequireDefault(_contains);\n\nvar _isWindow = require('./isWindow');\n\nvar _isWindow2 = _interopRequireDefault(_isWindow);\n\nvar _ownerDocument = require('../ownerDocument');\n\nvar _ownerDocument2 = _interopRequireDefault(_ownerDocument);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction offset(node) {\n  var doc = (0, _ownerDocument2.default)(node),\n      win = (0, _isWindow2.default)(doc),\n      docElem = doc && doc.documentElement,\n      box = { top: 0, left: 0, height: 0, width: 0 };\n\n  if (!doc) return;\n\n  // Make sure it's not a disconnected DOM node\n  if (!(0, _contains2.default)(docElem, node)) return box;\n\n  if (node.getBoundingClientRect !== undefined) box = node.getBoundingClientRect();\n\n  // IE8 getBoundingClientRect doesn't support width & height\n  box = {\n    top: box.top + (win.pageYOffset || docElem.scrollTop) - (docElem.clientTop || 0),\n    left: box.left + (win.pageXOffset || docElem.scrollLeft) - (docElem.clientLeft || 0),\n    width: (box.width == null ? node.offsetWidth : box.width) || 0,\n    height: (box.height == null ? node.offsetHeight : box.height) || 0\n  };\n\n  return box;\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-helpers/query/offset.js\n// module id = 275\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = scrollTop;\n\nvar _isWindow = require('./isWindow');\n\nvar _isWindow2 = _interopRequireDefault(_isWindow);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction scrollTop(node, val) {\n  var win = (0, _isWindow2.default)(node);\n\n  if (val === undefined) return win ? 'pageYOffset' in win ? win.pageYOffset : win.document.documentElement.scrollTop : node.scrollTop;\n\n  if (win) win.scrollTo('pageXOffset' in win ? win.pageXOffset : win.document.documentElement.scrollLeft, val);else node.scrollTop = val;\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-helpers/query/scrollTop.js\n// module id = 276\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport SafeAnchor from './SafeAnchor';\nimport createChainedFunction from './utils/createChainedFunction';\n\nvar propTypes = {\n  disabled: PropTypes.bool,\n  previous: PropTypes.bool,\n  next: PropTypes.bool,\n  onClick: PropTypes.func,\n  onSelect: PropTypes.func,\n  eventKey: PropTypes.any\n};\n\nvar defaultProps = {\n  disabled: false,\n  previous: false,\n  next: false\n};\n\nvar PagerItem = function (_React$Component) {\n  _inherits(PagerItem, _React$Component);\n\n  function PagerItem(props, context) {\n    _classCallCheck(this, PagerItem);\n\n    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n\n    _this.handleSelect = _this.handleSelect.bind(_this);\n    return _this;\n  }\n\n  PagerItem.prototype.handleSelect = function handleSelect(e) {\n    var _props = this.props,\n        disabled = _props.disabled,\n        onSelect = _props.onSelect,\n        eventKey = _props.eventKey;\n\n\n    if (onSelect || disabled) {\n      e.preventDefault();\n    }\n\n    if (disabled) {\n      return;\n    }\n\n    if (onSelect) {\n      onSelect(eventKey, e);\n    }\n  };\n\n  PagerItem.prototype.render = function render() {\n    var _props2 = this.props,\n        disabled = _props2.disabled,\n        previous = _props2.previous,\n        next = _props2.next,\n        onClick = _props2.onClick,\n        className = _props2.className,\n        style = _props2.style,\n        props = _objectWithoutProperties(_props2, ['disabled', 'previous', 'next', 'onClick', 'className', 'style']);\n\n    delete props.onSelect;\n    delete props.eventKey;\n\n    return React.createElement(\n      'li',\n      {\n        className: classNames(className, { disabled: disabled, previous: previous, next: next }),\n        style: style\n      },\n      React.createElement(SafeAnchor, _extends({}, props, {\n        disabled: disabled,\n        onClick: createChainedFunction(onClick, this.handleSelect)\n      }))\n    );\n  };\n\n  return PagerItem;\n}(React.Component);\n\nPagerItem.propTypes = propTypes;\nPagerItem.defaultProps = defaultProps;\n\nexport default PagerItem;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/PagerItem.js\n// module id = 277\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport elementType from 'prop-types-extra/lib/elementType';\n\nimport SafeAnchor from './SafeAnchor';\nimport createChainedFunction from './utils/createChainedFunction';\n\n// TODO: This should be `<Pagination.Item>`.\n\n// TODO: This should use `componentClass` like other components.\n\nvar propTypes = {\n  componentClass: elementType,\n  className: PropTypes.string,\n  eventKey: PropTypes.any,\n  onSelect: PropTypes.func,\n  disabled: PropTypes.bool,\n  active: PropTypes.bool,\n  onClick: PropTypes.func\n};\n\nvar defaultProps = {\n  componentClass: SafeAnchor,\n  active: false,\n  disabled: false\n};\n\nvar PaginationButton = function (_React$Component) {\n  _inherits(PaginationButton, _React$Component);\n\n  function PaginationButton(props, context) {\n    _classCallCheck(this, PaginationButton);\n\n    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n\n    _this.handleClick = _this.handleClick.bind(_this);\n    return _this;\n  }\n\n  PaginationButton.prototype.handleClick = function handleClick(event) {\n    var _props = this.props,\n        disabled = _props.disabled,\n        onSelect = _props.onSelect,\n        eventKey = _props.eventKey;\n\n\n    if (disabled) {\n      return;\n    }\n\n    if (onSelect) {\n      onSelect(eventKey, event);\n    }\n  };\n\n  PaginationButton.prototype.render = function render() {\n    var _props2 = this.props,\n        Component = _props2.componentClass,\n        active = _props2.active,\n        disabled = _props2.disabled,\n        onClick = _props2.onClick,\n        className = _props2.className,\n        style = _props2.style,\n        props = _objectWithoutProperties(_props2, ['componentClass', 'active', 'disabled', 'onClick', 'className', 'style']);\n\n    if (Component === SafeAnchor) {\n      // Assume that custom components want `eventKey`.\n      delete props.eventKey;\n    }\n\n    delete props.onSelect;\n\n    return React.createElement(\n      'li',\n      {\n        className: classNames(className, { active: active, disabled: disabled }),\n        style: style\n      },\n      React.createElement(Component, _extends({}, props, {\n        disabled: disabled,\n        onClick: createChainedFunction(onClick, this.handleClick)\n      }))\n    );\n  };\n\n  return PaginationButton;\n}(React.Component);\n\nPaginationButton.propTypes = propTypes;\nPaginationButton.defaultProps = defaultProps;\n\nexport default PaginationButton;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/PaginationButton.js\n// module id = 278\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport elementType from 'prop-types-extra/lib/elementType';\nimport warning from 'warning';\n\nimport { bsClass, getClassSet, prefix, splitBsPropsAndOmit } from './utils/bootstrapUtils';\nimport createChainedFunction from './utils/createChainedFunction';\n\nimport Fade from './Fade';\n\nvar propTypes = {\n  /**\n   * Uniquely identify the `<TabPane>` among its siblings.\n   */\n  eventKey: PropTypes.any,\n\n  /**\n   * Use animation when showing or hiding `<TabPane>`s. Use `false` to disable,\n   * `true` to enable the default `<Fade>` animation or any `<Transition>`\n   * component.\n   */\n  animation: PropTypes.oneOfType([PropTypes.bool, elementType]),\n\n  /** @private * */\n  id: PropTypes.string,\n\n  /** @private * */\n  'aria-labelledby': PropTypes.string,\n\n  /**\n   * If not explicitly specified and rendered in the context of a\n   * `<TabContent>`, the `bsClass` of the `<TabContent>` suffixed by `-pane`.\n   * If otherwise not explicitly specified, `tab-pane`.\n   */\n  bsClass: PropTypes.string,\n\n  /**\n   * Transition onEnter callback when animation is not `false`\n   */\n  onEnter: PropTypes.func,\n\n  /**\n   * Transition onEntering callback when animation is not `false`\n   */\n  onEntering: PropTypes.func,\n\n  /**\n   * Transition onEntered callback when animation is not `false`\n   */\n  onEntered: PropTypes.func,\n\n  /**\n   * Transition onExit callback when animation is not `false`\n   */\n  onExit: PropTypes.func,\n\n  /**\n   * Transition onExiting callback when animation is not `false`\n   */\n  onExiting: PropTypes.func,\n\n  /**\n   * Transition onExited callback when animation is not `false`\n   */\n  onExited: PropTypes.func,\n\n  /**\n   * Wait until the first \"enter\" transition to mount the tab (add it to the DOM)\n   */\n  mountOnEnter: PropTypes.bool,\n\n  /**\n   * Unmount the tab (remove it from the DOM) when it is no longer visible\n   */\n  unmountOnExit: PropTypes.bool\n};\n\nvar contextTypes = {\n  $bs_tabContainer: PropTypes.shape({\n    getTabId: PropTypes.func,\n    getPaneId: PropTypes.func\n  }),\n  $bs_tabContent: PropTypes.shape({\n    bsClass: PropTypes.string,\n    animation: PropTypes.oneOfType([PropTypes.bool, elementType]),\n    activeKey: PropTypes.any,\n    mountOnEnter: PropTypes.bool,\n    unmountOnExit: PropTypes.bool,\n    onPaneEnter: PropTypes.func.isRequired,\n    onPaneExited: PropTypes.func.isRequired,\n    exiting: PropTypes.bool.isRequired\n  })\n};\n\n/**\n * We override the `<TabContainer>` context so `<Nav>`s in `<TabPane>`s don't\n * conflict with the top level one.\n */\nvar childContextTypes = {\n  $bs_tabContainer: PropTypes.oneOf([null])\n};\n\nvar TabPane = function (_React$Component) {\n  _inherits(TabPane, _React$Component);\n\n  function TabPane(props, context) {\n    _classCallCheck(this, TabPane);\n\n    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n\n    _this.handleEnter = _this.handleEnter.bind(_this);\n    _this.handleExited = _this.handleExited.bind(_this);\n\n    _this.in = false;\n    return _this;\n  }\n\n  TabPane.prototype.getChildContext = function getChildContext() {\n    return {\n      $bs_tabContainer: null\n    };\n  };\n\n  TabPane.prototype.componentDidMount = function componentDidMount() {\n    if (this.shouldBeIn()) {\n      // In lieu of the action event firing.\n      this.handleEnter();\n    }\n  };\n\n  TabPane.prototype.componentDidUpdate = function componentDidUpdate() {\n    if (this.in) {\n      if (!this.shouldBeIn()) {\n        // We shouldn't be active any more. Notify the parent.\n        this.handleExited();\n      }\n    } else if (this.shouldBeIn()) {\n      // We are the active child. Notify the parent.\n      this.handleEnter();\n    }\n  };\n\n  TabPane.prototype.componentWillUnmount = function componentWillUnmount() {\n    if (this.in) {\n      // In lieu of the action event firing.\n      this.handleExited();\n    }\n  };\n\n  TabPane.prototype.getAnimation = function getAnimation() {\n    if (this.props.animation != null) {\n      return this.props.animation;\n    }\n\n    var tabContent = this.context.$bs_tabContent;\n    return tabContent && tabContent.animation;\n  };\n\n  TabPane.prototype.handleEnter = function handleEnter() {\n    var tabContent = this.context.$bs_tabContent;\n    if (!tabContent) {\n      return;\n    }\n\n    this.in = tabContent.onPaneEnter(this, this.props.eventKey);\n  };\n\n  TabPane.prototype.handleExited = function handleExited() {\n    var tabContent = this.context.$bs_tabContent;\n    if (!tabContent) {\n      return;\n    }\n\n    tabContent.onPaneExited(this);\n    this.in = false;\n  };\n\n  TabPane.prototype.isActive = function isActive() {\n    var tabContent = this.context.$bs_tabContent;\n    var activeKey = tabContent && tabContent.activeKey;\n\n    return this.props.eventKey === activeKey;\n  };\n\n  TabPane.prototype.shouldBeIn = function shouldBeIn() {\n    return this.getAnimation() && this.isActive();\n  };\n\n  TabPane.prototype.render = function render() {\n    var _props = this.props,\n        eventKey = _props.eventKey,\n        className = _props.className,\n        onEnter = _props.onEnter,\n        onEntering = _props.onEntering,\n        onEntered = _props.onEntered,\n        onExit = _props.onExit,\n        onExiting = _props.onExiting,\n        onExited = _props.onExited,\n        propsMountOnEnter = _props.mountOnEnter,\n        propsUnmountOnExit = _props.unmountOnExit,\n        props = _objectWithoutProperties(_props, ['eventKey', 'className', 'onEnter', 'onEntering', 'onEntered', 'onExit', 'onExiting', 'onExited', 'mountOnEnter', 'unmountOnExit']);\n\n    var _context = this.context,\n        tabContent = _context.$bs_tabContent,\n        tabContainer = _context.$bs_tabContainer;\n\n    var _splitBsPropsAndOmit = splitBsPropsAndOmit(props, ['animation']),\n        bsProps = _splitBsPropsAndOmit[0],\n        elementProps = _splitBsPropsAndOmit[1];\n\n    var active = this.isActive();\n    var animation = this.getAnimation();\n\n    var mountOnEnter = propsMountOnEnter != null ? propsMountOnEnter : tabContent && tabContent.mountOnEnter;\n    var unmountOnExit = propsUnmountOnExit != null ? propsUnmountOnExit : tabContent && tabContent.unmountOnExit;\n\n    if (!active && !animation && unmountOnExit) {\n      return null;\n    }\n\n    var Transition = animation === true ? Fade : animation || null;\n\n    if (tabContent) {\n      bsProps.bsClass = prefix(tabContent, 'pane');\n    }\n\n    var classes = _extends({}, getClassSet(bsProps), {\n      active: active\n    });\n\n    if (tabContainer) {\n      process.env.NODE_ENV !== 'production' ? warning(!elementProps.id && !elementProps['aria-labelledby'], 'In the context of a `<TabContainer>`, `<TabPanes>` are given ' + 'generated `id` and `aria-labelledby` attributes for the sake of ' + 'proper component accessibility. Any provided ones will be ignored. ' + 'To control these attributes directly provide a `generateChildId` ' + 'prop to the parent `<TabContainer>`.') : void 0;\n\n      elementProps.id = tabContainer.getPaneId(eventKey);\n      elementProps['aria-labelledby'] = tabContainer.getTabId(eventKey);\n    }\n\n    var pane = React.createElement('div', _extends({}, elementProps, {\n      role: 'tabpanel',\n      'aria-hidden': !active,\n      className: classNames(className, classes)\n    }));\n\n    if (Transition) {\n      var exiting = tabContent && tabContent.exiting;\n\n      return React.createElement(\n        Transition,\n        {\n          'in': active && !exiting,\n          onEnter: createChainedFunction(this.handleEnter, onEnter),\n          onEntering: onEntering,\n          onEntered: onEntered,\n          onExit: onExit,\n          onExiting: onExiting,\n          onExited: createChainedFunction(this.handleExited, onExited),\n          mountOnEnter: mountOnEnter,\n          unmountOnExit: unmountOnExit\n        },\n        pane\n      );\n    }\n\n    return pane;\n  };\n\n  return TabPane;\n}(React.Component);\n\nTabPane.propTypes = propTypes;\nTabPane.contextTypes = contextTypes;\nTabPane.childContextTypes = childContextTypes;\n\nexport default bsClass('tab-pane', TabPane);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/TabPane.js\n// module id = 279\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport Button from './Button';\n\nvar propTypes = {\n  /**\n   * The `<input>` `type`\n   * @type {[type]}\n   */\n  type: PropTypes.oneOf(['checkbox', 'radio']),\n\n  /**\n   * The HTML input name, used to group like checkboxes or radio buttons together\n   * semantically\n   */\n  name: PropTypes.string,\n\n  /**\n   * The checked state of the input, managed by `<ToggleButtonGroup>`` automatically\n   */\n  checked: PropTypes.bool,\n\n  /**\n   * The disabled state of both the label and input\n   */\n  disabled: PropTypes.bool,\n\n  /**\n   * [onChange description]\n   */\n  onChange: PropTypes.func,\n  /**\n   * The value of the input, and unique identifier in the ToggleButtonGroup\n   */\n  value: PropTypes.any.isRequired\n};\n\nvar ToggleButton = function (_React$Component) {\n  _inherits(ToggleButton, _React$Component);\n\n  function ToggleButton() {\n    _classCallCheck(this, ToggleButton);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  ToggleButton.prototype.render = function render() {\n    var _props = this.props,\n        children = _props.children,\n        name = _props.name,\n        checked = _props.checked,\n        type = _props.type,\n        onChange = _props.onChange,\n        value = _props.value,\n        props = _objectWithoutProperties(_props, ['children', 'name', 'checked', 'type', 'onChange', 'value']);\n\n    var disabled = props.disabled;\n\n    return React.createElement(\n      Button,\n      _extends({}, props, {\n        active: !!checked,\n        componentClass: 'label'\n      }),\n      React.createElement('input', {\n        name: name,\n        type: type,\n        autoComplete: 'off',\n        value: value,\n        checked: !!checked,\n        disabled: !!disabled,\n        onChange: onChange\n      }),\n      children\n    );\n  };\n\n  return ToggleButton;\n}(React.Component);\n\nToggleButton.propTypes = propTypes;\n\nexport default ToggleButton;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/ToggleButton.js\n// module id = 280\n// module chunks = 0","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n  return function wrap() {\n    var args = new Array(arguments.length);\n    for (var i = 0; i < args.length; i++) {\n      args[i] = arguments[i];\n    }\n    return fn.apply(thisArg, args);\n  };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/helpers/bind.js\n// module id = 281\n// module chunks = 0","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar buildURL = require('./../helpers/buildURL');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\nvar btoa = (typeof window !== 'undefined' && window.btoa && window.btoa.bind(window)) || require('./../helpers/btoa');\n\nmodule.exports = function xhrAdapter(config) {\n  return new Promise(function dispatchXhrRequest(resolve, reject) {\n    var requestData = config.data;\n    var requestHeaders = config.headers;\n\n    if (utils.isFormData(requestData)) {\n      delete requestHeaders['Content-Type']; // Let the browser set it\n    }\n\n    var request = new XMLHttpRequest();\n    var loadEvent = 'onreadystatechange';\n    var xDomain = false;\n\n    // For IE 8/9 CORS support\n    // Only supports POST and GET calls and doesn't returns the response headers.\n    // DON'T do this for testing b/c XMLHttpRequest is mocked, not XDomainRequest.\n    if (!window.XMLHttpRequest &&\n        process.env.NODE_ENV !== 'test' &&\n        typeof window !== 'undefined' &&\n        window.XDomainRequest && !('withCredentials' in request) &&\n        !isURLSameOrigin(config.url)) {\n      request = new window.XDomainRequest();\n      loadEvent = 'onload';\n      xDomain = true;\n      request.onprogress = function handleProgress() {};\n      request.ontimeout = function handleTimeout() {};\n    }\n\n    // HTTP basic authentication\n    if (config.auth) {\n      var username = config.auth.username || '';\n      var password = config.auth.password || '';\n      requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n    }\n\n    request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true);\n\n    // Set the request timeout in MS\n    request.timeout = config.timeout;\n\n    // Listen for ready state\n    request[loadEvent] = function handleLoad() {\n      if (!request || (request.readyState !== 4 && !xDomain)) {\n        return;\n      }\n\n      // The request errored out and we didn't get a response, this will be\n      // handled by onerror instead\n      // With one exception: request that using file: protocol, most browsers\n      // will return status as 0 even though it's a successful request\n      if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n        return;\n      }\n\n      // Prepare the response\n      var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n      var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n      var response = {\n        data: responseData,\n        // IE sends 1223 instead of 204 (https://github.com/axios/axios/issues/201)\n        status: request.status === 1223 ? 204 : request.status,\n        statusText: request.status === 1223 ? 'No Content' : request.statusText,\n        headers: responseHeaders,\n        config: config,\n        request: request\n      };\n\n      settle(resolve, reject, response);\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle low level network errors\n    request.onerror = function handleError() {\n      // Real errors are hidden from us by the browser\n      // onerror should only fire if it's a network error\n      reject(createError('Network Error', config, null, request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle timeout\n    request.ontimeout = function handleTimeout() {\n      reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED',\n        request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Add xsrf header\n    // This is only done if running in a standard browser environment.\n    // Specifically not if we're in a web worker, or react-native.\n    if (utils.isStandardBrowserEnv()) {\n      var cookies = require('./../helpers/cookies');\n\n      // Add xsrf header\n      var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ?\n          cookies.read(config.xsrfCookieName) :\n          undefined;\n\n      if (xsrfValue) {\n        requestHeaders[config.xsrfHeaderName] = xsrfValue;\n      }\n    }\n\n    // Add headers to the request\n    if ('setRequestHeader' in request) {\n      utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n        if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n          // Remove Content-Type if data is undefined\n          delete requestHeaders[key];\n        } else {\n          // Otherwise add header to the request\n          request.setRequestHeader(key, val);\n        }\n      });\n    }\n\n    // Add withCredentials to request if needed\n    if (config.withCredentials) {\n      request.withCredentials = true;\n    }\n\n    // Add responseType to request if needed\n    if (config.responseType) {\n      try {\n        request.responseType = config.responseType;\n      } catch (e) {\n        // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n        // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n        if (config.responseType !== 'json') {\n          throw e;\n        }\n      }\n    }\n\n    // Handle progress if needed\n    if (typeof config.onDownloadProgress === 'function') {\n      request.addEventListener('progress', config.onDownloadProgress);\n    }\n\n    // Not all browsers support upload events\n    if (typeof config.onUploadProgress === 'function' && request.upload) {\n      request.upload.addEventListener('progress', config.onUploadProgress);\n    }\n\n    if (config.cancelToken) {\n      // Handle cancellation\n      config.cancelToken.promise.then(function onCanceled(cancel) {\n        if (!request) {\n          return;\n        }\n\n        request.abort();\n        reject(cancel);\n        // Clean up request\n        request = null;\n      });\n    }\n\n    if (requestData === undefined) {\n      requestData = null;\n    }\n\n    // Send the request\n    request.send(requestData);\n  });\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/adapters/xhr.js\n// module id = 282\n// module chunks = 0","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n  var error = new Error(message);\n  return enhanceError(error, config, code, request, response);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/core/createError.js\n// module id = 283\n// module chunks = 0","'use strict';\n\nmodule.exports = function isCancel(value) {\n  return !!(value && value.__CANCEL__);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/cancel/isCancel.js\n// module id = 284\n// module chunks = 0","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n  this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n  return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/cancel/Cancel.js\n// module id = 285\n// module chunks = 0","import createHistory from 'history/createBrowserHistory'\n\nexport default createHistory({\n    forceRefresh: true\n})\n\n\n// WEBPACK FOOTER //\n// src/history.js","var urljoin = require('url-join');\n\nvar RequestBuilder = require('../helper/request-builder');\nvar qs = require('qs');\nvar objectHelper = require('../helper/object');\nvar assert = require('../helper/assert');\nvar ssodata = require('../helper/ssodata');\nvar responseHandler = require('../helper/response-handler');\nvar parametersWhitelist = require('../helper/parameters-whitelist');\nvar Warn = require('../helper/warn');\n\nvar PasswordlessAuthentication = require('./passwordless-authentication');\nvar DBConnection = require('./db-connection');\n\n/**\n * Creates a new Auth0 Authentication API client\n * @constructor\n * @param {Object} options\n * @param {String} options.domain your Auth0 domain\n * @param {String} options.clientID your Auth0 client identifier obtained when creating the client in the Auth0 Dashboard\n * @param {String} [options.redirectUri] url that the Auth0 will redirect after Auth with the Authorization Response\n * @param {String} [options.responseType] type of the response used by OAuth 2.0 flow. It can be any space separated list of the values `code`, `token`, `id_token`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0}\n * @param {String} [options.responseMode] how the Auth response is encoded and redirected back to the client. Supported values are `query`, `fragment` and `form_post`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#ResponseModes}\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @see {@link https://auth0.com/docs/api/authentication}\n */\nfunction Authentication(auth0, options) {\n  /* eslint-disable */\n  assert.check(\n    options,\n    { type: 'object', message: 'options parameter is not valid' },\n    {\n      domain: { type: 'string', message: 'domain option is required' },\n      clientID: { type: 'string', message: 'clientID option is required' },\n      responseType: { optional: true, type: 'string', message: 'responseType is not valid' },\n      responseMode: { optional: true, type: 'string', message: 'responseMode is not valid' },\n      redirectUri: { optional: true, type: 'string', message: 'redirectUri is not valid' },\n      scope: { optional: true, type: 'string', message: 'scope is not valid' },\n      audience: { optional: true, type: 'string', message: 'audience is not valid' },\n      _disableDeprecationWarnings: {\n        optional: true,\n        type: 'boolean',\n        message: '_disableDeprecationWarnings option is not valid'\n      },\n      _sendTelemetry: {\n        optional: true,\n        type: 'boolean',\n        message: '_sendTelemetry option is not valid'\n      },\n      _telemetryInfo: {\n        optional: true,\n        type: 'object',\n        message: '_telemetryInfo option is not valid'\n      }\n    }\n  );\n  /* eslint-enable */\n\n  this.baseOptions = options;\n  this.auth0 = auth0;\n  this.baseOptions._sendTelemetry = this.baseOptions._sendTelemetry === false\n    ? this.baseOptions._sendTelemetry\n    : true;\n\n  this.baseOptions.rootUrl = 'https://' + this.baseOptions.domain;\n\n  this.request = new RequestBuilder(this.baseOptions);\n\n  this.passwordless = new PasswordlessAuthentication(this.request, this.baseOptions);\n  this.dbConnection = new DBConnection(this.request, this.baseOptions);\n\n  this.warn = new Warn({\n    disableWarnings: !!options._disableDeprecationWarnings\n  });\n}\n\n/**\n * Builds and returns the `/authorize` url in order to initialize a new authN/authZ transaction\n *\n * @method buildAuthorizeUrl\n * @param {Object} options\n * @param {String} [options.domain] your Auth0 domain\n * @param {String} [options.clientID] your Auth0 client identifier obtained when creating the client in the Auth0 Dashboard\n * @param {String} options.redirectUri url that the Auth0 will redirect after Auth with the Authorization Response\n * @param {String} options.responseType type of the response used by OAuth 2.0 flow. It can be any space separated list of the values `code`, `token`, `id_token`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0}\n * @param {String} [options.responseMode] how the Auth response is encoded and redirected back to the client. Supported values are `query`, `fragment` and `form_post`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#ResponseModes}\n * @param {String} [options.state] value used to mitigate XSRF attacks. {@link https://auth0.com/docs/protocols/oauth2/oauth-state}\n * @param {String} [options.nonce] value used to mitigate replay attacks when using Implicit Grant. {@link https://auth0.com/docs/api-auth/tutorials/nonce}\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @see {@link https://auth0.com/docs/api/authentication#authorize-client}\n * @see {@link https://auth0.com/docs/api/authentication#social}\n */\nAuthentication.prototype.buildAuthorizeUrl = function(options) {\n  var params;\n  var qString;\n\n  assert.check(options, { type: 'object', message: 'options parameter is not valid' });\n\n  params = objectHelper\n    .merge(this.baseOptions, [\n      'clientID',\n      'responseType',\n      'responseMode',\n      'redirectUri',\n      'scope',\n      'audience'\n    ])\n    .with(options);\n\n  /* eslint-disable */\n  assert.check(\n    params,\n    { type: 'object', message: 'options parameter is not valid' },\n    {\n      clientID: { type: 'string', message: 'clientID option is required' },\n      redirectUri: { optional: true, type: 'string', message: 'redirectUri option is required' },\n      responseType: { type: 'string', message: 'responseType option is required' },\n      nonce: {\n        type: 'string',\n        message: 'nonce option is required',\n        condition: function(o) {\n          return o.responseType.indexOf('code') === -1 && o.responseType.indexOf('id_token') !== -1;\n        }\n      },\n      scope: { optional: true, type: 'string', message: 'scope option is required' },\n      audience: { optional: true, type: 'string', message: 'audience option is required' }\n    }\n  );\n  /* eslint-enable */\n\n  // eslint-disable-next-line\n  if (this.baseOptions._sendTelemetry) {\n    params.auth0Client = this.request.getTelemetryData();\n  }\n\n  if (params.connection_scope && assert.isArray(params.connection_scope)) {\n    params.connection_scope = params.connection_scope.join(',');\n  }\n\n  params = objectHelper.blacklist(params, [\n    'username',\n    'popupOptions',\n    'domain',\n    'tenant',\n    'timeout'\n  ]);\n  params = objectHelper.toSnakeCase(params, ['auth0Client']);\n  params = parametersWhitelist.oauthAuthorizeParams(this.warn, params);\n\n  qString = qs.stringify(params);\n\n  return urljoin(this.baseOptions.rootUrl, 'authorize', '?' + qString);\n};\n\n/**\n * Builds and returns the Logout url in order to initialize a new authN/authZ transaction\n *\n * If you want to navigate the user to a specific URL after the logout, set that URL at the returnTo parameter. The URL should be included in any the appropriate Allowed Logout URLs list:\n *\n * - If the client_id parameter is included, the returnTo URL must be listed in the Allowed Logout URLs set at the client level (see Setting Allowed Logout URLs at the App Level).\n * - If the client_id parameter is NOT included, the returnTo URL must be listed in the Allowed Logout URLs set at the account level (see Setting Allowed Logout URLs at the Account Level).\n * @method buildLogoutUrl\n * @param {Object} options\n * @param {String} [options.clientID] identifier of your client\n * @param {String} [options.returnTo] URL to be redirected after the logout\n * @param {Boolean} [options.federated] tells Auth0 if it should logout the user also from the IdP.\n * @see {@link https://auth0.com/docs/api/authentication#logout}\n */\nAuthentication.prototype.buildLogoutUrl = function(options) {\n  var params;\n  var qString;\n\n  assert.check(options, {\n    optional: true,\n    type: 'object',\n    message: 'options parameter is not valid'\n  });\n\n  params = objectHelper.merge(this.baseOptions, ['clientID']).with(options || {});\n\n  // eslint-disable-next-line\n  if (this.baseOptions._sendTelemetry) {\n    params.auth0Client = this.request.getTelemetryData();\n  }\n\n  params = objectHelper.toSnakeCase(params, ['auth0Client', 'returnTo']);\n\n  qString = qs.stringify(params);\n\n  return urljoin(this.baseOptions.rootUrl, 'v2', 'logout', '?' + qString);\n};\n\n/**\n * @callback authorizeCallback\n * @param {Error} [err] error returned by Auth0 with the reason of the Auth failure\n * @param {Object} [result] result of the Auth request\n * @param {String} [result.accessToken] token that allows access to the specified resource server (identified by the audience parameter or by default Auth0's /userinfo endpoint)\n * @param {Number} [result.expiresIn] number of seconds until the access token expires\n * @param {String} [result.idToken] token that identifies the user\n * @param {String} [result.refreshToken] token that can be used to get new access tokens from Auth0. Note that not all clients can request them or the resource server might not allow them.\n */\n\n/**\n * @callback tokenCallback\n * @param {Error} [err] error returned by Auth0 with the reason of the Auth failure\n * @param {Object} [result] result of the Auth request\n * @param {String} result.accessToken token that allows access to the specified resource server (identified by the audience parameter or by default Auth0's /userinfo endpoint)\n * @param {Number} result.expiresIn number of seconds until the access token expires\n * @param {String} [result.idToken] token that identifies the user\n * @param {String} [result.refreshToken] token that can be used to get new access tokens from Auth0. Note that not all clients can request them or the resource server might not allow them.\n */\n\n/**\n * Makes a call to the `oauth/token` endpoint with `password` grant type to login to the default directory.\n *\n * @method loginWithDefaultDirectory\n * @param {Object} options\n * @param {String} options.username email or username of the user that will perform Auth\n * @param {String} options.password the password of the user that will perform Auth\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @param {tokenCallback} cb function called with the result of the request\n * @see   {@link https://auth0.com/docs/api-auth/grant/password}\n */\nAuthentication.prototype.loginWithDefaultDirectory = function(options, cb) {\n  assert.check(\n    options,\n    { type: 'object', message: 'options parameter is not valid' },\n    {\n      username: { type: 'string', message: 'username option is required' },\n      password: { type: 'string', message: 'password option is required' },\n      scope: { optional: true, type: 'string', message: 'scope option is required' },\n      audience: { optional: true, type: 'string', message: 'audience option is required' }\n    }\n  );\n\n  options.grantType = 'password';\n\n  return this.oauthToken(options, cb);\n};\n\n/**\n * Makes a call to the `oauth/token` endpoint with `password-realm` grant type\n *\n * @method login\n * @param {Object} options\n * @param {String} options.username email or username of the user that will perform Auth\n * @param {String} options.password the password of the user that will perform Auth\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @param {Object} options.realm the HRD domain or the connection name where the user belongs to. e.g. `Username-Password-Authentication`\n * @param {tokenCallback} cb function called with the result of the request\n * @see   {@link https://auth0.com/docs/api-auth/grant/password}\n */\nAuthentication.prototype.login = function(options, cb) {\n  assert.check(\n    options,\n    { type: 'object', message: 'options parameter is not valid' },\n    {\n      username: { type: 'string', message: 'username option is required' },\n      password: { type: 'string', message: 'password option is required' },\n      realm: { type: 'string', message: 'realm option is required' },\n      scope: { optional: true, type: 'string', message: 'scope option is required' },\n      audience: { optional: true, type: 'string', message: 'audience option is required' }\n    }\n  );\n\n  options.grantType = 'http://auth0.com/oauth/grant-type/password-realm';\n\n  return this.oauthToken(options, cb);\n};\n\n/**\n * Makes a call to the `oauth/token` endpoint\n *\n * @method oauthToken\n * @private\n */\nAuthentication.prototype.oauthToken = function(options, cb) {\n  var url;\n  var body;\n\n  assert.check(options, { type: 'object', message: 'options parameter is not valid' });\n  assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n  url = urljoin(this.baseOptions.rootUrl, 'oauth', 'token');\n\n  body = objectHelper.merge(this.baseOptions, ['clientID', 'scope', 'audience']).with(options);\n\n  assert.check(\n    body,\n    { type: 'object', message: 'options parameter is not valid' },\n    {\n      clientID: { type: 'string', message: 'clientID option is required' },\n      grantType: { type: 'string', message: 'grantType option is required' },\n      scope: { optional: true, type: 'string', message: 'scope option is required' },\n      audience: { optional: true, type: 'string', message: 'audience option is required' }\n    }\n  );\n\n  body = objectHelper.toSnakeCase(body, ['auth0Client']);\n  body = parametersWhitelist.oauthTokenParams(this.warn, body);\n\n  body.grant_type = body.grant_type;\n\n  return this.request.post(url).send(body).end(responseHandler(cb));\n};\n\n/**\n * Performs authentication calling `/oauth/ro` endpoint with username\n * and password for a given connection name.\n *\n * This method is not compatible with API Auth so if you need to fetch API tokens with audience\n * you should use {@link login} or {@link loginWithDefaultDirectory}.\n *\n * @method loginWithResourceOwner\n * @param {Object} options\n * @param {String} options.username email or username of the user that will perform Auth\n * @param {String} options.password the password of the user that will perform Auth\n * @param {Object} options.connection the connection name where the user belongs to. e.g. `Username-Password-Authentication`\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.device] name of the device/browser where the Auth was requested\n * @param {tokenCallback} cb function called with the result of the request\n */\nAuthentication.prototype.loginWithResourceOwner = function(options, cb) {\n  var url;\n  var body;\n\n  assert.check(\n    options,\n    { type: 'object', message: 'options parameter is not valid' },\n    {\n      username: { type: 'string', message: 'username option is required' },\n      password: { type: 'string', message: 'password option is required' },\n      connection: { type: 'string', message: 'connection option is required' },\n      scope: { optional: true, type: 'string', message: 'scope option is required' }\n    }\n  );\n  assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n  url = urljoin(this.baseOptions.rootUrl, 'oauth', 'ro');\n\n  body = objectHelper\n    .merge(this.baseOptions, ['clientID', 'scope'])\n    .with(options, ['username', 'password', 'scope', 'connection', 'device']);\n\n  body = objectHelper.toSnakeCase(body, ['auth0Client']);\n\n  body.grant_type = body.grant_type || 'password';\n\n  return this.request.post(url).send(body).end(responseHandler(cb));\n};\n\n/**\n * Uses {@link checkSession} and localStorage to return data from the last successful authentication request.\n *\n * @method getSSOData\n * @param {Boolean} withActiveDirectories this parameter is not used anymore. It's here to be backward compatible\n * @param {Function} cb\n */\nAuthentication.prototype.getSSOData = function(withActiveDirectories, cb) {\n  if (typeof withActiveDirectories === 'function') {\n    cb = withActiveDirectories;\n  }\n  assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n  var clientId = this.baseOptions.clientID;\n  var ssodataInformation = ssodata.get() || {};\n\n  this.auth0.checkSession(\n    {\n      responseType: 'token id_token',\n      scope: 'openid profile email',\n      connection: ssodataInformation.lastUsedConnection,\n      timeout: 5000\n    },\n    function(err, result) {\n      if (err) {\n        if (err.error === 'login_required') {\n          return cb(null, { sso: false });\n        }\n        if (err.error === 'consent_required') {\n          err.error_description =\n            'Consent required. When using `getSSOData`, the user has to be authenticated with the following scope: `openid profile email`.';\n        }\n        return cb(err, { sso: false });\n      }\n      if (\n        ssodataInformation.lastUsedSub &&\n        ssodataInformation.lastUsedSub !== result.idTokenPayload.sub\n      ) {\n        return cb(err, { sso: false });\n      }\n      return cb(null, {\n        lastUsedConnection: {\n          name: ssodataInformation.lastUsedConnection\n        },\n        lastUsedUserID: result.idTokenPayload.sub,\n        lastUsedUsername: result.idTokenPayload.email || result.idTokenPayload.name,\n        lastUsedClientID: clientId,\n        sessionClients: [clientId],\n        sso: true\n      });\n    }\n  );\n};\n\n/**\n * @callback userInfoCallback\n * @param {Error} [err] error returned by Auth0\n * @param {Object} [userInfo] user information\n */\n\n/**\n * Makes a call to the `/userinfo` endpoint and returns the user profile\n *\n * @method userInfo\n * @param {String} accessToken token issued to a user after Auth\n * @param {userInfoCallback} cb\n * @see   {@link https://auth0.com/docs/api/authentication#get-user-info}\n */\nAuthentication.prototype.userInfo = function(accessToken, cb) {\n  var url;\n\n  assert.check(accessToken, { type: 'string', message: 'accessToken parameter is not valid' });\n  assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n  url = urljoin(this.baseOptions.rootUrl, 'userinfo');\n\n  return this.request\n    .get(url)\n    .set('Authorization', 'Bearer ' + accessToken)\n    .end(responseHandler(cb, { ignoreCasing: true }));\n};\n\n/**\n * @callback delegationCallback\n * @param {Error} [err] error returned by Auth0 with the reason why the delegation failed\n * @param {Object} [result] result of the delegation request. The payload depends on what ai type was used\n */\n\n/**\n * Makes a call to the `/delegation` endpoint with either an `id_token` or `refresh_token`\n *\n * @method delegation\n * @param {Object} options\n * @param {String} [options.clientID] client identifier\n * @param {String} options.grantType  grant type used for delegation. The only valid value is `urn:ietf:params:oauth:grant-type:jwt-bearer`\n * @param {String} [options.idToken] valid token of the user issued after Auth. If no `refresh_token` is provided this parameter is required\n * @param {String} [options.refreshToken] valid refresh token of the user issued after Auth. If no `id_token` is provided this parameter is required\n * @param {String} [options.target] the target client id of the delegation\n * @param {String} [options.scope] either `openid` or `openid profile email`\n * @param {String} [options.apiType] the api to be called\n * @param {delegationCallback} cb\n * @see   {@link https://auth0.com/docs/api/authentication#delegation}\n */\nAuthentication.prototype.delegation = function(options, cb) {\n  var url;\n  var body;\n\n  assert.check(\n    options,\n    { type: 'object', message: 'options parameter is not valid' },\n    {\n      grant_type: { type: 'string', message: 'grant_type option is required' }\n    }\n  );\n  assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n  url = urljoin(this.baseOptions.rootUrl, 'delegation');\n\n  body = objectHelper.merge(this.baseOptions, ['clientID']).with(options);\n\n  body = objectHelper.toSnakeCase(body, ['auth0Client']);\n\n  return this.request.post(url).send(body).end(responseHandler(cb));\n};\n\n/**\n * Fetches the user country based on the ip.\n *\n * @method getUserCountry\n * @private\n * @param {Function} cb\n */\nAuthentication.prototype.getUserCountry = function(cb) {\n  var url;\n\n  assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n  url = urljoin(this.baseOptions.rootUrl, 'user', 'geoloc', 'country');\n\n  return this.request.get(url).end(responseHandler(cb));\n};\n\nmodule.exports = Authentication;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/auth0-js/src/authentication/index.js\n// module id = 287\n// module chunks = 0","/**\n * Root reference for iframes.\n */\n\nvar root;\nif (typeof window !== 'undefined') { // Browser window\n  root = window;\n} else if (typeof self !== 'undefined') { // Web Worker\n  root = self;\n} else { // Other environments\n  console.warn(\"Using browser-only version of superagent in non-browser environment\");\n  root = this;\n}\n\nvar Emitter = require('component-emitter');\nvar RequestBase = require('./request-base');\nvar isObject = require('./is-object');\nvar ResponseBase = require('./response-base');\nvar Agent = require('./agent-base');\n\n/**\n * Noop.\n */\n\nfunction noop(){};\n\n/**\n * Expose `request`.\n */\n\nvar request = exports = module.exports = function(method, url) {\n  // callback\n  if ('function' == typeof url) {\n    return new exports.Request('GET', method).end(url);\n  }\n\n  // url first\n  if (1 == arguments.length) {\n    return new exports.Request('GET', method);\n  }\n\n  return new exports.Request(method, url);\n}\n\nexports.Request = Request;\n\n/**\n * Determine XHR.\n */\n\nrequest.getXHR = function () {\n  if (root.XMLHttpRequest\n      && (!root.location || 'file:' != root.location.protocol\n          || !root.ActiveXObject)) {\n    return new XMLHttpRequest;\n  } else {\n    try { return new ActiveXObject('Microsoft.XMLHTTP'); } catch(e) {}\n    try { return new ActiveXObject('Msxml2.XMLHTTP.6.0'); } catch(e) {}\n    try { return new ActiveXObject('Msxml2.XMLHTTP.3.0'); } catch(e) {}\n    try { return new ActiveXObject('Msxml2.XMLHTTP'); } catch(e) {}\n  }\n  throw Error(\"Browser-only version of superagent could not find XHR\");\n};\n\n/**\n * Removes leading and trailing whitespace, added to support IE.\n *\n * @param {String} s\n * @return {String}\n * @api private\n */\n\nvar trim = ''.trim\n  ? function(s) { return s.trim(); }\n  : function(s) { return s.replace(/(^\\s*|\\s*$)/g, ''); };\n\n/**\n * Serialize the given `obj`.\n *\n * @param {Object} obj\n * @return {String}\n * @api private\n */\n\nfunction serialize(obj) {\n  if (!isObject(obj)) return obj;\n  var pairs = [];\n  for (var key in obj) {\n    pushEncodedKeyValuePair(pairs, key, obj[key]);\n  }\n  return pairs.join('&');\n}\n\n/**\n * Helps 'serialize' with serializing arrays.\n * Mutates the pairs array.\n *\n * @param {Array} pairs\n * @param {String} key\n * @param {Mixed} val\n */\n\nfunction pushEncodedKeyValuePair(pairs, key, val) {\n  if (val != null) {\n    if (Array.isArray(val)) {\n      val.forEach(function(v) {\n        pushEncodedKeyValuePair(pairs, key, v);\n      });\n    } else if (isObject(val)) {\n      for(var subkey in val) {\n        pushEncodedKeyValuePair(pairs, key + '[' + subkey + ']', val[subkey]);\n      }\n    } else {\n      pairs.push(encodeURIComponent(key)\n        + '=' + encodeURIComponent(val));\n    }\n  } else if (val === null) {\n    pairs.push(encodeURIComponent(key));\n  }\n}\n\n/**\n * Expose serialization method.\n */\n\nrequest.serializeObject = serialize;\n\n/**\n  * Parse the given x-www-form-urlencoded `str`.\n  *\n  * @param {String} str\n  * @return {Object}\n  * @api private\n  */\n\nfunction parseString(str) {\n  var obj = {};\n  var pairs = str.split('&');\n  var pair;\n  var pos;\n\n  for (var i = 0, len = pairs.length; i < len; ++i) {\n    pair = pairs[i];\n    pos = pair.indexOf('=');\n    if (pos == -1) {\n      obj[decodeURIComponent(pair)] = '';\n    } else {\n      obj[decodeURIComponent(pair.slice(0, pos))] =\n        decodeURIComponent(pair.slice(pos + 1));\n    }\n  }\n\n  return obj;\n}\n\n/**\n * Expose parser.\n */\n\nrequest.parseString = parseString;\n\n/**\n * Default MIME type map.\n *\n *     superagent.types.xml = 'application/xml';\n *\n */\n\nrequest.types = {\n  html: 'text/html',\n  json: 'application/json',\n  xml: 'text/xml',\n  urlencoded: 'application/x-www-form-urlencoded',\n  'form': 'application/x-www-form-urlencoded',\n  'form-data': 'application/x-www-form-urlencoded'\n};\n\n/**\n * Default serialization map.\n *\n *     superagent.serialize['application/xml'] = function(obj){\n *       return 'generated xml here';\n *     };\n *\n */\n\nrequest.serialize = {\n  'application/x-www-form-urlencoded': serialize,\n  'application/json': JSON.stringify,\n};\n\n/**\n  * Default parsers.\n  *\n  *     superagent.parse['application/xml'] = function(str){\n  *       return { object parsed from str };\n  *     };\n  *\n  */\n\nrequest.parse = {\n  'application/x-www-form-urlencoded': parseString,\n  'application/json': JSON.parse,\n};\n\n/**\n * Parse the given header `str` into\n * an object containing the mapped fields.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction parseHeader(str) {\n  var lines = str.split(/\\r?\\n/);\n  var fields = {};\n  var index;\n  var line;\n  var field;\n  var val;\n\n  for (var i = 0, len = lines.length; i < len; ++i) {\n    line = lines[i];\n    index = line.indexOf(':');\n    if (index === -1) { // could be empty line, just skip it\n      continue;\n    }\n    field = line.slice(0, index).toLowerCase();\n    val = trim(line.slice(index + 1));\n    fields[field] = val;\n  }\n\n  return fields;\n}\n\n/**\n * Check if `mime` is json or has +json structured syntax suffix.\n *\n * @param {String} mime\n * @return {Boolean}\n * @api private\n */\n\nfunction isJSON(mime) {\n  // should match /json or +json\n  // but not /json-seq\n  return /[\\/+]json($|[^-\\w])/.test(mime);\n}\n\n/**\n * Initialize a new `Response` with the given `xhr`.\n *\n *  - set flags (.ok, .error, etc)\n *  - parse header\n *\n * Examples:\n *\n *  Aliasing `superagent` as `request` is nice:\n *\n *      request = superagent;\n *\n *  We can use the promise-like API, or pass callbacks:\n *\n *      request.get('/').end(function(res){});\n *      request.get('/', function(res){});\n *\n *  Sending data can be chained:\n *\n *      request\n *        .post('/user')\n *        .send({ name: 'tj' })\n *        .end(function(res){});\n *\n *  Or passed to `.send()`:\n *\n *      request\n *        .post('/user')\n *        .send({ name: 'tj' }, function(res){});\n *\n *  Or passed to `.post()`:\n *\n *      request\n *        .post('/user', { name: 'tj' })\n *        .end(function(res){});\n *\n * Or further reduced to a single call for simple cases:\n *\n *      request\n *        .post('/user', { name: 'tj' }, function(res){});\n *\n * @param {XMLHTTPRequest} xhr\n * @param {Object} options\n * @api private\n */\n\nfunction Response(req) {\n  this.req = req;\n  this.xhr = this.req.xhr;\n  // responseText is accessible only if responseType is '' or 'text' and on older browsers\n  this.text = ((this.req.method !='HEAD' && (this.xhr.responseType === '' || this.xhr.responseType === 'text')) || typeof this.xhr.responseType === 'undefined')\n     ? this.xhr.responseText\n     : null;\n  this.statusText = this.req.xhr.statusText;\n  var status = this.xhr.status;\n  // handle IE9 bug: http://stackoverflow.com/questions/10046972/msie-returns-status-code-of-1223-for-ajax-request\n  if (status === 1223) {\n    status = 204;\n  }\n  this._setStatusProperties(status);\n  this.header = this.headers = parseHeader(this.xhr.getAllResponseHeaders());\n  // getAllResponseHeaders sometimes falsely returns \"\" for CORS requests, but\n  // getResponseHeader still works. so we get content-type even if getting\n  // other headers fails.\n  this.header['content-type'] = this.xhr.getResponseHeader('content-type');\n  this._setHeaderProperties(this.header);\n\n  if (null === this.text && req._responseType) {\n    this.body = this.xhr.response;\n  } else {\n    this.body = this.req.method != 'HEAD'\n      ? this._parseBody(this.text ? this.text : this.xhr.response)\n      : null;\n  }\n}\n\nResponseBase(Response.prototype);\n\n/**\n * Parse the given body `str`.\n *\n * Used for auto-parsing of bodies. Parsers\n * are defined on the `superagent.parse` object.\n *\n * @param {String} str\n * @return {Mixed}\n * @api private\n */\n\nResponse.prototype._parseBody = function(str) {\n  var parse = request.parse[this.type];\n  if (this.req._parser) {\n    return this.req._parser(this, str);\n  }\n  if (!parse && isJSON(this.type)) {\n    parse = request.parse['application/json'];\n  }\n  return parse && str && (str.length || str instanceof Object)\n    ? parse(str)\n    : null;\n};\n\n/**\n * Return an `Error` representative of this response.\n *\n * @return {Error}\n * @api public\n */\n\nResponse.prototype.toError = function(){\n  var req = this.req;\n  var method = req.method;\n  var url = req.url;\n\n  var msg = 'cannot ' + method + ' ' + url + ' (' + this.status + ')';\n  var err = new Error(msg);\n  err.status = this.status;\n  err.method = method;\n  err.url = url;\n\n  return err;\n};\n\n/**\n * Expose `Response`.\n */\n\nrequest.Response = Response;\n\n/**\n * Initialize a new `Request` with the given `method` and `url`.\n *\n * @param {String} method\n * @param {String} url\n * @api public\n */\n\nfunction Request(method, url) {\n  var self = this;\n  this._query = this._query || [];\n  this.method = method;\n  this.url = url;\n  this.header = {}; // preserves header name case\n  this._header = {}; // coerces header names to lowercase\n  this.on('end', function(){\n    var err = null;\n    var res = null;\n\n    try {\n      res = new Response(self);\n    } catch(e) {\n      err = new Error('Parser is unable to parse the response');\n      err.parse = true;\n      err.original = e;\n      // issue #675: return the raw response if the response parsing fails\n      if (self.xhr) {\n        // ie9 doesn't have 'response' property\n        err.rawResponse = typeof self.xhr.responseType == 'undefined' ? self.xhr.responseText : self.xhr.response;\n        // issue #876: return the http status code if the response parsing fails\n        err.status = self.xhr.status ? self.xhr.status : null;\n        err.statusCode = err.status; // backwards-compat only\n      } else {\n        err.rawResponse = null;\n        err.status = null;\n      }\n\n      return self.callback(err);\n    }\n\n    self.emit('response', res);\n\n    var new_err;\n    try {\n      if (!self._isResponseOK(res)) {\n        new_err = new Error(res.statusText || 'Unsuccessful HTTP response');\n      }\n    } catch(custom_err) {\n      new_err = custom_err; // ok() callback can throw\n    }\n\n    // #1000 don't catch errors from the callback to avoid double calling it\n    if (new_err) {\n      new_err.original = err;\n      new_err.response = res;\n      new_err.status = res.status;\n      self.callback(new_err, res);\n    } else {\n      self.callback(null, res);\n    }\n  });\n}\n\n/**\n * Mixin `Emitter` and `RequestBase`.\n */\n\nEmitter(Request.prototype);\nRequestBase(Request.prototype);\n\n/**\n * Set Content-Type to `type`, mapping values from `request.types`.\n *\n * Examples:\n *\n *      superagent.types.xml = 'application/xml';\n *\n *      request.post('/')\n *        .type('xml')\n *        .send(xmlstring)\n *        .end(callback);\n *\n *      request.post('/')\n *        .type('application/xml')\n *        .send(xmlstring)\n *        .end(callback);\n *\n * @param {String} type\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.type = function(type){\n  this.set('Content-Type', request.types[type] || type);\n  return this;\n};\n\n/**\n * Set Accept to `type`, mapping values from `request.types`.\n *\n * Examples:\n *\n *      superagent.types.json = 'application/json';\n *\n *      request.get('/agent')\n *        .accept('json')\n *        .end(callback);\n *\n *      request.get('/agent')\n *        .accept('application/json')\n *        .end(callback);\n *\n * @param {String} accept\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.accept = function(type){\n  this.set('Accept', request.types[type] || type);\n  return this;\n};\n\n/**\n * Set Authorization field value with `user` and `pass`.\n *\n * @param {String} user\n * @param {String} [pass] optional in case of using 'bearer' as type\n * @param {Object} options with 'type' property 'auto', 'basic' or 'bearer' (default 'basic')\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.auth = function(user, pass, options){\n  if (1 === arguments.length) pass = '';\n  if (typeof pass === 'object' && pass !== null) { // pass is optional and can be replaced with options\n    options = pass;\n    pass = '';\n  }\n  if (!options) {\n    options = {\n      type: 'function' === typeof btoa ? 'basic' : 'auto',\n    };\n  }\n\n  var encoder = function(string) {\n    if ('function' === typeof btoa) {\n      return btoa(string);\n    }\n    throw new Error('Cannot use basic auth, btoa is not a function');\n  };\n\n  return this._auth(user, pass, options, encoder);\n};\n\n/**\n * Add query-string `val`.\n *\n * Examples:\n *\n *   request.get('/shoes')\n *     .query('size=10')\n *     .query({ color: 'blue' })\n *\n * @param {Object|String} val\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.query = function(val){\n  if ('string' != typeof val) val = serialize(val);\n  if (val) this._query.push(val);\n  return this;\n};\n\n/**\n * Queue the given `file` as an attachment to the specified `field`,\n * with optional `options` (or filename).\n *\n * ``` js\n * request.post('/upload')\n *   .attach('content', new Blob(['<a id=\"a\"><b id=\"b\">hey!</b></a>'], { type: \"text/html\"}))\n *   .end(callback);\n * ```\n *\n * @param {String} field\n * @param {Blob|File} file\n * @param {String|Object} options\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.attach = function(field, file, options){\n  if (file) {\n    if (this._data) {\n      throw Error(\"superagent can't mix .send() and .attach()\");\n    }\n\n    this._getFormData().append(field, file, options || file.name);\n  }\n  return this;\n};\n\nRequest.prototype._getFormData = function(){\n  if (!this._formData) {\n    this._formData = new root.FormData();\n  }\n  return this._formData;\n};\n\n/**\n * Invoke the callback with `err` and `res`\n * and handle arity check.\n *\n * @param {Error} err\n * @param {Response} res\n * @api private\n */\n\nRequest.prototype.callback = function(err, res){\n  if (this._shouldRetry(err, res)) {\n    return this._retry();\n  }\n\n  var fn = this._callback;\n  this.clearTimeout();\n\n  if (err) {\n    if (this._maxRetries) err.retries = this._retries - 1;\n    this.emit('error', err);\n  }\n\n  fn(err, res);\n};\n\n/**\n * Invoke callback with x-domain error.\n *\n * @api private\n */\n\nRequest.prototype.crossDomainError = function(){\n  var err = new Error('Request has been terminated\\nPossible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.');\n  err.crossDomain = true;\n\n  err.status = this.status;\n  err.method = this.method;\n  err.url = this.url;\n\n  this.callback(err);\n};\n\n// This only warns, because the request is still likely to work\nRequest.prototype.buffer = Request.prototype.ca = Request.prototype.agent = function(){\n  console.warn(\"This is not supported in browser version of superagent\");\n  return this;\n};\n\n// This throws, because it can't send/receive data as expected\nRequest.prototype.pipe = Request.prototype.write = function(){\n  throw Error(\"Streaming is not supported in browser version of superagent\");\n};\n\n/**\n * Check if `obj` is a host object,\n * we don't want to serialize these :)\n *\n * @param {Object} obj\n * @return {Boolean}\n * @api private\n */\nRequest.prototype._isHost = function _isHost(obj) {\n  // Native objects stringify to [object File], [object Blob], [object FormData], etc.\n  return obj && 'object' === typeof obj && !Array.isArray(obj) && Object.prototype.toString.call(obj) !== '[object Object]';\n}\n\n/**\n * Initiate request, invoking callback `fn(res)`\n * with an instanceof `Response`.\n *\n * @param {Function} fn\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.end = function(fn){\n  if (this._endCalled) {\n    console.warn(\"Warning: .end() was called twice. This is not supported in superagent\");\n  }\n  this._endCalled = true;\n\n  // store callback\n  this._callback = fn || noop;\n\n  // querystring\n  this._finalizeQueryString();\n\n  return this._end();\n};\n\nRequest.prototype._end = function() {\n  var self = this;\n  var xhr = (this.xhr = request.getXHR());\n  var data = this._formData || this._data;\n\n  this._setTimeouts();\n\n  // state change\n  xhr.onreadystatechange = function(){\n    var readyState = xhr.readyState;\n    if (readyState >= 2 && self._responseTimeoutTimer) {\n      clearTimeout(self._responseTimeoutTimer);\n    }\n    if (4 != readyState) {\n      return;\n    }\n\n    // In IE9, reads to any property (e.g. status) off of an aborted XHR will\n    // result in the error \"Could not complete the operation due to error c00c023f\"\n    var status;\n    try { status = xhr.status } catch(e) { status = 0; }\n\n    if (!status) {\n      if (self.timedout || self._aborted) return;\n      return self.crossDomainError();\n    }\n    self.emit('end');\n  };\n\n  // progress\n  var handleProgress = function(direction, e) {\n    if (e.total > 0) {\n      e.percent = e.loaded / e.total * 100;\n    }\n    e.direction = direction;\n    self.emit('progress', e);\n  };\n  if (this.hasListeners('progress')) {\n    try {\n      xhr.onprogress = handleProgress.bind(null, 'download');\n      if (xhr.upload) {\n        xhr.upload.onprogress = handleProgress.bind(null, 'upload');\n      }\n    } catch(e) {\n      // Accessing xhr.upload fails in IE from a web worker, so just pretend it doesn't exist.\n      // Reported here:\n      // https://connect.microsoft.com/IE/feedback/details/837245/xmlhttprequest-upload-throws-invalid-argument-when-used-from-web-worker-context\n    }\n  }\n\n  // initiate request\n  try {\n    if (this.username && this.password) {\n      xhr.open(this.method, this.url, true, this.username, this.password);\n    } else {\n      xhr.open(this.method, this.url, true);\n    }\n  } catch (err) {\n    // see #1149\n    return this.callback(err);\n  }\n\n  // CORS\n  if (this._withCredentials) xhr.withCredentials = true;\n\n  // body\n  if (!this._formData && 'GET' != this.method && 'HEAD' != this.method && 'string' != typeof data && !this._isHost(data)) {\n    // serialize stuff\n    var contentType = this._header['content-type'];\n    var serialize = this._serializer || request.serialize[contentType ? contentType.split(';')[0] : ''];\n    if (!serialize && isJSON(contentType)) {\n      serialize = request.serialize['application/json'];\n    }\n    if (serialize) data = serialize(data);\n  }\n\n  // set header fields\n  for (var field in this.header) {\n    if (null == this.header[field]) continue;\n\n    if (this.header.hasOwnProperty(field))\n      xhr.setRequestHeader(field, this.header[field]);\n  }\n\n  if (this._responseType) {\n    xhr.responseType = this._responseType;\n  }\n\n  // send stuff\n  this.emit('request', this);\n\n  // IE11 xhr.send(undefined) sends 'undefined' string as POST payload (instead of nothing)\n  // We need null here if data is undefined\n  xhr.send(typeof data !== 'undefined' ? data : null);\n  return this;\n};\n\nrequest.agent = function() {\n  return new Agent();\n};\n\n[\"GET\", \"POST\", \"OPTIONS\", \"PATCH\", \"PUT\", \"DELETE\"].forEach(function(method) {\n  Agent.prototype[method.toLowerCase()] = function(url, fn) {\n    var req = new request.Request(method, url);\n    this._setDefaults(req);\n    if (fn) {\n      req.end(fn);\n    }\n    return req;\n  };\n});\n\nAgent.prototype.del = Agent.prototype['delete'];\n\n/**\n * GET `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.get = function(url, data, fn) {\n  var req = request('GET', url);\n  if ('function' == typeof data) (fn = data), (data = null);\n  if (data) req.query(data);\n  if (fn) req.end(fn);\n  return req;\n};\n\n/**\n * HEAD `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.head = function(url, data, fn) {\n  var req = request('HEAD', url);\n  if ('function' == typeof data) (fn = data), (data = null);\n  if (data) req.query(data);\n  if (fn) req.end(fn);\n  return req;\n};\n\n/**\n * OPTIONS query to `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.options = function(url, data, fn) {\n  var req = request('OPTIONS', url);\n  if ('function' == typeof data) (fn = data), (data = null);\n  if (data) req.send(data);\n  if (fn) req.end(fn);\n  return req;\n};\n\n/**\n * DELETE `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} [data]\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nfunction del(url, data, fn) {\n  var req = request('DELETE', url);\n  if ('function' == typeof data) (fn = data), (data = null);\n  if (data) req.send(data);\n  if (fn) req.end(fn);\n  return req;\n}\n\nrequest['del'] = del;\nrequest['delete'] = del;\n\n/**\n * PATCH `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} [data]\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.patch = function(url, data, fn) {\n  var req = request('PATCH', url);\n  if ('function' == typeof data) (fn = data), (data = null);\n  if (data) req.send(data);\n  if (fn) req.end(fn);\n  return req;\n};\n\n/**\n * POST `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} [data]\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.post = function(url, data, fn) {\n  var req = request('POST', url);\n  if ('function' == typeof data) (fn = data), (data = null);\n  if (data) req.send(data);\n  if (fn) req.end(fn);\n  return req;\n};\n\n/**\n * PUT `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.put = function(url, data, fn) {\n  var req = request('PUT', url);\n  if ('function' == typeof data) (fn = data), (data = null);\n  if (data) req.send(data);\n  if (fn) req.end(fn);\n  return req;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/superagent/lib/client.js\n// module id = 288\n// module chunks = 0","'use strict';\n\n/**\n * Check if `obj` is an object.\n *\n * @param {Object} obj\n * @return {Boolean}\n * @api private\n */\n\nfunction isObject(obj) {\n  return null !== obj && 'object' === typeof obj;\n}\n\nmodule.exports = isObject;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/superagent/lib/is-object.js\n// module id = 289\n// module chunks = 0","var base64 = require('base64-js');\n\nfunction padding(str) {\n  var mod = str.length % 4;\n  var pad = 4 - mod;\n\n  if (mod === 0) {\n    return str;\n  }\n\n  return str + new Array(1 + pad).join('=');\n}\n\nfunction stringToByteArray(str) {\n  var arr = new Array(str.length);\n  for (var a = 0; a < str.length; a++) {\n    arr[a] = str.charCodeAt(a);\n  }\n  return arr;\n}\n\nfunction byteArrayToString(array) {\n  var result = '';\n  for (var i = 0; i < array.length; i++) {\n    result += String.fromCharCode(array[i]);\n  }\n  return result;\n}\n\nfunction encode(str) {\n  return base64\n    .fromByteArray(stringToByteArray(str))\n    .replace(/\\+/g, '-') // Convert '+' to '-'\n    .replace(/\\//g, '_'); // Convert '/' to '_'\n}\n\nfunction decode(str) {\n  str = padding(str)\n    .replace(/-/g, '+') // Convert '-' to '+'\n    .replace(/_/g, '/'); // Convert '_' to '/'\n\n  return byteArrayToString(base64.toByteArray(str));\n}\n\nmodule.exports = {\n  encode: encode,\n  decode: decode\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/auth0-js/src/helper/base64_url.js\n// module id = 290\n// module chunks = 0","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i]\n  revLookup[code.charCodeAt(i)] = i\n}\n\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction placeHoldersCount (b64) {\n  var len = b64.length\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // the number of equal signs (place holders)\n  // if there are two placeholders, than the two characters before it\n  // represent one byte\n  // if there is only one, then the three characters before it represent 2 bytes\n  // this is just a cheap hack to not do indexOf twice\n  return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0\n}\n\nfunction byteLength (b64) {\n  // base64 is 4/3 + up to two characters of the original data\n  return (b64.length * 3 / 4) - placeHoldersCount(b64)\n}\n\nfunction toByteArray (b64) {\n  var i, l, tmp, placeHolders, arr\n  var len = b64.length\n  placeHolders = placeHoldersCount(b64)\n\n  arr = new Arr((len * 3 / 4) - placeHolders)\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  l = placeHolders > 0 ? len - 4 : len\n\n  var L = 0\n\n  for (i = 0; i < l; i += 4) {\n    tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]\n    arr[L++] = (tmp >> 16) & 0xFF\n    arr[L++] = (tmp >> 8) & 0xFF\n    arr[L++] = tmp & 0xFF\n  }\n\n  if (placeHolders === 2) {\n    tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)\n    arr[L++] = tmp & 0xFF\n  } else if (placeHolders === 1) {\n    tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)\n    arr[L++] = (tmp >> 8) & 0xFF\n    arr[L++] = tmp & 0xFF\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp\n  var output = []\n  for (var i = start; i < end; i += 3) {\n    tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\n    output.push(tripletToBase64(tmp))\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp\n  var len = uint8.length\n  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n  var output = ''\n  var parts = []\n  var maxChunkLength = 16383 // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1]\n    output += lookup[tmp >> 2]\n    output += lookup[(tmp << 4) & 0x3F]\n    output += '=='\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + (uint8[len - 1])\n    output += lookup[tmp >> 10]\n    output += lookup[(tmp >> 4) & 0x3F]\n    output += lookup[(tmp << 2) & 0x3F]\n    output += '='\n  }\n\n  parts.push(output)\n\n  return parts.join('')\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/base64-js/index.js\n// module id = 291\n// module chunks = 0","'use strict';\n\nvar has = Object.prototype.hasOwnProperty;\n\nvar hexTable = (function () {\n    var array = [];\n    for (var i = 0; i < 256; ++i) {\n        array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n    }\n\n    return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n    var obj;\n\n    while (queue.length) {\n        var item = queue.pop();\n        obj = item.obj[item.prop];\n\n        if (Array.isArray(obj)) {\n            var compacted = [];\n\n            for (var j = 0; j < obj.length; ++j) {\n                if (typeof obj[j] !== 'undefined') {\n                    compacted.push(obj[j]);\n                }\n            }\n\n            item.obj[item.prop] = compacted;\n        }\n    }\n\n    return obj;\n};\n\nexports.arrayToObject = function arrayToObject(source, options) {\n    var obj = options && options.plainObjects ? Object.create(null) : {};\n    for (var i = 0; i < source.length; ++i) {\n        if (typeof source[i] !== 'undefined') {\n            obj[i] = source[i];\n        }\n    }\n\n    return obj;\n};\n\nexports.merge = function merge(target, source, options) {\n    if (!source) {\n        return target;\n    }\n\n    if (typeof source !== 'object') {\n        if (Array.isArray(target)) {\n            target.push(source);\n        } else if (typeof target === 'object') {\n            if (options.plainObjects || options.allowPrototypes || !has.call(Object.prototype, source)) {\n                target[source] = true;\n            }\n        } else {\n            return [target, source];\n        }\n\n        return target;\n    }\n\n    if (typeof target !== 'object') {\n        return [target].concat(source);\n    }\n\n    var mergeTarget = target;\n    if (Array.isArray(target) && !Array.isArray(source)) {\n        mergeTarget = exports.arrayToObject(target, options);\n    }\n\n    if (Array.isArray(target) && Array.isArray(source)) {\n        source.forEach(function (item, i) {\n            if (has.call(target, i)) {\n                if (target[i] && typeof target[i] === 'object') {\n                    target[i] = exports.merge(target[i], item, options);\n                } else {\n                    target.push(item);\n                }\n            } else {\n                target[i] = item;\n            }\n        });\n        return target;\n    }\n\n    return Object.keys(source).reduce(function (acc, key) {\n        var value = source[key];\n\n        if (has.call(acc, key)) {\n            acc[key] = exports.merge(acc[key], value, options);\n        } else {\n            acc[key] = value;\n        }\n        return acc;\n    }, mergeTarget);\n};\n\nexports.assign = function assignSingleSource(target, source) {\n    return Object.keys(source).reduce(function (acc, key) {\n        acc[key] = source[key];\n        return acc;\n    }, target);\n};\n\nexports.decode = function (str) {\n    try {\n        return decodeURIComponent(str.replace(/\\+/g, ' '));\n    } catch (e) {\n        return str;\n    }\n};\n\nexports.encode = function encode(str) {\n    // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n    // It has been adapted here for stricter adherence to RFC 3986\n    if (str.length === 0) {\n        return str;\n    }\n\n    var string = typeof str === 'string' ? str : String(str);\n\n    var out = '';\n    for (var i = 0; i < string.length; ++i) {\n        var c = string.charCodeAt(i);\n\n        if (\n            c === 0x2D // -\n            || c === 0x2E // .\n            || c === 0x5F // _\n            || c === 0x7E // ~\n            || (c >= 0x30 && c <= 0x39) // 0-9\n            || (c >= 0x41 && c <= 0x5A) // a-z\n            || (c >= 0x61 && c <= 0x7A) // A-Z\n        ) {\n            out += string.charAt(i);\n            continue;\n        }\n\n        if (c < 0x80) {\n            out = out + hexTable[c];\n            continue;\n        }\n\n        if (c < 0x800) {\n            out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n            continue;\n        }\n\n        if (c < 0xD800 || c >= 0xE000) {\n            out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n            continue;\n        }\n\n        i += 1;\n        c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n        out += hexTable[0xF0 | (c >> 18)]\n            + hexTable[0x80 | ((c >> 12) & 0x3F)]\n            + hexTable[0x80 | ((c >> 6) & 0x3F)]\n            + hexTable[0x80 | (c & 0x3F)];\n    }\n\n    return out;\n};\n\nexports.compact = function compact(value) {\n    var queue = [{ obj: { o: value }, prop: 'o' }];\n    var refs = [];\n\n    for (var i = 0; i < queue.length; ++i) {\n        var item = queue[i];\n        var obj = item.obj[item.prop];\n\n        var keys = Object.keys(obj);\n        for (var j = 0; j < keys.length; ++j) {\n            var key = keys[j];\n            var val = obj[key];\n            if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n                queue.push({ obj: obj, prop: key });\n                refs.push(val);\n            }\n        }\n    }\n\n    return compactQueue(queue);\n};\n\nexports.isRegExp = function isRegExp(obj) {\n    return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nexports.isBuffer = function isBuffer(obj) {\n    if (obj === null || typeof obj === 'undefined') {\n        return false;\n    }\n\n    return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/qs/lib/utils.js\n// module id = 292\n// module chunks = 0","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nmodule.exports = {\n    'default': 'RFC3986',\n    formatters: {\n        RFC1738: function (value) {\n            return replace.call(value, percentTwenties, '+');\n        },\n        RFC3986: function (value) {\n            return value;\n        }\n    },\n    RFC1738: 'RFC1738',\n    RFC3986: 'RFC3986'\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/qs/lib/formats.js\n// module id = 293\n// module chunks = 0","var storage = require('./storage');\n\nmodule.exports = {\n  set: function(connection, sub) {\n    var ssodata = {\n      lastUsedConnection: connection,\n      lastUsedSub: sub\n    };\n    storage.setItem('auth0.ssodata', JSON.stringify(ssodata));\n  },\n  get: function() {\n    var ssodata = storage.getItem('auth0.ssodata');\n    if (!ssodata) {\n      return;\n    }\n    return JSON.parse(ssodata);\n  }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/auth0-js/src/helper/ssodata.js\n// module id = 294\n// module chunks = 0","var StorageHandler = require('./storage/handler');\nvar storage;\n\nfunction getStorage(force) {\n  if (!storage || force) {\n    storage = new StorageHandler();\n  }\n  return storage;\n}\n\nmodule.exports = {\n  getItem: function(key) {\n    var value = getStorage().getItem(key);\n    return value ? JSON.parse(value) : value;\n  },\n  removeItem: function(key) {\n    return getStorage().removeItem(key);\n  },\n  setItem: function(key, value) {\n    var json = JSON.stringify(value);\n    return getStorage().setItem(key, json);\n  },\n  reload: function() {\n    getStorage(true);\n  }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/auth0-js/src/helper/storage.js\n// module id = 295\n// module chunks = 0","function buildResponse(error, description) {\n  return {\n    error: error,\n    errorDescription: description\n  };\n}\n\nfunction invalidJwt(description) {\n  return buildResponse('invalid_token', description);\n}\n\nmodule.exports = {\n  buildResponse: buildResponse,\n  invalidJwt: invalidJwt\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/auth0-js/src/helper/error.js\n// module id = 296\n// module chunks = 0","var base64 = require('base64-js');\n\nfunction padding(str) {\n  var mod = (str.length % 4);\n  var pad = 4 - mod;\n\n  if (mod === 0) {\n    return str;\n  }\n\n  return str + (new Array(1 + pad)).join('=');\n}\n\nfunction byteArrayToString(array) {\n  var result = \"\";\n  for (var i = 0; i < array.length; i++) {\n    result += String.fromCharCode(array[i]);\n  }\n  return result;\n}\n\nfunction stringToByteArray(str) {\n  var arr = new Array(str.length);\n  for (var a = 0; a < str.length; a++) {\n    arr[a] = str.charCodeAt(a);\n  }\n  return arr;\n}\n\nfunction byteArrayToHex(raw) {\n  var HEX = '';\n\n  for (var i = 0; i < raw.length; i++) {\n    var _hex = raw[i].toString(16);\n    HEX += (_hex.length === 2 ? _hex : '0' + _hex);\n  }\n\n  return HEX;\n}\n\nfunction encodeString(str) {\n  return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function (match, p1) {\n    return String.fromCharCode('0x' + p1);\n  }))\n  .replace(/\\+/g, '-') // Convert '+' to '-'\n  .replace(/\\//g, '_'); // Convert '/' to '_';\n}\n\nfunction decodeToString(str) {\n  str = padding(str)\n    .replace(/\\-/g, '+') // Convert '-' to '+'\n    .replace(/_/g, '/'); // Convert '_' to '/'\n\n  return decodeURIComponent(atob(str).split('').map(function (c) {\n    return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n  }).join(''));\n}\n\nfunction decodeToHEX(str) {\n  return byteArrayToHex(base64.toByteArray(padding(str)));\n}\n\nmodule.exports = {\n  encodeString: encodeString,\n  decodeToString: decodeToString,\n  byteArrayToString: byteArrayToString,\n  stringToByteArray: stringToByteArray,\n  padding: padding,\n  byteArrayToHex: byteArrayToHex,\n  decodeToHEX: decodeToHEX\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/idtoken-verifier/src/helpers/base64.js\n// module id = 297\n// module chunks = 0","var random = require('../helper/random');\nvar storage = require('../helper/storage');\n\nvar DEFAULT_NAMESPACE = 'com.auth0.auth.';\n\nfunction TransactionManager(options) {\n  options = options || {};\n  this.namespace = options.namespace || DEFAULT_NAMESPACE;\n  this.keyLength = options.keyLength || 32;\n}\n\nTransactionManager.prototype.process = function(options) {\n  if (!options.responseType) {\n    throw new Error('responseType is required');\n  }\n  var lastUsedConnection = options.realm || options.connection;\n  var responseTypeIncludesIdToken = options.responseType.indexOf('id_token') !== -1;\n\n  var transaction = this.generateTransaction(\n    options.appState,\n    options.state,\n    options.nonce,\n    lastUsedConnection,\n    responseTypeIncludesIdToken\n  );\n  if (!options.state) {\n    options.state = transaction.state;\n  }\n\n  if (responseTypeIncludesIdToken && !options.nonce) {\n    options.nonce = transaction.nonce;\n  }\n\n  return options;\n};\n\nTransactionManager.prototype.generateTransaction = function(\n  appState,\n  state,\n  nonce,\n  lastUsedConnection,\n  generateNonce\n) {\n  state = state || random.randomString(this.keyLength);\n  nonce = nonce || (generateNonce ? random.randomString(this.keyLength) : null);\n\n  storage.setItem(this.namespace + state, {\n    nonce: nonce,\n    appState: appState,\n    state: state,\n    lastUsedConnection: lastUsedConnection\n  });\n  return {\n    state: state,\n    nonce: nonce\n  };\n};\n\nTransactionManager.prototype.getStoredTransaction = function(state) {\n  var transactionData;\n\n  transactionData = storage.getItem(this.namespace + state);\n  storage.removeItem(this.namespace + state);\n  return transactionData;\n};\n\nmodule.exports = TransactionManager;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/auth0-js/src/web-auth/transaction-manager.js\n// module id = 298\n// module chunks = 0","var IframeHandler = require('../helper/iframe-handler');\nvar objectHelper = require('../helper/object');\n\nfunction runWebMessageFlow(authorizeUrl, options, callback) {\n  var handler = new IframeHandler({\n    url: authorizeUrl,\n    eventListenerType: 'message',\n    callback: function(eventData) {\n      callback(null, eventData);\n    },\n    timeout: options.timeout,\n    eventValidator: {\n      isValid: function(eventData) {\n        return eventData.event.data.type === 'authorization_response' \n          && options.state === eventData.event.data.response.state;\n      }\n    },\n    timeoutCallback: function() {\n      callback({\n        error: 'timeout',\n        error_description: 'Timeout during executing web_message communication'\n      });\n    }\n  });\n  handler.init();\n}\n\nfunction WebMessageHandler(webAuth) {\n  this.webAuth = webAuth;\n}\n\nWebMessageHandler.prototype.run = function(options, cb) {\n  var _this = this;\n  options.responseMode = 'web_message';\n  options.prompt = 'none';\n  runWebMessageFlow(this.webAuth.client.buildAuthorizeUrl(options), options, function(\n    err,\n    eventData\n  ) {\n    var error = err;\n    if (!err && eventData.event.data.response.error) {\n      error = objectHelper.pick(eventData.event.data.response, ['error', 'error_description']);\n    }\n    if (error) {\n      return cb(error);\n    }\n    var parsedHash = eventData.event.data.response;\n    _this.webAuth.validateAuthenticationResponse(options, parsedHash, cb);\n  });\n};\n\nmodule.exports = WebMessageHandler;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/auth0-js/src/web-auth/web-message-handler.js\n// module id = 299\n// module chunks = 0","var windowHelper = require('./window');\n\nfunction IframeHandler(options) {\n  this.url = options.url;\n  this.callback = options.callback;\n  this.timeout = options.timeout || 60 * 1000;\n  this.timeoutCallback = options.timeoutCallback || null;\n  this.eventListenerType = options.eventListenerType || 'message';\n  this.iframe = null;\n  this.timeoutHandle = null;\n  this._destroyTimeout = null;\n  this.transientMessageEventListener = null;\n  this.proxyEventListener = null;\n  // If no event identifier specified, set default\n  this.eventValidator = options.eventValidator || {\n    isValid: function() {\n      return true;\n    }\n  };\n\n  if (typeof this.callback !== 'function') {\n    throw new Error('options.callback must be a function');\n  }\n}\n\nIframeHandler.prototype.init = function() {\n  var _this = this;\n  var _window = windowHelper.getWindow();\n\n  this.iframe = _window.document.createElement('iframe');\n  this.iframe.style.display = 'none';\n\n  // Workaround to avoid using bind that does not work in IE8\n  this.proxyEventListener = function(e) {\n    _this.eventListener(e);\n  };\n\n  switch (this.eventListenerType) {\n    case 'message':\n      this.eventSourceObject = _window;\n      break;\n    case 'load':\n      this.eventSourceObject = this.iframe;\n      break;\n    default:\n      throw new Error('Unsupported event listener type: ' + this.eventListenerType);\n  }\n\n  this.eventSourceObject.addEventListener(this.eventListenerType, this.proxyEventListener, false);\n\n  _window.document.body.appendChild(this.iframe);\n  \n  this.iframe.src = this.url;\n  \n  this.timeoutHandle = setTimeout(function() {\n    _this.timeoutHandler();\n  }, this.timeout);\n};\n\nIframeHandler.prototype.eventListener = function(event) {\n  var eventData = { event: event, sourceObject: this.eventSourceObject };\n\n  if (!this.eventValidator.isValid(eventData)) {\n    return;\n  }\n\n  this.destroy();\n  this.callback(eventData);\n};\n\nIframeHandler.prototype.timeoutHandler = function() {\n  this.destroy();\n  if (this.timeoutCallback) {\n    this.timeoutCallback();\n  }\n};\n\nIframeHandler.prototype.destroy = function() {\n  var _this = this;\n  var _window = windowHelper.getWindow();\n\n  clearTimeout(this.timeoutHandle);\n\n  this._destroyTimeout = setTimeout(function() {\n    _this.eventSourceObject.removeEventListener(\n      _this.eventListenerType,\n      _this.proxyEventListener,\n      false\n    );\n    _window.document.body.removeChild(_this.iframe);\n  }, 0);\n};\n\nmodule.exports = IframeHandler;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/auth0-js/src/helper/iframe-handler.js\n// module id = 300\n// module chunks = 0","import axios from 'axios';\n\nexport default function setAuthToken(token) {\n    if (token) {\n        axios.defaults.headers.common['Authorization'] = `Bearer ${token}`;\n    } else {\n        delete axios.defaults.headers.common['Authorization'];\n    }\n}\n\n\n// WEBPACK FOOTER //\n// src/store/utils/setAuthToken.js","export function validationRules(value, rules) {\n\n\n    let isValid = true;\n    if (!rules) {\n        return true;\n    }\n\n    if (rules.required) {\n        isValid = value.trim() !== '' && isValid;\n    }\n\n    if (rules.minLength) {\n        isValid = value.length >= rules.minLength && isValid\n    }\n\n    if (rules.maxLength) {\n        isValid = value.length <= rules.maxLength && isValid\n    }\n\n    if (rules.isEmail) {\n        const pattern = /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/;\n        isValid = pattern.test(value) && isValid\n    }\n\n    if (rules.isNumeric) {\n        const pattern = /^\\d+$/;\n        isValid = pattern.test(value) && isValid\n    }\n\n    if (rules.mustMatch) {\n        isValid = value === rules.mustMatchValue;\n    }\n\n    return isValid;\n}\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/common/validationRules.js","// ag-grid-react v15.0.0\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar reactFrameworkComponentWrapper_1 = require(\"./reactFrameworkComponentWrapper\");\nvar DOM = require(\"react-dom-factories\");\nvar react_1 = require(\"react\");\nvar PropTypes = require(\"prop-types\");\nvar AgGrid = require(\"ag-grid\");\nvar agGridColumn_1 = require(\"./agGridColumn\");\nvar AgGridReact = /** @class */ (function (_super) {\n    __extends(AgGridReact, _super);\n    function AgGridReact(props, state) {\n        var _this = _super.call(this, props, state) || this;\n        _this.props = props;\n        _this.state = state;\n        return _this;\n    }\n    AgGridReact.prototype.render = function () {\n        var _this = this;\n        return DOM.div({\n            style: this.createStyleForDiv(),\n            ref: function (e) {\n                _this.eGridDiv = e;\n            }\n        });\n    };\n    AgGridReact.prototype.createStyleForDiv = function () {\n        var style = { height: '100%' };\n        // allow user to override styles\n        var containerStyle = this.props.containerStyle;\n        if (containerStyle) {\n            Object.keys(containerStyle).forEach(function (key) {\n                style[key] = containerStyle[key];\n            });\n        }\n        return style;\n    };\n    AgGridReact.prototype.componentDidMount = function () {\n        var gridParams = {\n            seedBeanInstances: {\n                agGridReact: this\n            }\n        };\n        var gridOptions = this.props.gridOptions || {};\n        if (agGridColumn_1.AgGridColumn.hasChildColumns(this.props)) {\n            gridOptions.columnDefs = agGridColumn_1.AgGridColumn.mapChildColumnDefs(this.props);\n        }\n        this.gridOptions = AgGrid.ComponentUtil.copyAttributesToGridOptions(gridOptions, this.props);\n        AgGrid.Grid.setFrameworkBeans([reactFrameworkComponentWrapper_1.ReactFrameworkComponentWrapper]);\n        // don't need the return value\n        new AgGrid.Grid(this.eGridDiv, this.gridOptions, gridParams);\n        this.api = this.gridOptions.api;\n        this.columnApi = this.gridOptions.columnApi;\n    };\n    AgGridReact.prototype.shouldComponentUpdate = function () {\n        // we want full control of the dom, as ag-Grid doesn't use React internally,\n        // so for performance reasons we tell React we don't need render called after\n        // property changes.\n        return false;\n    };\n    AgGridReact.prototype.componentWillReceiveProps = function (nextProps) {\n        var _this = this;\n        var debugLogging = !!nextProps.debug;\n        // keeping consistent with web components, put changing\n        // values in currentValue and previousValue pairs and\n        // not include items that have not changed.\n        var changes = {};\n        AgGrid.ComponentUtil.ALL_PROPERTIES.forEach(function (propKey) {\n            if (!_this.areEquivalent(_this.props[propKey], nextProps[propKey])) {\n                if (debugLogging) {\n                    console.log(\"agGridReact: [\" + propKey + \"] property changed\");\n                }\n                changes[propKey] = {\n                    previousValue: _this.props[propKey],\n                    currentValue: nextProps[propKey]\n                };\n            }\n        });\n        AgGrid.ComponentUtil.getEventCallbacks().forEach(function (funcName) {\n            if (_this.props[funcName] !== nextProps[funcName]) {\n                if (debugLogging) {\n                    console.log(\"agGridReact: [\" + funcName + \"] event callback changed\");\n                }\n                changes[funcName] = {\n                    previousValue: _this.props[funcName],\n                    currentValue: nextProps[funcName]\n                };\n            }\n        });\n        AgGrid.ComponentUtil.processOnChange(changes, this.gridOptions, this.api, this.columnApi);\n    };\n    AgGridReact.prototype.componentWillUnmount = function () {\n        if (this.api) {\n            this.api.destroy();\n        }\n    };\n    /*\n     * deeper object comparison - taken from https://stackoverflow.com/questions/1068834/object-comparison-in-javascript\n     */\n    AgGridReact.unwrapStringOrNumber = function (obj) {\n        return (obj instanceof Number || obj instanceof String\n            ? obj.valueOf()\n            : obj);\n    };\n    // sigh, here for ie compatibility\n    AgGridReact.prototype.copy = function (value) {\n        if (!value) {\n            return value;\n        }\n        if (Array.isArray(value)) {\n            return value.slice();\n        }\n        // for anything without keys (boolean, string etc).\n        // Object.keys - chrome will swallow them, IE will fail (correctly, imho)\n        if (typeof value !== \"object\") {\n            return value;\n        }\n        return [{}, value].reduce(function (r, o) {\n            Object.keys(o).forEach(function (k) {\n                r[k] = o[k];\n            });\n            return r;\n        }, {});\n    };\n    AgGridReact.prototype.areEquivalent = function (a, b) {\n        return AgGridReact.areEquivalent(this.copy(a), this.copy(b));\n    };\n    AgGridReact.areEquivalent = function (a, b) {\n        a = AgGridReact.unwrapStringOrNumber(a);\n        b = AgGridReact.unwrapStringOrNumber(b);\n        if (a === b)\n            return true; //e.g. a and b both null\n        if (a === null || b === null || typeof (a) !== typeof (b))\n            return false;\n        if (a instanceof Date) {\n            return b instanceof Date && a.valueOf() === b.valueOf();\n        }\n        if (typeof a === \"function\") {\n            return a.toString() === b.toString();\n        }\n        if (typeof (a) !== \"object\") {\n            return a == b; //for boolean, number, string, function, xml\n        }\n        var newA = (a.areEquivalent_Eq_91_2_34 === undefined), newB = (b.areEquivalent_Eq_91_2_34 === undefined);\n        try {\n            var prop = void 0;\n            if (newA) {\n                a.areEquivalent_Eq_91_2_34 = [];\n            }\n            else if (a.areEquivalent_Eq_91_2_34.some(function (other) {\n                return other === b;\n            }))\n                return true;\n            if (newB) {\n                b.areEquivalent_Eq_91_2_34 = [];\n            }\n            else if (b.areEquivalent_Eq_91_2_34.some(function (other) { return other === a; })) {\n                return true;\n            }\n            a.areEquivalent_Eq_91_2_34.push(b);\n            b.areEquivalent_Eq_91_2_34.push(a);\n            var tmp = {};\n            for (prop in a)\n                if (prop != \"areEquivalent_Eq_91_2_34\") {\n                    tmp[prop] = null;\n                }\n            for (prop in b)\n                if (prop != \"areEquivalent_Eq_91_2_34\") {\n                    tmp[prop] = null;\n                }\n            for (prop in tmp) {\n                if (!this.areEquivalent(a[prop], b[prop])) {\n                    return false;\n                }\n            }\n            return true;\n        }\n        finally {\n            if (newA)\n                delete a.areEquivalent_Eq_91_2_34;\n            if (newB)\n                delete b.areEquivalent_Eq_91_2_34;\n        }\n    };\n    return AgGridReact;\n}(react_1.Component));\nexports.AgGridReact = AgGridReact;\nAgGridReact.propTypes = {\n    gridOptions: PropTypes.object,\n};\naddProperties(AgGrid.ComponentUtil.getEventCallbacks(), PropTypes.func);\naddProperties(AgGrid.ComponentUtil.BOOLEAN_PROPERTIES, PropTypes.bool);\naddProperties(AgGrid.ComponentUtil.STRING_PROPERTIES, PropTypes.string);\naddProperties(AgGrid.ComponentUtil.OBJECT_PROPERTIES, PropTypes.object);\naddProperties(AgGrid.ComponentUtil.ARRAY_PROPERTIES, PropTypes.array);\naddProperties(AgGrid.ComponentUtil.NUMBER_PROPERTIES, PropTypes.number);\naddProperties(AgGrid.ComponentUtil.FUNCTION_PROPERTIES, PropTypes.func);\nfunction addProperties(listOfProps, propType) {\n    listOfProps.forEach(function (propKey) {\n        AgGridReact[propKey] = propType;\n    });\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid-react/lib/agGridReact.js\n// module id = 303\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar gridCell_1 = require(\"../entities/gridCell\");\nvar constants_1 = require(\"../constants\");\nvar mouseEventService_1 = require(\"./mouseEventService\");\nvar paginationProxy_1 = require(\"../rowModels/paginationProxy\");\nvar focusedCellController_1 = require(\"../focusedCellController\");\nvar utils_1 = require(\"../utils\");\nvar gridPanel_1 = require(\"./gridPanel\");\nvar animationFrameService_1 = require(\"../misc/animationFrameService\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar NavigationService = (function () {\n    function NavigationService() {\n    }\n    NavigationService.prototype.init = function () {\n        this.scrollWidth = this.gridOptionsWrapper.getScrollbarWidth();\n    };\n    NavigationService.prototype.handlePageScrollingKey = function (event) {\n        var key = event.which || event.keyCode;\n        var alt = event.altKey;\n        var ctrl = event.ctrlKey;\n        var currentCell = this.mouseEventService.getGridCellForEvent(event).getGridCellDef();\n        if (!currentCell) {\n            return false;\n        }\n        var processed = false;\n        switch (key) {\n            case constants_1.Constants.KEY_PAGE_HOME:\n            case constants_1.Constants.KEY_PAGE_END:\n                // handle home and end when ctrl & alt are NOT pressed\n                if (!ctrl && !alt) {\n                    this.onHomeOrEndKey(key);\n                    processed = true;\n                }\n                break;\n            case constants_1.Constants.KEY_LEFT:\n            case constants_1.Constants.KEY_RIGHT:\n                // handle left and right when ctrl is pressed only\n                if (ctrl && !alt) {\n                    this.onCtrlLeftOrRight(key, currentCell);\n                    processed = true;\n                }\n                break;\n            case constants_1.Constants.KEY_UP:\n            case constants_1.Constants.KEY_DOWN:\n                // handle up and down when ctrl is pressed only\n                if (ctrl && !alt) {\n                    this.onCtrlUpOrDown(key, currentCell);\n                    processed = true;\n                }\n                break;\n            case constants_1.Constants.KEY_PAGE_DOWN:\n                // handle page up and page down when ctrl & alt are NOT pressed\n                if (!ctrl && !alt) {\n                    this.onPageDown(currentCell);\n                    processed = true;\n                }\n                break;\n            case constants_1.Constants.KEY_PAGE_UP:\n                // handle page up and page down when ctrl & alt are NOT pressed\n                if (!ctrl && !alt) {\n                    this.onPageUp(currentCell);\n                    processed = true;\n                }\n                break;\n        }\n        if (processed) {\n            event.preventDefault();\n        }\n        return processed;\n    };\n    NavigationService.prototype.onPageDown = function (gridCell) {\n        var viewport = this.gridPanel.getPrimaryScrollViewport();\n        var pixelsInOnePage = viewport.offsetHeight;\n        if (this.gridPanel.isHorizontalScrollShowing()) {\n            pixelsInOnePage -= this.scrollWidth;\n        }\n        var pagingPixelOffset = this.paginationProxy.getPixelOffset();\n        var currentPageBottomPixel = viewport.scrollTop + pixelsInOnePage;\n        var currentPageBottomRow = this.paginationProxy.getRowIndexAtPixel(currentPageBottomPixel + pagingPixelOffset);\n        var scrollIndex = currentPageBottomRow;\n        var currentCellPixel = this.paginationProxy.getRow(gridCell.rowIndex).rowTop;\n        var nextCellPixel = currentCellPixel + pixelsInOnePage - pagingPixelOffset;\n        var focusIndex = this.paginationProxy.getRowIndexAtPixel(nextCellPixel + pagingPixelOffset);\n        var pageLastRow = this.paginationProxy.getPageLastRow();\n        if (focusIndex > pageLastRow) {\n            focusIndex = pageLastRow;\n        }\n        if (scrollIndex > pageLastRow) {\n            scrollIndex = pageLastRow;\n        }\n        this.navigateTo(scrollIndex, 'top', null, focusIndex, gridCell.column);\n    };\n    NavigationService.prototype.onPageUp = function (gridCell) {\n        var viewport = this.gridPanel.getPrimaryScrollViewport();\n        var pixelsInOnePage = viewport.offsetHeight;\n        if (this.gridPanel.isHorizontalScrollShowing()) {\n            pixelsInOnePage -= this.scrollWidth;\n        }\n        var pagingPixelOffset = this.paginationProxy.getPixelOffset();\n        var currentPageTopPixel = viewport.scrollTop;\n        var currentPageTopRow = this.paginationProxy.getRowIndexAtPixel(currentPageTopPixel + pagingPixelOffset);\n        var scrollIndex = currentPageTopRow;\n        var currentRowNode = this.paginationProxy.getRow(gridCell.rowIndex);\n        var nextCellPixel = currentRowNode.rowTop + currentRowNode.rowHeight - pixelsInOnePage - pagingPixelOffset;\n        var focusIndex = this.paginationProxy.getRowIndexAtPixel(nextCellPixel + pagingPixelOffset);\n        var firstRow = this.paginationProxy.getPageFirstRow();\n        if (focusIndex < firstRow) {\n            focusIndex = firstRow;\n        }\n        if (scrollIndex < firstRow) {\n            scrollIndex = firstRow;\n        }\n        this.navigateTo(scrollIndex, 'bottom', null, focusIndex, gridCell.column);\n    };\n    // common logic to navigate. takes parameters:\n    // scrollIndex - what row to vertically scroll to\n    // scrollType - what position to put scroll index ie top/bottom\n    // scrollColumn - what column to horizontally scroll to\n    // focusIndex / focusColumn - for page up / down, we want to scroll to one row/column, but focus another\n    NavigationService.prototype.navigateTo = function (scrollIndex, scrollType, scrollColumn, focusIndex, focusColumn) {\n        if (utils_1._.exists(scrollColumn)) {\n            this.gridPanel.ensureColumnVisible(scrollColumn);\n        }\n        if (utils_1._.exists(scrollIndex)) {\n            this.gridPanel.ensureIndexVisible(scrollIndex, scrollType);\n        }\n        // make sure the cell is rendered, needed if we are to focus\n        this.animationFrameService.flushAllFrames();\n        // if we don't do this, the range will be left on the last cell, which will leave the last focused cell\n        // highlighted.\n        this.focusedCellController.setFocusedCell(focusIndex, focusColumn, null, true);\n        if (this.rangeController) {\n            var gridCell = new gridCell_1.GridCell({ rowIndex: focusIndex, floating: null, column: focusColumn });\n            this.rangeController.setRangeToCell(gridCell);\n        }\n    };\n    // ctrl + up/down will bring focus to same column, first/last row. no horizontal scrolling.\n    NavigationService.prototype.onCtrlUpOrDown = function (key, gridCell) {\n        var upKey = key === constants_1.Constants.KEY_UP;\n        var rowIndexToScrollTo = upKey ? 0 : this.paginationProxy.getPageLastRow();\n        this.navigateTo(rowIndexToScrollTo, null, gridCell.column, rowIndexToScrollTo, gridCell.column);\n    };\n    // ctrl + left/right will bring focus to same row, first/last cell. no vertical scrolling.\n    NavigationService.prototype.onCtrlLeftOrRight = function (key, gridCell) {\n        var leftKey = key === constants_1.Constants.KEY_LEFT;\n        var allColumns = this.columnController.getAllDisplayedColumns();\n        var columnToSelect = leftKey ? allColumns[0] : allColumns[allColumns.length - 1];\n        this.navigateTo(gridCell.rowIndex, null, columnToSelect, gridCell.rowIndex, columnToSelect);\n    };\n    // home brings focus to top left cell, end brings focus to bottom right, grid scrolled to bring\n    // same cell into view (which means either scroll all the way up, or all the way down).\n    NavigationService.prototype.onHomeOrEndKey = function (key) {\n        var homeKey = key === constants_1.Constants.KEY_PAGE_HOME;\n        var allColumns = this.columnController.getAllDisplayedColumns();\n        var columnToSelect = homeKey ? allColumns[0] : allColumns[allColumns.length - 1];\n        var rowIndexToScrollTo = homeKey ? 0 : this.paginationProxy.getPageLastRow();\n        this.navigateTo(rowIndexToScrollTo, null, columnToSelect, rowIndexToScrollTo, columnToSelect);\n    };\n    __decorate([\n        context_1.Autowired('gridPanel'),\n        __metadata(\"design:type\", gridPanel_1.GridPanel)\n    ], NavigationService.prototype, \"gridPanel\", void 0);\n    __decorate([\n        context_1.Autowired('mouseEventService'),\n        __metadata(\"design:type\", mouseEventService_1.MouseEventService)\n    ], NavigationService.prototype, \"mouseEventService\", void 0);\n    __decorate([\n        context_1.Autowired('paginationProxy'),\n        __metadata(\"design:type\", paginationProxy_1.PaginationProxy)\n    ], NavigationService.prototype, \"paginationProxy\", void 0);\n    __decorate([\n        context_1.Autowired('focusedCellController'),\n        __metadata(\"design:type\", focusedCellController_1.FocusedCellController)\n    ], NavigationService.prototype, \"focusedCellController\", void 0);\n    __decorate([\n        context_1.Autowired('animationFrameService'),\n        __metadata(\"design:type\", animationFrameService_1.AnimationFrameService)\n    ], NavigationService.prototype, \"animationFrameService\", void 0);\n    __decorate([\n        context_1.Optional('rangeController'),\n        __metadata(\"design:type\", Object)\n    ], NavigationService.prototype, \"rangeController\", void 0);\n    __decorate([\n        context_1.Autowired('columnController'),\n        __metadata(\"design:type\", columnController_1.ColumnController)\n    ], NavigationService.prototype, \"columnController\", void 0);\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], NavigationService.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], NavigationService.prototype, \"init\", null);\n    NavigationService = __decorate([\n        context_1.Bean('navigationService')\n    ], NavigationService);\n    return NavigationService;\n}());\nexports.NavigationService = NavigationService;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/gridPanel/navigationService.js\n// module id = 304\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar componentResolver_1 = require(\"./componentResolver\");\nvar context_1 = require(\"../../context/context\");\nvar componentProvider_1 = require(\"./componentProvider\");\nvar agComponentUtils_1 = require(\"./agComponentUtils\");\nvar NamedComponentResolver = (function () {\n    function NamedComponentResolver() {\n    }\n    NamedComponentResolver.prototype.resolve = function (propertyName, componentNameOpt) {\n        var componentName = componentNameOpt != null ? componentNameOpt : propertyName;\n        var registeredComponent = this.componentProvider.retrieve(componentName);\n        if (registeredComponent == null)\n            return null;\n        //If it is a FW it has to be registered as a component\n        if (registeredComponent.type == componentResolver_1.ComponentType.FRAMEWORK) {\n            return {\n                component: registeredComponent.component,\n                type: componentResolver_1.ComponentType.FRAMEWORK,\n                source: componentResolver_1.ComponentSource.REGISTERED_BY_NAME\n            };\n        }\n        //If it is JS it may be a function or a component\n        if (this.agComponentUtils.doesImplementIComponent(registeredComponent.component)) {\n            return {\n                component: registeredComponent.component,\n                type: componentResolver_1.ComponentType.AG_GRID,\n                source: (registeredComponent.source == componentProvider_1.RegisteredComponentSource.REGISTERED) ? componentResolver_1.ComponentSource.REGISTERED_BY_NAME : componentResolver_1.ComponentSource.DEFAULT\n            };\n        }\n        // This is a function\n        return this.agComponentUtils.adaptFunction(propertyName, registeredComponent.component, registeredComponent.type, (registeredComponent.source == componentProvider_1.RegisteredComponentSource.REGISTERED) ? componentResolver_1.ComponentSource.REGISTERED_BY_NAME : componentResolver_1.ComponentSource.DEFAULT);\n    };\n    __decorate([\n        context_1.Autowired(\"componentProvider\"),\n        __metadata(\"design:type\", componentProvider_1.ComponentProvider)\n    ], NamedComponentResolver.prototype, \"componentProvider\", void 0);\n    __decorate([\n        context_1.Autowired(\"agComponentUtils\"),\n        __metadata(\"design:type\", agComponentUtils_1.AgComponentUtils)\n    ], NamedComponentResolver.prototype, \"agComponentUtils\", void 0);\n    NamedComponentResolver = __decorate([\n        context_1.Bean(\"namedComponentResolver\")\n    ], NamedComponentResolver);\n    return NamedComponentResolver;\n}());\nexports.NamedComponentResolver = NamedComponentResolver;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/components/framework/namedComponentResolver.js\n// module id = 305\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar textCellEditor_1 = require(\"./textCellEditor\");\nvar PopupTextCellEditor = (function (_super) {\n    __extends(PopupTextCellEditor, _super);\n    function PopupTextCellEditor() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    PopupTextCellEditor.prototype.isPopup = function () {\n        return true;\n    };\n    return PopupTextCellEditor;\n}(textCellEditor_1.TextCellEditor));\nexports.PopupTextCellEditor = PopupTextCellEditor;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rendering/cellEditors/popupTextCellEditor.js\n// module id = 306\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar selectCellEditor_1 = require(\"./selectCellEditor\");\nvar PopupSelectCellEditor = (function (_super) {\n    __extends(PopupSelectCellEditor, _super);\n    function PopupSelectCellEditor() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    PopupSelectCellEditor.prototype.isPopup = function () {\n        return true;\n    };\n    return PopupSelectCellEditor;\n}(selectCellEditor_1.SelectCellEditor));\nexports.PopupSelectCellEditor = PopupSelectCellEditor;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rendering/cellEditors/popupSelectCellEditor.js\n// module id = 307\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = require(\"../../widgets/component\");\nvar constants_1 = require(\"../../constants\");\nvar utils_1 = require(\"../../utils\");\nvar LargeTextCellEditor = (function (_super) {\n    __extends(LargeTextCellEditor, _super);\n    function LargeTextCellEditor() {\n        return _super.call(this, LargeTextCellEditor.TEMPLATE) || this;\n    }\n    LargeTextCellEditor.prototype.init = function (params) {\n        this.params = params;\n        this.focusAfterAttached = params.cellStartedEdit;\n        this.textarea = document.createElement(\"textarea\");\n        this.textarea.maxLength = params.maxLength ? params.maxLength : \"200\";\n        this.textarea.cols = params.cols ? params.cols : \"60\";\n        this.textarea.rows = params.rows ? params.rows : \"10\";\n        if (utils_1.Utils.exists(params.value)) {\n            this.textarea.value = params.value.toString();\n        }\n        this.getGui().querySelector('.ag-large-textarea').appendChild(this.textarea);\n        this.addGuiEventListener('keydown', this.onKeyDown.bind(this));\n    };\n    LargeTextCellEditor.prototype.onKeyDown = function (event) {\n        var key = event.which || event.keyCode;\n        if (key == constants_1.Constants.KEY_LEFT ||\n            key == constants_1.Constants.KEY_UP ||\n            key == constants_1.Constants.KEY_RIGHT ||\n            key == constants_1.Constants.KEY_DOWN ||\n            (event.shiftKey && key == constants_1.Constants.KEY_ENTER)) {\n            event.stopPropagation();\n        }\n    };\n    LargeTextCellEditor.prototype.afterGuiAttached = function () {\n        if (this.focusAfterAttached) {\n            this.textarea.focus();\n        }\n    };\n    LargeTextCellEditor.prototype.getValue = function () {\n        return this.textarea.value;\n    };\n    LargeTextCellEditor.prototype.isPopup = function () {\n        return true;\n    };\n    LargeTextCellEditor.TEMPLATE = \n    // tab index is needed so we can focus, which is needed for keyboard events\n    '<div class=\"ag-large-text\" tabindex=\"0\">' +\n        '<div class=\"ag-large-textarea\"></div>' +\n        '</div>';\n    return LargeTextCellEditor;\n}(component_1.Component));\nexports.LargeTextCellEditor = LargeTextCellEditor;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rendering/cellEditors/largeTextCellEditor.js\n// module id = 308\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar baseFilter_1 = require(\"./baseFilter\");\nvar componentAnnotations_1 = require(\"../widgets/componentAnnotations\");\nvar TextFilter = (function (_super) {\n    __extends(TextFilter, _super);\n    function TextFilter() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    TextFilter.prototype.getDefaultType = function () {\n        return baseFilter_1.BaseFilter.CONTAINS;\n    };\n    TextFilter.prototype.customInit = function () {\n        this.comparator = this.filterParams.textCustomComparator ? this.filterParams.textCustomComparator : TextFilter.DEFAULT_COMPARATOR;\n        this.formatter =\n            this.filterParams.textFormatter ? this.filterParams.textFormatter :\n                this.filterParams.caseSensitive == true ? TextFilter.DEFAULT_FORMATTER :\n                    TextFilter.DEFAULT_LOWERCASE_FORMATTER;\n        _super.prototype.customInit.call(this);\n    };\n    TextFilter.prototype.modelFromFloatingFilter = function (from) {\n        return {\n            type: this.filter,\n            filter: from,\n            filterType: 'text'\n        };\n    };\n    TextFilter.prototype.getApplicableFilterTypes = function () {\n        return [baseFilter_1.BaseFilter.EQUALS, baseFilter_1.BaseFilter.NOT_EQUAL, baseFilter_1.BaseFilter.STARTS_WITH, baseFilter_1.BaseFilter.ENDS_WITH,\n            baseFilter_1.BaseFilter.CONTAINS, baseFilter_1.BaseFilter.NOT_CONTAINS];\n    };\n    TextFilter.prototype.bodyTemplate = function () {\n        var translate = this.translate.bind(this);\n        return \"<div class=\\\"ag-filter-body\\\">\\n            <input class=\\\"ag-filter-filter\\\" id=\\\"filterText\\\" type=\\\"text\\\" placeholder=\\\"\" + translate('filterOoo', 'Filter...') + \"\\\"/>\\n        </div>\";\n    };\n    TextFilter.prototype.initialiseFilterBodyUi = function () {\n        _super.prototype.initialiseFilterBodyUi.call(this);\n        var debounceMs = this.getDebounceMs(this.filterParams);\n        var toDebounce = utils_1.Utils.debounce(this.onFilterTextFieldChanged.bind(this), debounceMs);\n        this.addDestroyableEventListener(this.eFilterTextField, 'input', toDebounce);\n    };\n    TextFilter.prototype.refreshFilterBodyUi = function () { };\n    TextFilter.prototype.afterGuiAttached = function () {\n        this.eFilterTextField.focus();\n    };\n    TextFilter.prototype.filterValues = function () {\n        return this.filterText;\n    };\n    TextFilter.prototype.doesFilterPass = function (params) {\n        if (!this.filterText) {\n            return true;\n        }\n        var value = this.filterParams.valueGetter(params.node);\n        if (!value) {\n            if (this.filter === baseFilter_1.BaseFilter.NOT_EQUAL || this.filter === baseFilter_1.BaseFilter.NOT_CONTAINS) {\n                // if there is no value, but the filter type was 'not equals',\n                // then it should pass, as a missing value is not equal whatever\n                // the user is filtering on\n                return true;\n            }\n            else {\n                // otherwise it's some type of comparison, to which empty value\n                // will always fail\n                return false;\n            }\n        }\n        var valueFormatted = this.formatter(value);\n        return this.comparator(this.filter, valueFormatted, this.filterText);\n    };\n    TextFilter.prototype.onFilterTextFieldChanged = function () {\n        var filterText = utils_1.Utils.makeNull(this.eFilterTextField.value);\n        if (filterText && filterText.trim() === '') {\n            filterText = null;\n        }\n        if (this.filterText !== filterText) {\n            var newLowerCase = filterText && this.filterParams.caseSensitive != true ? filterText.toLowerCase() :\n                filterText;\n            var previousLowerCase = this.filterText && this.filterParams.caseSensitive != true ? this.filterText.toLowerCase() :\n                this.filterText;\n            this.filterText = this.formatter(filterText);\n            if (previousLowerCase !== newLowerCase) {\n                this.onFilterChanged();\n            }\n        }\n    };\n    TextFilter.prototype.setFilter = function (filter) {\n        filter = utils_1.Utils.makeNull(filter);\n        if (filter) {\n            this.filterText = this.formatter(filter);\n            this.eFilterTextField.value = filter;\n        }\n        else {\n            this.filterText = null;\n            this.eFilterTextField.value = null;\n        }\n    };\n    TextFilter.prototype.getFilter = function () {\n        return this.filterText;\n    };\n    TextFilter.prototype.resetState = function () {\n        this.setFilter(null);\n        this.setFilterType(this.defaultFilter);\n    };\n    TextFilter.prototype.serialize = function () {\n        return {\n            type: this.filter ? this.filter : this.defaultFilter,\n            filter: this.filterText,\n            filterType: 'text'\n        };\n    };\n    TextFilter.prototype.parse = function (model) {\n        this.setFilterType(model.type);\n        this.setFilter(model.filter);\n    };\n    TextFilter.prototype.setType = function (filterType) {\n        this.setFilterType(filterType);\n    };\n    TextFilter.DEFAULT_FORMATTER = function (from) {\n        return from;\n    };\n    TextFilter.DEFAULT_LOWERCASE_FORMATTER = function (from) {\n        if (from == null)\n            return null;\n        return from.toString().toLowerCase();\n    };\n    TextFilter.DEFAULT_COMPARATOR = function (filter, value, filterText) {\n        switch (filter) {\n            case TextFilter.CONTAINS:\n                return value.indexOf(filterText) >= 0;\n            case TextFilter.NOT_CONTAINS:\n                return value.indexOf(filterText) === -1;\n            case TextFilter.EQUALS:\n                return value === filterText;\n            case TextFilter.NOT_EQUAL:\n                return value != filterText;\n            case TextFilter.STARTS_WITH:\n                return value.indexOf(filterText) === 0;\n            case TextFilter.ENDS_WITH:\n                var index = value.lastIndexOf(filterText);\n                return index >= 0 && index === (value.length - filterText.length);\n            default:\n                // should never happen\n                console.warn('invalid filter type ' + filter);\n                return false;\n        }\n    };\n    __decorate([\n        componentAnnotations_1.QuerySelector('#filterText'),\n        __metadata(\"design:type\", HTMLInputElement)\n    ], TextFilter.prototype, \"eFilterTextField\", void 0);\n    return TextFilter;\n}(baseFilter_1.ComparableBaseFilter));\nexports.TextFilter = TextFilter;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/filter/textFilter.js\n// module id = 309\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar componentAnnotations_1 = require(\"../widgets/componentAnnotations\");\nvar baseFilter_1 = require(\"./baseFilter\");\nvar NumberFilter = (function (_super) {\n    __extends(NumberFilter, _super);\n    function NumberFilter() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    NumberFilter.prototype.modelFromFloatingFilter = function (from) {\n        return {\n            type: this.filter,\n            filter: Number(from),\n            filterTo: this.filterNumberTo,\n            filterType: 'number'\n        };\n    };\n    NumberFilter.prototype.getApplicableFilterTypes = function () {\n        return [baseFilter_1.BaseFilter.EQUALS, baseFilter_1.BaseFilter.NOT_EQUAL, baseFilter_1.BaseFilter.LESS_THAN, baseFilter_1.BaseFilter.LESS_THAN_OR_EQUAL,\n            baseFilter_1.BaseFilter.GREATER_THAN, baseFilter_1.BaseFilter.GREATER_THAN_OR_EQUAL, baseFilter_1.BaseFilter.IN_RANGE];\n    };\n    NumberFilter.prototype.bodyTemplate = function () {\n        var translate = this.translate.bind(this);\n        return \"<div class=\\\"ag-filter-body\\\">\\n            <div>\\n                <input class=\\\"ag-filter-filter\\\" id=\\\"filterText\\\" type=\\\"text\\\" placeholder=\\\"\" + translate('filterOoo') + \"\\\"/>\\n            </div>\\n             <div class=\\\"ag-filter-number-to\\\" id=\\\"filterNumberToPanel\\\">\\n                <input class=\\\"ag-filter-filter\\\" id=\\\"filterToText\\\" type=\\\"text\\\" placeholder=\\\"\" + translate('filterOoo') + \"\\\"/>\\n            </div>\\n        </div>\";\n    };\n    NumberFilter.prototype.initialiseFilterBodyUi = function () {\n        this.filterNumber = null;\n        this.eFilterTextField = this.queryForHtmlInputElement(\"#filterText\");\n        var debounceMs = this.getDebounceMs(this.filterParams);\n        var toDebounce = utils_1.Utils.debounce(this.onTextFieldsChanged.bind(this), debounceMs);\n        this.addDestroyableEventListener(this.eFilterTextField, \"input\", toDebounce);\n        this.addDestroyableEventListener(this.eFilterToTextField, \"input\", toDebounce);\n    };\n    NumberFilter.prototype.afterGuiAttached = function () {\n        this.eFilterTextField.focus();\n    };\n    NumberFilter.prototype.comparator = function () {\n        return function (left, right) {\n            if (left === right)\n                return 0;\n            if (left < right)\n                return 1;\n            if (left > right)\n                return -1;\n        };\n    };\n    NumberFilter.prototype.onTextFieldsChanged = function () {\n        var newFilter = this.stringToFloat(this.eFilterTextField.value);\n        var newFilterTo = this.stringToFloat(this.eFilterToTextField.value);\n        if (this.filterNumber !== newFilter || this.filterNumberTo !== newFilterTo) {\n            this.filterNumber = newFilter;\n            this.filterNumberTo = newFilterTo;\n            this.onFilterChanged();\n        }\n    };\n    NumberFilter.prototype.filterValues = function () {\n        return this.filter !== baseFilter_1.BaseFilter.IN_RANGE ?\n            this.asNumber(this.filterNumber) :\n            [this.asNumber(this.filterNumber), this.asNumber(this.filterNumberTo)];\n    };\n    NumberFilter.prototype.asNumber = function (value) {\n        return utils_1.Utils.isNumeric(value) ? value : null;\n    };\n    NumberFilter.prototype.stringToFloat = function (value) {\n        var filterText = utils_1.Utils.makeNull(value);\n        if (filterText && filterText.trim() === '') {\n            filterText = null;\n        }\n        var newFilter;\n        if (filterText !== null && filterText !== undefined) {\n            newFilter = parseFloat(filterText);\n        }\n        else {\n            newFilter = null;\n        }\n        return newFilter;\n    };\n    NumberFilter.prototype.setFilter = function (filter) {\n        filter = utils_1.Utils.makeNull(filter);\n        if (filter !== null && !(typeof filter === 'number')) {\n            filter = parseFloat(filter);\n        }\n        this.filterNumber = filter;\n        this.eFilterTextField.value = filter;\n    };\n    NumberFilter.prototype.setFilterTo = function (filter) {\n        filter = utils_1.Utils.makeNull(filter);\n        if (filter !== null && !(typeof filter === 'number')) {\n            filter = parseFloat(filter);\n        }\n        this.filterNumberTo = filter;\n        this.eFilterToTextField.value = filter;\n    };\n    NumberFilter.prototype.getFilter = function () {\n        return this.filterNumber;\n    };\n    NumberFilter.prototype.serialize = function () {\n        return {\n            type: this.filter ? this.filter : this.defaultFilter,\n            filter: this.filterNumber,\n            filterTo: this.filterNumberTo,\n            filterType: 'number'\n        };\n    };\n    NumberFilter.prototype.parse = function (model) {\n        this.setFilterType(model.type);\n        this.setFilter(model.filter);\n        this.setFilterTo(model.filterTo);\n    };\n    NumberFilter.prototype.refreshFilterBodyUi = function () {\n        var visible = this.filter === NumberFilter.IN_RANGE;\n        utils_1.Utils.setVisible(this.eNumberToPanel, visible);\n    };\n    NumberFilter.prototype.resetState = function () {\n        this.setFilterType(this.defaultFilter);\n        this.setFilter(null);\n        this.setFilterTo(null);\n    };\n    NumberFilter.prototype.setType = function (filterType) {\n        this.setFilterType(filterType);\n    };\n    NumberFilter.LESS_THAN = 'lessThan'; //3;\n    __decorate([\n        componentAnnotations_1.QuerySelector('#filterNumberToPanel'),\n        __metadata(\"design:type\", HTMLElement)\n    ], NumberFilter.prototype, \"eNumberToPanel\", void 0);\n    __decorate([\n        componentAnnotations_1.QuerySelector('#filterToText'),\n        __metadata(\"design:type\", HTMLInputElement)\n    ], NumberFilter.prototype, \"eFilterToTextField\", void 0);\n    return NumberFilter;\n}(baseFilter_1.ScalarBaseFilter));\nexports.NumberFilter = NumberFilter;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/filter/numberFilter.js\n// module id = 310\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar context_1 = require(\"../context/context\");\nvar dragAndDropService_1 = require(\"../dragAndDrop/dragAndDropService\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar gridPanel_1 = require(\"../gridPanel/gridPanel\");\nvar eventService_1 = require(\"../eventService\");\nvar events_1 = require(\"../events\");\nvar headerRowComp_1 = require(\"./headerRowComp\");\nvar bodyDropTarget_1 = require(\"./bodyDropTarget\");\nvar column_1 = require(\"../entities/column\");\nvar scrollVisibleService_1 = require(\"../gridPanel/scrollVisibleService\");\nvar HeaderContainer = (function () {\n    function HeaderContainer(eContainer, eViewport, eRoot, pinned) {\n        this.headerRowComps = [];\n        this.eContainer = eContainer;\n        this.eRoot = eRoot;\n        this.pinned = pinned;\n        this.eViewport = eViewport;\n    }\n    HeaderContainer.prototype.forEachHeaderElement = function (callback) {\n        this.headerRowComps.forEach(function (headerRowComp) { return headerRowComp.forEachHeaderElement(callback); });\n    };\n    HeaderContainer.prototype.init = function () {\n        this.setupDragAndDrop();\n        // if value changes, then if not pivoting, we at least need to change the label eg from sum() to avg(),\n        // if pivoting, then the columns have changed\n        this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_VALUE_CHANGED, this.onColumnValueChanged.bind(this));\n        this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.onColumnRowGroupChanged.bind(this));\n        this.eventService.addEventListener(events_1.Events.EVENT_GRID_COLUMNS_CHANGED, this.onGridColumnsChanged.bind(this));\n        this.eventService.addEventListener(events_1.Events.EVENT_SCROLL_VISIBILITY_CHANGED, this.onScrollVisibilityChanged.bind(this));\n        this.eventService.addEventListener(events_1.Events.EVENT_COLUMN_RESIZED, this.onColumnResized.bind(this));\n        this.eventService.addEventListener(events_1.Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n    };\n    // if row group changes, that means we may need to add aggFunc's to the column headers,\n    // if the grid goes from no aggregation (ie no grouping) to grouping\n    HeaderContainer.prototype.onColumnRowGroupChanged = function () {\n        this.onGridColumnsChanged();\n    };\n    // if the agg func of a column changes, then we may need to update the agg func in columns header\n    HeaderContainer.prototype.onColumnValueChanged = function () {\n        this.onGridColumnsChanged();\n    };\n    HeaderContainer.prototype.onColumnResized = function () {\n        this.setWidthIfPinnedContainer();\n    };\n    HeaderContainer.prototype.onDisplayedColumnsChanged = function () {\n        this.setWidthIfPinnedContainer();\n    };\n    HeaderContainer.prototype.onScrollVisibilityChanged = function () {\n        this.setWidthIfPinnedContainer();\n    };\n    HeaderContainer.prototype.setWidthIfPinnedContainer = function () {\n        if (this.pinned === column_1.Column.PINNED_LEFT) {\n            var pinnedLeftWidthWithScroll = this.scrollVisibleService.getPinnedLeftWithScrollWidth();\n            this.eContainer.style.width = pinnedLeftWidthWithScroll + 'px';\n        }\n        else if (this.pinned === column_1.Column.PINNED_RIGHT) {\n            var pinnedRightWidthWithScroll = this.scrollVisibleService.getPinnedRightWithScrollWidth();\n            this.eContainer.style.width = pinnedRightWidthWithScroll + 'px';\n        }\n    };\n    HeaderContainer.prototype.destroy = function () {\n        this.removeHeaderRowComps();\n    };\n    // grid cols have changed - this also means the number of rows in the header can have\n    // changed. so we remove all the old rows and insert new ones for a complete refresh\n    HeaderContainer.prototype.onGridColumnsChanged = function () {\n        this.removeHeaderRowComps();\n        this.createHeaderRowComps();\n    };\n    // we expose this for gridOptions.api.refreshHeader() to call\n    HeaderContainer.prototype.refresh = function () {\n        this.onGridColumnsChanged();\n    };\n    HeaderContainer.prototype.setupDragAndDrop = function () {\n        var dropContainer = this.eViewport ? this.eViewport : this.eContainer;\n        var bodyDropTarget = new bodyDropTarget_1.BodyDropTarget(this.pinned, dropContainer);\n        this.context.wireBean(bodyDropTarget);\n    };\n    HeaderContainer.prototype.removeHeaderRowComps = function () {\n        this.headerRowComps.forEach(function (headerRowComp) {\n            headerRowComp.destroy();\n        });\n        this.headerRowComps.length = 0;\n        utils_1.Utils.removeAllChildren(this.eContainer);\n    };\n    HeaderContainer.prototype.createHeaderRowComps = function () {\n        // if we are displaying header groups, then we have many rows here.\n        // go through each row of the header, one by one.\n        var rowCount = this.columnController.getHeaderRowCount();\n        for (var dept = 0; dept < rowCount; dept++) {\n            var groupRow = dept !== (rowCount - 1);\n            var type = groupRow ? headerRowComp_1.HeaderRowType.COLUMN_GROUP : headerRowComp_1.HeaderRowType.COLUMN;\n            var headerRowComp = new headerRowComp_1.HeaderRowComp(dept, type, this.pinned, this.eRoot, this.dropTarget);\n            this.context.wireBean(headerRowComp);\n            this.headerRowComps.push(headerRowComp);\n            this.eContainer.appendChild(headerRowComp.getGui());\n        }\n        var includeFloatingFilterRow = this.gridOptionsWrapper.isFloatingFilter() && !this.columnController.isPivotMode();\n        if (includeFloatingFilterRow) {\n            var headerRowComp = new headerRowComp_1.HeaderRowComp(rowCount, headerRowComp_1.HeaderRowType.FLOATING_FILTER, this.pinned, this.eRoot, this.dropTarget);\n            this.context.wireBean(headerRowComp);\n            this.headerRowComps.push(headerRowComp);\n            this.eContainer.appendChild(headerRowComp.getGui());\n        }\n    };\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], HeaderContainer.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('context'),\n        __metadata(\"design:type\", context_1.Context)\n    ], HeaderContainer.prototype, \"context\", void 0);\n    __decorate([\n        context_1.Autowired('$scope'),\n        __metadata(\"design:type\", Object)\n    ], HeaderContainer.prototype, \"$scope\", void 0);\n    __decorate([\n        context_1.Autowired('dragAndDropService'),\n        __metadata(\"design:type\", dragAndDropService_1.DragAndDropService)\n    ], HeaderContainer.prototype, \"dragAndDropService\", void 0);\n    __decorate([\n        context_1.Autowired('columnController'),\n        __metadata(\"design:type\", columnController_1.ColumnController)\n    ], HeaderContainer.prototype, \"columnController\", void 0);\n    __decorate([\n        context_1.Autowired('gridPanel'),\n        __metadata(\"design:type\", gridPanel_1.GridPanel)\n    ], HeaderContainer.prototype, \"gridPanel\", void 0);\n    __decorate([\n        context_1.Autowired('eventService'),\n        __metadata(\"design:type\", eventService_1.EventService)\n    ], HeaderContainer.prototype, \"eventService\", void 0);\n    __decorate([\n        context_1.Autowired('scrollVisibleService'),\n        __metadata(\"design:type\", scrollVisibleService_1.ScrollVisibleService)\n    ], HeaderContainer.prototype, \"scrollVisibleService\", void 0);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], HeaderContainer.prototype, \"init\", null);\n    return HeaderContainer;\n}());\nexports.HeaderContainer = HeaderContainer;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/headerRendering/headerContainer.js\n// module id = 311\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = require(\"../widgets/component\");\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar column_1 = require(\"../entities/column\");\nvar eventService_1 = require(\"../eventService\");\nvar events_1 = require(\"../events\");\nvar utils_1 = require(\"../utils\");\nvar headerWrapperComp_1 = require(\"./header/headerWrapperComp\");\nvar headerGroupWrapperComp_1 = require(\"./headerGroup/headerGroupWrapperComp\");\nvar filterManager_1 = require(\"../filter/filterManager\");\nvar componentRecipes_1 = require(\"../components/framework/componentRecipes\");\nvar gridApi_1 = require(\"../gridApi\");\nvar HeaderRowType;\n(function (HeaderRowType) {\n    HeaderRowType[HeaderRowType[\"COLUMN_GROUP\"] = 0] = \"COLUMN_GROUP\";\n    HeaderRowType[HeaderRowType[\"COLUMN\"] = 1] = \"COLUMN\";\n    HeaderRowType[HeaderRowType[\"FLOATING_FILTER\"] = 2] = \"FLOATING_FILTER\";\n})(HeaderRowType = exports.HeaderRowType || (exports.HeaderRowType = {}));\nvar HeaderRowComp = (function (_super) {\n    __extends(HeaderRowComp, _super);\n    function HeaderRowComp(dept, type, pinned, eRoot, dropTarget) {\n        var _this = _super.call(this, \"<div class=\\\"ag-header-row\\\" role=\\\"presentation\\\"/>\") || this;\n        _this.headerCompPromises = {};\n        _this.dept = dept;\n        _this.type = type;\n        _this.pinned = pinned;\n        _this.eRoot = eRoot;\n        _this.dropTarget = dropTarget;\n        return _this;\n    }\n    HeaderRowComp.prototype.forEachHeaderElement = function (callback) {\n        var _this = this;\n        var promises = [];\n        Object.keys(this.headerCompPromises).forEach(function (key) {\n            promises.push(_this.headerCompPromises[key]);\n        });\n        utils_1.Promise.all(promises).then(function (combined) { return combined.forEach(function (headerElement) { return callback(headerElement); }); });\n    };\n    HeaderRowComp.prototype.destroy = function () {\n        var idsOfAllChildren = Object.keys(this.headerCompPromises);\n        this.removeAndDestroyChildComponents(idsOfAllChildren);\n        _super.prototype.destroy.call(this);\n    };\n    HeaderRowComp.prototype.removeAndDestroyChildComponents = function (idsToDestroy) {\n        var _this = this;\n        idsToDestroy.forEach(function (id) {\n            _this.headerCompPromises[id].then(function (childPromise) {\n                _this.getGui().removeChild(childPromise.getGui());\n                if (childPromise.destroy) {\n                    childPromise.destroy();\n                }\n                delete _this.headerCompPromises[id];\n            });\n        });\n    };\n    HeaderRowComp.prototype.onRowHeightChanged = function () {\n        var headerRowCount = this.columnController.getHeaderRowCount();\n        var sizes = [];\n        var numberOfFloating = 0;\n        var groupHeight;\n        var headerHeight;\n        if (!this.columnController.isPivotMode()) {\n            if (this.gridOptionsWrapper.isFloatingFilter()) {\n                headerRowCount++;\n            }\n            numberOfFloating = (this.gridOptionsWrapper.isFloatingFilter()) ? 1 : 0;\n            groupHeight = this.gridOptionsWrapper.getGroupHeaderHeight();\n            headerHeight = this.gridOptionsWrapper.getHeaderHeight();\n        }\n        else {\n            numberOfFloating = 0;\n            groupHeight = this.gridOptionsWrapper.getPivotGroupHeaderHeight();\n            headerHeight = this.gridOptionsWrapper.getPivotHeaderHeight();\n        }\n        var numberOfNonGroups = 1 + numberOfFloating;\n        var numberOfGroups = headerRowCount - numberOfNonGroups;\n        for (var i = 0; i < numberOfGroups; i++)\n            sizes.push(groupHeight);\n        sizes.push(headerHeight);\n        for (var i = 0; i < numberOfFloating; i++)\n            sizes.push(this.gridOptionsWrapper.getFloatingFiltersHeight());\n        var rowHeight = 0;\n        for (var i = 0; i < this.dept; i++)\n            rowHeight += sizes[i];\n        this.getGui().style.top = rowHeight + 'px';\n        this.getGui().style.height = sizes[this.dept] + 'px';\n    };\n    //noinspection JSUnusedLocalSymbols\n    HeaderRowComp.prototype.init = function () {\n        this.onRowHeightChanged();\n        this.onVirtualColumnsChanged();\n        this.setWidth();\n        this.addDestroyableEventListener(this.gridOptionsWrapper, gridOptionsWrapper_1.GridOptionsWrapper.PROP_HEADER_HEIGHT, this.onRowHeightChanged.bind(this));\n        this.addDestroyableEventListener(this.gridOptionsWrapper, gridOptionsWrapper_1.GridOptionsWrapper.PROP_PIVOT_HEADER_HEIGHT, this.onRowHeightChanged.bind(this));\n        this.addDestroyableEventListener(this.gridOptionsWrapper, gridOptionsWrapper_1.GridOptionsWrapper.PROP_GROUP_HEADER_HEIGHT, this.onRowHeightChanged.bind(this));\n        this.addDestroyableEventListener(this.gridOptionsWrapper, gridOptionsWrapper_1.GridOptionsWrapper.PROP_PIVOT_GROUP_HEADER_HEIGHT, this.onRowHeightChanged.bind(this));\n        this.addDestroyableEventListener(this.gridOptionsWrapper, gridOptionsWrapper_1.GridOptionsWrapper.PROP_FLOATING_FILTERS_HEIGHT, this.onRowHeightChanged.bind(this));\n        this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_VIRTUAL_COLUMNS_CHANGED, this.onVirtualColumnsChanged.bind(this));\n        this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n        this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_COLUMN_RESIZED, this.onColumnResized.bind(this));\n        this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_GRID_COLUMNS_CHANGED, this.onGridColumnsChanged.bind(this));\n    };\n    HeaderRowComp.prototype.onColumnResized = function () {\n        this.setWidth();\n    };\n    HeaderRowComp.prototype.setWidth = function () {\n        var mainRowWidth = this.columnController.getContainerWidth(this.pinned) + 'px';\n        this.getGui().style.width = mainRowWidth;\n    };\n    HeaderRowComp.prototype.onGridColumnsChanged = function () {\n        this.removeAndDestroyAllChildComponents();\n    };\n    HeaderRowComp.prototype.removeAndDestroyAllChildComponents = function () {\n        var idsOfAllChildren = Object.keys(this.headerCompPromises);\n        this.removeAndDestroyChildComponents(idsOfAllChildren);\n    };\n    HeaderRowComp.prototype.onDisplayedColumnsChanged = function () {\n        this.onVirtualColumnsChanged();\n        this.setWidth();\n    };\n    HeaderRowComp.prototype.onVirtualColumnsChanged = function () {\n        var _this = this;\n        var currentChildIds = Object.keys(this.headerCompPromises);\n        var itemsAtDepth = this.columnController.getVirtualHeaderGroupRow(this.pinned, this.type == HeaderRowType.FLOATING_FILTER ?\n            this.dept - 1 :\n            this.dept);\n        var ensureDomOrder = this.gridOptionsWrapper.isEnsureDomOrder();\n        var eBefore;\n        itemsAtDepth.forEach(function (child) {\n            // skip groups that have no displayed children. this can happen when the group is broken,\n            // and this section happens to have nothing to display for the open / closed state.\n            // (a broken group is one that is split, ie columns in the group have a non-group column\n            // in between them)\n            if (child.isEmptyGroup()) {\n                return;\n            }\n            var idOfChild = child.getUniqueId();\n            var eParentContainer = _this.getGui();\n            // if we already have this cell rendered, do nothing\n            var colAlreadyInDom = currentChildIds.indexOf(idOfChild) >= 0;\n            var headerCompPromise;\n            var eHeaderCompGui;\n            if (colAlreadyInDom) {\n                utils_1.Utils.removeFromArray(currentChildIds, idOfChild);\n                headerCompPromise = _this.headerCompPromises[idOfChild];\n                headerCompPromise.then(function (headerComp) {\n                    eHeaderCompGui = headerComp.getGui();\n                    if (ensureDomOrder) {\n                        utils_1.Utils.ensureDomOrder(eParentContainer, eHeaderCompGui, eBefore);\n                    }\n                    eBefore = eHeaderCompGui;\n                });\n            }\n            else {\n                headerCompPromise = _this.createHeaderComp(child);\n                _this.headerCompPromises[idOfChild] = headerCompPromise;\n                headerCompPromise.then(function (headerComp) {\n                    eHeaderCompGui = headerComp.getGui();\n                    if (ensureDomOrder) {\n                        utils_1.Utils.insertWithDomOrder(eParentContainer, eHeaderCompGui, eBefore);\n                    }\n                    else {\n                        eParentContainer.appendChild(eHeaderCompGui);\n                    }\n                    eBefore = eHeaderCompGui;\n                });\n            }\n        });\n        // at this point, anything left in currentChildIds is an element that is no longer in the viewport\n        this.removeAndDestroyChildComponents(currentChildIds);\n    };\n    HeaderRowComp.prototype.createHeaderComp = function (columnGroupChild) {\n        var _this = this;\n        var resultPromise;\n        switch (this.type) {\n            case HeaderRowType.COLUMN:\n                resultPromise = utils_1.Promise.resolve(new headerWrapperComp_1.HeaderWrapperComp(columnGroupChild, this.eRoot, this.dropTarget, this.pinned));\n                break;\n            case HeaderRowType.COLUMN_GROUP:\n                resultPromise = utils_1.Promise.resolve(new headerGroupWrapperComp_1.HeaderGroupWrapperComp(columnGroupChild, this.eRoot, this.dropTarget, this.pinned));\n                break;\n            case HeaderRowType.FLOATING_FILTER:\n                var column = columnGroupChild;\n                resultPromise = this.createFloatingFilterWrapper(column);\n                break;\n        }\n        resultPromise.then(function (result) { return _this.context.wireBean(result); });\n        return resultPromise;\n    };\n    HeaderRowComp.prototype.createFloatingFilterWrapper = function (column) {\n        var _this = this;\n        var floatingFilterParams = this.createFloatingFilterParams(column);\n        var floatingFilterWrapperPromise = this.componentRecipes.newFloatingFilterWrapperComponent(column, floatingFilterParams);\n        floatingFilterWrapperPromise.then(function (floatingFilterWrapper) {\n            _this.addDestroyableEventListener(column, column_1.Column.EVENT_FILTER_CHANGED, function () {\n                var filterComponentPromise = _this.filterManager.getFilterComponent(column);\n                floatingFilterWrapper.onParentModelChanged(filterComponentPromise.resolveNow(null, function (filter) { return filter.getModel(); }));\n            });\n            var cachedFilter = _this.filterManager.cachedFilter(column);\n            if (cachedFilter) {\n                var filterComponentPromise = _this.filterManager.getFilterComponent(column);\n                floatingFilterWrapper.onParentModelChanged(filterComponentPromise.resolveNow(null, function (filter) { return filter.getModel(); }));\n            }\n        });\n        return floatingFilterWrapperPromise;\n    };\n    HeaderRowComp.prototype.createFloatingFilterParams = function (column) {\n        var _this = this;\n        // We always get the freshest reference to the baseFilter because the filters get sometimes created\n        // and destroyed between calls\n        //\n        // let filterComponent:BaseFilter<any, any, any> = <any>this.filterManager.getFilterComponent(column);\n        //\n        var baseParams = {\n            api: this.gridApi,\n            column: column,\n            currentParentModel: function () {\n                var filterComponentPromise = _this.filterManager.getFilterComponent(column);\n                return filterComponentPromise.resolveNow(null, function (filter) {\n                    return (filter.getNullableModel) ?\n                        filter.getNullableModel() :\n                        filter.getModel();\n                });\n            },\n            onFloatingFilterChanged: function (change) {\n                var captureModelChangedResolveFunc;\n                var modelChanged = new utils_1.Promise(function (resolve) {\n                    captureModelChangedResolveFunc = resolve;\n                });\n                var filterComponentPromise = _this.filterManager.getFilterComponent(column);\n                filterComponentPromise.then(function (filterComponent) {\n                    if (filterComponent.onFloatingFilterChanged) {\n                        //If going through this branch of code the user MUST\n                        //be passing an object of type change that contains\n                        //a model propery inside and some other stuff\n                        var result = filterComponent.onFloatingFilterChanged(change);\n                        captureModelChangedResolveFunc(result);\n                    }\n                    else {\n                        //If going through this branch of code the user MUST\n                        //be passing the plain model and delegating to ag-Grid\n                        //the responsibility to set the parent model and refresh\n                        //the filters\n                        filterComponent.setModel(change);\n                        _this.filterManager.onFilterChanged();\n                        captureModelChangedResolveFunc(true);\n                    }\n                });\n                return modelChanged.resolveNow(true, function (modelChanged) { return modelChanged; });\n            },\n            //This one might be overriden from the colDef\n            suppressFilterButton: false\n        };\n        return baseParams;\n    };\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], HeaderRowComp.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('gridApi'),\n        __metadata(\"design:type\", gridApi_1.GridApi)\n    ], HeaderRowComp.prototype, \"gridApi\", void 0);\n    __decorate([\n        context_1.Autowired('columnController'),\n        __metadata(\"design:type\", columnController_1.ColumnController)\n    ], HeaderRowComp.prototype, \"columnController\", void 0);\n    __decorate([\n        context_1.Autowired('context'),\n        __metadata(\"design:type\", context_1.Context)\n    ], HeaderRowComp.prototype, \"context\", void 0);\n    __decorate([\n        context_1.Autowired('eventService'),\n        __metadata(\"design:type\", eventService_1.EventService)\n    ], HeaderRowComp.prototype, \"eventService\", void 0);\n    __decorate([\n        context_1.Autowired('filterManager'),\n        __metadata(\"design:type\", filterManager_1.FilterManager)\n    ], HeaderRowComp.prototype, \"filterManager\", void 0);\n    __decorate([\n        context_1.Autowired('componentRecipes'),\n        __metadata(\"design:type\", componentRecipes_1.ComponentRecipes)\n    ], HeaderRowComp.prototype, \"componentRecipes\", void 0);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], HeaderRowComp.prototype, \"init\", null);\n    return HeaderRowComp;\n}(component_1.Component));\nexports.HeaderRowComp = HeaderRowComp;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/headerRendering/headerRowComp.js\n// module id = 312\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = require(\"../../widgets/component\");\nvar context_1 = require(\"../../context/context\");\nvar column_1 = require(\"../../entities/column\");\nvar utils_1 = require(\"../../utils\");\nvar dragAndDropService_1 = require(\"../../dragAndDrop/dragAndDropService\");\nvar columnController_1 = require(\"../../columnController/columnController\");\nvar horizontalDragService_1 = require(\"../horizontalDragService\");\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar cssClassApplier_1 = require(\"../cssClassApplier\");\nvar setLeftFeature_1 = require(\"../../rendering/features/setLeftFeature\");\nvar gridApi_1 = require(\"../../gridApi\");\nvar sortController_1 = require(\"../../sortController\");\nvar eventService_1 = require(\"../../eventService\");\nvar componentRecipes_1 = require(\"../../components/framework/componentRecipes\");\nvar agCheckbox_1 = require(\"../../widgets/agCheckbox\");\nvar componentAnnotations_1 = require(\"../../widgets/componentAnnotations\");\nvar selectAllFeature_1 = require(\"./selectAllFeature\");\nvar events_1 = require(\"../../events\");\nvar columnHoverService_1 = require(\"../../rendering/columnHoverService\");\nvar beans_1 = require(\"../../rendering/beans\");\nvar HeaderWrapperComp = (function (_super) {\n    __extends(HeaderWrapperComp, _super);\n    function HeaderWrapperComp(column, eRoot, dragSourceDropTarget, pinned) {\n        var _this = _super.call(this, HeaderWrapperComp.TEMPLATE) || this;\n        _this.column = column;\n        _this.eRoot = eRoot;\n        _this.dragSourceDropTarget = dragSourceDropTarget;\n        _this.pinned = pinned;\n        return _this;\n    }\n    HeaderWrapperComp.prototype.getColumn = function () {\n        return this.column;\n    };\n    HeaderWrapperComp.prototype.init = function () {\n        this.instantiate(this.context);\n        var displayName = this.columnController.getDisplayNameForColumn(this.column, 'header', true);\n        var enableSorting = this.gridOptionsWrapper.isEnableSorting() && !this.column.getColDef().suppressSorting;\n        var enableMenu = this.menuFactory.isMenuEnabled(this.column) && !this.column.getColDef().suppressMenu;\n        this.appendHeaderComp(displayName, enableSorting, enableMenu);\n        this.setupWidth();\n        this.setupMovingCss();\n        this.setupTooltip();\n        this.setupResize();\n        this.setupMenuClass();\n        this.setupSortableClass(enableSorting);\n        this.addColumnHoverListener();\n        this.addDestroyableEventListener(this.column, column_1.Column.EVENT_FILTER_ACTIVE_CHANGED, this.onFilterChanged.bind(this));\n        this.onFilterChanged();\n        this.addFeature(this.context, new selectAllFeature_1.SelectAllFeature(this.cbSelectAll, this.column));\n        var setLeftFeature = new setLeftFeature_1.SetLeftFeature(this.column, this.getGui(), this.beans);\n        setLeftFeature.init();\n        this.addDestroyFunc(setLeftFeature.destroy.bind(setLeftFeature));\n        this.addAttributes();\n        cssClassApplier_1.CssClassApplier.addHeaderClassesFromColDef(this.column.getColDef(), this.getGui(), this.gridOptionsWrapper, this.column, null);\n    };\n    HeaderWrapperComp.prototype.addColumnHoverListener = function () {\n        this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_COLUMN_HOVER_CHANGED, this.onColumnHover.bind(this));\n        this.onColumnHover();\n    };\n    HeaderWrapperComp.prototype.onColumnHover = function () {\n        var isHovered = this.columnHoverService.isHovered(this.column);\n        utils_1.Utils.addOrRemoveCssClass(this.getGui(), 'ag-column-hover', isHovered);\n    };\n    HeaderWrapperComp.prototype.setupSortableClass = function (enableSorting) {\n        if (enableSorting) {\n            var element = this.getGui();\n            utils_1.Utils.addCssClass(element, 'ag-header-cell-sortable');\n        }\n    };\n    HeaderWrapperComp.prototype.onFilterChanged = function () {\n        var filterPresent = this.column.isFilterActive();\n        utils_1.Utils.addOrRemoveCssClass(this.getGui(), 'ag-header-cell-filtered', filterPresent);\n    };\n    HeaderWrapperComp.prototype.appendHeaderComp = function (displayName, enableSorting, enableMenu) {\n        var _this = this;\n        var params = {\n            column: this.column,\n            displayName: displayName,\n            enableSorting: enableSorting,\n            enableMenu: enableMenu,\n            showColumnMenu: function (source) {\n                _this.gridApi.showColumnMenuAfterButtonClick(_this.column, source);\n            },\n            progressSort: function (multiSort) {\n                _this.sortController.progressSort(_this.column, !!multiSort);\n            },\n            setSort: function (sort, multiSort) {\n                _this.sortController.setSortForColumn(_this.column, sort, !!multiSort);\n            },\n            api: this.gridApi,\n            columnApi: this.columnApi,\n            context: this.gridOptionsWrapper.getContext()\n        };\n        var callback = this.afterHeaderCompCreated.bind(this, displayName);\n        this.componentRecipes.newHeaderComponent(params).then(callback);\n    };\n    HeaderWrapperComp.prototype.afterHeaderCompCreated = function (displayName, headerComp) {\n        this.appendChild(headerComp);\n        this.setupMove(headerComp.getGui(), displayName);\n        if (headerComp.destroy) {\n            this.addDestroyFunc(headerComp.destroy.bind(headerComp));\n        }\n    };\n    HeaderWrapperComp.prototype.onColumnMovingChanged = function () {\n        // this function adds or removes the moving css, based on if the col is moving.\n        // this is what makes the header go dark when it is been moved (gives impression to\n        // user that the column was picked up).\n        if (this.column.isMoving()) {\n            utils_1.Utils.addCssClass(this.getGui(), 'ag-header-cell-moving');\n        }\n        else {\n            utils_1.Utils.removeCssClass(this.getGui(), 'ag-header-cell-moving');\n        }\n    };\n    HeaderWrapperComp.prototype.setupMove = function (eHeaderCellLabel, displayName) {\n        var _this = this;\n        var suppressMove = this.gridOptionsWrapper.isSuppressMovableColumns()\n            || this.column.getColDef().suppressMovable\n            || this.gridOptionsWrapper.isForPrint();\n        if (suppressMove) {\n            return;\n        }\n        if (eHeaderCellLabel) {\n            var dragSource_1 = {\n                type: dragAndDropService_1.DragSourceType.HeaderCell,\n                eElement: eHeaderCellLabel,\n                dragItemCallback: function () { return _this.createDragItem(); },\n                dragItemName: displayName,\n                dragSourceDropTarget: this.dragSourceDropTarget\n            };\n            this.dragAndDropService.addDragSource(dragSource_1, true);\n            this.addDestroyFunc(function () { return _this.dragAndDropService.removeDragSource(dragSource_1); });\n        }\n    };\n    HeaderWrapperComp.prototype.createDragItem = function () {\n        var visibleState = {};\n        visibleState[this.column.getId()] = this.column.isVisible();\n        return {\n            columns: [this.column],\n            visibleState: visibleState\n        };\n    };\n    HeaderWrapperComp.prototype.setupResize = function () {\n        var _this = this;\n        var colDef = this.column.getColDef();\n        // if no eResize in template, do nothing\n        if (!this.eResize) {\n            return;\n        }\n        if (!this.column.isResizable()) {\n            utils_1.Utils.removeFromParent(this.eResize);\n            return;\n        }\n        this.horizontalDragService.addDragHandling({\n            eDraggableElement: this.eResize,\n            eBody: this.eRoot,\n            cursor: 'col-resize',\n            startAfterPixels: 0,\n            onDragStart: this.onDragStart.bind(this),\n            onDragging: this.onDragging.bind(this)\n        });\n        var weWantAutoSize = !this.gridOptionsWrapper.isSuppressAutoSize() && !colDef.suppressAutoSize;\n        if (weWantAutoSize) {\n            this.addDestroyableEventListener(this.eResize, 'dblclick', function () {\n                _this.columnController.autoSizeColumn(_this.column);\n            });\n        }\n    };\n    HeaderWrapperComp.prototype.onDragging = function (dragChange, finished) {\n        var dragChangeNormalised = this.normaliseDragChange(dragChange);\n        var newWidth = this.startWidth + dragChangeNormalised;\n        this.columnController.setColumnWidth(this.column, newWidth, finished);\n    };\n    HeaderWrapperComp.prototype.onDragStart = function () {\n        this.startWidth = this.column.getActualWidth();\n    };\n    HeaderWrapperComp.prototype.setupTooltip = function () {\n        var colDef = this.column.getColDef();\n        // add tooltip if exists\n        if (colDef.headerTooltip) {\n            this.getGui().title = colDef.headerTooltip;\n        }\n    };\n    HeaderWrapperComp.prototype.setupMovingCss = function () {\n        this.addDestroyableEventListener(this.column, column_1.Column.EVENT_MOVING_CHANGED, this.onColumnMovingChanged.bind(this));\n        this.onColumnMovingChanged();\n    };\n    HeaderWrapperComp.prototype.addAttributes = function () {\n        this.getGui().setAttribute(\"col-id\", this.column.getColId());\n    };\n    HeaderWrapperComp.prototype.setupWidth = function () {\n        this.addDestroyableEventListener(this.column, column_1.Column.EVENT_WIDTH_CHANGED, this.onColumnWidthChanged.bind(this));\n        this.onColumnWidthChanged();\n    };\n    HeaderWrapperComp.prototype.setupMenuClass = function () {\n        this.addDestroyableEventListener(this.column, column_1.Column.EVENT_MENU_VISIBLE_CHANGED, this.onMenuVisible.bind(this));\n        this.onColumnWidthChanged();\n    };\n    HeaderWrapperComp.prototype.onMenuVisible = function () {\n        this.addOrRemoveCssClass('ag-column-menu-visible', this.column.isMenuVisible());\n    };\n    HeaderWrapperComp.prototype.onColumnWidthChanged = function () {\n        this.getGui().style.width = this.column.getActualWidth() + 'px';\n    };\n    // optionally inverts the drag, depending on pinned and RTL\n    // note - this method is duplicated in RenderedHeaderGroupCell - should refactor out?\n    HeaderWrapperComp.prototype.normaliseDragChange = function (dragChange) {\n        var result = dragChange;\n        if (this.gridOptionsWrapper.isEnableRtl()) {\n            // for RTL, dragging left makes the col bigger, except when pinning left\n            if (this.pinned !== column_1.Column.PINNED_LEFT) {\n                result *= -1;\n            }\n        }\n        else {\n            // for LTR (ie normal), dragging left makes the col smaller, except when pinning right\n            if (this.pinned === column_1.Column.PINNED_RIGHT) {\n                result *= -1;\n            }\n        }\n        return result;\n    };\n    HeaderWrapperComp.TEMPLATE = '<div class=\"ag-header-cell\" role=\"presentation\" >' +\n        '<div ref=\"eResize\" class=\"ag-header-cell-resize\" role=\"presentation\"></div>' +\n        '<ag-checkbox ref=\"cbSelectAll\" class=\"ag-header-select-all\" role=\"presentation\"></ag-checkbox>' +\n        // <inner component goes here>\n        '</div>';\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], HeaderWrapperComp.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('dragAndDropService'),\n        __metadata(\"design:type\", dragAndDropService_1.DragAndDropService)\n    ], HeaderWrapperComp.prototype, \"dragAndDropService\", void 0);\n    __decorate([\n        context_1.Autowired('columnController'),\n        __metadata(\"design:type\", columnController_1.ColumnController)\n    ], HeaderWrapperComp.prototype, \"columnController\", void 0);\n    __decorate([\n        context_1.Autowired('horizontalDragService'),\n        __metadata(\"design:type\", horizontalDragService_1.HorizontalDragService)\n    ], HeaderWrapperComp.prototype, \"horizontalDragService\", void 0);\n    __decorate([\n        context_1.Autowired('context'),\n        __metadata(\"design:type\", context_1.Context)\n    ], HeaderWrapperComp.prototype, \"context\", void 0);\n    __decorate([\n        context_1.Autowired('menuFactory'),\n        __metadata(\"design:type\", Object)\n    ], HeaderWrapperComp.prototype, \"menuFactory\", void 0);\n    __decorate([\n        context_1.Autowired('gridApi'),\n        __metadata(\"design:type\", gridApi_1.GridApi)\n    ], HeaderWrapperComp.prototype, \"gridApi\", void 0);\n    __decorate([\n        context_1.Autowired('columnApi'),\n        __metadata(\"design:type\", columnController_1.ColumnApi)\n    ], HeaderWrapperComp.prototype, \"columnApi\", void 0);\n    __decorate([\n        context_1.Autowired('sortController'),\n        __metadata(\"design:type\", sortController_1.SortController)\n    ], HeaderWrapperComp.prototype, \"sortController\", void 0);\n    __decorate([\n        context_1.Autowired('eventService'),\n        __metadata(\"design:type\", eventService_1.EventService)\n    ], HeaderWrapperComp.prototype, \"eventService\", void 0);\n    __decorate([\n        context_1.Autowired('componentRecipes'),\n        __metadata(\"design:type\", componentRecipes_1.ComponentRecipes)\n    ], HeaderWrapperComp.prototype, \"componentRecipes\", void 0);\n    __decorate([\n        context_1.Autowired('columnHoverService'),\n        __metadata(\"design:type\", columnHoverService_1.ColumnHoverService)\n    ], HeaderWrapperComp.prototype, \"columnHoverService\", void 0);\n    __decorate([\n        context_1.Autowired('beans'),\n        __metadata(\"design:type\", beans_1.Beans)\n    ], HeaderWrapperComp.prototype, \"beans\", void 0);\n    __decorate([\n        componentAnnotations_1.RefSelector('eResize'),\n        __metadata(\"design:type\", HTMLElement)\n    ], HeaderWrapperComp.prototype, \"eResize\", void 0);\n    __decorate([\n        componentAnnotations_1.RefSelector('cbSelectAll'),\n        __metadata(\"design:type\", agCheckbox_1.AgCheckbox)\n    ], HeaderWrapperComp.prototype, \"cbSelectAll\", void 0);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], HeaderWrapperComp.prototype, \"init\", null);\n    return HeaderWrapperComp;\n}(component_1.Component));\nexports.HeaderWrapperComp = HeaderWrapperComp;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/headerRendering/header/headerWrapperComp.js\n// module id = 313\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dragAndDropService_1 = require(\"../dragAndDrop/dragAndDropService\");\nvar context_1 = require(\"../context/context\");\nvar moveColumnController_1 = require(\"./moveColumnController\");\nvar column_1 = require(\"../entities/column\");\nvar gridPanel_1 = require(\"../gridPanel/gridPanel\");\nvar bodyDropPivotTarget_1 = require(\"./bodyDropPivotTarget\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar BodyDropTarget = (function () {\n    function BodyDropTarget(pinned, eContainer) {\n        this.pinned = pinned;\n        this.eContainer = eContainer;\n    }\n    BodyDropTarget.prototype.getSecondaryContainers = function () {\n        return this.eSecondaryContainers;\n    };\n    BodyDropTarget.prototype.getContainer = function () {\n        return this.eContainer;\n    };\n    BodyDropTarget.prototype.init = function () {\n        this.moveColumnController = new moveColumnController_1.MoveColumnController(this.pinned, this.eContainer);\n        this.context.wireBean(this.moveColumnController);\n        this.bodyDropPivotTarget = new bodyDropPivotTarget_1.BodyDropPivotTarget(this.pinned);\n        this.context.wireBean(this.bodyDropPivotTarget);\n        switch (this.pinned) {\n            case column_1.Column.PINNED_LEFT:\n                this.eSecondaryContainers = this.gridPanel.getDropTargetLeftContainers();\n                break;\n            case column_1.Column.PINNED_RIGHT:\n                this.eSecondaryContainers = this.gridPanel.getDropTargetPinnedRightContainers();\n                break;\n            default:\n                this.eSecondaryContainers = this.gridPanel.getDropTargetBodyContainers();\n                break;\n        }\n        this.dragAndDropService.addDropTarget(this);\n    };\n    BodyDropTarget.prototype.getIconName = function () {\n        return this.currentDropListener.getIconName();\n    };\n    // we want to use the bodyPivotTarget if the user is dragging columns in from the toolPanel\n    // and we are in pivot mode, as it has to logic to set pivot/value/group on the columns when\n    // dropped into the grid's body.\n    BodyDropTarget.prototype.isUseBodyDropPivotTarget = function (draggingEvent) {\n        // if not in pivot mode, then we never use the pivot drop target\n        if (!this.columnController.isPivotMode()) {\n            return false;\n        }\n        // otherwise we use the drop target if the column came from the toolPanel (ie not reordering)\n        return draggingEvent.dragSource.type === dragAndDropService_1.DragSourceType.ToolPanel;\n    };\n    BodyDropTarget.prototype.onDragEnter = function (draggingEvent) {\n        // we pick the drop listener depending on whether we are in pivot mode are not. if we are\n        // in pivot mode, then dropping cols changes the row group, pivot, value stats. otherwise\n        // we change visibility state and position.\n        // if (this.columnController.isPivotMode()) {\n        var useBodyDropPivotTarget = this.isUseBodyDropPivotTarget(draggingEvent);\n        if (useBodyDropPivotTarget) {\n            this.currentDropListener = this.bodyDropPivotTarget;\n        }\n        else {\n            this.currentDropListener = this.moveColumnController;\n        }\n        this.currentDropListener.onDragEnter(draggingEvent);\n    };\n    BodyDropTarget.prototype.onDragLeave = function (params) {\n        this.currentDropListener.onDragLeave(params);\n    };\n    BodyDropTarget.prototype.onDragging = function (params) {\n        this.currentDropListener.onDragging(params);\n    };\n    BodyDropTarget.prototype.onDragStop = function (params) {\n        this.currentDropListener.onDragStop(params);\n    };\n    __decorate([\n        context_1.Autowired('context'),\n        __metadata(\"design:type\", context_1.Context)\n    ], BodyDropTarget.prototype, \"context\", void 0);\n    __decorate([\n        context_1.Autowired('gridPanel'),\n        __metadata(\"design:type\", gridPanel_1.GridPanel)\n    ], BodyDropTarget.prototype, \"gridPanel\", void 0);\n    __decorate([\n        context_1.Autowired('dragAndDropService'),\n        __metadata(\"design:type\", dragAndDropService_1.DragAndDropService)\n    ], BodyDropTarget.prototype, \"dragAndDropService\", void 0);\n    __decorate([\n        context_1.Autowired('columnController'),\n        __metadata(\"design:type\", columnController_1.ColumnController)\n    ], BodyDropTarget.prototype, \"columnController\", void 0);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], BodyDropTarget.prototype, \"init\", null);\n    return BodyDropTarget;\n}());\nexports.BodyDropTarget = BodyDropTarget;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/headerRendering/bodyDropTarget.js\n// module id = 314\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar logger_1 = require(\"../logger\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar column_1 = require(\"../entities/column\");\nvar utils_1 = require(\"../utils\");\nvar dragAndDropService_1 = require(\"../dragAndDrop/dragAndDropService\");\nvar gridPanel_1 = require(\"../gridPanel/gridPanel\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar MoveColumnController = (function () {\n    function MoveColumnController(pinned, eContainer) {\n        this.needToMoveLeft = false;\n        this.needToMoveRight = false;\n        this.pinned = pinned;\n        this.eContainer = eContainer;\n        this.centerContainer = !utils_1.Utils.exists(pinned);\n    }\n    MoveColumnController.prototype.init = function () {\n        this.logger = this.loggerFactory.create('MoveColumnController');\n    };\n    MoveColumnController.prototype.getIconName = function () {\n        return this.pinned ? dragAndDropService_1.DragAndDropService.ICON_PINNED : dragAndDropService_1.DragAndDropService.ICON_MOVE;\n    };\n    MoveColumnController.prototype.onDragEnter = function (draggingEvent) {\n        // we do dummy drag, so make sure column appears in the right location when first placed\n        var columns = draggingEvent.dragItem.columns;\n        var dragCameFromToolPanel = draggingEvent.dragSource.type === dragAndDropService_1.DragSourceType.ToolPanel;\n        if (dragCameFromToolPanel) {\n            // the if statement doesn't work if drag leaves grid, then enters again\n            this.columnController.setColumnsVisible(columns, true);\n        }\n        else {\n            // restore previous state of visible columns upon re-entering. this means if the user drags\n            // a group out, and then drags the group back in, only columns that were originally visible\n            // will be visible again. otherwise a group with three columns (but only two visible) could\n            // be dragged out, then when it's dragged in again, all three are visible. this stops that.\n            var visibleState_1 = draggingEvent.dragItem.visibleState;\n            var visibleColumns = columns.filter(function (column) { return visibleState_1[column.getId()]; });\n            this.columnController.setColumnsVisible(visibleColumns, true);\n        }\n        this.columnController.setColumnsPinned(columns, this.pinned);\n        this.onDragging(draggingEvent, true);\n    };\n    MoveColumnController.prototype.onDragLeave = function (draggingEvent) {\n        var hideColumnOnExit = !this.gridOptionsWrapper.isSuppressDragLeaveHidesColumns() && !draggingEvent.fromNudge;\n        if (hideColumnOnExit) {\n            var dragItem = draggingEvent.dragSource.dragItemCallback();\n            var columns = dragItem.columns;\n            this.columnController.setColumnsVisible(columns, false);\n        }\n        this.ensureIntervalCleared();\n    };\n    MoveColumnController.prototype.onDragStop = function () {\n        this.ensureIntervalCleared();\n    };\n    MoveColumnController.prototype.normaliseX = function (x) {\n        // flip the coordinate if doing RTL\n        var flipHorizontallyForRtl = this.gridOptionsWrapper.isEnableRtl();\n        if (flipHorizontallyForRtl) {\n            var clientWidth = this.eContainer.clientWidth;\n            x = clientWidth - x;\n        }\n        // adjust for scroll only if centre container (the pinned containers dont scroll)\n        var adjustForScroll = this.centerContainer;\n        if (adjustForScroll) {\n            x += this.gridPanel.getBodyViewportScrollLeft();\n        }\n        return x;\n    };\n    MoveColumnController.prototype.checkCenterForScrolling = function (xAdjustedForScroll) {\n        if (this.centerContainer) {\n            // scroll if the mouse has gone outside the grid (or just outside the scrollable part if pinning)\n            // putting in 50 buffer, so even if user gets to edge of grid, a scroll will happen\n            var firstVisiblePixel = this.gridPanel.getBodyViewportScrollLeft();\n            var lastVisiblePixel = firstVisiblePixel + this.gridPanel.getCenterWidth();\n            if (this.gridOptionsWrapper.isEnableRtl()) {\n                this.needToMoveRight = xAdjustedForScroll < (firstVisiblePixel + 50);\n                this.needToMoveLeft = xAdjustedForScroll > (lastVisiblePixel - 50);\n            }\n            else {\n                this.needToMoveLeft = xAdjustedForScroll < (firstVisiblePixel + 50);\n                this.needToMoveRight = xAdjustedForScroll > (lastVisiblePixel - 50);\n            }\n            if (this.needToMoveLeft || this.needToMoveRight) {\n                this.ensureIntervalStarted();\n            }\n            else {\n                this.ensureIntervalCleared();\n            }\n        }\n    };\n    MoveColumnController.prototype.onDragging = function (draggingEvent, fromEnter) {\n        if (fromEnter === void 0) { fromEnter = false; }\n        this.lastDraggingEvent = draggingEvent;\n        // if moving up or down (ie not left or right) then do nothing\n        if (utils_1.Utils.missing(draggingEvent.hDirection)) {\n            return;\n        }\n        var xNormalised = this.normaliseX(draggingEvent.x);\n        // if the user is dragging into the panel, ie coming from the side panel into the main grid,\n        // we don't want to scroll the grid this time, it would appear like the table is jumping\n        // each time a column is dragged in.\n        if (!fromEnter) {\n            this.checkCenterForScrolling(xNormalised);\n        }\n        var hDirectionNormalised = this.normaliseDirection(draggingEvent.hDirection);\n        var dragSourceType = draggingEvent.dragSource.type;\n        var columnsToMove = draggingEvent.dragSource.dragItemCallback().columns;\n        this.attemptMoveColumns(dragSourceType, columnsToMove, hDirectionNormalised, xNormalised, fromEnter);\n    };\n    MoveColumnController.prototype.normaliseDirection = function (hDirection) {\n        if (this.gridOptionsWrapper.isEnableRtl()) {\n            switch (hDirection) {\n                case dragAndDropService_1.HDirection.Left: return dragAndDropService_1.HDirection.Right;\n                case dragAndDropService_1.HDirection.Right: return dragAndDropService_1.HDirection.Left;\n                default: console.error(\"ag-Grid: Unknown direction \" + hDirection);\n            }\n        }\n        else {\n            return hDirection;\n        }\n    };\n    // returns the index of the first column in the list ONLY if the cols are all beside\n    // each other. if the cols are not beside each other, then returns null\n    MoveColumnController.prototype.calculateOldIndex = function (movingCols) {\n        var gridCols = this.columnController.getAllGridColumns();\n        var indexes = [];\n        movingCols.forEach(function (col) { return indexes.push(gridCols.indexOf(col)); });\n        utils_1.Utils.sortNumberArray(indexes);\n        var firstIndex = indexes[0];\n        var lastIndex = indexes[indexes.length - 1];\n        var spread = lastIndex - firstIndex;\n        var gapsExist = spread !== indexes.length - 1;\n        return gapsExist ? null : firstIndex;\n    };\n    MoveColumnController.prototype.attemptMoveColumns = function (dragSourceType, allMovingColumns, hDirection, xAdjusted, fromEnter) {\n        var draggingLeft = hDirection === dragAndDropService_1.HDirection.Left;\n        var draggingRight = hDirection === dragAndDropService_1.HDirection.Right;\n        var validMoves = this.calculateValidMoves(allMovingColumns, draggingRight, xAdjusted);\n        // if cols are not adjacent, then this returns null. when moving, we constrain the direction of the move\n        // (ie left or right) to the mouse direction. however\n        var oldIndex = this.calculateOldIndex(allMovingColumns);\n        // fromEnter = false;\n        for (var i = 0; i < validMoves.length; i++) {\n            var newIndex = validMoves[i];\n            // the two check below stop an error when the user grabs a group my a middle column, then\n            // it is possible the mouse pointer is to the right of a column while been dragged left.\n            // so we need to make sure that the mouse pointer is actually left of the left most column\n            // if moving left, and right of the right most column if moving right\n            // we check 'fromEnter' below so we move the column to the new spot if the mouse is coming from\n            // outside the grid, eg if the column is moving from side panel, mouse is moving left, then we should\n            // place the column to the RHS even if the mouse is moving left and the column is already on\n            // the LHS. otherwise we stick to the rule described above.\n            var constrainDirection = oldIndex !== null && !fromEnter;\n            // don't consider 'fromEnter' when dragging header cells, otherwise group can jump to opposite direction of drag\n            if (dragSourceType == dragAndDropService_1.DragSourceType.HeaderCell) {\n                constrainDirection = oldIndex !== null;\n            }\n            if (constrainDirection) {\n                // only allow left drag if this column is moving left\n                if (draggingLeft && newIndex >= oldIndex) {\n                    continue;\n                }\n                // only allow right drag if this column is moving right\n                if (draggingRight && newIndex <= oldIndex) {\n                    continue;\n                }\n            }\n            if (!this.columnController.doesMovePassRules(allMovingColumns, newIndex)) {\n                continue;\n            }\n            this.columnController.moveColumns(allMovingColumns, newIndex);\n            // important to return here, so once we do the first valid move, we don't try do any more\n            return;\n        }\n    };\n    MoveColumnController.prototype.calculateValidMoves = function (movingCols, draggingRight, x) {\n        // this is the list of cols on the screen, so it's these we use when comparing the x mouse position\n        var allDisplayedCols = this.columnController.getDisplayedColumns(this.pinned);\n        // but this list is the list of all cols, when we move a col it's the index within this list that gets used,\n        // so the result we return has to be and index location for this list\n        var allGridCols = this.columnController.getAllGridColumns();\n        var colIsMovingFunc = function (col) { return movingCols.indexOf(col) >= 0; };\n        var colIsNotMovingFunc = function (col) { return movingCols.indexOf(col) < 0; };\n        var movingDisplayedCols = allDisplayedCols.filter(colIsMovingFunc);\n        var otherDisplayedCols = allDisplayedCols.filter(colIsNotMovingFunc);\n        var otherGridCols = allGridCols.filter(colIsNotMovingFunc);\n        // work out how many DISPLAYED columns fit before the 'x' position. this gives us the displayIndex.\n        // for example, if cols are a,b,c,d and we find a,b fit before 'x', then we want to place the moving\n        // col between b and c (so that it is under the mouse position).\n        var displayIndex = 0;\n        var availableWidth = x;\n        // if we are dragging right, then the columns will be to the left of the mouse, so we also want to\n        // include the width of the moving columns\n        if (draggingRight) {\n            var widthOfMovingDisplayedCols_1 = 0;\n            movingDisplayedCols.forEach(function (col) { return widthOfMovingDisplayedCols_1 += col.getActualWidth(); });\n            availableWidth -= widthOfMovingDisplayedCols_1;\n        }\n        // now count how many of the displayed columns will fit to the left\n        for (var i = 0; i < otherDisplayedCols.length; i++) {\n            var col = otherDisplayedCols[i];\n            availableWidth -= col.getActualWidth();\n            if (availableWidth < 0) {\n                break;\n            }\n            displayIndex++;\n        }\n        // trial and error, if going right, we adjust by one, i didn't manage to quantify why, but it works\n        if (draggingRight) {\n            displayIndex++;\n        }\n        // the display index is with respect to all the showing columns, however when we move, it's with\n        // respect to all grid columns, so we need to translate from display index to grid index\n        var gridColIndex;\n        if (displayIndex > 0) {\n            var leftColumn = otherDisplayedCols[displayIndex - 1];\n            gridColIndex = otherGridCols.indexOf(leftColumn) + 1;\n        }\n        else {\n            gridColIndex = 0;\n        }\n        var validMoves = [gridColIndex];\n        // add in all adjacent empty columns as other valid moves. this allows us to try putting the new\n        // column in any place of a hidden column, to try different combinations so that we don't break\n        // married children. in other words, maybe the new index breaks a group, but only because some\n        // columns are hidden, maybe we can reshuffle the hidden columns to find a place that works.\n        var nextCol = allGridCols[gridColIndex];\n        while (utils_1.Utils.exists(nextCol) && this.isColumnHidden(allDisplayedCols, nextCol)) {\n            gridColIndex++;\n            validMoves.push(gridColIndex);\n            nextCol = allGridCols[gridColIndex];\n        }\n        return validMoves;\n    };\n    // isHidden takes into account visible=false and group=closed, ie it is not displayed\n    MoveColumnController.prototype.isColumnHidden = function (displayedColumns, col) {\n        return displayedColumns.indexOf(col) < 0;\n    };\n    MoveColumnController.prototype.ensureIntervalStarted = function () {\n        if (!this.movingIntervalId) {\n            this.intervalCount = 0;\n            this.failedMoveAttempts = 0;\n            this.movingIntervalId = setInterval(this.moveInterval.bind(this), 100);\n            if (this.needToMoveLeft) {\n                this.dragAndDropService.setGhostIcon(dragAndDropService_1.DragAndDropService.ICON_LEFT, true);\n            }\n            else {\n                this.dragAndDropService.setGhostIcon(dragAndDropService_1.DragAndDropService.ICON_RIGHT, true);\n            }\n        }\n    };\n    MoveColumnController.prototype.ensureIntervalCleared = function () {\n        if (this.moveInterval) {\n            clearInterval(this.movingIntervalId);\n            this.movingIntervalId = null;\n            this.dragAndDropService.setGhostIcon(dragAndDropService_1.DragAndDropService.ICON_MOVE);\n        }\n    };\n    MoveColumnController.prototype.moveInterval = function () {\n        var pixelsToMove;\n        this.intervalCount++;\n        pixelsToMove = 10 + (this.intervalCount * 5);\n        if (pixelsToMove > 100) {\n            pixelsToMove = 100;\n        }\n        var pixelsMoved;\n        if (this.needToMoveLeft) {\n            pixelsMoved = this.gridPanel.scrollHorizontally(-pixelsToMove);\n        }\n        else if (this.needToMoveRight) {\n            pixelsMoved = this.gridPanel.scrollHorizontally(pixelsToMove);\n        }\n        if (pixelsMoved !== 0) {\n            this.onDragging(this.lastDraggingEvent);\n            this.failedMoveAttempts = 0;\n        }\n        else {\n            this.failedMoveAttempts++;\n            this.dragAndDropService.setGhostIcon(dragAndDropService_1.DragAndDropService.ICON_PINNED);\n            if (this.failedMoveAttempts > 7) {\n                var columns = this.lastDraggingEvent.dragItem.columns;\n                var pinType = this.needToMoveLeft ? column_1.Column.PINNED_LEFT : column_1.Column.PINNED_RIGHT;\n                this.columnController.setColumnsPinned(columns, pinType);\n                this.dragAndDropService.nudge();\n            }\n        }\n    };\n    __decorate([\n        context_1.Autowired('loggerFactory'),\n        __metadata(\"design:type\", logger_1.LoggerFactory)\n    ], MoveColumnController.prototype, \"loggerFactory\", void 0);\n    __decorate([\n        context_1.Autowired('columnController'),\n        __metadata(\"design:type\", columnController_1.ColumnController)\n    ], MoveColumnController.prototype, \"columnController\", void 0);\n    __decorate([\n        context_1.Autowired('gridPanel'),\n        __metadata(\"design:type\", gridPanel_1.GridPanel)\n    ], MoveColumnController.prototype, \"gridPanel\", void 0);\n    __decorate([\n        context_1.Autowired('dragAndDropService'),\n        __metadata(\"design:type\", dragAndDropService_1.DragAndDropService)\n    ], MoveColumnController.prototype, \"dragAndDropService\", void 0);\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], MoveColumnController.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], MoveColumnController.prototype, \"init\", null);\n    return MoveColumnController;\n}());\nexports.MoveColumnController = MoveColumnController;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/headerRendering/moveColumnController.js\n// module id = 315\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dragAndDropService_1 = require(\"../dragAndDrop/dragAndDropService\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar BodyDropPivotTarget = (function () {\n    function BodyDropPivotTarget(pinned) {\n        this.columnsToAggregate = [];\n        this.columnsToGroup = [];\n        this.columnsToPivot = [];\n        this.pinned = pinned;\n    }\n    /** Callback for when drag enters */\n    BodyDropPivotTarget.prototype.onDragEnter = function (draggingEvent) {\n        var _this = this;\n        this.clearColumnsList();\n        // in pivot mode, we don't accept any drops if functions are read only\n        if (this.gridOptionsWrapper.isFunctionsReadOnly()) {\n            return;\n        }\n        var dragColumns = draggingEvent.dragItem.columns;\n        dragColumns.forEach(function (column) {\n            // we don't allow adding secondary columns\n            if (!column.isPrimary()) {\n                return;\n            }\n            if (column.isAnyFunctionActive()) {\n                return;\n            }\n            if (column.isAllowValue()) {\n                _this.columnsToAggregate.push(column);\n            }\n            else if (column.isAllowRowGroup()) {\n                _this.columnsToGroup.push(column);\n            }\n            else if (column.isAllowRowGroup()) {\n                _this.columnsToPivot.push(column);\n            }\n        });\n    };\n    BodyDropPivotTarget.prototype.getIconName = function () {\n        var totalColumns = this.columnsToAggregate.length + this.columnsToGroup.length + this.columnsToPivot.length;\n        if (totalColumns > 0) {\n            return this.pinned ? dragAndDropService_1.DragAndDropService.ICON_PINNED : dragAndDropService_1.DragAndDropService.ICON_MOVE;\n        }\n        else {\n            return null;\n        }\n    };\n    /** Callback for when drag leaves */\n    BodyDropPivotTarget.prototype.onDragLeave = function (draggingEvent) {\n        // if we are taking columns out of the center, then we remove them from the report\n        this.clearColumnsList();\n    };\n    BodyDropPivotTarget.prototype.clearColumnsList = function () {\n        this.columnsToAggregate.length = 0;\n        this.columnsToGroup.length = 0;\n        this.columnsToPivot.length = 0;\n    };\n    /** Callback for when dragging */\n    BodyDropPivotTarget.prototype.onDragging = function (draggingEvent) {\n    };\n    /** Callback for when drag stops */\n    BodyDropPivotTarget.prototype.onDragStop = function (draggingEvent) {\n        if (this.columnsToAggregate.length > 0) {\n            this.columnController.addValueColumns(this.columnsToAggregate);\n        }\n        if (this.columnsToGroup.length > 0) {\n            this.columnController.addRowGroupColumns(this.columnsToGroup);\n        }\n        if (this.columnsToPivot.length > 0) {\n            this.columnController.addPivotColumns(this.columnsToPivot);\n        }\n    };\n    __decorate([\n        context_1.Autowired('columnController'),\n        __metadata(\"design:type\", columnController_1.ColumnController)\n    ], BodyDropPivotTarget.prototype, \"columnController\", void 0);\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], BodyDropPivotTarget.prototype, \"gridOptionsWrapper\", void 0);\n    return BodyDropPivotTarget;\n}());\nexports.BodyDropPivotTarget = BodyDropPivotTarget;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/headerRendering/bodyDropPivotTarget.js\n// module id = 316\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar column_1 = require(\"../entities/column\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar utils_1 = require(\"../utils\");\nvar columnController_1 = require(\"./columnController\");\nvar AutoGroupColService = (function () {\n    function AutoGroupColService() {\n    }\n    AutoGroupColService_1 = AutoGroupColService;\n    AutoGroupColService.prototype.createAutoGroupColumns = function (rowGroupColumns) {\n        var _this = this;\n        var groupAutoColumns = [];\n        var doingTreeData = this.gridOptionsWrapper.isTreeData();\n        var doingMultiAutoColumn = this.gridOptionsWrapper.isGroupMultiAutoColumn();\n        if (doingTreeData && doingMultiAutoColumn) {\n            console.log('ag-Grid: you cannot mix groupMultiAutoColumn with treeData, only one column can be used to display groups when doing tree data');\n            doingMultiAutoColumn = false;\n        }\n        // if doing groupMultiAutoColumn, then we call the method multiple times, once\n        // for each column we are grouping by\n        if (doingMultiAutoColumn) {\n            rowGroupColumns.forEach(function (rowGroupCol, index) {\n                groupAutoColumns.push(_this.createOneAutoGroupColumn(rowGroupCol, index));\n            });\n        }\n        else {\n            groupAutoColumns.push(this.createOneAutoGroupColumn(null));\n        }\n        return groupAutoColumns;\n    };\n    // rowGroupCol and index are missing if groupMultiAutoColumn=false\n    AutoGroupColService.prototype.createOneAutoGroupColumn = function (rowGroupCol, index) {\n        // if one provided by user, use it, otherwise create one\n        var defaultAutoColDef = this.generateDefaultColDef(rowGroupCol, index);\n        var userAutoColDef = this.gridOptionsWrapper.getAutoGroupColumnDef();\n        // if doing multi, set the field\n        var colId;\n        if (rowGroupCol) {\n            colId = AutoGroupColService_1.GROUP_AUTO_COLUMN_ID + \"-\" + rowGroupCol.getId();\n        }\n        else {\n            colId = AutoGroupColService_1.GROUP_AUTO_COLUMN_BUNDLE_ID;\n        }\n        utils_1._.mergeDeep(defaultAutoColDef, userAutoColDef);\n        defaultAutoColDef.colId = colId;\n        var noUserFilterPreferences = userAutoColDef == null || userAutoColDef.suppressFilter == null;\n        if (noUserFilterPreferences && !this.gridOptionsWrapper.isTreeData()) {\n            var produceLeafNodeValues = defaultAutoColDef.field != null || defaultAutoColDef.valueGetter != null;\n            defaultAutoColDef.suppressFilter = !produceLeafNodeValues;\n        }\n        // if showing many cols, we don't want to show more than one with a checkbox for selection\n        if (index > 0) {\n            defaultAutoColDef.headerCheckboxSelection = false;\n        }\n        var newCol = new column_1.Column(defaultAutoColDef, colId, true);\n        this.context.wireBean(newCol);\n        return newCol;\n    };\n    AutoGroupColService.prototype.generateDefaultColDef = function (rowGroupCol, index) {\n        var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n        var defaultAutoColDef = {\n            headerName: localeTextFunc('group', 'Group'),\n            cellRenderer: 'agGroupCellRenderer'\n        };\n        // we never allow moving the group column\n        defaultAutoColDef.suppressMovable = true;\n        if (rowGroupCol) {\n            var rowGroupColDef = rowGroupCol.getColDef();\n            utils_1._.assign(defaultAutoColDef, {\n                // cellRendererParams.groupKey: colDefToCopy.field;\n                headerName: this.columnController.getDisplayNameForColumn(rowGroupCol, 'header'),\n                headerValueGetter: rowGroupColDef.headerValueGetter\n            });\n            if (rowGroupColDef.cellRenderer) {\n                utils_1._.assign(defaultAutoColDef, {\n                    cellRendererParams: {\n                        innerRenderer: rowGroupColDef.cellRenderer,\n                        innerRendererParams: rowGroupColDef.cellRendererParams\n                    }\n                });\n            }\n            defaultAutoColDef.showRowGroup = rowGroupCol.getColId();\n        }\n        else {\n            defaultAutoColDef.showRowGroup = true;\n        }\n        return defaultAutoColDef;\n    };\n    AutoGroupColService.GROUP_AUTO_COLUMN_ID = 'ag-Grid-AutoColumn';\n    AutoGroupColService.GROUP_AUTO_COLUMN_BUNDLE_ID = AutoGroupColService_1.GROUP_AUTO_COLUMN_ID;\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], AutoGroupColService.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('context'),\n        __metadata(\"design:type\", context_1.Context)\n    ], AutoGroupColService.prototype, \"context\", void 0);\n    __decorate([\n        context_1.Autowired('columnController'),\n        __metadata(\"design:type\", columnController_1.ColumnController)\n    ], AutoGroupColService.prototype, \"columnController\", void 0);\n    AutoGroupColService = AutoGroupColService_1 = __decorate([\n        context_1.Bean('autoGroupColService')\n    ], AutoGroupColService);\n    return AutoGroupColService;\n    var AutoGroupColService_1;\n}());\nexports.AutoGroupColService = AutoGroupColService;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/columnController/autoGroupColService.js\n// module id = 317\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../../context/context\");\nvar constants_1 = require(\"../../constants\");\nvar utils_1 = require(\"../../utils\");\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar ImmutableService = (function () {\n    function ImmutableService() {\n    }\n    ImmutableService.prototype.postConstruct = function () {\n        if (this.rowModel.getType() === constants_1.Constants.ROW_MODEL_TYPE_IN_MEMORY) {\n            this.inMemoryRowModel = this.rowModel;\n        }\n    };\n    // converts the setRowData() command to a transaction\n    ImmutableService.prototype.createTransactionForRowData = function (data) {\n        if (utils_1._.missing(this.inMemoryRowModel)) {\n            console.error('ag-Grid: ImmutableService only works with InMemoryRowModel');\n            return;\n        }\n        var getRowNodeIdFunc = this.gridOptionsWrapper.getRowNodeIdFunc();\n        if (utils_1._.missing(getRowNodeIdFunc)) {\n            console.error('ag-Grid: ImmutableService requires getRowNodeId() callback to be implemented, your row data need IDs!');\n            return;\n        }\n        // convert the data into a transaction object by working out adds, removes and updates\n        var transaction = {\n            remove: [],\n            update: [],\n            add: []\n        };\n        var existingNodesMap = this.inMemoryRowModel.getCopyOfNodesMap();\n        var orderMap = {};\n        if (utils_1._.exists(data)) {\n            // split all the new data in the following:\n            // if new, push to 'add'\n            // if update, push to 'update'\n            // if not changed, do not include in the transaction\n            data.forEach(function (dataItem, index) {\n                var id = getRowNodeIdFunc(dataItem);\n                var existingNode = existingNodesMap[id];\n                orderMap[id] = index;\n                if (existingNode) {\n                    var dataHasChanged = existingNode.data !== dataItem;\n                    if (dataHasChanged) {\n                        transaction.update.push(dataItem);\n                    }\n                    // otherwise, if data not changed, we just don't include it anywhere, as it's not a delta\n                    // remove from list, so we know the item is not to be removed\n                    existingNodesMap[id] = undefined;\n                }\n                else {\n                    transaction.add.push(dataItem);\n                }\n            });\n        }\n        // at this point, all rows that are left, should be removed\n        utils_1._.iterateObject(existingNodesMap, function (id, rowNode) {\n            if (rowNode) {\n                transaction.remove.push(rowNode.data);\n            }\n        });\n        return [transaction, orderMap];\n    };\n    __decorate([\n        context_1.Autowired('rowModel'),\n        __metadata(\"design:type\", Object)\n    ], ImmutableService.prototype, \"rowModel\", void 0);\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], ImmutableService.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], ImmutableService.prototype, \"postConstruct\", null);\n    ImmutableService = __decorate([\n        context_1.Bean('immutableService')\n    ], ImmutableService);\n    return ImmutableService;\n}());\nexports.ImmutableService = ImmutableService;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rowModels/inMemory/immutableService.js\n// module id = 318\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// class returns a unique id to use for the column. it checks the existing columns, and if the requested\n// id is already taken, it will start appending numbers until it gets a unique id.\n// eg, if the col field is 'name', it will try ids: {name, name_1, name_2...}\n// if no field or id provided in the col, it will try the ids of natural numbers\nvar utils_1 = require(\"../utils\");\nvar ColumnKeyCreator = (function () {\n    function ColumnKeyCreator() {\n        this.existingKeys = [];\n    }\n    ColumnKeyCreator.prototype.getUniqueKey = function (colId, colField) {\n        // in case user passed in number for colId, convert to string\n        colId = utils_1.Utils.toStringOrNull(colId);\n        var count = 0;\n        while (true) {\n            var idToTry = void 0;\n            if (colId) {\n                idToTry = colId;\n                if (count !== 0) {\n                    idToTry += '_' + count;\n                }\n            }\n            else if (colField) {\n                idToTry = colField;\n                if (count !== 0) {\n                    idToTry += '_' + count;\n                }\n            }\n            else {\n                idToTry = '' + count;\n            }\n            if (this.existingKeys.indexOf(idToTry) < 0) {\n                this.existingKeys.push(idToTry);\n                return idToTry;\n            }\n            count++;\n        }\n    };\n    return ColumnKeyCreator;\n}());\nexports.ColumnKeyCreator = ColumnKeyCreator;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/columnController/columnKeyCreator.js\n// module id = 319\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar filterManager_1 = require(\"../filter/filterManager\");\nvar utils_1 = require(\"../utils\");\nvar popupService_1 = require(\"../widgets/popupService\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar eventService_1 = require(\"../eventService\");\nvar StandardMenuFactory = (function () {\n    function StandardMenuFactory() {\n    }\n    StandardMenuFactory.prototype.showMenuAfterMouseEvent = function (column, mouseEvent) {\n        var _this = this;\n        this.showPopup(column, function (eMenu) {\n            _this.popupService.positionPopupUnderMouseEvent({\n                column: column,\n                type: 'columnMenu',\n                mouseEvent: mouseEvent,\n                ePopup: eMenu\n            });\n        });\n    };\n    StandardMenuFactory.prototype.showMenuAfterButtonClick = function (column, eventSource) {\n        var _this = this;\n        this.showPopup(column, function (eMenu) {\n            _this.popupService.positionPopupUnderComponent({ type: 'columnMenu', eventSource: eventSource,\n                ePopup: eMenu, keepWithinBounds: true, column: column });\n        });\n    };\n    StandardMenuFactory.prototype.showPopup = function (column, positionCallback) {\n        var _this = this;\n        var filterWrapper = this.filterManager.getOrCreateFilterWrapper(column);\n        var eMenu = document.createElement('div');\n        utils_1.Utils.addCssClass(eMenu, 'ag-menu');\n        filterWrapper.guiPromise.promise.then(function (gui) {\n            eMenu.appendChild(gui);\n        });\n        var hidePopup;\n        var bodyScrollListener = function (event) {\n            // if h scroll, popup is no longer over the column\n            if (event.direction === 'horizontal') {\n                hidePopup();\n            }\n        };\n        this.eventService.addEventListener('bodyScroll', bodyScrollListener);\n        var closedCallback = function () {\n            _this.eventService.removeEventListener('bodyScroll', bodyScrollListener);\n            column.setMenuVisible(false);\n        };\n        // need to show filter before positioning, as only after filter\n        // is visible can we find out what the width of it is\n        hidePopup = this.popupService.addAsModalPopup(eMenu, true, closedCallback);\n        positionCallback(eMenu);\n        filterWrapper.filterPromise.then(function (filter) {\n            if (filter.afterGuiAttached) {\n                var params = {\n                    hidePopup: hidePopup\n                };\n                filter.afterGuiAttached(params);\n            }\n        });\n        column.setMenuVisible(true);\n    };\n    StandardMenuFactory.prototype.isMenuEnabled = function (column) {\n        // for standard, we show menu if filter is enabled, and he menu is not suppressed\n        return this.gridOptionsWrapper.isEnableFilter() && column.isFilterAllowed();\n    };\n    __decorate([\n        context_1.Autowired('eventService'),\n        __metadata(\"design:type\", eventService_1.EventService)\n    ], StandardMenuFactory.prototype, \"eventService\", void 0);\n    __decorate([\n        context_1.Autowired('filterManager'),\n        __metadata(\"design:type\", filterManager_1.FilterManager)\n    ], StandardMenuFactory.prototype, \"filterManager\", void 0);\n    __decorate([\n        context_1.Autowired('popupService'),\n        __metadata(\"design:type\", popupService_1.PopupService)\n    ], StandardMenuFactory.prototype, \"popupService\", void 0);\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], StandardMenuFactory.prototype, \"gridOptionsWrapper\", void 0);\n    StandardMenuFactory = __decorate([\n        context_1.Bean('menuFactory')\n    ], StandardMenuFactory);\n    return StandardMenuFactory;\n}());\nexports.StandardMenuFactory = StandardMenuFactory;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/headerRendering/standardMenu.js\n// module id = 320\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../../context/context\");\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar filterService_1 = require(\"../../rowNodes/filterService\");\nvar FilterStage = (function () {\n    function FilterStage() {\n    }\n    FilterStage.prototype.execute = function (params) {\n        var rowNode = params.rowNode;\n        if (this.gridOptionsWrapper.isEnableServerSideFilter()) {\n            this.filterService.filter(rowNode, false);\n        }\n        else {\n            this.filterService.filterAccordingToColumnState(rowNode);\n        }\n    };\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], FilterStage.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('filterService'),\n        __metadata(\"design:type\", filterService_1.FilterService)\n    ], FilterStage.prototype, \"filterService\", void 0);\n    FilterStage = __decorate([\n        context_1.Bean('filterStage')\n    ], FilterStage);\n    return FilterStage;\n}());\nexports.FilterStage = FilterStage;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rowModels/inMemory/filterStage.js\n// module id = 321\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar filterManager_1 = require(\"../filter/filterManager\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar FilterService = (function () {\n    function FilterService() {\n    }\n    FilterService.prototype.postConstruct = function () {\n        this.doingTreeData = this.gridOptionsWrapper.isTreeData();\n    };\n    FilterService.prototype.filterAccordingToColumnState = function (rowNode) {\n        var filterActive = this.filterManager.isAnyFilterPresent();\n        this.filter(rowNode, filterActive);\n    };\n    FilterService.prototype.filter = function (rowNode, filterActive) {\n        var _this = this;\n        // recursively get all children that are groups to also filter\n        if (rowNode.hasChildren()) {\n            rowNode.childrenAfterGroup.forEach(function (node) { return _this.filter(node, filterActive); });\n            // result of filter for this node\n            if (filterActive) {\n                rowNode.childrenAfterFilter = rowNode.childrenAfterGroup.filter(function (childNode) {\n                    // a group is included in the result if it has any children of it's own.\n                    // by this stage, the child groups are already filtered\n                    var passBecauseChildren = childNode.childrenAfterFilter && childNode.childrenAfterFilter.length > 0;\n                    // both leaf level nodes and tree data nodes have data. these get added if\n                    // the data passes the filter\n                    var passBecauseDataPasses = childNode.data && _this.filterManager.doesRowPassFilter(childNode);\n                    // note - tree data nodes pass either if a) they pass themselves or b) any children of that node pass\n                    return passBecauseChildren || passBecauseDataPasses;\n                });\n            }\n            else {\n                // if not filtering, the result is the original list\n                rowNode.childrenAfterFilter = rowNode.childrenAfterGroup;\n            }\n            this.setAllChildrenCount(rowNode);\n        }\n        else {\n            rowNode.childrenAfterFilter = rowNode.childrenAfterGroup;\n            rowNode.setAllChildrenCount(null);\n        }\n    };\n    FilterService.prototype.setAllChildrenCountTreeData = function (rowNode) {\n        // for tree data, we include all children, groups and leafs\n        var allChildrenCount = 0;\n        rowNode.childrenAfterFilter.forEach(function (child) {\n            // include child itself\n            allChildrenCount++;\n            // include children of children\n            allChildrenCount += child.allChildrenCount;\n        });\n        rowNode.setAllChildrenCount(allChildrenCount);\n    };\n    FilterService.prototype.setAllChildrenCountGridGrouping = function (rowNode) {\n        // for grid data, we only count the leafs\n        var allChildrenCount = 0;\n        rowNode.childrenAfterFilter.forEach(function (child) {\n            if (child.group) {\n                allChildrenCount += child.allChildrenCount;\n            }\n            else {\n                allChildrenCount++;\n            }\n        });\n        rowNode.setAllChildrenCount(allChildrenCount);\n    };\n    FilterService.prototype.setAllChildrenCount = function (rowNode) {\n        if (this.doingTreeData) {\n            this.setAllChildrenCountTreeData(rowNode);\n        }\n        else {\n            this.setAllChildrenCountGridGrouping(rowNode);\n        }\n    };\n    __decorate([\n        context_1.Autowired('filterManager'),\n        __metadata(\"design:type\", filterManager_1.FilterManager)\n    ], FilterService.prototype, \"filterManager\", void 0);\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], FilterService.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], FilterService.prototype, \"postConstruct\", null);\n    FilterService = __decorate([\n        context_1.Bean(\"filterService\")\n    ], FilterService);\n    return FilterService;\n}());\nexports.FilterService = FilterService;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rowNodes/filterService.js\n// module id = 322\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../../context/context\");\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar sortService_1 = require(\"../../rowNodes/sortService\");\nvar SortStage = (function () {\n    function SortStage() {\n    }\n    SortStage.prototype.execute = function (params) {\n        // if the sorting is already done by the server, then we should not do it here\n        if (this.gridOptionsWrapper.isEnableServerSideSorting()) {\n            this.sortService.sort(params.rowNode, null);\n        }\n        else {\n            this.sortService.sortAccordingToColumnsState(params.rowNode);\n        }\n    };\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], SortStage.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('sortService'),\n        __metadata(\"design:type\", sortService_1.SortService)\n    ], SortStage.prototype, \"sortService\", void 0);\n    SortStage = __decorate([\n        context_1.Bean('sortStage')\n    ], SortStage);\n    return SortStage;\n}());\nexports.SortStage = SortStage;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rowModels/inMemory/sortStage.js\n// module id = 323\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar sortController_1 = require(\"../sortController\");\nvar utils_1 = require(\"../utils\");\nvar valueService_1 = require(\"../valueService/valueService\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar SortService = (function () {\n    function SortService() {\n    }\n    SortService.prototype.sortAccordingToColumnsState = function (rowNode) {\n        var sortOptions = this.sortController.getSortForRowController();\n        this.sort(rowNode, sortOptions);\n    };\n    SortService.prototype.sort = function (rowNode, sortOptions) {\n        var _this = this;\n        rowNode.childrenAfterSort = rowNode.childrenAfterFilter.slice(0);\n        // we clear out the 'pull down open parents' first, as the values mix up the sorting\n        this.pullDownDataForHideOpenParents(rowNode, true);\n        var sortActive = utils_1._.exists(sortOptions) && sortOptions.length > 0;\n        if (sortActive) {\n            // RE https://ag-grid.atlassian.net/browse/AG-444\n            //Javascript sort is non deterministic when all the array items are equals\n            //ie Comparator always returns 0, so if you want to ensure the array keeps its\n            //order, then you need to add an additional sorting condition manually, in this\n            //case we are going to inspect the original array position\n            var sortedRowNodes = rowNode.childrenAfterSort.map(function (it, pos) {\n                return { currentPos: pos, rowNode: it };\n            });\n            sortedRowNodes.sort(this.compareRowNodes.bind(this, sortOptions));\n            rowNode.childrenAfterSort = sortedRowNodes.map(function (sorted) { return sorted.rowNode; });\n        }\n        this.updateChildIndexes(rowNode);\n        this.pullDownDataForHideOpenParents(rowNode, false);\n        // sort any groups recursively\n        rowNode.childrenAfterFilter.forEach(function (child) {\n            if (child.hasChildren()) {\n                _this.sort(child, sortOptions);\n            }\n        });\n    };\n    SortService.prototype.compareRowNodes = function (sortOptions, sortedNodeA, sortedNodeB) {\n        var nodeA = sortedNodeA.rowNode;\n        var nodeB = sortedNodeB.rowNode;\n        // Iterate columns, return the first that doesn't match\n        for (var i = 0, len = sortOptions.length; i < len; i++) {\n            var sortOption = sortOptions[i];\n            // let compared = compare(nodeA, nodeB, sortOption.column, sortOption.inverter === -1);\n            var isInverted = sortOption.inverter === -1;\n            var valueA = this.getValue(nodeA, sortOption.column);\n            var valueB = this.getValue(nodeB, sortOption.column);\n            var comparatorResult = void 0;\n            if (sortOption.column.getColDef().comparator) {\n                //if comparator provided, use it\n                comparatorResult = sortOption.column.getColDef().comparator(valueA, valueB, nodeA, nodeB, isInverted);\n            }\n            else {\n                //otherwise do our own comparison\n                comparatorResult = utils_1._.defaultComparator(valueA, valueB, this.gridOptionsWrapper.isAccentedSort());\n            }\n            if (comparatorResult !== 0) {\n                return comparatorResult * sortOption.inverter;\n            }\n        }\n        // All matched, we make is so that the original sort order is kept:\n        return sortedNodeA.currentPos - sortedNodeB.currentPos;\n    };\n    SortService.prototype.getValue = function (nodeA, column) {\n        return this.valueService.getValue(column, nodeA);\n    };\n    SortService.prototype.updateChildIndexes = function (rowNode) {\n        if (utils_1._.missing(rowNode.childrenAfterSort)) {\n            return;\n        }\n        rowNode.childrenAfterSort.forEach(function (child, index) {\n            var firstChild = index === 0;\n            var lastChild = index === rowNode.childrenAfterSort.length - 1;\n            child.setFirstChild(firstChild);\n            child.setLastChild(lastChild);\n            child.setChildIndex(index);\n        });\n    };\n    SortService.prototype.pullDownDataForHideOpenParents = function (rowNode, clearOperation) {\n        var _this = this;\n        if (utils_1._.missing(rowNode.childrenAfterSort)) {\n            return;\n        }\n        if (!this.gridOptionsWrapper.isGroupHideOpenParents()) {\n            return;\n        }\n        rowNode.childrenAfterSort.forEach(function (childRowNode) {\n            var groupDisplayCols = _this.columnController.getGroupDisplayColumns();\n            groupDisplayCols.forEach(function (groupDisplayCol) {\n                var showRowGroup = groupDisplayCol.getColDef().showRowGroup;\n                if (typeof showRowGroup !== 'string') {\n                    console.error('ag-Grid: groupHideOpenParents only works when specifying specific columns for colDef.showRowGroup');\n                    return;\n                }\n                var displayingGroupKey = showRowGroup;\n                var rowGroupColumn = _this.columnController.getPrimaryColumn(displayingGroupKey);\n                var thisRowNodeMatches = rowGroupColumn === childRowNode.rowGroupColumn;\n                if (thisRowNodeMatches) {\n                    return;\n                }\n                if (clearOperation) {\n                    // if doing a clear operation, we clear down the value for every possible group column\n                    childRowNode.setGroupValue(groupDisplayCol.getId(), null);\n                }\n                else {\n                    // if doing a set operation, we set only where the pull down is to occur\n                    var parentToStealFrom = childRowNode.getFirstChildOfFirstChild(rowGroupColumn);\n                    if (parentToStealFrom) {\n                        childRowNode.setGroupValue(groupDisplayCol.getId(), parentToStealFrom.key);\n                    }\n                }\n            });\n        });\n    };\n    __decorate([\n        context_1.Autowired('sortController'),\n        __metadata(\"design:type\", sortController_1.SortController)\n    ], SortService.prototype, \"sortController\", void 0);\n    __decorate([\n        context_1.Autowired('columnController'),\n        __metadata(\"design:type\", columnController_1.ColumnController)\n    ], SortService.prototype, \"columnController\", void 0);\n    __decorate([\n        context_1.Autowired('valueService'),\n        __metadata(\"design:type\", valueService_1.ValueService)\n    ], SortService.prototype, \"valueService\", void 0);\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], SortService.prototype, \"gridOptionsWrapper\", void 0);\n    SortService = __decorate([\n        context_1.Bean('sortService')\n    ], SortService);\n    return SortService;\n}());\nexports.SortService = SortService;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rowNodes/sortService.js\n// module id = 324\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../../context/context\");\nvar rowNode_1 = require(\"../../entities/rowNode\");\nvar utils_1 = require(\"../../utils\");\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar selectionController_1 = require(\"../../selectionController\");\nvar eventService_1 = require(\"../../eventService\");\nvar columnController_1 = require(\"../../columnController/columnController\");\nvar FlattenStage = (function () {\n    function FlattenStage() {\n    }\n    FlattenStage.prototype.execute = function (params) {\n        var rootNode = params.rowNode;\n        // even if not doing grouping, we do the mapping, as the client might\n        // of passed in data that already has a grouping in it somewhere\n        var result = [];\n        // putting value into a wrapper so it's passed by reference\n        var nextRowTop = { value: 0 };\n        var skipLeafNodes = this.columnController.isPivotMode();\n        // if we are reducing, and not grouping, then we want to show the root node, as that\n        // is where the pivot values are\n        var showRootNode = skipLeafNodes && rootNode.leafGroup;\n        var topList = showRootNode ? [rootNode] : rootNode.childrenAfterSort;\n        // set all row tops to null, then set row tops on all visible rows. if we don't\n        // do this, then the algorithm below only sets row tops, old row tops from old rows\n        // will still lie around\n        this.resetRowTops(rootNode);\n        this.recursivelyAddToRowsToDisplay(topList, result, nextRowTop, skipLeafNodes, 0);\n        return result;\n    };\n    FlattenStage.prototype.resetRowTops = function (rowNode) {\n        rowNode.clearRowTop();\n        if (rowNode.hasChildren()) {\n            if (rowNode.childrenAfterGroup) {\n                for (var i = 0; i < rowNode.childrenAfterGroup.length; i++) {\n                    this.resetRowTops(rowNode.childrenAfterGroup[i]);\n                }\n            }\n            if (rowNode.sibling) {\n                rowNode.sibling.clearRowTop();\n            }\n        }\n    };\n    FlattenStage.prototype.recursivelyAddToRowsToDisplay = function (rowsToFlatten, result, nextRowTop, skipLeafNodes, uiLevel) {\n        if (utils_1.Utils.missingOrEmpty(rowsToFlatten)) {\n            return;\n        }\n        var groupSuppressRow = this.gridOptionsWrapper.isGroupSuppressRow();\n        var hideOpenParents = this.gridOptionsWrapper.isGroupHideOpenParents();\n        // these two are mutually exclusive, so if first set, we don't set the second\n        var groupRemoveSingleChildren = this.gridOptionsWrapper.isGroupRemoveSingleChildren();\n        var groupRemoveLowestSingleChildren = !groupRemoveSingleChildren && this.gridOptionsWrapper.isGroupRemoveLowestSingleChildren();\n        for (var i = 0; i < rowsToFlatten.length; i++) {\n            var rowNode = rowsToFlatten[i];\n            // check all these cases, for working out if this row should be included in the final mapped list\n            var isParent = rowNode.hasChildren();\n            var isGroupSuppressedNode = groupSuppressRow && isParent;\n            var isSkippedLeafNode = skipLeafNodes && !isParent;\n            var isRemovedSingleChildrenGroup = groupRemoveSingleChildren && isParent && rowNode.childrenAfterGroup.length === 1;\n            var isRemovedLowestSingleChildrenGroup = groupRemoveLowestSingleChildren && isParent && rowNode.leafGroup && rowNode.childrenAfterGroup.length === 1;\n            // hide open parents means when group is open, we don't show it. we also need to make sure the\n            // group is expandable in the first place (as leaf groups are not expandable if pivot mode is on).\n            // the UI will never allow expanding leaf  groups, however the user might via the API (or menu option 'expand all')\n            var neverAllowToExpand = skipLeafNodes && rowNode.leafGroup;\n            var isHiddenOpenParent = hideOpenParents && rowNode.expanded && (!neverAllowToExpand);\n            var thisRowShouldBeRendered = !isSkippedLeafNode && !isGroupSuppressedNode && !isHiddenOpenParent && !isRemovedSingleChildrenGroup && !isRemovedLowestSingleChildrenGroup;\n            if (thisRowShouldBeRendered) {\n                this.addRowNodeToRowsToDisplay(rowNode, result, nextRowTop, uiLevel);\n            }\n            // if we are pivoting, we never map below the leaf group\n            if (skipLeafNodes && rowNode.leafGroup) {\n                continue;\n            }\n            if (isParent) {\n                var excludedParent = isRemovedSingleChildrenGroup || isRemovedLowestSingleChildrenGroup;\n                // we traverse the group if it is expended, however we always traverse if the parent node\n                // was removed (as the group will never be opened if it is not displayed, we show the children instead)\n                if (rowNode.expanded || excludedParent) {\n                    // if the parent was excluded, then ui level is that of the parent\n                    var uiLevelForChildren = excludedParent ? uiLevel : uiLevel + 1;\n                    this.recursivelyAddToRowsToDisplay(rowNode.childrenAfterSort, result, nextRowTop, skipLeafNodes, uiLevelForChildren);\n                    // put a footer in if user is looking for it\n                    if (this.gridOptionsWrapper.isGroupIncludeFooter()) {\n                        this.ensureFooterNodeExists(rowNode);\n                        this.addRowNodeToRowsToDisplay(rowNode.sibling, result, nextRowTop, uiLevel);\n                    }\n                }\n                else {\n                }\n            }\n            else if (rowNode.master && rowNode.expanded) {\n                var detailNode = this.createDetailNode(rowNode);\n                this.addRowNodeToRowsToDisplay(detailNode, result, nextRowTop, uiLevel);\n            }\n        }\n    };\n    // duplicated method, it's also in floatingRowModel\n    FlattenStage.prototype.addRowNodeToRowsToDisplay = function (rowNode, result, nextRowTop, uiLevel) {\n        result.push(rowNode);\n        if (utils_1.Utils.missing(rowNode.rowHeight)) {\n            var rowHeight = this.gridOptionsWrapper.getRowHeightForNode(rowNode);\n            rowNode.setRowHeight(rowHeight);\n        }\n        rowNode.setUiLevel(uiLevel);\n        rowNode.setRowTop(nextRowTop.value);\n        rowNode.setRowIndex(result.length - 1);\n        nextRowTop.value += rowNode.rowHeight;\n    };\n    FlattenStage.prototype.ensureFooterNodeExists = function (groupNode) {\n        // only create footer node once, otherwise we have daemons and\n        // the animate screws up with the daemons hanging around\n        if (utils_1.Utils.exists(groupNode.sibling)) {\n            return;\n        }\n        var footerNode = new rowNode_1.RowNode();\n        this.context.wireBean(footerNode);\n        Object.keys(groupNode).forEach(function (key) {\n            footerNode[key] = groupNode[key];\n        });\n        footerNode.footer = true;\n        footerNode.rowTop = null;\n        footerNode.oldRowTop = null;\n        if (utils_1.Utils.exists(footerNode.id)) {\n            footerNode.id = 'rowGroupFooter_' + footerNode.id;\n        }\n        // get both header and footer to reference each other as siblings. this is never undone,\n        // only overwritten. so if a group is expanded, then contracted, it will have a ghost\n        // sibling - but that's fine, as we can ignore this if the header is contracted.\n        footerNode.sibling = groupNode;\n        groupNode.sibling = footerNode;\n    };\n    FlattenStage.prototype.createDetailNode = function (masterNode) {\n        if (utils_1.Utils.exists(masterNode.detailNode)) {\n            return masterNode.detailNode;\n        }\n        else {\n            var detailNode = new rowNode_1.RowNode();\n            this.context.wireBean(detailNode);\n            detailNode.detail = true;\n            // flower was renamed to 'detail', but keeping for backwards compatibility\n            detailNode.flower = detailNode.detail;\n            detailNode.parent = masterNode;\n            if (utils_1.Utils.exists(masterNode.id)) {\n                detailNode.id = 'detail_' + masterNode.id;\n            }\n            detailNode.data = masterNode.data;\n            detailNode.level = masterNode.level + 1;\n            masterNode.detailNode = detailNode;\n            masterNode.childFlower = masterNode.detailNode; // for backwards compatibility\n            return detailNode;\n        }\n    };\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], FlattenStage.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('selectionController'),\n        __metadata(\"design:type\", selectionController_1.SelectionController)\n    ], FlattenStage.prototype, \"selectionController\", void 0);\n    __decorate([\n        context_1.Autowired('eventService'),\n        __metadata(\"design:type\", eventService_1.EventService)\n    ], FlattenStage.prototype, \"eventService\", void 0);\n    __decorate([\n        context_1.Autowired('context'),\n        __metadata(\"design:type\", context_1.Context)\n    ], FlattenStage.prototype, \"context\", void 0);\n    __decorate([\n        context_1.Autowired('columnController'),\n        __metadata(\"design:type\", columnController_1.ColumnController)\n    ], FlattenStage.prototype, \"columnController\", void 0);\n    FlattenStage = __decorate([\n        context_1.Bean('flattenStage')\n    ], FlattenStage);\n    return FlattenStage;\n}());\nexports.FlattenStage = FlattenStage;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rowModels/inMemory/flattenStage.js\n// module id = 325\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../../utils\");\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar context_1 = require(\"../../context/context\");\nvar eventService_1 = require(\"../../eventService\");\nvar selectionController_1 = require(\"../../selectionController\");\nvar events_1 = require(\"../../events\");\nvar sortController_1 = require(\"../../sortController\");\nvar filterManager_1 = require(\"../../filter/filterManager\");\nvar constants_1 = require(\"../../constants\");\nvar infiniteCache_1 = require(\"./infiniteCache\");\nvar beanStub_1 = require(\"../../context/beanStub\");\nvar rowNodeCache_1 = require(\"../cache/rowNodeCache\");\nvar rowNodeBlockLoader_1 = require(\"../cache/rowNodeBlockLoader\");\nvar gridApi_1 = require(\"../../gridApi\");\nvar columnController_1 = require(\"../../columnController/columnController\");\nvar InfiniteRowModel = (function (_super) {\n    __extends(InfiniteRowModel, _super);\n    function InfiniteRowModel() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    InfiniteRowModel.prototype.getRowBounds = function (index) {\n        return {\n            rowHeight: this.rowHeight,\n            rowTop: this.rowHeight * index\n        };\n    };\n    InfiniteRowModel.prototype.init = function () {\n        var _this = this;\n        if (!this.gridOptionsWrapper.isRowModelInfinite()) {\n            return;\n        }\n        this.rowHeight = this.gridOptionsWrapper.getRowHeightAsNumber();\n        this.addEventListeners();\n        this.setDatasource(this.gridOptionsWrapper.getDatasource());\n        this.addDestroyFunc(function () { return _this.destroyCache(); });\n    };\n    InfiniteRowModel.prototype.isLastRowFound = function () {\n        return this.infiniteCache ? this.infiniteCache.isMaxRowFound() : false;\n    };\n    InfiniteRowModel.prototype.addEventListeners = function () {\n        this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n        this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));\n    };\n    InfiniteRowModel.prototype.onFilterChanged = function () {\n        if (this.gridOptionsWrapper.isEnableServerSideFilter()) {\n            this.reset();\n        }\n    };\n    InfiniteRowModel.prototype.onSortChanged = function () {\n        if (this.gridOptionsWrapper.isEnableServerSideSorting()) {\n            this.reset();\n        }\n    };\n    InfiniteRowModel.prototype.destroy = function () {\n        _super.prototype.destroy.call(this);\n    };\n    InfiniteRowModel.prototype.getType = function () {\n        return constants_1.Constants.ROW_MODEL_TYPE_INFINITE;\n    };\n    InfiniteRowModel.prototype.setDatasource = function (datasource) {\n        this.datasource = datasource;\n        // only reset if we have a valid datasource to working with\n        if (datasource) {\n            this.checkForDeprecated();\n            this.reset();\n        }\n    };\n    InfiniteRowModel.prototype.checkForDeprecated = function () {\n        var ds = this.datasource;\n        // the number of concurrent loads we are allowed to the server\n        if (utils_1.Utils.exists(ds.maxConcurrentRequests)) {\n            console.error('ag-Grid: since version 5.1.x, maxConcurrentRequests is replaced with grid property maxConcurrentDatasourceRequests');\n        }\n        if (utils_1.Utils.exists(ds.maxPagesInCache)) {\n            console.error('ag-Grid: since version 5.1.x, maxPagesInCache is replaced with grid property maxPagesInPaginationCache');\n        }\n        if (utils_1.Utils.exists(ds.overflowSize)) {\n            console.error('ag-Grid: since version 5.1.x, overflowSize is replaced with grid property paginationOverflowSize');\n        }\n        if (utils_1.Utils.exists(ds.blockSize)) {\n            console.error('ag-Grid: since version 5.1.x, pageSize/blockSize is replaced with grid property infinitePageSize');\n        }\n    };\n    InfiniteRowModel.prototype.isEmpty = function () {\n        return utils_1.Utils.missing(this.infiniteCache);\n    };\n    InfiniteRowModel.prototype.isRowsToRender = function () {\n        return utils_1.Utils.exists(this.infiniteCache);\n    };\n    InfiniteRowModel.prototype.getNodesInRangeForSelection = function (firstInRange, lastInRange) {\n        return this.infiniteCache.getRowNodesInRange(firstInRange, lastInRange);\n    };\n    InfiniteRowModel.prototype.reset = function () {\n        // important to return here, as the user could be setting filter or sort before\n        // data-source is set\n        if (utils_1.Utils.missing(this.datasource)) {\n            return;\n        }\n        // if user is providing id's, then this means we can keep the selection between datsource hits,\n        // as the rows will keep their unique id's even if, for example, server side sorting or filtering\n        // is done.\n        var userGeneratingIds = utils_1.Utils.exists(this.gridOptionsWrapper.getRowNodeIdFunc());\n        if (!userGeneratingIds) {\n            this.selectionController.reset();\n        }\n        this.resetCache();\n        var event = this.createModelUpdatedEvent();\n        this.eventService.dispatchEvent(event);\n    };\n    InfiniteRowModel.prototype.createModelUpdatedEvent = function () {\n        return {\n            type: events_1.Events.EVENT_MODEL_UPDATED,\n            api: this.gridApi,\n            columnApi: this.columnApi,\n            // not sure if these should all be false - noticed if after implementing,\n            // maybe they should be true?\n            newPage: false,\n            newData: false,\n            keepRenderedRows: false,\n            animate: false\n        };\n    };\n    InfiniteRowModel.prototype.resetCache = function () {\n        // if not first time creating a cache, need to destroy the old one\n        this.destroyCache();\n        var maxConcurrentRequests = this.gridOptionsWrapper.getMaxConcurrentDatasourceRequests();\n        // there is a bi-directional dependency between the loader and the cache,\n        // so we create loader here, and then pass dependencies in setDependencies() method later\n        this.rowNodeBlockLoader = new rowNodeBlockLoader_1.RowNodeBlockLoader(maxConcurrentRequests);\n        this.context.wireBean(this.rowNodeBlockLoader);\n        var cacheSettings = {\n            // the user provided datasource\n            datasource: this.datasource,\n            // sort and filter model\n            filterModel: this.filterManager.getFilterModel(),\n            sortModel: this.sortController.getSortModel(),\n            rowNodeBlockLoader: this.rowNodeBlockLoader,\n            // properties - this way we take a snapshot of them, so if user changes any, they will be\n            // used next time we create a new cache, which is generally after a filter or sort change,\n            // or a new datasource is set\n            maxConcurrentRequests: maxConcurrentRequests,\n            overflowSize: this.gridOptionsWrapper.getCacheOverflowSize(),\n            initialRowCount: this.gridOptionsWrapper.getInfiniteInitialRowCount(),\n            maxBlocksInCache: this.gridOptionsWrapper.getMaxBlocksInCache(),\n            blockSize: this.gridOptionsWrapper.getCacheBlockSize(),\n            rowHeight: this.gridOptionsWrapper.getRowHeightAsNumber(),\n            // the cache could create this, however it is also used by the pages, so handy to create it\n            // here as the settings are also passed to the pages\n            lastAccessedSequence: new utils_1.NumberSequence()\n        };\n        // set defaults\n        if (!(cacheSettings.maxConcurrentRequests >= 1)) {\n            cacheSettings.maxConcurrentRequests = 2;\n        }\n        // page size needs to be 1 or greater. having it at 1 would be silly, as you would be hitting the\n        // server for one page at a time. so the default if not specified is 100.\n        if (!(cacheSettings.blockSize >= 1)) {\n            cacheSettings.blockSize = 100;\n        }\n        // if user doesn't give initial rows to display, we assume zero\n        if (!(cacheSettings.initialRowCount >= 1)) {\n            cacheSettings.initialRowCount = 0;\n        }\n        // if user doesn't provide overflow, we use default overflow of 1, so user can scroll past\n        // the current page and request first row of next page\n        if (!(cacheSettings.overflowSize >= 1)) {\n            cacheSettings.overflowSize = 1;\n        }\n        this.infiniteCache = new infiniteCache_1.InfiniteCache(cacheSettings);\n        this.context.wireBean(this.infiniteCache);\n        this.infiniteCache.addEventListener(rowNodeCache_1.RowNodeCache.EVENT_CACHE_UPDATED, this.onCacheUpdated.bind(this));\n    };\n    InfiniteRowModel.prototype.destroyCache = function () {\n        if (this.infiniteCache) {\n            this.infiniteCache.destroy();\n            this.infiniteCache = null;\n        }\n        if (this.rowNodeBlockLoader) {\n            this.rowNodeBlockLoader.destroy();\n            this.rowNodeBlockLoader = null;\n        }\n    };\n    InfiniteRowModel.prototype.onCacheUpdated = function () {\n        var event = this.createModelUpdatedEvent();\n        this.eventService.dispatchEvent(event);\n    };\n    InfiniteRowModel.prototype.getRow = function (rowIndex) {\n        return this.infiniteCache ? this.infiniteCache.getRow(rowIndex) : null;\n    };\n    InfiniteRowModel.prototype.forEachNode = function (callback) {\n        if (this.infiniteCache) {\n            this.infiniteCache.forEachNodeDeep(callback, new utils_1.NumberSequence());\n        }\n    };\n    InfiniteRowModel.prototype.getCurrentPageHeight = function () {\n        return this.getRowCount() * this.rowHeight;\n    };\n    InfiniteRowModel.prototype.getRowIndexAtPixel = function (pixel) {\n        if (this.rowHeight !== 0) {\n            var rowIndexForPixel = Math.floor(pixel / this.rowHeight);\n            if (rowIndexForPixel > this.getPageLastRow()) {\n                return this.getPageLastRow();\n            }\n            else {\n                return rowIndexForPixel;\n            }\n        }\n        else {\n            return 0;\n        }\n    };\n    InfiniteRowModel.prototype.getPageFirstRow = function () {\n        return 0;\n    };\n    InfiniteRowModel.prototype.getPageLastRow = function () {\n        return this.infiniteCache ? this.infiniteCache.getVirtualRowCount() - 1 : 0;\n    };\n    InfiniteRowModel.prototype.getRowCount = function () {\n        return this.infiniteCache ? this.infiniteCache.getVirtualRowCount() : 0;\n    };\n    InfiniteRowModel.prototype.updateRowData = function (transaction) {\n        if (utils_1.Utils.exists(transaction.remove) || utils_1.Utils.exists(transaction.update)) {\n            console.warn('ag-Grid: updateRowData for InfiniteRowModel does not support remove or update, only add');\n            return;\n        }\n        if (utils_1.Utils.missing(transaction.addIndex)) {\n            console.warn('ag-Grid: updateRowData for InfiniteRowModel requires add and addIndex to be set');\n            return;\n        }\n        if (this.infiniteCache) {\n            this.infiniteCache.insertItemsAtIndex(transaction.addIndex, transaction.add);\n        }\n    };\n    InfiniteRowModel.prototype.isRowPresent = function (rowNode) {\n        return false;\n    };\n    InfiniteRowModel.prototype.refreshCache = function () {\n        if (this.infiniteCache) {\n            this.infiniteCache.refreshCache();\n        }\n    };\n    InfiniteRowModel.prototype.purgeCache = function () {\n        if (this.infiniteCache) {\n            this.infiniteCache.purgeCache();\n        }\n    };\n    InfiniteRowModel.prototype.getVirtualRowCount = function () {\n        if (this.infiniteCache) {\n            return this.infiniteCache.getVirtualRowCount();\n        }\n        else {\n            return null;\n        }\n    };\n    InfiniteRowModel.prototype.isMaxRowFound = function () {\n        if (this.infiniteCache) {\n            return this.infiniteCache.isMaxRowFound();\n        }\n    };\n    InfiniteRowModel.prototype.setVirtualRowCount = function (rowCount, maxRowFound) {\n        if (this.infiniteCache) {\n            this.infiniteCache.setVirtualRowCount(rowCount, maxRowFound);\n        }\n    };\n    InfiniteRowModel.prototype.getBlockState = function () {\n        if (this.rowNodeBlockLoader) {\n            return this.rowNodeBlockLoader.getBlockState();\n        }\n        else {\n            return null;\n        }\n    };\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], InfiniteRowModel.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('filterManager'),\n        __metadata(\"design:type\", filterManager_1.FilterManager)\n    ], InfiniteRowModel.prototype, \"filterManager\", void 0);\n    __decorate([\n        context_1.Autowired('sortController'),\n        __metadata(\"design:type\", sortController_1.SortController)\n    ], InfiniteRowModel.prototype, \"sortController\", void 0);\n    __decorate([\n        context_1.Autowired('selectionController'),\n        __metadata(\"design:type\", selectionController_1.SelectionController)\n    ], InfiniteRowModel.prototype, \"selectionController\", void 0);\n    __decorate([\n        context_1.Autowired('eventService'),\n        __metadata(\"design:type\", eventService_1.EventService)\n    ], InfiniteRowModel.prototype, \"eventService\", void 0);\n    __decorate([\n        context_1.Autowired('context'),\n        __metadata(\"design:type\", context_1.Context)\n    ], InfiniteRowModel.prototype, \"context\", void 0);\n    __decorate([\n        context_1.Autowired('gridApi'),\n        __metadata(\"design:type\", gridApi_1.GridApi)\n    ], InfiniteRowModel.prototype, \"gridApi\", void 0);\n    __decorate([\n        context_1.Autowired('columnApi'),\n        __metadata(\"design:type\", columnController_1.ColumnApi)\n    ], InfiniteRowModel.prototype, \"columnApi\", void 0);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], InfiniteRowModel.prototype, \"init\", null);\n    __decorate([\n        context_1.PreDestroy,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], InfiniteRowModel.prototype, \"destroy\", null);\n    InfiniteRowModel = __decorate([\n        context_1.Bean('rowModel')\n    ], InfiniteRowModel);\n    return InfiniteRowModel;\n}(beanStub_1.BeanStub));\nexports.InfiniteRowModel = InfiniteRowModel;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rowModels/infinite/infiniteRowModel.js\n// module id = 326\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar rowNodeBlock_1 = require(\"./rowNodeBlock\");\nvar logger_1 = require(\"../../logger\");\nvar context_1 = require(\"../../context/context\");\nvar utils_1 = require(\"../../utils\");\nvar RowNodeBlockLoader = (function () {\n    function RowNodeBlockLoader(maxConcurrentRequests) {\n        this.activeBlockLoadsCount = 0;\n        this.blocks = [];\n        this.active = true;\n        this.maxConcurrentRequests = maxConcurrentRequests;\n    }\n    RowNodeBlockLoader.prototype.setBeans = function (loggerFactory) {\n        this.logger = loggerFactory.create('RowNodeBlockLoader');\n    };\n    RowNodeBlockLoader.prototype.addBlock = function (block) {\n        this.blocks.push(block);\n    };\n    RowNodeBlockLoader.prototype.removeBlock = function (block) {\n        utils_1._.removeFromArray(this.blocks, block);\n    };\n    RowNodeBlockLoader.prototype.destroy = function () {\n        this.active = false;\n    };\n    RowNodeBlockLoader.prototype.loadComplete = function () {\n        this.activeBlockLoadsCount--;\n    };\n    RowNodeBlockLoader.prototype.checkBlockToLoad = function () {\n        if (!this.active) {\n            return;\n        }\n        this.printCacheStatus();\n        if (this.activeBlockLoadsCount >= this.maxConcurrentRequests) {\n            this.logger.log(\"checkBlockToLoad: max loads exceeded\");\n            return;\n        }\n        var blockToLoad = null;\n        this.blocks.forEach(function (block) {\n            if (block.getState() === rowNodeBlock_1.RowNodeBlock.STATE_DIRTY) {\n                blockToLoad = block;\n            }\n        });\n        if (blockToLoad) {\n            blockToLoad.load();\n            this.activeBlockLoadsCount++;\n            this.logger.log(\"checkBlockToLoad: loading page \" + blockToLoad.getBlockNumber());\n            this.printCacheStatus();\n        }\n        else {\n            this.logger.log(\"checkBlockToLoad: no pages to load\");\n        }\n    };\n    RowNodeBlockLoader.prototype.getBlockState = function () {\n        var result = {};\n        this.blocks.forEach(function (block) {\n            var nodeIdPrefix = block.getNodeIdPrefix();\n            var stateItem = {\n                blockNumber: block.getBlockNumber(),\n                startRow: block.getStartRow(),\n                endRow: block.getEndRow(),\n                pageStatus: block.getState()\n            };\n            if (utils_1._.exists(nodeIdPrefix)) {\n                result[nodeIdPrefix + block.getBlockNumber()] = stateItem;\n            }\n            else {\n                result[block.getBlockNumber()] = stateItem;\n            }\n        });\n        return result;\n    };\n    RowNodeBlockLoader.prototype.printCacheStatus = function () {\n        if (this.logger.isLogging()) {\n            this.logger.log(\"printCacheStatus: activePageLoadsCount = \" + this.activeBlockLoadsCount + \",\"\n                + (\" blocks = \" + JSON.stringify(this.getBlockState())));\n        }\n    };\n    __decorate([\n        __param(0, context_1.Qualifier('loggerFactory')),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [logger_1.LoggerFactory]),\n        __metadata(\"design:returntype\", void 0)\n    ], RowNodeBlockLoader.prototype, \"setBeans\", null);\n    return RowNodeBlockLoader;\n}());\nexports.RowNodeBlockLoader = RowNodeBlockLoader;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rowModels/cache/rowNodeBlockLoader.js\n// module id = 327\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../../utils\");\nvar constants_1 = require(\"../../constants\");\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar columnController_1 = require(\"../../columnController/columnController\");\nvar filterManager_1 = require(\"../../filter/filterManager\");\nvar rowNode_1 = require(\"../../entities/rowNode\");\nvar eventService_1 = require(\"../../eventService\");\nvar events_1 = require(\"../../events\");\nvar context_1 = require(\"../../context/context\");\nvar selectionController_1 = require(\"../../selectionController\");\nvar inMemoryNodeManager_1 = require(\"./inMemoryNodeManager\");\nvar changedPath_1 = require(\"./changedPath\");\nvar valueService_1 = require(\"../../valueService/valueService\");\nvar valueCache_1 = require(\"../../valueService/valueCache\");\nvar gridApi_1 = require(\"../../gridApi\");\nvar RecursionType;\n(function (RecursionType) {\n    RecursionType[RecursionType[\"Normal\"] = 0] = \"Normal\";\n    RecursionType[RecursionType[\"AfterFilter\"] = 1] = \"AfterFilter\";\n    RecursionType[RecursionType[\"AfterFilterAndSort\"] = 2] = \"AfterFilterAndSort\";\n    RecursionType[RecursionType[\"PivotNodes\"] = 3] = \"PivotNodes\";\n})(RecursionType || (RecursionType = {}));\n;\nvar InMemoryRowModel = (function () {\n    function InMemoryRowModel() {\n    }\n    InMemoryRowModel.prototype.init = function () {\n        var refreshEverythingFunc = this.refreshModel.bind(this, { step: constants_1.Constants.STEP_EVERYTHING });\n        this.eventService.addModalPriorityEventListener(events_1.Events.EVENT_COLUMN_EVERYTHING_CHANGED, refreshEverythingFunc);\n        this.eventService.addModalPriorityEventListener(events_1.Events.EVENT_COLUMN_ROW_GROUP_CHANGED, refreshEverythingFunc);\n        this.eventService.addModalPriorityEventListener(events_1.Events.EVENT_COLUMN_VALUE_CHANGED, this.onValueChanged.bind(this));\n        this.eventService.addModalPriorityEventListener(events_1.Events.EVENT_COLUMN_PIVOT_CHANGED, this.refreshModel.bind(this, { step: constants_1.Constants.STEP_PIVOT }));\n        this.eventService.addModalPriorityEventListener(events_1.Events.EVENT_ROW_GROUP_OPENED, this.onRowGroupOpened.bind(this));\n        this.eventService.addModalPriorityEventListener(events_1.Events.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n        this.eventService.addModalPriorityEventListener(events_1.Events.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));\n        this.eventService.addModalPriorityEventListener(events_1.Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, refreshEverythingFunc);\n        var refreshMapFunc = this.refreshModel.bind(this, { step: constants_1.Constants.STEP_MAP, keepRenderedRows: true, animate: true });\n        this.gridOptionsWrapper.addEventListener(gridOptionsWrapper_1.GridOptionsWrapper.PROP_GROUP_REMOVE_SINGLE_CHILDREN, refreshMapFunc);\n        this.gridOptionsWrapper.addEventListener(gridOptionsWrapper_1.GridOptionsWrapper.PROP_GROUP_REMOVE_LOWEST_SINGLE_CHILDREN, refreshMapFunc);\n        this.rootNode = new rowNode_1.RowNode();\n        this.nodeManager = new inMemoryNodeManager_1.InMemoryNodeManager(this.rootNode, this.gridOptionsWrapper, this.context, this.eventService, this.columnController);\n        this.context.wireBean(this.rootNode);\n    };\n    InMemoryRowModel.prototype.isLastRowFound = function () {\n        return true;\n    };\n    InMemoryRowModel.prototype.getRowCount = function () {\n        if (this.rowsToDisplay) {\n            return this.rowsToDisplay.length;\n        }\n        else {\n            return 0;\n        }\n    };\n    InMemoryRowModel.prototype.getRowBounds = function (index) {\n        if (utils_1.Utils.missing(this.rowsToDisplay)) {\n            return null;\n        }\n        var rowNode = this.rowsToDisplay[index];\n        if (rowNode) {\n            return {\n                rowTop: rowNode.rowTop,\n                rowHeight: rowNode.rowHeight\n            };\n        }\n        else {\n            return null;\n        }\n    };\n    InMemoryRowModel.prototype.onRowGroupOpened = function () {\n        var animate = this.gridOptionsWrapper.isAnimateRows();\n        this.refreshModel({ step: constants_1.Constants.STEP_MAP, keepRenderedRows: true, animate: animate });\n    };\n    InMemoryRowModel.prototype.onFilterChanged = function () {\n        var animate = this.gridOptionsWrapper.isAnimateRows();\n        this.refreshModel({ step: constants_1.Constants.STEP_FILTER, keepRenderedRows: true, animate: animate });\n    };\n    InMemoryRowModel.prototype.onSortChanged = function () {\n        // we only act on the sort event here if the user is doing in grid sorting.\n        // we ignore it if the sorting is happening on the server side.\n        if (this.gridOptionsWrapper.isEnableServerSideSorting()) {\n            return;\n        }\n        var animate = this.gridOptionsWrapper.isAnimateRows();\n        this.refreshModel({ step: constants_1.Constants.STEP_SORT, keepRenderedRows: true, animate: animate, keepEditingRows: true });\n    };\n    InMemoryRowModel.prototype.getType = function () {\n        return constants_1.Constants.ROW_MODEL_TYPE_IN_MEMORY;\n    };\n    InMemoryRowModel.prototype.onValueChanged = function () {\n        if (this.columnController.isPivotActive()) {\n            this.refreshModel({ step: constants_1.Constants.STEP_PIVOT });\n        }\n        else {\n            this.refreshModel({ step: constants_1.Constants.STEP_AGGREGATE });\n        }\n    };\n    InMemoryRowModel.prototype.createChangePath = function (transaction) {\n        if (!transaction) {\n            return null;\n        }\n        // for updates, if the row is updated at all, then we re-calc all the values\n        // in that row. we could compare each value to each old value, however if we\n        // did this, we would be calling the valueService twice, once on the old value\n        // and once on the new value. so it's less valueGetter calls if we just assume\n        // each column is different. that way the changedPath is used so that only\n        // the impacted parent rows are recalculated, parents who's children have\n        // not changed are not impacted.\n        var valueColumns = this.columnController.getValueColumns();\n        if (!valueColumns || valueColumns.length === 0) {\n            return null;\n        }\n        var changedPath = new changedPath_1.ChangedPath(false);\n        return changedPath;\n    };\n    InMemoryRowModel.prototype.refreshModel = function (params) {\n        // this goes through the pipeline of stages. what's in my head is similar\n        // to the diagram on this page:\n        // http://commons.apache.org/sandbox/commons-pipeline/pipeline_basics.html\n        // however we want to keep the results of each stage, hence we manually call\n        // each step rather than have them chain each other.\n        var _this = this;\n        // fallthrough in below switch is on purpose,\n        // eg if STEP_FILTER, then all steps below this\n        // step get done\n        // let start: number;\n        // console.log('======= start =======');\n        var changedPath = this.createChangePath(params.rowNodeTransaction);\n        switch (params.step) {\n            case constants_1.Constants.STEP_EVERYTHING:\n                // start = new Date().getTime();\n                this.doRowGrouping(params.groupState, params.rowNodeTransaction, params.rowNodeOrder, changedPath);\n            // console.log('rowGrouping = ' + (new Date().getTime() - start));\n            case constants_1.Constants.STEP_FILTER:\n                // start = new Date().getTime();\n                this.doFilter();\n            // console.log('filter = ' + (new Date().getTime() - start));\n            case constants_1.Constants.STEP_PIVOT:\n                this.doPivot();\n            case constants_1.Constants.STEP_AGGREGATE:// depends on agg fields\n                // start = new Date().getTime();\n                this.doAggregate(changedPath);\n            // console.log('aggregation = ' + (new Date().getTime() - start));\n            case constants_1.Constants.STEP_SORT:\n                // start = new Date().getTime();\n                this.doSort();\n            // console.log('sort = ' + (new Date().getTime() - start));\n            case constants_1.Constants.STEP_MAP:\n                // start = new Date().getTime();\n                this.doRowsToDisplay();\n        }\n        var event = {\n            type: events_1.Events.EVENT_MODEL_UPDATED,\n            api: this.gridApi,\n            columnApi: this.columnApi,\n            animate: params.animate,\n            keepRenderedRows: params.keepRenderedRows,\n            newData: params.newData,\n            newPage: false\n        };\n        this.eventService.dispatchEvent(event);\n        if (this.$scope) {\n            setTimeout(function () {\n                _this.$scope.$apply();\n            }, 0);\n        }\n    };\n    InMemoryRowModel.prototype.isEmpty = function () {\n        var rowsMissing;\n        var doingLegacyTreeData = utils_1.Utils.exists(this.gridOptionsWrapper.getNodeChildDetailsFunc());\n        if (doingLegacyTreeData) {\n            rowsMissing = utils_1.Utils.missing(this.rootNode.childrenAfterGroup) || this.rootNode.childrenAfterGroup.length === 0;\n        }\n        else {\n            rowsMissing = utils_1.Utils.missing(this.rootNode.allLeafChildren) || this.rootNode.allLeafChildren.length === 0;\n        }\n        var empty = utils_1.Utils.missing(this.rootNode) || rowsMissing || !this.columnController.isReady();\n        return empty;\n    };\n    InMemoryRowModel.prototype.isRowsToRender = function () {\n        return utils_1.Utils.exists(this.rowsToDisplay) && this.rowsToDisplay.length > 0;\n    };\n    InMemoryRowModel.prototype.getNodesInRangeForSelection = function (firstInRange, lastInRange) {\n        // if lastSelectedNode is missing, we start at the first row\n        var firstRowHit = !lastInRange;\n        var lastRowHit = false;\n        var lastRow;\n        var result = [];\n        var groupsSelectChildren = this.gridOptionsWrapper.isGroupSelectsChildren();\n        this.forEachNodeAfterFilterAndSort(function (rowNode) {\n            var lookingForLastRow = firstRowHit && !lastRowHit;\n            // check if we need to flip the select switch\n            if (!firstRowHit) {\n                if (rowNode === lastInRange || rowNode === firstInRange) {\n                    firstRowHit = true;\n                }\n            }\n            var skipThisGroupNode = rowNode.group && groupsSelectChildren;\n            if (!skipThisGroupNode) {\n                var inRange = firstRowHit && !lastRowHit;\n                var childOfLastRow = rowNode.isParentOfNode(lastRow);\n                if (inRange || childOfLastRow) {\n                    result.push(rowNode);\n                }\n            }\n            if (lookingForLastRow) {\n                if (rowNode === lastInRange || rowNode === firstInRange) {\n                    lastRowHit = true;\n                    if (rowNode === lastInRange) {\n                        lastRow = lastInRange;\n                    }\n                    else {\n                        lastRow = firstInRange;\n                    }\n                }\n            }\n        });\n        return result;\n    };\n    InMemoryRowModel.prototype.setDatasource = function (datasource) {\n        console.error('ag-Grid: should never call setDatasource on inMemoryRowController');\n    };\n    InMemoryRowModel.prototype.getTopLevelNodes = function () {\n        return this.rootNode ? this.rootNode.childrenAfterGroup : null;\n    };\n    InMemoryRowModel.prototype.getRootNode = function () {\n        return this.rootNode;\n    };\n    InMemoryRowModel.prototype.getRow = function (index) {\n        return this.rowsToDisplay[index];\n    };\n    InMemoryRowModel.prototype.isRowPresent = function (rowNode) {\n        return this.rowsToDisplay.indexOf(rowNode) >= 0;\n    };\n    InMemoryRowModel.prototype.getVirtualRowCount = function () {\n        console.warn('ag-Grid: rowModel.getVirtualRowCount() is not longer a function, use rowModel.getRowCount() instead');\n        return this.getPageLastRow();\n    };\n    InMemoryRowModel.prototype.getPageFirstRow = function () {\n        return 0;\n    };\n    InMemoryRowModel.prototype.getPageLastRow = function () {\n        if (this.rowsToDisplay) {\n            return this.rowsToDisplay.length - 1;\n        }\n        else {\n            return 0;\n        }\n    };\n    InMemoryRowModel.prototype.getRowIndexAtPixel = function (pixelToMatch) {\n        if (this.isEmpty()) {\n            return -1;\n        }\n        // do binary search of tree\n        // http://oli.me.uk/2013/06/08/searching-javascript-arrays-with-a-binary-search/\n        var bottomPointer = 0;\n        var topPointer = this.rowsToDisplay.length - 1;\n        // quick check, if the pixel is out of bounds, then return last row\n        if (pixelToMatch <= 0) {\n            // if pixel is less than or equal zero, it's always the first row\n            return 0;\n        }\n        var lastNode = this.rowsToDisplay[this.rowsToDisplay.length - 1];\n        if (lastNode.rowTop <= pixelToMatch) {\n            return this.rowsToDisplay.length - 1;\n        }\n        while (true) {\n            var midPointer = Math.floor((bottomPointer + topPointer) / 2);\n            var currentRowNode = this.rowsToDisplay[midPointer];\n            if (this.isRowInPixel(currentRowNode, pixelToMatch)) {\n                return midPointer;\n            }\n            else if (currentRowNode.rowTop < pixelToMatch) {\n                bottomPointer = midPointer + 1;\n            }\n            else if (currentRowNode.rowTop > pixelToMatch) {\n                topPointer = midPointer - 1;\n            }\n        }\n    };\n    InMemoryRowModel.prototype.isRowInPixel = function (rowNode, pixelToMatch) {\n        var topPixel = rowNode.rowTop;\n        var bottomPixel = rowNode.rowTop + rowNode.rowHeight;\n        var pixelInRow = topPixel <= pixelToMatch && bottomPixel > pixelToMatch;\n        return pixelInRow;\n    };\n    InMemoryRowModel.prototype.getCurrentPageHeight = function () {\n        if (this.rowsToDisplay && this.rowsToDisplay.length > 0) {\n            var lastRow = this.rowsToDisplay[this.rowsToDisplay.length - 1];\n            var lastPixel = lastRow.rowTop + lastRow.rowHeight;\n            return lastPixel;\n        }\n        else {\n            return 0;\n        }\n    };\n    InMemoryRowModel.prototype.forEachLeafNode = function (callback) {\n        if (this.rootNode.allLeafChildren) {\n            this.rootNode.allLeafChildren.forEach(function (rowNode, index) { return callback(rowNode, index); });\n        }\n    };\n    InMemoryRowModel.prototype.forEachNode = function (callback) {\n        this.recursivelyWalkNodesAndCallback(this.rootNode.childrenAfterGroup, callback, RecursionType.Normal, 0);\n    };\n    InMemoryRowModel.prototype.forEachNodeAfterFilter = function (callback) {\n        this.recursivelyWalkNodesAndCallback(this.rootNode.childrenAfterFilter, callback, RecursionType.AfterFilter, 0);\n    };\n    InMemoryRowModel.prototype.forEachNodeAfterFilterAndSort = function (callback) {\n        this.recursivelyWalkNodesAndCallback(this.rootNode.childrenAfterSort, callback, RecursionType.AfterFilterAndSort, 0);\n    };\n    InMemoryRowModel.prototype.forEachPivotNode = function (callback) {\n        this.recursivelyWalkNodesAndCallback([this.rootNode], callback, RecursionType.PivotNodes, 0);\n    };\n    // iterates through each item in memory, and calls the callback function\n    // nodes - the rowNodes to traverse\n    // callback - the user provided callback\n    // recursion type - need this to know what child nodes to recurse, eg if looking at all nodes, or filtered notes etc\n    // index - works similar to the index in forEach in javascripts array function\n    InMemoryRowModel.prototype.recursivelyWalkNodesAndCallback = function (nodes, callback, recursionType, index) {\n        if (nodes) {\n            for (var i = 0; i < nodes.length; i++) {\n                var node = nodes[i];\n                callback(node, index++);\n                // go to the next level if it is a group\n                if (node.hasChildren()) {\n                    // depending on the recursion type, we pick a difference set of children\n                    var nodeChildren = void 0;\n                    switch (recursionType) {\n                        case RecursionType.Normal:\n                            nodeChildren = node.childrenAfterGroup;\n                            break;\n                        case RecursionType.AfterFilter:\n                            nodeChildren = node.childrenAfterFilter;\n                            break;\n                        case RecursionType.AfterFilterAndSort:\n                            nodeChildren = node.childrenAfterSort;\n                            break;\n                        case RecursionType.PivotNodes:\n                            // for pivot, we don't go below leafGroup levels\n                            nodeChildren = !node.leafGroup ? node.childrenAfterSort : null;\n                            break;\n                    }\n                    if (nodeChildren) {\n                        index = this.recursivelyWalkNodesAndCallback(nodeChildren, callback, recursionType, index);\n                    }\n                }\n            }\n        }\n        return index;\n    };\n    // it's possible to recompute the aggregate without doing the other parts\n    // + gridApi.recomputeAggregates()\n    InMemoryRowModel.prototype.doAggregate = function (changedPath) {\n        if (this.aggregationStage) {\n            this.aggregationStage.execute({ rowNode: this.rootNode, changedPath: changedPath });\n        }\n    };\n    // + gridApi.expandAll()\n    // + gridApi.collapseAll()\n    InMemoryRowModel.prototype.expandOrCollapseAll = function (expand) {\n        if (this.rootNode) {\n            recursiveExpandOrCollapse(this.rootNode.childrenAfterGroup);\n        }\n        function recursiveExpandOrCollapse(rowNodes) {\n            if (!rowNodes) {\n                return;\n            }\n            rowNodes.forEach(function (rowNode) {\n                if (rowNode.group) {\n                    rowNode.expanded = expand;\n                    recursiveExpandOrCollapse(rowNode.childrenAfterGroup);\n                }\n            });\n        }\n        this.refreshModel({ step: constants_1.Constants.STEP_MAP });\n    };\n    InMemoryRowModel.prototype.doSort = function () {\n        this.sortStage.execute({ rowNode: this.rootNode });\n    };\n    InMemoryRowModel.prototype.doRowGrouping = function (groupState, rowNodeTransaction, rowNodeOrder, changedPath) {\n        // grouping is enterprise only, so if service missing, skip the step\n        var doingLegacyTreeData = utils_1.Utils.exists(this.gridOptionsWrapper.getNodeChildDetailsFunc());\n        if (doingLegacyTreeData) {\n            return;\n        }\n        if (this.groupStage) {\n            if (rowNodeTransaction) {\n                this.groupStage.execute({ rowNode: this.rootNode,\n                    rowNodeTransaction: rowNodeTransaction,\n                    rowNodeOrder: rowNodeOrder,\n                    changedPath: changedPath });\n            }\n            else {\n                // groups are about to get disposed, so need to deselect any that are selected\n                this.selectionController.removeGroupsFromSelection();\n                this.groupStage.execute({ rowNode: this.rootNode });\n                // set open/closed state on groups\n                this.restoreGroupState(groupState);\n            }\n            if (this.gridOptionsWrapper.isGroupSelectsChildren()) {\n                this.selectionController.updateGroupsFromChildrenSelections();\n            }\n        }\n        else {\n            this.rootNode.childrenAfterGroup = this.rootNode.allLeafChildren;\n        }\n    };\n    InMemoryRowModel.prototype.restoreGroupState = function (groupState) {\n        if (!groupState) {\n            return;\n        }\n        utils_1.Utils.traverseNodesWithKey(this.rootNode.childrenAfterGroup, function (node, key) {\n            // if the group was open last time, then open it this time. however\n            // if was not open last time, then don't touch the group, so the 'groupDefaultExpanded'\n            // setting will take effect.\n            if (typeof groupState[key] === 'boolean') {\n                node.expanded = groupState[key];\n            }\n        });\n    };\n    InMemoryRowModel.prototype.doFilter = function () {\n        this.filterStage.execute({ rowNode: this.rootNode });\n    };\n    InMemoryRowModel.prototype.doPivot = function () {\n        if (this.pivotStage) {\n            this.pivotStage.execute({ rowNode: this.rootNode });\n        }\n    };\n    InMemoryRowModel.prototype.getGroupState = function () {\n        if (!this.rootNode.childrenAfterGroup || !this.gridOptionsWrapper.isRememberGroupStateWhenNewData()) {\n            return null;\n        }\n        var result = {};\n        utils_1.Utils.traverseNodesWithKey(this.rootNode.childrenAfterGroup, function (node, key) { return result[key] = node.expanded; });\n        return result;\n    };\n    InMemoryRowModel.prototype.getCopyOfNodesMap = function () {\n        return this.nodeManager.getCopyOfNodesMap();\n    };\n    InMemoryRowModel.prototype.getRowNode = function (id) {\n        return this.nodeManager.getRowNode(id);\n    };\n    // rows: the rows to put into the model\n    InMemoryRowModel.prototype.setRowData = function (rowData) {\n        // no need to invalidate cache, as the cache is stored on the rowNode,\n        // so new rowNodes means the cache is wiped anyway.\n        // remember group state, so we can expand groups that should be expanded\n        var groupState = this.getGroupState();\n        this.nodeManager.setRowData(rowData);\n        // this event kicks off:\n        // - clears selection\n        // - updates filters\n        // - shows 'no rows' overlay if needed\n        var rowDataChangedEvent = {\n            type: events_1.Events.EVENT_ROW_DATA_CHANGED,\n            api: this.gridApi,\n            columnApi: this.columnApi\n        };\n        this.eventService.dispatchEvent(rowDataChangedEvent);\n        this.refreshModel({\n            step: constants_1.Constants.STEP_EVERYTHING,\n            groupState: groupState,\n            newData: true\n        });\n    };\n    InMemoryRowModel.prototype.updateRowData = function (rowDataTran, rowNodeOrder) {\n        this.valueCache.onDataChanged();\n        var rowNodeTran = this.nodeManager.updateRowData(rowDataTran, rowNodeOrder);\n        this.refreshModel({\n            step: constants_1.Constants.STEP_EVERYTHING,\n            rowNodeTransaction: rowNodeTran,\n            rowNodeOrder: rowNodeOrder,\n            keepRenderedRows: true,\n            animate: true,\n            keepEditingRows: true\n        });\n        var event = {\n            type: events_1.Events.EVENT_ROW_DATA_UPDATED,\n            api: this.gridApi,\n            columnApi: this.columnApi\n        };\n        this.eventService.dispatchEvent(event);\n        return rowNodeTran;\n    };\n    InMemoryRowModel.prototype.doRowsToDisplay = function () {\n        this.rowsToDisplay = this.flattenStage.execute({ rowNode: this.rootNode });\n    };\n    InMemoryRowModel.prototype.onRowHeightChanged = function () {\n        this.refreshModel({ step: constants_1.Constants.STEP_MAP, keepRenderedRows: true, keepEditingRows: true });\n    };\n    InMemoryRowModel.prototype.resetRowHeights = function () {\n        this.forEachNode(function (rowNode) { return rowNode.setRowHeight(null); });\n        this.onRowHeightChanged();\n    };\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], InMemoryRowModel.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('columnController'),\n        __metadata(\"design:type\", columnController_1.ColumnController)\n    ], InMemoryRowModel.prototype, \"columnController\", void 0);\n    __decorate([\n        context_1.Autowired('filterManager'),\n        __metadata(\"design:type\", filterManager_1.FilterManager)\n    ], InMemoryRowModel.prototype, \"filterManager\", void 0);\n    __decorate([\n        context_1.Autowired('$scope'),\n        __metadata(\"design:type\", Object)\n    ], InMemoryRowModel.prototype, \"$scope\", void 0);\n    __decorate([\n        context_1.Autowired('selectionController'),\n        __metadata(\"design:type\", selectionController_1.SelectionController)\n    ], InMemoryRowModel.prototype, \"selectionController\", void 0);\n    __decorate([\n        context_1.Autowired('eventService'),\n        __metadata(\"design:type\", eventService_1.EventService)\n    ], InMemoryRowModel.prototype, \"eventService\", void 0);\n    __decorate([\n        context_1.Autowired('context'),\n        __metadata(\"design:type\", context_1.Context)\n    ], InMemoryRowModel.prototype, \"context\", void 0);\n    __decorate([\n        context_1.Autowired('valueService'),\n        __metadata(\"design:type\", valueService_1.ValueService)\n    ], InMemoryRowModel.prototype, \"valueService\", void 0);\n    __decorate([\n        context_1.Autowired('valueCache'),\n        __metadata(\"design:type\", valueCache_1.ValueCache)\n    ], InMemoryRowModel.prototype, \"valueCache\", void 0);\n    __decorate([\n        context_1.Autowired('columnApi'),\n        __metadata(\"design:type\", columnController_1.ColumnApi)\n    ], InMemoryRowModel.prototype, \"columnApi\", void 0);\n    __decorate([\n        context_1.Autowired('gridApi'),\n        __metadata(\"design:type\", gridApi_1.GridApi)\n    ], InMemoryRowModel.prototype, \"gridApi\", void 0);\n    __decorate([\n        context_1.Autowired('filterStage'),\n        __metadata(\"design:type\", Object)\n    ], InMemoryRowModel.prototype, \"filterStage\", void 0);\n    __decorate([\n        context_1.Autowired('sortStage'),\n        __metadata(\"design:type\", Object)\n    ], InMemoryRowModel.prototype, \"sortStage\", void 0);\n    __decorate([\n        context_1.Autowired('flattenStage'),\n        __metadata(\"design:type\", Object)\n    ], InMemoryRowModel.prototype, \"flattenStage\", void 0);\n    __decorate([\n        context_1.Optional('groupStage'),\n        __metadata(\"design:type\", Object)\n    ], InMemoryRowModel.prototype, \"groupStage\", void 0);\n    __decorate([\n        context_1.Optional('aggregationStage'),\n        __metadata(\"design:type\", Object)\n    ], InMemoryRowModel.prototype, \"aggregationStage\", void 0);\n    __decorate([\n        context_1.Optional('pivotStage'),\n        __metadata(\"design:type\", Object)\n    ], InMemoryRowModel.prototype, \"pivotStage\", void 0);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], InMemoryRowModel.prototype, \"init\", null);\n    InMemoryRowModel = __decorate([\n        context_1.Bean('rowModel')\n    ], InMemoryRowModel);\n    return InMemoryRowModel;\n}());\nexports.InMemoryRowModel = InMemoryRowModel;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rowModels/inMemory/inMemoryRowModel.js\n// module id = 328\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** The base frameworks, eg React & Angular 2, override this bean with implementations specific to their requirement. */\nvar BaseFrameworkFactory = (function () {\n    function BaseFrameworkFactory() {\n    }\n    BaseFrameworkFactory.prototype.dateComponent = function (gridOptions) {\n        return gridOptions.dateComponent;\n    };\n    BaseFrameworkFactory.prototype.colDefFloatingCellRenderer = function (colDef) {\n        return colDef.pinnedRowCellRenderer;\n    };\n    BaseFrameworkFactory.prototype.colDefCellRenderer = function (colDef) {\n        return colDef.cellRenderer;\n    };\n    BaseFrameworkFactory.prototype.colDefCellEditor = function (colDef) {\n        return colDef.cellEditor;\n    };\n    BaseFrameworkFactory.prototype.colDefFilter = function (colDef) {\n        return colDef.filter;\n    };\n    BaseFrameworkFactory.prototype.gridOptionsFullWidthCellRenderer = function (gridOptions) {\n        return gridOptions.fullWidthCellRenderer;\n    };\n    BaseFrameworkFactory.prototype.gridOptionsGroupRowRenderer = function (gridOptions) {\n        return gridOptions.groupRowRenderer;\n    };\n    BaseFrameworkFactory.prototype.gridOptionsGroupRowInnerRenderer = function (gridOptions) {\n        return gridOptions.groupRowInnerRenderer;\n    };\n    BaseFrameworkFactory.prototype.setTimeout = function (action, timeout) {\n        setTimeout(action, timeout);\n    };\n    return BaseFrameworkFactory;\n}());\nexports.BaseFrameworkFactory = BaseFrameworkFactory;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/baseFrameworkFactory.js\n// module id = 329\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"./context/context\");\nvar LINE_SEPARATOR = '\\r\\n';\nvar XmlFactory = (function () {\n    function XmlFactory() {\n    }\n    XmlFactory.prototype.createXml = function (xmlElement, booleanTransformer) {\n        var _this = this;\n        var props = \"\";\n        if (xmlElement.properties) {\n            if (xmlElement.properties.prefixedAttributes) {\n                xmlElement.properties.prefixedAttributes.forEach(function (prefixedSet) {\n                    Object.keys(prefixedSet.map).forEach(function (key) {\n                        props += _this.returnAttributeIfPopulated(prefixedSet.prefix + key, prefixedSet.map[key], booleanTransformer);\n                    });\n                });\n            }\n            if (xmlElement.properties.rawMap) {\n                Object.keys(xmlElement.properties.rawMap).forEach(function (key) {\n                    props += _this.returnAttributeIfPopulated(key, xmlElement.properties.rawMap[key], booleanTransformer);\n                });\n            }\n        }\n        var result = \"<\" + xmlElement.name + props;\n        if (!xmlElement.children && xmlElement.textNode == null) {\n            return result + \"/>\" + LINE_SEPARATOR;\n        }\n        if (xmlElement.textNode != null) {\n            return result + \">\" + xmlElement.textNode + \"</\" + xmlElement.name + \">\" + LINE_SEPARATOR;\n        }\n        result += \">\" + LINE_SEPARATOR;\n        xmlElement.children.forEach(function (it) {\n            result += _this.createXml(it, booleanTransformer);\n        });\n        return result + \"</\" + xmlElement.name + \">\" + LINE_SEPARATOR;\n    };\n    XmlFactory.prototype.returnAttributeIfPopulated = function (key, value, booleanTransformer) {\n        if (!value) {\n            return \"\";\n        }\n        var xmlValue = value;\n        if ((typeof (value) === 'boolean')) {\n            if (booleanTransformer) {\n                xmlValue = booleanTransformer(value);\n            }\n        }\n        xmlValue = '\"' + xmlValue + '\"';\n        return \" \" + key + \"=\" + xmlValue;\n    };\n    XmlFactory = __decorate([\n        context_1.Bean('xmlFactory')\n    ], XmlFactory);\n    return XmlFactory;\n}());\nexports.XmlFactory = XmlFactory;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/xmlFactory.js\n// module id = 330\n// module chunks = 0","// ag-grid-react v15.0.0\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar React = require(\"react\");\nvar react_1 = require(\"react\");\nvar PropTypes = require(\"prop-types\");\nvar AgGrid = require(\"ag-grid\");\nvar AgGridColumn = /** @class */ (function (_super) {\n    __extends(AgGridColumn, _super);\n    function AgGridColumn(props, state) {\n        var _this = _super.call(this, props, state) || this;\n        _this.props = props;\n        _this.state = state;\n        return _this;\n    }\n    AgGridColumn.prototype.render = function () {\n        return null;\n    };\n    AgGridColumn.mapChildColumnDefs = function (columnProps) {\n        return React.Children.map(columnProps.children, function (child) {\n            return AgGridColumn.toColDef(child.props);\n        });\n    };\n    AgGridColumn.toColDef = function (columnProps) {\n        var colDef = AgGridColumn.createColDefFromGridColumn(columnProps);\n        if (AgGridColumn.hasChildColumns(columnProps)) {\n            colDef[\"children\"] = AgGridColumn.getChildColDefs(columnProps.children);\n        }\n        return colDef;\n    };\n    AgGridColumn.hasChildColumns = function (columnProps) {\n        return React.Children.count(columnProps.children) > 0;\n    };\n    AgGridColumn.getChildColDefs = function (columnChildren) {\n        return React.Children.map(columnChildren, function (child) {\n            return AgGridColumn.createColDefFromGridColumn(child.props);\n        });\n    };\n    ;\n    AgGridColumn.createColDefFromGridColumn = function (columnProps) {\n        var colDef = {};\n        AgGridColumn.assign(colDef, columnProps);\n        delete colDef.children;\n        return colDef;\n    };\n    ;\n    AgGridColumn.assign = function (colDef, from) {\n        // effectively Object.assign - here for IE compatibility\n        return [from].reduce(function (r, o) {\n            Object.keys(o).forEach(function (k) {\n                r[k] = o[k];\n            });\n            return r;\n        }, colDef);\n    };\n    return AgGridColumn;\n}(react_1.Component));\nexports.AgGridColumn = AgGridColumn;\naddProperties(AgGrid.ColDefUtil.BOOLEAN_PROPERTIES, PropTypes.bool);\naddProperties(AgGrid.ColDefUtil.STRING_PROPERTIES, PropTypes.string);\naddProperties(AgGrid.ColDefUtil.OBJECT_PROPERTIES, PropTypes.object);\naddProperties(AgGrid.ColDefUtil.ARRAY_PROPERTIES, PropTypes.array);\naddProperties(AgGrid.ColDefUtil.NUMBER_PROPERTIES, PropTypes.number);\naddProperties(AgGrid.ColDefUtil.FUNCTION_PROPERTIES, PropTypes.func);\nfunction addProperties(listOfProps, propType) {\n    listOfProps.forEach(function (propKey) {\n        AgGridColumn[propKey] = propType;\n    });\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid-react/lib/agGridColumn.js\n// module id = 331\n// module chunks = 0","export const updateObject = (oldObject, updatedProperties) => {\n    return {\n        ...oldObject,\n        ...updatedProperties\n    };\n};\n\n\n// WEBPACK FOOTER //\n// src/store/utility.js","/* jshint node:true */\n\n'use strict';\n\nvar IntlMessageFormat = require('./lib/main')['default'];\n\n// Add all locale data to `IntlMessageFormat`. This module will be ignored when\n// bundling for the browser with Browserify/Webpack.\nrequire('./lib/locales');\n\n// Re-export `IntlMessageFormat` as the CommonJS default exports with all the\n// locale data registered, and with English set as the default locale. Define\n// the `default` prop for use with other compiled ES6 Modules.\nexports = module.exports = IntlMessageFormat;\nexports['default'] = exports;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/intl-messageformat/index.js\n// module id = 333\n// module chunks = 0","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\n\"use strict\";\nexports.extend = extend;\nvar hop = Object.prototype.hasOwnProperty;\n\nfunction extend(obj) {\n    var sources = Array.prototype.slice.call(arguments, 1),\n        i, len, source, key;\n\n    for (i = 0, len = sources.length; i < len; i += 1) {\n        source = sources[i];\n        if (!source) { continue; }\n\n        for (key in source) {\n            if (hop.call(source, key)) {\n                obj[key] = source[key];\n            }\n        }\n    }\n\n    return obj;\n}\nexports.hop = hop;\n\n//# sourceMappingURL=utils.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/intl-messageformat/lib/utils.js\n// module id = 334\n// module chunks = 0","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Router, BrowserRouter, ConnectedRouter } from 'react-router-dom';\nimport { Provider } from 'react-redux';\nimport { createStore, combineReducers, applyMiddleware, compose } from 'redux';\nimport thunk from 'redux-thunk';\n\nimport \"ag-grid/dist/styles/ag-grid.css\";\nimport \"ag-grid/dist/styles/theme-fresh.css\";\n\nimport './index.css';\nimport App from './App';\nimport registerServiceWorker from './registerServiceWorker';\nimport setAuthToken from './store/utils/setAuthToken';\n\nimport categoryReducer from './store/reducers/categoryReducer';\nimport authReducer from './store/reducers/auth';\n\n\nimport { IntlProvider } from 'react-intl';\n\n\nimport jquery from 'jquery';\nimport metismenu from 'metismenu';\nimport bootstrap from 'bootstrap';\n\n\n// import './js/cbpAnimatedHeader.js';\n\nimport './index.css'\nimport './../node_modules/bootstrap/dist/css/bootstrap.css'\nimport './../node_modules/font-awesome/css/font-awesome.css'\nimport './../node_modules/animate.css/animate.min.css'\nimport walmartCategoryReducer from \"./store/reducers/walmartCategory\";\n\n\nconst composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;\n\n\nconst rootReducer = combineReducers({\n    auth: authReducer,\n    walmartCategory: walmartCategoryReducer\n});\n\nconst logger = store => {\n    return next => {\n        return action => {\n            console.log('[middleware dispatching]', action);\n            const result = next(action);\n            console.log('[middleware] next state', store.getState());\n            return result;\n        }\n    }\n};\n\n\nconst store = createStore(rootReducer, composeEnhancers (\n    applyMiddleware(thunk)\n));\n\nsetAuthToken(localStorage.token);\n\nconst app = (\n    <Provider store={store}>\n            <IntlProvider locale=\"en\">\n                <BrowserRouter basename=\"/glplus4/\">\n                    <App />\n                </BrowserRouter>\n            </IntlProvider>\n    </Provider>\n);\n\nReactDOM.render(app, document.getElementById('root'));\nregisterServiceWorker();\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/index.js","/*\n React v16.0.0\n react.production.min.js\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'use strict';var f=require(\"object-assign\"),p=require(\"fbjs/lib/emptyObject\");require(\"fbjs/lib/invariant\");var r=require(\"fbjs/lib/emptyFunction\");\nfunction t(a){for(var b=arguments.length-1,d=\"Minified React error #\"+a+\"; visit http://facebook.github.io/react/docs/error-decoder.html?invariant\\x3d\"+a,e=0;e<b;e++)d+=\"\\x26args[]\\x3d\"+encodeURIComponent(arguments[e+1]);b=Error(d+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\");b.name=\"Invariant Violation\";b.framesToPop=1;throw b;}\nvar u={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}};function v(a,b,d){this.props=a;this.context=b;this.refs=p;this.updater=d||u}v.prototype.isReactComponent={};v.prototype.setState=function(a,b){\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a?t(\"85\"):void 0;this.updater.enqueueSetState(this,a,b,\"setState\")};v.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};\nfunction w(a,b,d){this.props=a;this.context=b;this.refs=p;this.updater=d||u}function x(){}x.prototype=v.prototype;var y=w.prototype=new x;y.constructor=w;f(y,v.prototype);y.isPureReactComponent=!0;function z(a,b,d){this.props=a;this.context=b;this.refs=p;this.updater=d||u}var A=z.prototype=new x;A.constructor=z;f(A,v.prototype);A.unstable_isAsyncReactComponent=!0;A.render=function(){return this.props.children};\nvar B={Component:v,PureComponent:w,AsyncComponent:z},C={current:null},D=Object.prototype.hasOwnProperty,E=\"function\"===typeof Symbol&&Symbol[\"for\"]&&Symbol[\"for\"](\"react.element\")||60103,F={key:!0,ref:!0,__self:!0,__source:!0};function G(a,b,d,e,c,g,k){return{$$typeof:E,type:a,key:b,ref:d,props:k,_owner:g}}\nG.createElement=function(a,b,d){var e,c={},g=null,k=null,m=null,q=null;if(null!=b)for(e in void 0!==b.ref&&(k=b.ref),void 0!==b.key&&(g=\"\"+b.key),m=void 0===b.__self?null:b.__self,q=void 0===b.__source?null:b.__source,b)D.call(b,e)&&!F.hasOwnProperty(e)&&(c[e]=b[e]);var l=arguments.length-2;if(1===l)c.children=d;else if(1<l){for(var h=Array(l),n=0;n<l;n++)h[n]=arguments[n+2];c.children=h}if(a&&a.defaultProps)for(e in l=a.defaultProps,l)void 0===c[e]&&(c[e]=l[e]);return G(a,g,k,m,q,C.current,c)};\nG.createFactory=function(a){var b=G.createElement.bind(null,a);b.type=a;return b};G.cloneAndReplaceKey=function(a,b){return G(a.type,b,a.ref,a._self,a._source,a._owner,a.props)};\nG.cloneElement=function(a,b,d){var e=f({},a.props),c=a.key,g=a.ref,k=a._self,m=a._source,q=a._owner;if(null!=b){void 0!==b.ref&&(g=b.ref,q=C.current);void 0!==b.key&&(c=\"\"+b.key);if(a.type&&a.type.defaultProps)var l=a.type.defaultProps;for(h in b)D.call(b,h)&&!F.hasOwnProperty(h)&&(e[h]=void 0===b[h]&&void 0!==l?l[h]:b[h])}var h=arguments.length-2;if(1===h)e.children=d;else if(1<h){l=Array(h);for(var n=0;n<h;n++)l[n]=arguments[n+2];e.children=l}return G(a.type,c,g,k,m,q,e)};\nG.isValidElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===E};var H=\"function\"===typeof Symbol&&Symbol.iterator,I=\"function\"===typeof Symbol&&Symbol[\"for\"]&&Symbol[\"for\"](\"react.element\")||60103;function escape(a){var b={\"\\x3d\":\"\\x3d0\",\":\":\"\\x3d2\"};return\"$\"+(\"\"+a).replace(/[=:]/g,function(a){return b[a]})}var J=/\\/+/g,K=[];\nfunction L(a,b,d,e){if(K.length){var c=K.pop();c.result=a;c.keyPrefix=b;c.func=d;c.context=e;c.count=0;return c}return{result:a,keyPrefix:b,func:d,context:e,count:0}}function M(a){a.result=null;a.keyPrefix=null;a.func=null;a.context=null;a.count=0;10>K.length&&K.push(a)}\nfunction N(a,b,d,e){var c=typeof a;if(\"undefined\"===c||\"boolean\"===c)a=null;if(null===a||\"string\"===c||\"number\"===c||\"object\"===c&&a.$$typeof===I)return d(e,a,\"\"===b?\".\"+O(a,0):b),1;var g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var k=0;k<a.length;k++){c=a[k];var m=b+O(c,k);g+=N(c,m,d,e)}else if(m=H&&a[H]||a[\"@@iterator\"],\"function\"===typeof m)for(a=m.call(a),k=0;!(c=a.next()).done;)c=c.value,m=b+O(c,k++),g+=N(c,m,d,e);else\"object\"===c&&(d=\"\"+a,t(\"31\",\"[object Object]\"===d?\"object with keys {\"+\nObject.keys(a).join(\", \")+\"}\":d,\"\"));return g}function O(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(a.key):b.toString(36)}function P(a,b){a.func.call(a.context,b,a.count++)}function Q(a,b,d){var e=a.result,c=a.keyPrefix;a=a.func.call(a.context,b,a.count++);Array.isArray(a)?R(a,e,d,r.thatReturnsArgument):null!=a&&(G.isValidElement(a)&&(a=G.cloneAndReplaceKey(a,c+(!a.key||b&&b.key===a.key?\"\":(\"\"+a.key).replace(J,\"$\\x26/\")+\"/\")+d)),e.push(a))}\nfunction R(a,b,d,e,c){var g=\"\";null!=d&&(g=(\"\"+d).replace(J,\"$\\x26/\")+\"/\");b=L(b,g,e,c);null==a||N(a,\"\",Q,b);M(b)}var S={forEach:function(a,b,d){if(null==a)return a;b=L(null,null,b,d);null==a||N(a,\"\",P,b);M(b)},map:function(a,b,d){if(null==a)return a;var e=[];R(a,e,null,b,d);return e},count:function(a){return null==a?0:N(a,\"\",r.thatReturnsNull,null)},toArray:function(a){var b=[];R(a,b,null,r.thatReturnsArgument);return b}};\nmodule.exports={Children:{map:S.map,forEach:S.forEach,count:S.count,toArray:S.toArray,only:function(a){G.isValidElement(a)?void 0:t(\"143\");return a}},Component:B.Component,PureComponent:B.PureComponent,unstable_AsyncComponent:B.AsyncComponent,createElement:G.createElement,cloneElement:G.cloneElement,isValidElement:G.isValidElement,createFactory:G.createFactory,version:\"16.0.0\",__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{ReactCurrentOwner:C,assign:f}};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react/cjs/react.production.min.js\n// module id = 336\n// module chunks = 0","/** @license React v16.0.0\n * react.development.js\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'use strict';\n\n\nif (process.env.NODE_ENV !== \"production\") {\n(function() {\n\n'use strict';\n\nvar objectAssign$1 = require('object-assign');\nvar require$$0 = require('fbjs/lib/warning');\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar invariant = require('fbjs/lib/invariant');\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar checkPropTypes = require('prop-types/checkPropTypes');\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 * @providesModule reactProdInvariant\n * \n */\n\n{\n  var warning = require$$0;\n}\n\nfunction warnNoop(publicInstance, callerName) {\n  {\n    var constructor = publicInstance.constructor;\n    warning(false, '%s(...): Can only update a mounted or mounting component. ' + 'This usually means you called %s() on an unmounted component. ' + 'This is a no-op.\\n\\nPlease check the code for the %s component.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass');\n  }\n}\n\n/**\n * This is the abstract API for an update queue.\n */\nvar ReactNoopUpdateQueue = {\n  /**\n   * Checks whether or not this composite component is mounted.\n   * @param {ReactClass} publicInstance The instance we want to test.\n   * @return {boolean} True if mounted, false otherwise.\n   * @protected\n   * @final\n   */\n  isMounted: function (publicInstance) {\n    return false;\n  },\n\n  /**\n   * Forces an update. This should only be invoked when it is known with\n   * certainty that we are **not** in a DOM transaction.\n   *\n   * You may want to call this when you know that some deeper aspect of the\n   * component's state has changed but `setState` was not called.\n   *\n   * This will not invoke `shouldComponentUpdate`, but it will invoke\n   * `componentWillUpdate` and `componentDidUpdate`.\n   *\n   * @param {ReactClass} publicInstance The instance that should rerender.\n   * @param {?function} callback Called after component is updated.\n   * @param {?string} callerName name of the calling function in the public API.\n   * @internal\n   */\n  enqueueForceUpdate: function (publicInstance, callback, callerName) {\n    warnNoop(publicInstance, 'forceUpdate');\n  },\n\n  /**\n   * Replaces all of the state. Always use this or `setState` to mutate state.\n   * You should treat `this.state` as immutable.\n   *\n   * There is no guarantee that `this.state` will be immediately updated, so\n   * accessing `this.state` after calling this method may return the old value.\n   *\n   * @param {ReactClass} publicInstance The instance that should rerender.\n   * @param {object} completeState Next state.\n   * @param {?function} callback Called after component is updated.\n   * @param {?string} callerName name of the calling function in the public API.\n   * @internal\n   */\n  enqueueReplaceState: function (publicInstance, completeState, callback, callerName) {\n    warnNoop(publicInstance, 'replaceState');\n  },\n\n  /**\n   * Sets a subset of the state. This only exists because _pendingState is\n   * internal. This provides a merging strategy that is not available to deep\n   * properties which is confusing. TODO: Expose pendingState or don't use it\n   * during the merge.\n   *\n   * @param {ReactClass} publicInstance The instance that should rerender.\n   * @param {object} partialState Next partial state to be merged with state.\n   * @param {?function} callback Called after component is updated.\n   * @param {?string} Name of the calling function in the public API.\n   * @internal\n   */\n  enqueueSetState: function (publicInstance, partialState, callback, callerName) {\n    warnNoop(publicInstance, 'setState');\n  }\n};\n\nvar ReactNoopUpdateQueue_1 = ReactNoopUpdateQueue;\n\n/**\n * Copyright (c) 2014-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 * @providesModule lowPriorityWarning\n */\n\n/**\n * Forked from fbjs/warning:\n * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js\n *\n * Only change is we use console.warn instead of console.error,\n * and do nothing when 'console' is not supported.\n * This really simplifies the code.\n * ---\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar lowPriorityWarning = function () {};\n\n{\n  var printWarning = function (format) {\n    for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    var argIndex = 0;\n    var message = 'Warning: ' + format.replace(/%s/g, function () {\n      return args[argIndex++];\n    });\n    if (typeof console !== 'undefined') {\n      console.warn(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) {}\n  };\n\n  lowPriorityWarning = function (condition, format) {\n    if (format === undefined) {\n      throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n    }\n    if (!condition) {\n      for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n        args[_key2 - 2] = arguments[_key2];\n      }\n\n      printWarning.apply(undefined, [format].concat(args));\n    }\n  };\n}\n\nvar lowPriorityWarning_1 = lowPriorityWarning;\n\n/**\n * Base class helpers for the updating state of a component.\n */\nfunction ReactComponent(props, context, updater) {\n  this.props = props;\n  this.context = context;\n  this.refs = emptyObject;\n  // We initialize the default updater but the real one gets injected by the\n  // renderer.\n  this.updater = updater || ReactNoopUpdateQueue_1;\n}\n\nReactComponent.prototype.isReactComponent = {};\n\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together.  You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n *        produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\nReactComponent.prototype.setState = function (partialState, callback) {\n  !(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null) ? invariant(false, 'setState(...): takes an object of state variables to update or a function which returns an object of state variables.') : void 0;\n  this.updater.enqueueSetState(this, partialState, callback, 'setState');\n};\n\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\nReactComponent.prototype.forceUpdate = function (callback) {\n  this.updater.enqueueForceUpdate(this, callback, 'forceUpdate');\n};\n\n/**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */\n{\n  var deprecatedAPIs = {\n    isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],\n    replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']\n  };\n  var defineDeprecationWarning = function (methodName, info) {\n    Object.defineProperty(ReactComponent.prototype, methodName, {\n      get: function () {\n        lowPriorityWarning_1(false, '%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]);\n        return undefined;\n      }\n    });\n  };\n  for (var fnName in deprecatedAPIs) {\n    if (deprecatedAPIs.hasOwnProperty(fnName)) {\n      defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n    }\n  }\n}\n\n/**\n * Base class helpers for the updating state of a component.\n */\nfunction ReactPureComponent(props, context, updater) {\n  // Duplicated from ReactComponent.\n  this.props = props;\n  this.context = context;\n  this.refs = emptyObject;\n  // We initialize the default updater but the real one gets injected by the\n  // renderer.\n  this.updater = updater || ReactNoopUpdateQueue_1;\n}\n\nfunction ComponentDummy() {}\nComponentDummy.prototype = ReactComponent.prototype;\nvar pureComponentPrototype = ReactPureComponent.prototype = new ComponentDummy();\npureComponentPrototype.constructor = ReactPureComponent;\n// Avoid an extra prototype jump for these methods.\nobjectAssign$1(pureComponentPrototype, ReactComponent.prototype);\npureComponentPrototype.isPureReactComponent = true;\n\nfunction ReactAsyncComponent(props, context, updater) {\n  // Duplicated from ReactComponent.\n  this.props = props;\n  this.context = context;\n  this.refs = emptyObject;\n  // We initialize the default updater but the real one gets injected by the\n  // renderer.\n  this.updater = updater || ReactNoopUpdateQueue_1;\n}\n\nvar asyncComponentPrototype = ReactAsyncComponent.prototype = new ComponentDummy();\nasyncComponentPrototype.constructor = ReactAsyncComponent;\n// Avoid an extra prototype jump for these methods.\nobjectAssign$1(asyncComponentPrototype, ReactComponent.prototype);\nasyncComponentPrototype.unstable_isAsyncReactComponent = true;\nasyncComponentPrototype.render = function () {\n  return this.props.children;\n};\n\nvar ReactBaseClasses = {\n  Component: ReactComponent,\n  PureComponent: ReactPureComponent,\n  AsyncComponent: ReactAsyncComponent\n};\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 * @providesModule ReactCurrentOwner\n * \n */\n\n/**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n */\nvar ReactCurrentOwner = {\n  /**\n   * @internal\n   * @type {ReactComponent}\n   */\n  current: null\n};\n\nvar ReactCurrentOwner_1 = ReactCurrentOwner;\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n{\n  var warning$2 = require$$0;\n}\n\n// The Symbol used to tag the ReactElement type. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar REACT_ELEMENT_TYPE$1 = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;\n\nvar RESERVED_PROPS = {\n  key: true,\n  ref: true,\n  __self: true,\n  __source: true\n};\n\nvar specialPropKeyWarningShown;\nvar specialPropRefWarningShown;\n\nfunction hasValidRef(config) {\n  {\n    if (hasOwnProperty.call(config, 'ref')) {\n      var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n      if (getter && getter.isReactWarning) {\n        return false;\n      }\n    }\n  }\n  return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n  {\n    if (hasOwnProperty.call(config, 'key')) {\n      var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n      if (getter && getter.isReactWarning) {\n        return false;\n      }\n    }\n  }\n  return config.key !== undefined;\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n  var warnAboutAccessingKey = function () {\n    if (!specialPropKeyWarningShown) {\n      specialPropKeyWarningShown = true;\n      warning$2(false, '%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName);\n    }\n  };\n  warnAboutAccessingKey.isReactWarning = true;\n  Object.defineProperty(props, 'key', {\n    get: warnAboutAccessingKey,\n    configurable: true\n  });\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n  var warnAboutAccessingRef = function () {\n    if (!specialPropRefWarningShown) {\n      specialPropRefWarningShown = true;\n      warning$2(false, '%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName);\n    }\n  };\n  warnAboutAccessingRef.isReactWarning = true;\n  Object.defineProperty(props, 'ref', {\n    get: warnAboutAccessingRef,\n    configurable: true\n  });\n}\n\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, no instanceof check\n * will work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} key\n * @param {string|object} ref\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @param {*} owner\n * @param {*} props\n * @internal\n */\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n  var element = {\n    // This tag allow us to uniquely identify this as a React Element\n    $$typeof: REACT_ELEMENT_TYPE$1,\n\n    // Built-in properties that belong on the element\n    type: type,\n    key: key,\n    ref: ref,\n    props: props,\n\n    // Record the component responsible for creating this element.\n    _owner: owner\n  };\n\n  {\n    // The validation flag is currently mutative. We put it on\n    // an external backing store so that we can freeze the whole object.\n    // This can be replaced with a WeakMap once they are implemented in\n    // commonly used development environments.\n    element._store = {};\n\n    // To make comparing ReactElements easier for testing purposes, we make\n    // the validation flag non-enumerable (where possible, which should\n    // include every environment we run tests in), so the test framework\n    // ignores it.\n    Object.defineProperty(element._store, 'validated', {\n      configurable: false,\n      enumerable: false,\n      writable: true,\n      value: false\n    });\n    // self and source are DEV only properties.\n    Object.defineProperty(element, '_self', {\n      configurable: false,\n      enumerable: false,\n      writable: false,\n      value: self\n    });\n    // Two elements created in two different places should be considered\n    // equal for testing purposes and therefore we hide it from enumeration.\n    Object.defineProperty(element, '_source', {\n      configurable: false,\n      enumerable: false,\n      writable: false,\n      value: source\n    });\n    if (Object.freeze) {\n      Object.freeze(element.props);\n      Object.freeze(element);\n    }\n  }\n\n  return element;\n};\n\n/**\n * Create and return a new ReactElement of the given type.\n * See https://facebook.github.io/react/docs/react-api.html#createelement\n */\nReactElement.createElement = function (type, config, children) {\n  var propName;\n\n  // Reserved names are extracted\n  var props = {};\n\n  var key = null;\n  var ref = null;\n  var self = null;\n  var source = null;\n\n  if (config != null) {\n    if (hasValidRef(config)) {\n      ref = config.ref;\n    }\n    if (hasValidKey(config)) {\n      key = '' + config.key;\n    }\n\n    self = config.__self === undefined ? null : config.__self;\n    source = config.__source === undefined ? null : config.__source;\n    // Remaining properties are added to a new props object\n    for (propName in config) {\n      if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n        props[propName] = config[propName];\n      }\n    }\n  }\n\n  // Children can be more than one argument, and those are transferred onto\n  // the newly allocated props object.\n  var childrenLength = arguments.length - 2;\n  if (childrenLength === 1) {\n    props.children = children;\n  } else if (childrenLength > 1) {\n    var childArray = Array(childrenLength);\n    for (var i = 0; i < childrenLength; i++) {\n      childArray[i] = arguments[i + 2];\n    }\n    {\n      if (Object.freeze) {\n        Object.freeze(childArray);\n      }\n    }\n    props.children = childArray;\n  }\n\n  // Resolve default props\n  if (type && type.defaultProps) {\n    var defaultProps = type.defaultProps;\n    for (propName in defaultProps) {\n      if (props[propName] === undefined) {\n        props[propName] = defaultProps[propName];\n      }\n    }\n  }\n  {\n    if (key || ref) {\n      if (typeof props.$$typeof === 'undefined' || props.$$typeof !== REACT_ELEMENT_TYPE$1) {\n        var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n        if (key) {\n          defineKeyPropWarningGetter(props, displayName);\n        }\n        if (ref) {\n          defineRefPropWarningGetter(props, displayName);\n        }\n      }\n    }\n  }\n  return ReactElement(type, key, ref, self, source, ReactCurrentOwner_1.current, props);\n};\n\n/**\n * Return a function that produces ReactElements of a given type.\n * See https://facebook.github.io/react/docs/react-api.html#createfactory\n */\nReactElement.createFactory = function (type) {\n  var factory = ReactElement.createElement.bind(null, type);\n  // Expose the type on the factory and the prototype so that it can be\n  // easily accessed on elements. E.g. `<Foo />.type === Foo`.\n  // This should not be named `constructor` since this may not be the function\n  // that created the element, and it may not even be a constructor.\n  // Legacy hook TODO: Warn if this is accessed\n  factory.type = type;\n  return factory;\n};\n\nReactElement.cloneAndReplaceKey = function (oldElement, newKey) {\n  var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);\n\n  return newElement;\n};\n\n/**\n * Clone and return a new ReactElement using element as the starting point.\n * See https://facebook.github.io/react/docs/react-api.html#cloneelement\n */\nReactElement.cloneElement = function (element, config, children) {\n  var propName;\n\n  // Original props are copied\n  var props = objectAssign$1({}, element.props);\n\n  // Reserved names are extracted\n  var key = element.key;\n  var ref = element.ref;\n  // Self is preserved since the owner is preserved.\n  var self = element._self;\n  // Source is preserved since cloneElement is unlikely to be targeted by a\n  // transpiler, and the original source is probably a better indicator of the\n  // true owner.\n  var source = element._source;\n\n  // Owner will be preserved, unless ref is overridden\n  var owner = element._owner;\n\n  if (config != null) {\n    if (hasValidRef(config)) {\n      // Silently steal the ref from the parent.\n      ref = config.ref;\n      owner = ReactCurrentOwner_1.current;\n    }\n    if (hasValidKey(config)) {\n      key = '' + config.key;\n    }\n\n    // Remaining properties override existing props\n    var defaultProps;\n    if (element.type && element.type.defaultProps) {\n      defaultProps = element.type.defaultProps;\n    }\n    for (propName in config) {\n      if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n        if (config[propName] === undefined && defaultProps !== undefined) {\n          // Resolve default props\n          props[propName] = defaultProps[propName];\n        } else {\n          props[propName] = config[propName];\n        }\n      }\n    }\n  }\n\n  // Children can be more than one argument, and those are transferred onto\n  // the newly allocated props object.\n  var childrenLength = arguments.length - 2;\n  if (childrenLength === 1) {\n    props.children = children;\n  } else if (childrenLength > 1) {\n    var childArray = Array(childrenLength);\n    for (var i = 0; i < childrenLength; i++) {\n      childArray[i] = arguments[i + 2];\n    }\n    props.children = childArray;\n  }\n\n  return ReactElement(element.type, key, ref, self, source, owner, props);\n};\n\n/**\n * Verifies the object is a ReactElement.\n * See https://facebook.github.io/react/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a valid component.\n * @final\n */\nReactElement.isValidElement = function (object) {\n  return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE$1;\n};\n\nvar ReactElement_1 = ReactElement;\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 * @providesModule ReactDebugCurrentFrame\n * \n */\n\nvar ReactDebugCurrentFrame = {};\n\n{\n  // Component that is being worked on\n  ReactDebugCurrentFrame.getCurrentStack = null;\n\n  ReactDebugCurrentFrame.getStackAddendum = function () {\n    var impl = ReactDebugCurrentFrame.getCurrentStack;\n    if (impl) {\n      return impl();\n    }\n    return null;\n  };\n}\n\nvar ReactDebugCurrentFrame_1 = ReactDebugCurrentFrame;\n\n{\n  var warning$1 = require$$0;\n\n  var _require = ReactDebugCurrentFrame_1,\n      getStackAddendum = _require.getStackAddendum;\n}\n\nvar ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n// The Symbol used to tag the ReactElement type. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\nfunction escape(key) {\n  var escapeRegex = /[=:]/g;\n  var escaperLookup = {\n    '=': '=0',\n    ':': '=2'\n  };\n  var escapedString = ('' + key).replace(escapeRegex, function (match) {\n    return escaperLookup[match];\n  });\n\n  return '$' + escapedString;\n}\n\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\nvar didWarnAboutMaps = false;\n\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction escapeUserProvidedKey(text) {\n  return ('' + text).replace(userProvidedKeyEscapeRegex, '$&/');\n}\n\nvar POOL_SIZE = 10;\nvar traverseContextPool = [];\nfunction getPooledTraverseContext(mapResult, keyPrefix, mapFunction, mapContext) {\n  if (traverseContextPool.length) {\n    var traverseContext = traverseContextPool.pop();\n    traverseContext.result = mapResult;\n    traverseContext.keyPrefix = keyPrefix;\n    traverseContext.func = mapFunction;\n    traverseContext.context = mapContext;\n    traverseContext.count = 0;\n    return traverseContext;\n  } else {\n    return {\n      result: mapResult,\n      keyPrefix: keyPrefix,\n      func: mapFunction,\n      context: mapContext,\n      count: 0\n    };\n  }\n}\n\nfunction releaseTraverseContext(traverseContext) {\n  traverseContext.result = null;\n  traverseContext.keyPrefix = null;\n  traverseContext.func = null;\n  traverseContext.context = null;\n  traverseContext.count = 0;\n  if (traverseContextPool.length < POOL_SIZE) {\n    traverseContextPool.push(traverseContext);\n  }\n}\n\n/**\n * @param {?*} children Children tree container.\n * @param {!string} nameSoFar Name of the key path so far.\n * @param {!function} callback Callback to invoke with each child found.\n * @param {?*} traverseContext Used to pass information throughout the traversal\n * process.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {\n  var type = typeof children;\n\n  if (type === 'undefined' || type === 'boolean') {\n    // All of the above are perceived as null.\n    children = null;\n  }\n\n  if (children === null || type === 'string' || type === 'number' ||\n  // The following is inlined from ReactElement. This means we can optimize\n  // some checks. React Fiber also inlines this logic for similar purposes.\n  type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) {\n    callback(traverseContext, children,\n    // If it's the only child, treat the name as if it was wrapped in an array\n    // so that it's consistent if the number of children grows.\n    nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);\n    return 1;\n  }\n\n  var child;\n  var nextName;\n  var subtreeCount = 0; // Count of children found in the current subtree.\n  var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n  if (Array.isArray(children)) {\n    for (var i = 0; i < children.length; i++) {\n      child = children[i];\n      nextName = nextNamePrefix + getComponentKey(child, i);\n      subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n    }\n  } else {\n    var iteratorFn = ITERATOR_SYMBOL && children[ITERATOR_SYMBOL] || children[FAUX_ITERATOR_SYMBOL];\n    if (typeof iteratorFn === 'function') {\n      {\n        // Warn about using Maps as children\n        if (iteratorFn === children.entries) {\n          warning$1(didWarnAboutMaps, 'Using Maps as children is unsupported and will likely yield ' + 'unexpected results. Convert it to a sequence/iterable of keyed ' + 'ReactElements instead.%s', getStackAddendum());\n          didWarnAboutMaps = true;\n        }\n      }\n\n      var iterator = iteratorFn.call(children);\n      var step;\n      var ii = 0;\n      while (!(step = iterator.next()).done) {\n        child = step.value;\n        nextName = nextNamePrefix + getComponentKey(child, ii++);\n        subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n      }\n    } else if (type === 'object') {\n      var addendum = '';\n      {\n        addendum = ' If you meant to render a collection of children, use an array ' + 'instead.' + getStackAddendum();\n      }\n      var childrenString = '' + children;\n      invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum);\n    }\n  }\n\n  return subtreeCount;\n}\n\n/**\n * Traverses children that are typically specified as `props.children`, but\n * might also be specified through attributes:\n *\n * - `traverseAllChildren(this.props.children, ...)`\n * - `traverseAllChildren(this.props.leftPanelChildren, ...)`\n *\n * The `traverseContext` is an optional argument that is passed through the\n * entire traversal. It can be used to store accumulations or anything else that\n * the callback might find relevant.\n *\n * @param {?*} children Children tree object.\n * @param {!function} callback To invoke upon traversing each child.\n * @param {?*} traverseContext Context for traversal.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildren(children, callback, traverseContext) {\n  if (children == null) {\n    return 0;\n  }\n\n  return traverseAllChildrenImpl(children, '', callback, traverseContext);\n}\n\n/**\n * Generate a key string that identifies a component within a set.\n *\n * @param {*} component A component that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\nfunction getComponentKey(component, index) {\n  // Do some typechecking here since we call this blindly. We want to ensure\n  // that we don't block potential future ES APIs.\n  if (typeof component === 'object' && component !== null && component.key != null) {\n    // Explicit key\n    return escape(component.key);\n  }\n  // Implicit key determined by the index in the set\n  return index.toString(36);\n}\n\nfunction forEachSingleChild(bookKeeping, child, name) {\n  var func = bookKeeping.func,\n      context = bookKeeping.context;\n\n  func.call(context, child, bookKeeping.count++);\n}\n\n/**\n * Iterates through children that are typically specified as `props.children`.\n *\n * See https://facebook.github.io/react/docs/react-api.html#react.children.foreach\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc\n * @param {*} forEachContext Context for forEachContext.\n */\nfunction forEachChildren(children, forEachFunc, forEachContext) {\n  if (children == null) {\n    return children;\n  }\n  var traverseContext = getPooledTraverseContext(null, null, forEachFunc, forEachContext);\n  traverseAllChildren(children, forEachSingleChild, traverseContext);\n  releaseTraverseContext(traverseContext);\n}\n\nfunction mapSingleChildIntoContext(bookKeeping, child, childKey) {\n  var result = bookKeeping.result,\n      keyPrefix = bookKeeping.keyPrefix,\n      func = bookKeeping.func,\n      context = bookKeeping.context;\n\n\n  var mappedChild = func.call(context, child, bookKeeping.count++);\n  if (Array.isArray(mappedChild)) {\n    mapIntoWithKeyPrefixInternal(mappedChild, result, childKey, emptyFunction.thatReturnsArgument);\n  } else if (mappedChild != null) {\n    if (ReactElement_1.isValidElement(mappedChild)) {\n      mappedChild = ReactElement_1.cloneAndReplaceKey(mappedChild,\n      // Keep both the (mapped) and old keys if they differ, just as\n      // traverseAllChildren used to do for objects as children\n      keyPrefix + (mappedChild.key && (!child || child.key !== mappedChild.key) ? escapeUserProvidedKey(mappedChild.key) + '/' : '') + childKey);\n    }\n    result.push(mappedChild);\n  }\n}\n\nfunction mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) {\n  var escapedPrefix = '';\n  if (prefix != null) {\n    escapedPrefix = escapeUserProvidedKey(prefix) + '/';\n  }\n  var traverseContext = getPooledTraverseContext(array, escapedPrefix, func, context);\n  traverseAllChildren(children, mapSingleChildIntoContext, traverseContext);\n  releaseTraverseContext(traverseContext);\n}\n\n/**\n * Maps children that are typically specified as `props.children`.\n *\n * See https://facebook.github.io/react/docs/react-api.html#react.children.map\n *\n * The provided mapFunction(child, key, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func The map function.\n * @param {*} context Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */\nfunction mapChildren(children, func, context) {\n  if (children == null) {\n    return children;\n  }\n  var result = [];\n  mapIntoWithKeyPrefixInternal(children, result, null, func, context);\n  return result;\n}\n\n/**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * See https://facebook.github.io/react/docs/react-api.html#react.children.count\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\nfunction countChildren(children, context) {\n  return traverseAllChildren(children, emptyFunction.thatReturnsNull, null);\n}\n\n/**\n * Flatten a children object (typically specified as `props.children`) and\n * return an array with appropriately re-keyed children.\n *\n * See https://facebook.github.io/react/docs/react-api.html#react.children.toarray\n */\nfunction toArray(children) {\n  var result = [];\n  mapIntoWithKeyPrefixInternal(children, result, null, emptyFunction.thatReturnsArgument);\n  return result;\n}\n\nvar ReactChildren = {\n  forEach: forEachChildren,\n  map: mapChildren,\n  count: countChildren,\n  toArray: toArray\n};\n\nvar ReactChildren_1 = ReactChildren;\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 * @providesModule ReactVersion\n */\n\nvar ReactVersion = '16.0.0';\n\n/**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection.\n *\n * See https://facebook.github.io/react/docs/react-api.html#react.children.only\n *\n * The current implementation of this function assumes that a single child gets\n * passed without a wrapper, but the purpose of this helper function is to\n * abstract away the particular structure of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactElement} The first and only `ReactElement` contained in the\n * structure.\n */\nfunction onlyChild(children) {\n  !ReactElement_1.isValidElement(children) ? invariant(false, 'React.Children.only expected to receive a single React element child.') : void 0;\n  return children;\n}\n\nvar onlyChild_1 = onlyChild;\n\n/**\n * Copyright (c) 2016-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 * @providesModule describeComponentFrame\n */\n\nvar describeComponentFrame$1 = function (name, source, ownerName) {\n  return '\\n    in ' + (name || 'Unknown') + (source ? ' (at ' + source.fileName.replace(/^.*[\\\\\\/]/, '') + ':' + source.lineNumber + ')' : ownerName ? ' (created by ' + ownerName + ')' : '');\n};\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 * @providesModule getComponentName\n * \n */\n\nfunction getComponentName$1(instanceOrFiber) {\n  if (typeof instanceOrFiber.getName === 'function') {\n    // Stack reconciler\n    var instance = instanceOrFiber;\n    return instance.getName();\n  }\n  if (typeof instanceOrFiber.tag === 'number') {\n    // Fiber reconciler\n    var fiber = instanceOrFiber;\n    var type = fiber.type;\n\n    if (typeof type === 'string') {\n      return type;\n    }\n    if (typeof type === 'function') {\n      return type.displayName || type.name;\n    }\n  }\n  return null;\n}\n\nvar getComponentName_1 = getComponentName$1;\n\n{\n  var checkPropTypes$1 = checkPropTypes;\n  var lowPriorityWarning$1 = lowPriorityWarning_1;\n  var ReactDebugCurrentFrame$1 = ReactDebugCurrentFrame_1;\n  var warning$3 = require$$0;\n  var describeComponentFrame = describeComponentFrame$1;\n  var getComponentName = getComponentName_1;\n\n  var currentlyValidatingElement = null;\n\n  var getDisplayName = function (element) {\n    if (element == null) {\n      return '#empty';\n    } else if (typeof element === 'string' || typeof element === 'number') {\n      return '#text';\n    } else if (typeof element.type === 'string') {\n      return element.type;\n    } else {\n      return element.type.displayName || element.type.name || 'Unknown';\n    }\n  };\n\n  var getStackAddendum$1 = function () {\n    var stack = '';\n    if (currentlyValidatingElement) {\n      var name = getDisplayName(currentlyValidatingElement);\n      var owner = currentlyValidatingElement._owner;\n      stack += describeComponentFrame(name, currentlyValidatingElement._source, owner && getComponentName(owner));\n    }\n    stack += ReactDebugCurrentFrame$1.getStackAddendum() || '';\n    return stack;\n  };\n}\n\nvar ITERATOR_SYMBOL$1 = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL$1 = '@@iterator'; // Before Symbol spec.\n\nfunction getDeclarationErrorAddendum() {\n  if (ReactCurrentOwner_1.current) {\n    var name = getComponentName(ReactCurrentOwner_1.current);\n    if (name) {\n      return '\\n\\nCheck the render method of `' + name + '`.';\n    }\n  }\n  return '';\n}\n\nfunction getSourceInfoErrorAddendum(elementProps) {\n  if (elementProps !== null && elementProps !== undefined && elementProps.__source !== undefined) {\n    var source = elementProps.__source;\n    var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n    var lineNumber = source.lineNumber;\n    return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n  }\n  return '';\n}\n\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n  var info = getDeclarationErrorAddendum();\n\n  if (!info) {\n    var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n    if (parentName) {\n      info = '\\n\\nCheck the top-level render call using <' + parentName + '>.';\n    }\n  }\n  return info;\n}\n\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\nfunction validateExplicitKey(element, parentType) {\n  if (!element._store || element._store.validated || element.key != null) {\n    return;\n  }\n  element._store.validated = true;\n\n  var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n  if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n    return;\n  }\n  ownerHasKeyUseWarning[currentComponentErrorInfo] = true;\n\n  // Usually the current owner is the offender, but if it accepts children as a\n  // property, it may be the creator of the child that's responsible for\n  // assigning it a key.\n  var childOwner = '';\n  if (element && element._owner && element._owner !== ReactCurrentOwner_1.current) {\n    // Give the component that originally created this child.\n    childOwner = ' It was passed a child from ' + getComponentName(element._owner) + '.';\n  }\n\n  currentlyValidatingElement = element;\n  {\n    warning$3(false, 'Each child in an array or iterator should have a unique \"key\" prop.' + '%s%s See https://fb.me/react-warning-keys for more information.%s', currentComponentErrorInfo, childOwner, getStackAddendum$1());\n  }\n  currentlyValidatingElement = null;\n}\n\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\nfunction validateChildKeys(node, parentType) {\n  if (typeof node !== 'object') {\n    return;\n  }\n  if (Array.isArray(node)) {\n    for (var i = 0; i < node.length; i++) {\n      var child = node[i];\n      if (ReactElement_1.isValidElement(child)) {\n        validateExplicitKey(child, parentType);\n      }\n    }\n  } else if (ReactElement_1.isValidElement(node)) {\n    // This element was passed in a valid location.\n    if (node._store) {\n      node._store.validated = true;\n    }\n  } else if (node) {\n    var iteratorFn = ITERATOR_SYMBOL$1 && node[ITERATOR_SYMBOL$1] || node[FAUX_ITERATOR_SYMBOL$1];\n    if (typeof iteratorFn === 'function') {\n      // Entry iterators used to provide implicit keys,\n      // but now we print a separate warning for them later.\n      if (iteratorFn !== node.entries) {\n        var iterator = iteratorFn.call(node);\n        var step;\n        while (!(step = iterator.next()).done) {\n          if (ReactElement_1.isValidElement(step.value)) {\n            validateExplicitKey(step.value, parentType);\n          }\n        }\n      }\n    }\n  }\n}\n\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\nfunction validatePropTypes(element) {\n  var componentClass = element.type;\n  if (typeof componentClass !== 'function') {\n    return;\n  }\n  var name = componentClass.displayName || componentClass.name;\n  var propTypes = componentClass.propTypes;\n\n  if (propTypes) {\n    currentlyValidatingElement = element;\n    checkPropTypes$1(propTypes, element.props, 'prop', name, getStackAddendum$1);\n    currentlyValidatingElement = null;\n  }\n  if (typeof componentClass.getDefaultProps === 'function') {\n    warning$3(componentClass.getDefaultProps.isReactClassApproved, 'getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n  }\n}\n\nvar ReactElementValidator$1 = {\n  createElement: function (type, props, children) {\n    var validType = typeof type === 'string' || typeof type === 'function';\n    // We warn in this case but don't throw. We expect the element creation to\n    // succeed and there will likely be errors in render.\n    if (!validType) {\n      var info = '';\n      if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n        info += ' You likely forgot to export your component from the file ' + \"it's defined in.\";\n      }\n\n      var sourceInfo = getSourceInfoErrorAddendum(props);\n      if (sourceInfo) {\n        info += sourceInfo;\n      } else {\n        info += getDeclarationErrorAddendum();\n      }\n\n      info += ReactDebugCurrentFrame$1.getStackAddendum() || '';\n\n      warning$3(false, 'React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', type == null ? type : typeof type, info);\n    }\n\n    var element = ReactElement_1.createElement.apply(this, arguments);\n\n    // The result can be nullish if a mock or a custom function is used.\n    // TODO: Drop this when these are no longer allowed as the type argument.\n    if (element == null) {\n      return element;\n    }\n\n    // Skip key warning if the type isn't valid since our key validation logic\n    // doesn't expect a non-string/function type and can throw confusing errors.\n    // We don't want exception behavior to differ between dev and prod.\n    // (Rendering will throw with a helpful message and as soon as the type is\n    // fixed, the key warnings will appear.)\n    if (validType) {\n      for (var i = 2; i < arguments.length; i++) {\n        validateChildKeys(arguments[i], type);\n      }\n    }\n\n    validatePropTypes(element);\n\n    return element;\n  },\n\n  createFactory: function (type) {\n    var validatedFactory = ReactElementValidator$1.createElement.bind(null, type);\n    // Legacy hook TODO: Warn if this is accessed\n    validatedFactory.type = type;\n\n    {\n      Object.defineProperty(validatedFactory, 'type', {\n        enumerable: false,\n        get: function () {\n          lowPriorityWarning$1(false, 'Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.');\n          Object.defineProperty(this, 'type', {\n            value: type\n          });\n          return type;\n        }\n      });\n    }\n\n    return validatedFactory;\n  },\n\n  cloneElement: function (element, props, children) {\n    var newElement = ReactElement_1.cloneElement.apply(this, arguments);\n    for (var i = 2; i < arguments.length; i++) {\n      validateChildKeys(arguments[i], newElement.type);\n    }\n    validatePropTypes(newElement);\n    return newElement;\n  }\n};\n\nvar ReactElementValidator_1 = ReactElementValidator$1;\n\n{\n  var warning$4 = require$$0;\n}\n\nfunction isNative(fn) {\n  // Based on isNative() from Lodash\n  var funcToString = Function.prototype.toString;\n  var reIsNative = RegExp('^' + funcToString\n  // Take an example native function source for comparison\n  .call(Object.prototype.hasOwnProperty)\n  // Strip regex characters so we can use it for regex\n  .replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&')\n  // Remove hasOwnProperty from the template to make it generic\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n  try {\n    var source = funcToString.call(fn);\n    return reIsNative.test(source);\n  } catch (err) {\n    return false;\n  }\n}\n\nvar canUseCollections =\n// Array.from\ntypeof Array.from === 'function' &&\n// Map\ntypeof Map === 'function' && isNative(Map) &&\n// Map.prototype.keys\nMap.prototype != null && typeof Map.prototype.keys === 'function' && isNative(Map.prototype.keys) &&\n// Set\ntypeof Set === 'function' && isNative(Set) &&\n// Set.prototype.keys\nSet.prototype != null && typeof Set.prototype.keys === 'function' && isNative(Set.prototype.keys);\n\nvar setItem;\nvar getItem;\nvar removeItem;\nvar getItemIDs;\nvar addRoot;\nvar removeRoot;\nvar getRootIDs;\n\nif (canUseCollections) {\n  var itemMap = new Map();\n  var rootIDSet = new Set();\n\n  setItem = function (id, item) {\n    itemMap.set(id, item);\n  };\n  getItem = function (id) {\n    return itemMap.get(id);\n  };\n  removeItem = function (id) {\n    itemMap['delete'](id);\n  };\n  getItemIDs = function () {\n    return Array.from(itemMap.keys());\n  };\n\n  addRoot = function (id) {\n    rootIDSet.add(id);\n  };\n  removeRoot = function (id) {\n    rootIDSet['delete'](id);\n  };\n  getRootIDs = function () {\n    return Array.from(rootIDSet.keys());\n  };\n} else {\n  var itemByKey = {};\n  var rootByKey = {};\n\n  // Use non-numeric keys to prevent V8 performance issues:\n  // https://github.com/facebook/react/pull/7232\n  var getKeyFromID = function (id) {\n    return '.' + id;\n  };\n  var getIDFromKey = function (key) {\n    return parseInt(key.substr(1), 10);\n  };\n\n  setItem = function (id, item) {\n    var key = getKeyFromID(id);\n    itemByKey[key] = item;\n  };\n  getItem = function (id) {\n    var key = getKeyFromID(id);\n    return itemByKey[key];\n  };\n  removeItem = function (id) {\n    var key = getKeyFromID(id);\n    delete itemByKey[key];\n  };\n  getItemIDs = function () {\n    return Object.keys(itemByKey).map(getIDFromKey);\n  };\n\n  addRoot = function (id) {\n    var key = getKeyFromID(id);\n    rootByKey[key] = true;\n  };\n  removeRoot = function (id) {\n    var key = getKeyFromID(id);\n    delete rootByKey[key];\n  };\n  getRootIDs = function () {\n    return Object.keys(rootByKey).map(getIDFromKey);\n  };\n}\n\nvar unmountedIDs = [];\n\nfunction purgeDeep(id) {\n  var item = getItem(id);\n  if (item) {\n    var childIDs = item.childIDs;\n\n    removeItem(id);\n    childIDs.forEach(purgeDeep);\n  }\n}\n\nfunction getDisplayName$1(element) {\n  if (element == null) {\n    return '#empty';\n  } else if (typeof element === 'string' || typeof element === 'number') {\n    return '#text';\n  } else if (typeof element.type === 'string') {\n    return element.type;\n  } else {\n    return element.type.displayName || element.type.name || 'Unknown';\n  }\n}\n\nfunction describeID(id) {\n  var name = ReactComponentTreeHook.getDisplayName(id);\n  var element = ReactComponentTreeHook.getElement(id);\n  var ownerID = ReactComponentTreeHook.getOwnerID(id);\n  var ownerName = void 0;\n\n  if (ownerID) {\n    ownerName = ReactComponentTreeHook.getDisplayName(ownerID);\n  }\n  warning$4(element, 'ReactComponentTreeHook: Missing React element for debugID %s when ' + 'building stack', id);\n  return describeComponentFrame$1(name || '', element && element._source, ownerName || '');\n}\n\nvar ReactComponentTreeHook = {\n  onSetChildren: function (id, nextChildIDs) {\n    var item = getItem(id);\n    !item ? invariant(false, 'Item must have been set') : void 0;\n    item.childIDs = nextChildIDs;\n\n    for (var i = 0; i < nextChildIDs.length; i++) {\n      var nextChildID = nextChildIDs[i];\n      var nextChild = getItem(nextChildID);\n      !nextChild ? invariant(false, 'Expected hook events to fire for the child before its parent includes it in onSetChildren().') : void 0;\n      !(nextChild.childIDs != null || typeof nextChild.element !== 'object' || nextChild.element == null) ? invariant(false, 'Expected onSetChildren() to fire for a container child before its parent includes it in onSetChildren().') : void 0;\n      !nextChild.isMounted ? invariant(false, 'Expected onMountComponent() to fire for the child before its parent includes it in onSetChildren().') : void 0;\n      if (nextChild.parentID == null) {\n        nextChild.parentID = id;\n        // TODO: This shouldn't be necessary but mounting a new root during in\n        // componentWillMount currently causes not-yet-mounted components to\n        // be purged from our tree data so their parent id is missing.\n      }\n      !(nextChild.parentID === id) ? invariant(false, 'Expected onBeforeMountComponent() parent and onSetChildren() to be consistent (%s has parents %s and %s).', nextChildID, nextChild.parentID, id) : void 0;\n    }\n  },\n  onBeforeMountComponent: function (id, element, parentID) {\n    var item = {\n      element: element,\n      parentID: parentID,\n      text: null,\n      childIDs: [],\n      isMounted: false,\n      updateCount: 0\n    };\n    setItem(id, item);\n  },\n  onBeforeUpdateComponent: function (id, element) {\n    var item = getItem(id);\n    if (!item || !item.isMounted) {\n      // We may end up here as a result of setState() in componentWillUnmount().\n      // In this case, ignore the element.\n      return;\n    }\n    item.element = element;\n  },\n  onMountComponent: function (id) {\n    var item = getItem(id);\n    !item ? invariant(false, 'Item must have been set') : void 0;\n    item.isMounted = true;\n    var isRoot = item.parentID === 0;\n    if (isRoot) {\n      addRoot(id);\n    }\n  },\n  onUpdateComponent: function (id) {\n    var item = getItem(id);\n    if (!item || !item.isMounted) {\n      // We may end up here as a result of setState() in componentWillUnmount().\n      // In this case, ignore the element.\n      return;\n    }\n    item.updateCount++;\n  },\n  onUnmountComponent: function (id) {\n    var item = getItem(id);\n    if (item) {\n      // We need to check if it exists.\n      // `item` might not exist if it is inside an error boundary, and a sibling\n      // error boundary child threw while mounting. Then this instance never\n      // got a chance to mount, but it still gets an unmounting event during\n      // the error boundary cleanup.\n      item.isMounted = false;\n      var isRoot = item.parentID === 0;\n      if (isRoot) {\n        removeRoot(id);\n      }\n    }\n    unmountedIDs.push(id);\n  },\n  purgeUnmountedComponents: function () {\n    if (ReactComponentTreeHook._preventPurging) {\n      // Should only be used for testing.\n      return;\n    }\n\n    for (var i = 0; i < unmountedIDs.length; i++) {\n      var id = unmountedIDs[i];\n      purgeDeep(id);\n    }\n    unmountedIDs.length = 0;\n  },\n  isMounted: function (id) {\n    var item = getItem(id);\n    return item ? item.isMounted : false;\n  },\n  getCurrentStackAddendum: function () {\n    var info = '';\n    var currentOwner = ReactCurrentOwner_1.current;\n    if (currentOwner) {\n      !(typeof currentOwner.tag !== 'number') ? invariant(false, 'Fiber owners should not show up in Stack stack traces.') : void 0;\n      if (typeof currentOwner._debugID === 'number') {\n        info += ReactComponentTreeHook.getStackAddendumByID(currentOwner._debugID);\n      }\n    }\n    return info;\n  },\n  getStackAddendumByID: function (id) {\n    var info = '';\n    while (id) {\n      info += describeID(id);\n      id = ReactComponentTreeHook.getParentID(id);\n    }\n    return info;\n  },\n  getChildIDs: function (id) {\n    var item = getItem(id);\n    return item ? item.childIDs : [];\n  },\n  getDisplayName: function (id) {\n    var element = ReactComponentTreeHook.getElement(id);\n    if (!element) {\n      return null;\n    }\n    return getDisplayName$1(element);\n  },\n  getElement: function (id) {\n    var item = getItem(id);\n    return item ? item.element : null;\n  },\n  getOwnerID: function (id) {\n    var element = ReactComponentTreeHook.getElement(id);\n    if (!element || !element._owner) {\n      return null;\n    }\n    return element._owner._debugID;\n  },\n  getParentID: function (id) {\n    var item = getItem(id);\n    return item ? item.parentID : null;\n  },\n  getSource: function (id) {\n    var item = getItem(id);\n    var element = item ? item.element : null;\n    var source = element != null ? element._source : null;\n    return source;\n  },\n  getText: function (id) {\n    var element = ReactComponentTreeHook.getElement(id);\n    if (typeof element === 'string') {\n      return element;\n    } else if (typeof element === 'number') {\n      return '' + element;\n    } else {\n      return null;\n    }\n  },\n  getUpdateCount: function (id) {\n    var item = getItem(id);\n    return item ? item.updateCount : 0;\n  },\n\n\n  getRootIDs: getRootIDs,\n  getRegisteredIDs: getItemIDs\n};\n\nvar ReactComponentTreeHook_1 = ReactComponentTreeHook;\n\nvar createElement = ReactElement_1.createElement;\nvar createFactory = ReactElement_1.createFactory;\nvar cloneElement = ReactElement_1.cloneElement;\n\n{\n  var ReactElementValidator = ReactElementValidator_1;\n  createElement = ReactElementValidator.createElement;\n  createFactory = ReactElementValidator.createFactory;\n  cloneElement = ReactElementValidator.cloneElement;\n}\n\nvar React = {\n  Children: {\n    map: ReactChildren_1.map,\n    forEach: ReactChildren_1.forEach,\n    count: ReactChildren_1.count,\n    toArray: ReactChildren_1.toArray,\n    only: onlyChild_1\n  },\n\n  Component: ReactBaseClasses.Component,\n  PureComponent: ReactBaseClasses.PureComponent,\n  unstable_AsyncComponent: ReactBaseClasses.AsyncComponent,\n\n  createElement: createElement,\n  cloneElement: cloneElement,\n  isValidElement: ReactElement_1.isValidElement,\n\n  createFactory: createFactory,\n\n  version: ReactVersion,\n\n  __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: {\n    ReactCurrentOwner: ReactCurrentOwner_1,\n    // Used by renderers to avoid bundling object-assign twice in UMD bundles:\n    assign: objectAssign$1\n  }\n};\n\n{\n  objectAssign$1(React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, {\n    // These should not be included in production.\n    ReactComponentTreeHook: ReactComponentTreeHook_1,\n    ReactDebugCurrentFrame: ReactDebugCurrentFrame_1\n  });\n}\n\nvar ReactEntry = React;\n\nmodule.exports = ReactEntry;\n\n})();\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react/cjs/react.development.js\n// module id = 337\n// module chunks = 0","/*\n React v16.0.0\n react-dom.production.min.js\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 Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\");require(\"fbjs/lib/invariant\");var l=require(\"fbjs/lib/ExecutionEnvironment\"),n=require(\"object-assign\"),ba=require(\"fbjs/lib/EventListener\"),ca=require(\"fbjs/lib/emptyFunction\"),da=require(\"fbjs/lib/emptyObject\"),ea=require(\"fbjs/lib/shallowEqual\"),fa=require(\"fbjs/lib/containsNode\"),ha=require(\"fbjs/lib/focusNode\"),ia=require(\"fbjs/lib/getActiveElement\");\nfunction w(a){for(var b=arguments.length-1,c=\"Minified React error #\"+a+\"; visit http://facebook.github.io/react/docs/error-decoder.html?invariant\\x3d\"+a,d=0;d<b;d++)c+=\"\\x26args[]\\x3d\"+encodeURIComponent(arguments[d+1]);b=Error(c+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\");b.name=\"Invariant Violation\";b.framesToPop=1;throw b;}aa?void 0:w(\"227\");\nfunction ja(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\"}}\nvar ka={Namespaces:{html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"},getIntrinsicNamespace:ja,getChildNamespace:function(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?ja(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}},la=null,oa={};\nfunction pa(){if(la)for(var a in oa){var b=oa[a],c=la.indexOf(a);-1<c?void 0:w(\"96\",a);if(!qa.plugins[c]){b.extractEvents?void 0:w(\"97\",a);qa.plugins[c]=b;c=b.eventTypes;for(var d in c){var e=void 0;var f=c[d],g=b,h=d;qa.eventNameDispatchConfigs.hasOwnProperty(h)?w(\"99\",h):void 0;qa.eventNameDispatchConfigs[h]=f;var k=f.phasedRegistrationNames;if(k){for(e in k)k.hasOwnProperty(e)&&ra(k[e],g,h);e=!0}else f.registrationName?(ra(f.registrationName,g,h),e=!0):e=!1;e?void 0:w(\"98\",d,a)}}}}\nfunction ra(a,b,c){qa.registrationNameModules[a]?w(\"100\",a):void 0;qa.registrationNameModules[a]=b;qa.registrationNameDependencies[a]=b.eventTypes[c].dependencies}\nvar qa={plugins:[],eventNameDispatchConfigs:{},registrationNameModules:{},registrationNameDependencies:{},possibleRegistrationNames:null,injectEventPluginOrder:function(a){la?w(\"101\"):void 0;la=Array.prototype.slice.call(a);pa()},injectEventPluginsByName:function(a){var b=!1,c;for(c in a)if(a.hasOwnProperty(c)){var d=a[c];oa.hasOwnProperty(c)&&oa[c]===d||(oa[c]?w(\"102\",c):void 0,oa[c]=d,b=!0)}b&&pa()}},sa=qa,ta={children:!0,dangerouslySetInnerHTML:!0,autoFocus:!0,defaultValue:!0,defaultChecked:!0,\ninnerHTML:!0,suppressContentEditableWarning:!0,style:!0};function ua(a,b){return(a&b)===b}\nvar wa={MUST_USE_PROPERTY:1,HAS_BOOLEAN_VALUE:4,HAS_NUMERIC_VALUE:8,HAS_POSITIVE_NUMERIC_VALUE:24,HAS_OVERLOADED_BOOLEAN_VALUE:32,HAS_STRING_BOOLEAN_VALUE:64,injectDOMPropertyConfig:function(a){var b=wa,c=a.Properties||{},d=a.DOMAttributeNamespaces||{},e=a.DOMAttributeNames||{};a=a.DOMMutationMethods||{};for(var f in c){xa.properties.hasOwnProperty(f)?w(\"48\",f):void 0;var g=f.toLowerCase(),h=c[f];g={attributeName:g,attributeNamespace:null,propertyName:f,mutationMethod:null,mustUseProperty:ua(h,b.MUST_USE_PROPERTY),\nhasBooleanValue:ua(h,b.HAS_BOOLEAN_VALUE),hasNumericValue:ua(h,b.HAS_NUMERIC_VALUE),hasPositiveNumericValue:ua(h,b.HAS_POSITIVE_NUMERIC_VALUE),hasOverloadedBooleanValue:ua(h,b.HAS_OVERLOADED_BOOLEAN_VALUE),hasStringBooleanValue:ua(h,b.HAS_STRING_BOOLEAN_VALUE)};1>=g.hasBooleanValue+g.hasNumericValue+g.hasOverloadedBooleanValue?void 0:w(\"50\",f);e.hasOwnProperty(f)&&(g.attributeName=e[f]);d.hasOwnProperty(f)&&(g.attributeNamespace=d[f]);a.hasOwnProperty(f)&&(g.mutationMethod=a[f]);xa.properties[f]=\ng}}},xa={ID_ATTRIBUTE_NAME:\"data-reactid\",ROOT_ATTRIBUTE_NAME:\"data-reactroot\",ATTRIBUTE_NAME_START_CHAR:\":A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\",ATTRIBUTE_NAME_CHAR:\":A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\",\nproperties:{},shouldSetAttribute:function(a,b){if(xa.isReservedProp(a)||!(\"o\"!==a[0]&&\"O\"!==a[0]||\"n\"!==a[1]&&\"N\"!==a[1]))return!1;if(null===b)return!0;switch(typeof b){case \"boolean\":return xa.shouldAttributeAcceptBooleanValue(a);case \"undefined\":case \"number\":case \"string\":case \"object\":return!0;default:return!1}},getPropertyInfo:function(a){return xa.properties.hasOwnProperty(a)?xa.properties[a]:null},shouldAttributeAcceptBooleanValue:function(a){if(xa.isReservedProp(a))return!0;var b=xa.getPropertyInfo(a);\nif(b)return b.hasBooleanValue||b.hasStringBooleanValue||b.hasOverloadedBooleanValue;a=a.toLowerCase().slice(0,5);return\"data-\"===a||\"aria-\"===a},isReservedProp:function(a){return ta.hasOwnProperty(a)},injection:wa},A=xa,E={IndeterminateComponent:0,FunctionalComponent:1,ClassComponent:2,HostRoot:3,HostPortal:4,HostComponent:5,HostText:6,CoroutineComponent:7,CoroutineHandlerPhase:8,YieldComponent:9,Fragment:10},F={ELEMENT_NODE:1,TEXT_NODE:3,COMMENT_NODE:8,DOCUMENT_NODE:9,DOCUMENT_FRAGMENT_NODE:11},\nya=E.HostComponent,za=E.HostText,Aa=F.ELEMENT_NODE,Ba=F.COMMENT_NODE,Ea=A.ID_ATTRIBUTE_NAME,Fa={hasCachedChildNodes:1},Ga=Math.random().toString(36).slice(2),Ha=\"__reactInternalInstance$\"+Ga,Ia=\"__reactEventHandlers$\"+Ga;function La(a){for(var b;b=a._renderedComponent;)a=b;return a}function Ma(a,b){a=La(a);a._hostNode=b;b[Ha]=a}\nfunction Na(a,b){if(!(a._flags&Fa.hasCachedChildNodes)){var c=a._renderedChildren;b=b.firstChild;var d;a:for(d in c)if(c.hasOwnProperty(d)){var e=c[d],f=La(e)._domID;if(0!==f){for(;null!==b;b=b.nextSibling){var g=b,h=f;if(g.nodeType===Aa&&g.getAttribute(Ea)===\"\"+h||g.nodeType===Ba&&g.nodeValue===\" react-text: \"+h+\" \"||g.nodeType===Ba&&g.nodeValue===\" react-empty: \"+h+\" \"){Ma(e,b);continue a}}w(\"32\",f)}}a._flags|=Fa.hasCachedChildNodes}}\nfunction Oa(a){if(a[Ha])return a[Ha];for(var b=[];!a[Ha];)if(b.push(a),a.parentNode)a=a.parentNode;else return null;var c=a[Ha];if(c.tag===ya||c.tag===za)return c;for(;a&&(c=a[Ha]);a=b.pop()){var d=c;b.length&&Na(c,a)}return d}\nvar G={getClosestInstanceFromNode:Oa,getInstanceFromNode:function(a){var b=a[Ha];if(b)return b.tag===ya||b.tag===za?b:b._hostNode===a?b:null;b=Oa(a);return null!=b&&b._hostNode===a?b:null},getNodeFromInstance:function(a){if(a.tag===ya||a.tag===za)return a.stateNode;void 0===a._hostNode?w(\"33\"):void 0;if(a._hostNode)return a._hostNode;for(var b=[];!a._hostNode;)b.push(a),a._hostParent?void 0:w(\"34\"),a=a._hostParent;for(;b.length;a=b.pop())Na(a,a._hostNode);return a._hostNode},precacheChildNodes:Na,\nprecacheNode:Ma,uncacheNode:function(a){var b=a._hostNode;b&&(delete b[Ha],a._hostNode=null)},precacheFiberNode:function(a,b){b[Ha]=a},getFiberCurrentPropsFromNode:function(a){return a[Ia]||null},updateFiberProps:function(a,b){a[Ia]=b}},Pa={remove:function(a){a._reactInternalFiber=void 0},get:function(a){return a._reactInternalFiber},has:function(a){return void 0!==a._reactInternalFiber},set:function(a,b){a._reactInternalFiber=b}},Qa={ReactCurrentOwner:aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner};\nfunction Ra(a){if(\"function\"===typeof a.getName)return a.getName();if(\"number\"===typeof a.tag){a=a.type;if(\"string\"===typeof a)return a;if(\"function\"===typeof a)return a.displayName||a.name}return null}var J={NoEffect:0,PerformedWork:1,Placement:2,Update:4,PlacementAndUpdate:6,Deletion:8,ContentReset:16,Callback:32,Err:64,Ref:128},Sa=E.HostComponent,Ta=E.HostRoot,Ua=E.HostPortal,Va=E.HostText,Wa=J.NoEffect,Xa=J.Placement;\nfunction Za(a){var b=a;if(a.alternate)for(;b[\"return\"];)b=b[\"return\"];else{if((b.effectTag&Xa)!==Wa)return 1;for(;b[\"return\"];)if(b=b[\"return\"],(b.effectTag&Xa)!==Wa)return 1}return b.tag===Ta?2:3}function $a(a){2!==Za(a)?w(\"188\"):void 0}\nfunction ab(a){var b=a.alternate;if(!b)return b=Za(a),3===b?w(\"188\"):void 0,1===b?null:a;for(var c=a,d=b;;){var e=c[\"return\"],f=e?e.alternate:null;if(!e||!f)break;if(e.child===f.child){for(var g=e.child;g;){if(g===c)return $a(e),a;if(g===d)return $a(e),b;g=g.sibling}w(\"188\")}if(c[\"return\"]!==d[\"return\"])c=e,d=f;else{g=!1;for(var 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===c){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}g?\nvoid 0:w(\"189\")}}c.alternate!==d?w(\"190\"):void 0}c.tag!==Ta?w(\"188\"):void 0;return c.stateNode.current===c?a:b}\nvar bb={isFiberMounted:function(a){return 2===Za(a)},isMounted:function(a){return(a=Pa.get(a))?2===Za(a):!1},findCurrentFiberUsingSlowPath:ab,findCurrentHostFiber:function(a){a=ab(a);if(!a)return null;for(var b=a;;){if(b.tag===Sa||b.tag===Va)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},findCurrentHostFiberWithNoPortals:function(a){a=ab(a);\nif(!a)return null;for(var b=a;;){if(b.tag===Sa||b.tag===Va)return b;if(b.child&&b.tag!==Ua)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}},K={_caughtError:null,_hasCaughtError:!1,_rethrowError:null,_hasRethrowError:!1,injection:{injectErrorUtils:function(a){\"function\"!==typeof a.invokeGuardedCallback?w(\"197\"):void 0;cb=a.invokeGuardedCallback}},invokeGuardedCallback:function(a,\nb,c,d,e,f,g,h,k){cb.apply(K,arguments)},invokeGuardedCallbackAndCatchFirstError:function(a,b,c,d,e,f,g,h,k){K.invokeGuardedCallback.apply(this,arguments);if(K.hasCaughtError()){var p=K.clearCaughtError();K._hasRethrowError||(K._hasRethrowError=!0,K._rethrowError=p)}},rethrowCaughtError:function(){return db.apply(K,arguments)},hasCaughtError:function(){return K._hasCaughtError},clearCaughtError:function(){if(K._hasCaughtError){var a=K._caughtError;K._caughtError=null;K._hasCaughtError=!1;return a}w(\"198\")}};\nfunction cb(a,b,c,d,e,f,g,h,k){K._hasCaughtError=!1;K._caughtError=null;var p=Array.prototype.slice.call(arguments,3);try{b.apply(c,p)}catch(x){K._caughtError=x,K._hasCaughtError=!0}}function db(){if(K._hasRethrowError){var a=K._rethrowError;K._rethrowError=null;K._hasRethrowError=!1;throw a;}}var eb=K,fb;function gb(a,b,c,d){b=a.type||\"unknown-event\";a.currentTarget=hb.getNodeFromInstance(d);eb.invokeGuardedCallbackAndCatchFirstError(b,c,void 0,a);a.currentTarget=null}\nvar hb={isEndish:function(a){return\"topMouseUp\"===a||\"topTouchEnd\"===a||\"topTouchCancel\"===a},isMoveish:function(a){return\"topMouseMove\"===a||\"topTouchMove\"===a},isStartish:function(a){return\"topMouseDown\"===a||\"topTouchStart\"===a},executeDirectDispatch:function(a){var b=a._dispatchListeners,c=a._dispatchInstances;Array.isArray(b)?w(\"103\"):void 0;a.currentTarget=b?hb.getNodeFromInstance(c):null;b=b?b(a):null;a.currentTarget=null;a._dispatchListeners=null;a._dispatchInstances=null;return b},executeDispatchesInOrder:function(a,\nb){var c=a._dispatchListeners,d=a._dispatchInstances;if(Array.isArray(c))for(var e=0;e<c.length&&!a.isPropagationStopped();e++)gb(a,b,c[e],d[e]);else c&&gb(a,b,c,d);a._dispatchListeners=null;a._dispatchInstances=null},executeDispatchesInOrderStopAtTrue:function(a){a:{var b=a._dispatchListeners;var c=a._dispatchInstances;if(Array.isArray(b))for(var d=0;d<b.length&&!a.isPropagationStopped();d++){if(b[d](a,c[d])){b=c[d];break a}}else if(b&&b(a,c)){b=c;break a}b=null}a._dispatchInstances=null;a._dispatchListeners=\nnull;return b},hasDispatches:function(a){return!!a._dispatchListeners},getFiberCurrentPropsFromNode:function(a){return fb.getFiberCurrentPropsFromNode(a)},getInstanceFromNode:function(a){return fb.getInstanceFromNode(a)},getNodeFromInstance:function(a){return fb.getNodeFromInstance(a)},injection:{injectComponentTree:function(a){fb=a}}},ib=hb,jb=null,kb=null,lb=null;\nfunction mb(a){if(a=ib.getInstanceFromNode(a))if(\"number\"===typeof a.tag){jb&&\"function\"===typeof jb.restoreControlledState?void 0:w(\"194\");var b=ib.getFiberCurrentPropsFromNode(a.stateNode);jb.restoreControlledState(a.stateNode,a.type,b)}else\"function\"!==typeof a.restoreControlledState?w(\"195\"):void 0,a.restoreControlledState()}\nvar nb={injection:{injectFiberControlledHostComponent:function(a){jb=a}},enqueueStateRestore:function(a){kb?lb?lb.push(a):lb=[a]:kb=a},restoreStateIfNeeded:function(){if(kb){var a=kb,b=lb;lb=kb=null;mb(a);if(b)for(a=0;a<b.length;a++)mb(b[a])}}};function ob(a,b,c,d,e,f){return a(b,c,d,e,f)}function pb(a,b){return a(b)}function qb(a,b){return pb(a,b)}\nvar rb=!1,sb={batchedUpdates:function(a,b){if(rb)return ob(qb,a,b);rb=!0;try{return ob(qb,a,b)}finally{rb=!1,nb.restoreStateIfNeeded()}},injection:{injectStackBatchedUpdates:function(a){ob=a},injectFiberBatchedUpdates:function(a){pb=a}}},tb=F.TEXT_NODE;function ub(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return a.nodeType===tb?a.parentNode:a}var vb=E.HostRoot,wb=[];\nfunction xb(a){var b=a.targetInst;do{if(!b){a.ancestors.push(b);break}var c=b;if(\"number\"===typeof c.tag){for(;c[\"return\"];)c=c[\"return\"];c=c.tag!==vb?null:c.stateNode.containerInfo}else{for(;c._hostParent;)c=c._hostParent;c=G.getNodeFromInstance(c).parentNode}if(!c)break;a.ancestors.push(b);b=G.getClosestInstanceFromNode(c)}while(b);for(c=0;c<a.ancestors.length;c++)b=a.ancestors[c],yb._handleTopLevel(a.topLevelType,b,a.nativeEvent,ub(a.nativeEvent))}\nvar yb={_enabled:!0,_handleTopLevel:null,setHandleTopLevel:function(a){yb._handleTopLevel=a},setEnabled:function(a){yb._enabled=!!a},isEnabled:function(){return yb._enabled},trapBubbledEvent:function(a,b,c){return c?ba.listen(c,b,yb.dispatchEvent.bind(null,a)):null},trapCapturedEvent:function(a,b,c){return c?ba.capture(c,b,yb.dispatchEvent.bind(null,a)):null},dispatchEvent:function(a,b){if(yb._enabled){var c=ub(b);c=G.getClosestInstanceFromNode(c);null===c||\"number\"!==typeof c.tag||bb.isFiberMounted(c)||\n(c=null);if(wb.length){var d=wb.pop();d.topLevelType=a;d.nativeEvent=b;d.targetInst=c;a=d}else a={topLevelType:a,nativeEvent:b,targetInst:c,ancestors:[]};try{sb.batchedUpdates(xb,a)}finally{a.topLevelType=null,a.nativeEvent=null,a.targetInst=null,a.ancestors.length=0,10>wb.length&&wb.push(a)}}}},L=yb;function Cb(a,b){null==b?w(\"30\"):void 0;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]}\nfunction Db(a,b,c){Array.isArray(a)?a.forEach(b,c):a&&b.call(c,a)}var Eb=null;function Fb(a,b){a&&(ib.executeDispatchesInOrder(a,b),a.isPersistent()||a.constructor.release(a))}function Gb(a){return Fb(a,!0)}function Hb(a){return Fb(a,!1)}\nfunction Ib(a,b,c){switch(a){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":return!(!c.disabled||\"button\"!==b&&\"input\"!==b&&\"select\"!==b&&\"textarea\"!==b);default:return!1}}\nvar Jb={injection:{injectEventPluginOrder:sa.injectEventPluginOrder,injectEventPluginsByName:sa.injectEventPluginsByName},getListener:function(a,b){if(\"number\"===typeof a.tag){var c=a.stateNode;if(!c)return null;var d=ib.getFiberCurrentPropsFromNode(c);if(!d)return null;c=d[b];if(Ib(b,a.type,d))return null}else{d=a._currentElement;if(\"string\"===typeof d||\"number\"===typeof d||!a._rootNodeID)return null;a=d.props;c=a[b];if(Ib(b,d.type,a))return null}c&&\"function\"!==typeof c?w(\"231\",b,typeof c):void 0;\nreturn c},extractEvents:function(a,b,c,d){for(var e,f=sa.plugins,g=0;g<f.length;g++){var h=f[g];h&&(h=h.extractEvents(a,b,c,d))&&(e=Cb(e,h))}return e},enqueueEvents:function(a){a&&(Eb=Cb(Eb,a))},processEventQueue:function(a){var b=Eb;Eb=null;a?Db(b,Gb):Db(b,Hb);Eb?w(\"95\"):void 0;eb.rethrowCaughtError()}},Kb;l.canUseDOM&&(Kb=document.implementation&&document.implementation.hasFeature&&!0!==document.implementation.hasFeature(\"\",\"\"));\nfunction Lb(a,b){if(!l.canUseDOM||b&&!(\"addEventListener\"in document))return!1;b=\"on\"+a;var c=b in document;c||(c=document.createElement(\"div\"),c.setAttribute(b,\"return;\"),c=\"function\"===typeof c[b]);!c&&Kb&&\"wheel\"===a&&(c=document.implementation.hasFeature(\"Events.wheel\",\"3.0\"));return c}function Mb(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;c[\"ms\"+a]=\"MS\"+b;c[\"O\"+a]=\"o\"+b.toLowerCase();return c}\nvar Nb={animationend:Mb(\"Animation\",\"AnimationEnd\"),animationiteration:Mb(\"Animation\",\"AnimationIteration\"),animationstart:Mb(\"Animation\",\"AnimationStart\"),transitionend:Mb(\"Transition\",\"TransitionEnd\")},Ob={},Pb={};l.canUseDOM&&(Pb=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Nb.animationend.animation,delete Nb.animationiteration.animation,delete Nb.animationstart.animation),\"TransitionEvent\"in window||delete Nb.transitionend.transition);\nfunction Qb(a){if(Ob[a])return Ob[a];if(!Nb[a])return a;var b=Nb[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Pb)return Ob[a]=b[c];return\"\"}\nvar Rb={topAbort:\"abort\",topAnimationEnd:Qb(\"animationend\")||\"animationend\",topAnimationIteration:Qb(\"animationiteration\")||\"animationiteration\",topAnimationStart:Qb(\"animationstart\")||\"animationstart\",topBlur:\"blur\",topCancel:\"cancel\",topCanPlay:\"canplay\",topCanPlayThrough:\"canplaythrough\",topChange:\"change\",topClick:\"click\",topClose:\"close\",topCompositionEnd:\"compositionend\",topCompositionStart:\"compositionstart\",topCompositionUpdate:\"compositionupdate\",topContextMenu:\"contextmenu\",topCopy:\"copy\",\ntopCut:\"cut\",topDoubleClick:\"dblclick\",topDrag:\"drag\",topDragEnd:\"dragend\",topDragEnter:\"dragenter\",topDragExit:\"dragexit\",topDragLeave:\"dragleave\",topDragOver:\"dragover\",topDragStart:\"dragstart\",topDrop:\"drop\",topDurationChange:\"durationchange\",topEmptied:\"emptied\",topEncrypted:\"encrypted\",topEnded:\"ended\",topError:\"error\",topFocus:\"focus\",topInput:\"input\",topKeyDown:\"keydown\",topKeyPress:\"keypress\",topKeyUp:\"keyup\",topLoadedData:\"loadeddata\",topLoad:\"load\",topLoadedMetadata:\"loadedmetadata\",topLoadStart:\"loadstart\",\ntopMouseDown:\"mousedown\",topMouseMove:\"mousemove\",topMouseOut:\"mouseout\",topMouseOver:\"mouseover\",topMouseUp:\"mouseup\",topPaste:\"paste\",topPause:\"pause\",topPlay:\"play\",topPlaying:\"playing\",topProgress:\"progress\",topRateChange:\"ratechange\",topScroll:\"scroll\",topSeeked:\"seeked\",topSeeking:\"seeking\",topSelectionChange:\"selectionchange\",topStalled:\"stalled\",topSuspend:\"suspend\",topTextInput:\"textInput\",topTimeUpdate:\"timeupdate\",topToggle:\"toggle\",topTouchCancel:\"touchcancel\",topTouchEnd:\"touchend\",topTouchMove:\"touchmove\",\ntopTouchStart:\"touchstart\",topTransitionEnd:Qb(\"transitionend\")||\"transitionend\",topVolumeChange:\"volumechange\",topWaiting:\"waiting\",topWheel:\"wheel\"},Sb={},Tb=0,Ub=\"_reactListenersID\"+(\"\"+Math.random()).slice(2);function Vb(a){Object.prototype.hasOwnProperty.call(a,Ub)||(a[Ub]=Tb++,Sb[a[Ub]]={});return Sb[a[Ub]]}\nvar M=n({},{handleTopLevel:function(a,b,c,d){a=Jb.extractEvents(a,b,c,d);Jb.enqueueEvents(a);Jb.processEventQueue(!1)}},{setEnabled:function(a){L&&L.setEnabled(a)},isEnabled:function(){return!(!L||!L.isEnabled())},listenTo:function(a,b){var c=Vb(b);a=sa.registrationNameDependencies[a];for(var d=0;d<a.length;d++){var e=a[d];c.hasOwnProperty(e)&&c[e]||(\"topWheel\"===e?Lb(\"wheel\")?L.trapBubbledEvent(\"topWheel\",\"wheel\",b):Lb(\"mousewheel\")?L.trapBubbledEvent(\"topWheel\",\"mousewheel\",b):L.trapBubbledEvent(\"topWheel\",\n\"DOMMouseScroll\",b):\"topScroll\"===e?L.trapCapturedEvent(\"topScroll\",\"scroll\",b):\"topFocus\"===e||\"topBlur\"===e?(L.trapCapturedEvent(\"topFocus\",\"focus\",b),L.trapCapturedEvent(\"topBlur\",\"blur\",b),c.topBlur=!0,c.topFocus=!0):\"topCancel\"===e?(Lb(\"cancel\",!0)&&L.trapCapturedEvent(\"topCancel\",\"cancel\",b),c.topCancel=!0):\"topClose\"===e?(Lb(\"close\",!0)&&L.trapCapturedEvent(\"topClose\",\"close\",b),c.topClose=!0):Rb.hasOwnProperty(e)&&L.trapBubbledEvent(e,Rb[e],b),c[e]=!0)}},isListeningToAllDependencies:function(a,\nb){b=Vb(b);a=sa.registrationNameDependencies[a];for(var c=0;c<a.length;c++){var d=a[c];if(!b.hasOwnProperty(d)||!b[d])return!1}return!0},trapBubbledEvent:function(a,b,c){return L.trapBubbledEvent(a,b,c)},trapCapturedEvent:function(a,b,c){return L.trapCapturedEvent(a,b,c)}}),Wb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,\nflexOrder:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Xb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];\nObject.keys(Wb).forEach(function(a){Xb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);Wb[b]=Wb[a]})});\nvar Yb={isUnitlessNumber:Wb,shorthandPropertyExpansions:{background:{backgroundAttachment:!0,backgroundColor:!0,backgroundImage:!0,backgroundPositionX:!0,backgroundPositionY:!0,backgroundRepeat:!0},backgroundPosition:{backgroundPositionX:!0,backgroundPositionY:!0},border:{borderWidth:!0,borderStyle:!0,borderColor:!0},borderBottom:{borderBottomWidth:!0,borderBottomStyle:!0,borderBottomColor:!0},borderLeft:{borderLeftWidth:!0,borderLeftStyle:!0,borderLeftColor:!0},borderRight:{borderRightWidth:!0,borderRightStyle:!0,\nborderRightColor:!0},borderTop:{borderTopWidth:!0,borderTopStyle:!0,borderTopColor:!0},font:{fontStyle:!0,fontVariant:!0,fontWeight:!0,fontSize:!0,lineHeight:!0,fontFamily:!0},outline:{outlineWidth:!0,outlineStyle:!0,outlineColor:!0}}},Zb=Yb.isUnitlessNumber,$b=!1;if(l.canUseDOM){var ac=document.createElement(\"div\").style;try{ac.font=\"\"}catch(a){$b=!0}}\nvar bc={createDangerousStringForStyles:function(){},setValueForStyles:function(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\");var e=c;var f=b[c];e=null==f||\"boolean\"===typeof f||\"\"===f?\"\":d||\"number\"!==typeof f||0===f||Zb.hasOwnProperty(e)&&Zb[e]?(\"\"+f).trim():f+\"px\";\"float\"===c&&(c=\"cssFloat\");if(d)a.setProperty(c,e);else if(e)a[c]=e;else if(d=$b&&Yb.shorthandPropertyExpansions[c])for(var g in d)a[g]=\"\";else a[c]=\"\"}}},cc=new RegExp(\"^[\"+A.ATTRIBUTE_NAME_START_CHAR+\n\"][\"+A.ATTRIBUTE_NAME_CHAR+\"]*$\"),dc={},ec={};function fc(a){if(ec.hasOwnProperty(a))return!0;if(dc.hasOwnProperty(a))return!1;if(cc.test(a))return ec[a]=!0;dc[a]=!0;return!1}\nvar gc={setAttributeForID:function(a,b){a.setAttribute(A.ID_ATTRIBUTE_NAME,b)},setAttributeForRoot:function(a){a.setAttribute(A.ROOT_ATTRIBUTE_NAME,\"\")},getValueForProperty:function(){},getValueForAttribute:function(){},setValueForProperty:function(a,b,c){var d=A.getPropertyInfo(b);if(d&&A.shouldSetAttribute(b,c)){var e=d.mutationMethod;e?e(a,c):null==c||d.hasBooleanValue&&!c||d.hasNumericValue&&isNaN(c)||d.hasPositiveNumericValue&&1>c||d.hasOverloadedBooleanValue&&!1===c?gc.deleteValueForProperty(a,\nb):d.mustUseProperty?a[d.propertyName]=c:(b=d.attributeName,(e=d.attributeNamespace)?a.setAttributeNS(e,b,\"\"+c):d.hasBooleanValue||d.hasOverloadedBooleanValue&&!0===c?a.setAttribute(b,\"\"):a.setAttribute(b,\"\"+c))}else gc.setValueForAttribute(a,b,A.shouldSetAttribute(b,c)?c:null)},setValueForAttribute:function(a,b,c){fc(b)&&(null==c?a.removeAttribute(b):a.setAttribute(b,\"\"+c))},deleteValueForAttribute:function(a,b){a.removeAttribute(b)},deleteValueForProperty:function(a,b){var c=A.getPropertyInfo(b);\nc?(b=c.mutationMethod)?b(a,void 0):c.mustUseProperty?a[c.propertyName]=c.hasBooleanValue?!1:\"\":a.removeAttribute(c.attributeName):a.removeAttribute(b)}},hc=gc,ic=Qa.ReactDebugCurrentFrame;function jc(){return null}\nvar kc={current:null,phase:null,resetCurrentFiber:function(){ic.getCurrentStack=null;kc.current=null;kc.phase=null},setCurrentFiber:function(a,b){ic.getCurrentStack=jc;kc.current=a;kc.phase=b},getCurrentFiberOwnerName:function(){return null},getCurrentFiberStackAddendum:jc},lc=kc,mc={getHostProps:function(a,b){var c=b.value,d=b.checked;return n({type:void 0,step:void 0,min:void 0,max:void 0},b,{defaultChecked:void 0,defaultValue:void 0,value:null!=c?c:a._wrapperState.initialValue,checked:null!=d?\nd:a._wrapperState.initialChecked})},initWrapperState:function(a,b){var c=b.defaultValue;a._wrapperState={initialChecked:null!=b.checked?b.checked:b.defaultChecked,initialValue:null!=b.value?b.value:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}},updateWrapper:function(a,b){var c=b.checked;null!=c&&hc.setValueForProperty(a,\"checked\",c||!1);c=b.value;if(null!=c)if(0===c&&\"\"===a.value)a.value=\"0\";else if(\"number\"===b.type){if(b=parseFloat(a.value)||0,c!=b||c==b&&a.value!=\nc)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else null==b.value&&null!=b.defaultValue&&a.defaultValue!==\"\"+b.defaultValue&&(a.defaultValue=\"\"+b.defaultValue),null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)},postMountWrapper:function(a,b){switch(b.type){case \"submit\":case \"reset\":break;case \"color\":case \"date\":case \"datetime\":case \"datetime-local\":case \"month\":case \"time\":case \"week\":a.value=\"\";a.value=a.defaultValue;break;default:a.value=a.value}b=a.name;\"\"!==\nb&&(a.name=\"\");a.defaultChecked=!a.defaultChecked;a.defaultChecked=!a.defaultChecked;\"\"!==b&&(a.name=b)},restoreControlledState:function(a,b){mc.updateWrapper(a,b);var c=b.name;if(\"radio\"===b.type&&null!=c){for(b=a;b.parentNode;)b=b.parentNode;c=b.querySelectorAll(\"input[name\\x3d\"+JSON.stringify(\"\"+c)+'][type\\x3d\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=G.getFiberCurrentPropsFromNode(d);e?void 0:w(\"90\");mc.updateWrapper(d,e)}}}}},qc=mc;\nfunction rc(a){var b=\"\";aa.Children.forEach(a,function(a){null==a||\"string\"!==typeof a&&\"number\"!==typeof a||(b+=a)});return b}var sc={validateProps:function(){},postMountWrapper:function(a,b){null!=b.value&&a.setAttribute(\"value\",b.value)},getHostProps:function(a,b){a=n({children:void 0},b);if(b=rc(b.children))a.children=b;return a}};\nfunction tc(a,b,c){a=a.options;if(b){b={};for(var d=0;d<c.length;d++)b[\"$\"+c[d]]=!0;for(c=0;c<a.length;c++)d=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==d&&(a[c].selected=d)}else{c=\"\"+c;b=null;for(d=0;d<a.length;d++){if(a[d].value===c){a[d].selected=!0;return}null!==b||a[d].disabled||(b=a[d])}null!==b&&(b.selected=!0)}}\nvar uc={getHostProps:function(a,b){return n({},b,{value:void 0})},initWrapperState:function(a,b){var c=b.value;a._wrapperState={initialValue:null!=c?c:b.defaultValue,wasMultiple:!!b.multiple}},postMountWrapper:function(a,b){a.multiple=!!b.multiple;var c=b.value;null!=c?tc(a,!!b.multiple,c):null!=b.defaultValue&&tc(a,!!b.multiple,b.defaultValue)},postUpdateWrapper:function(a,b){a._wrapperState.initialValue=void 0;var c=a._wrapperState.wasMultiple;a._wrapperState.wasMultiple=!!b.multiple;var d=b.value;\nnull!=d?tc(a,!!b.multiple,d):c!==!!b.multiple&&(null!=b.defaultValue?tc(a,!!b.multiple,b.defaultValue):tc(a,!!b.multiple,b.multiple?[]:\"\"))},restoreControlledState:function(a,b){var c=b.value;null!=c&&tc(a,!!b.multiple,c)}},vc={getHostProps:function(a,b){null!=b.dangerouslySetInnerHTML?w(\"91\"):void 0;return n({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})},initWrapperState:function(a,b){var c=b.value,d=c;null==c&&(c=b.defaultValue,b=b.children,null!=b&&(null!=c?\nw(\"92\"):void 0,Array.isArray(b)&&(1>=b.length?void 0:w(\"93\"),b=b[0]),c=\"\"+b),null==c&&(c=\"\"),d=c);a._wrapperState={initialValue:\"\"+d}},updateWrapper:function(a,b){var c=b.value;null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&(a.defaultValue=c));null!=b.defaultValue&&(a.defaultValue=b.defaultValue)},postMountWrapper:function(a){var b=a.textContent;b===a._wrapperState.initialValue&&(a.value=b)},restoreControlledState:function(a,b){vc.updateWrapper(a,b)}},wc=vc,xc=n({menuitem:!0},{area:!0,\nbase:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function yc(a,b){b&&(xc[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML?w(\"137\",a,\"\"):void 0),null!=b.dangerouslySetInnerHTML&&(null!=b.children?w(\"60\"):void 0,\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML?void 0:w(\"61\")),null!=b.style&&\"object\"!==typeof b.style?w(\"62\",\"\"):void 0)}\nfunction zc(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ac(a){var b=zc(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"function\"===typeof c.get&&\"function\"===typeof c.set)return Object.defineProperty(a,b,{enumerable:c.enumerable,configurable:!0,get:function(){return c.get.call(this)},set:function(a){d=\"\"+a;c.set.call(this,a)}}),{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=null;delete a[b]}}}\nvar Bc={_getTrackerFromNode:function(a){return a._valueTracker},track:function(a){a._valueTracker||(a._valueTracker=Ac(a))},updateValueIfChanged:function(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=zc(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1},stopTracking:function(a){(a=a._valueTracker)&&a.stopTracking()}};\nfunction Cc(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}\nvar Dc=ka.Namespaces,Ec,Fc=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!==Dc.svg||\"innerHTML\"in a)a.innerHTML=b;else for(Ec=Ec||document.createElement(\"div\"),Ec.innerHTML=\"\\x3csvg\\x3e\"+b+\"\\x3c/svg\\x3e\",b=Ec.firstChild;b.firstChild;)a.appendChild(b.firstChild)}),Gc=/[\"'&<>]/,Hc=F.TEXT_NODE;\nfunction Ic(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&c.nodeType===Hc){c.nodeValue=b;return}}a.textContent=b}\nl.canUseDOM&&(\"textContent\"in document.documentElement||(Ic=function(a,b){if(a.nodeType===Hc)a.nodeValue=b;else{if(\"boolean\"===typeof b||\"number\"===typeof b)b=\"\"+b;else{b=\"\"+b;var c=Gc.exec(b);if(c){var d=\"\",e,f=0;for(e=c.index;e<b.length;e++){switch(b.charCodeAt(e)){case 34:c=\"\\x26quot;\";break;case 38:c=\"\\x26amp;\";break;case 39:c=\"\\x26#x27;\";break;case 60:c=\"\\x26lt;\";break;case 62:c=\"\\x26gt;\";break;default:continue}f!==e&&(d+=b.substring(f,e));f=e+1;d+=c}b=f!==e?d+b.substring(f,e):d}}Fc(a,b)}}));\nvar Jc=Ic,Kc=lc.getCurrentFiberOwnerName,Lc=F.DOCUMENT_NODE,Mc=F.DOCUMENT_FRAGMENT_NODE,Nc=M.listenTo,Oc=sa.registrationNameModules,Pc=ka.Namespaces.html,Qc=ka.getIntrinsicNamespace;function Rc(a,b){Nc(b,a.nodeType===Lc||a.nodeType===Mc?a:a.ownerDocument)}\nvar Sc={topAbort:\"abort\",topCanPlay:\"canplay\",topCanPlayThrough:\"canplaythrough\",topDurationChange:\"durationchange\",topEmptied:\"emptied\",topEncrypted:\"encrypted\",topEnded:\"ended\",topError:\"error\",topLoadedData:\"loadeddata\",topLoadedMetadata:\"loadedmetadata\",topLoadStart:\"loadstart\",topPause:\"pause\",topPlay:\"play\",topPlaying:\"playing\",topProgress:\"progress\",topRateChange:\"ratechange\",topSeeked:\"seeked\",topSeeking:\"seeking\",topStalled:\"stalled\",topSuspend:\"suspend\",topTimeUpdate:\"timeupdate\",topVolumeChange:\"volumechange\",\ntopWaiting:\"waiting\"},N={createElement:function(a,b,c,d){c=c.nodeType===Lc?c:c.ownerDocument;d===Pc&&(d=Qc(a));d===Pc?\"script\"===a?(a=c.createElement(\"div\"),a.innerHTML=\"\\x3cscript\\x3e\\x3c/script\\x3e\",a=a.removeChild(a.firstChild)):a=\"string\"===typeof b.is?c.createElement(a,{is:b.is}):c.createElement(a):a=c.createElementNS(d,a);return a},createTextNode:function(a,b){return(b.nodeType===Lc?b:b.ownerDocument).createTextNode(a)},setInitialProperties:function(a,b,c,d){var e=Cc(b,c);switch(b){case \"iframe\":case \"object\":M.trapBubbledEvent(\"topLoad\",\n\"load\",a);var f=c;break;case \"video\":case \"audio\":for(f in Sc)Sc.hasOwnProperty(f)&&M.trapBubbledEvent(f,Sc[f],a);f=c;break;case \"source\":M.trapBubbledEvent(\"topError\",\"error\",a);f=c;break;case \"img\":case \"image\":M.trapBubbledEvent(\"topError\",\"error\",a);M.trapBubbledEvent(\"topLoad\",\"load\",a);f=c;break;case \"form\":M.trapBubbledEvent(\"topReset\",\"reset\",a);M.trapBubbledEvent(\"topSubmit\",\"submit\",a);f=c;break;case \"details\":M.trapBubbledEvent(\"topToggle\",\"toggle\",a);f=c;break;case \"input\":qc.initWrapperState(a,\nc);f=qc.getHostProps(a,c);M.trapBubbledEvent(\"topInvalid\",\"invalid\",a);Rc(d,\"onChange\");break;case \"option\":sc.validateProps(a,c);f=sc.getHostProps(a,c);break;case \"select\":uc.initWrapperState(a,c);f=uc.getHostProps(a,c);M.trapBubbledEvent(\"topInvalid\",\"invalid\",a);Rc(d,\"onChange\");break;case \"textarea\":wc.initWrapperState(a,c);f=wc.getHostProps(a,c);M.trapBubbledEvent(\"topInvalid\",\"invalid\",a);Rc(d,\"onChange\");break;default:f=c}yc(b,f,Kc);var g=f,h;for(h in g)if(g.hasOwnProperty(h)){var k=g[h];\"style\"===\nh?bc.setValueForStyles(a,k):\"dangerouslySetInnerHTML\"===h?(k=k?k.__html:void 0,null!=k&&Fc(a,k)):\"children\"===h?\"string\"===typeof k?Jc(a,k):\"number\"===typeof k&&Jc(a,\"\"+k):\"suppressContentEditableWarning\"!==h&&(Oc.hasOwnProperty(h)?null!=k&&Rc(d,h):e?hc.setValueForAttribute(a,h,k):null!=k&&hc.setValueForProperty(a,h,k))}switch(b){case \"input\":Bc.track(a);qc.postMountWrapper(a,c);break;case \"textarea\":Bc.track(a);wc.postMountWrapper(a,c);break;case \"option\":sc.postMountWrapper(a,c);break;case \"select\":uc.postMountWrapper(a,\nc);break;default:\"function\"===typeof f.onClick&&(a.onclick=ca)}},diffProperties:function(a,b,c,d,e){var f=null;switch(b){case \"input\":c=qc.getHostProps(a,c);d=qc.getHostProps(a,d);f=[];break;case \"option\":c=sc.getHostProps(a,c);d=sc.getHostProps(a,d);f=[];break;case \"select\":c=uc.getHostProps(a,c);d=uc.getHostProps(a,d);f=[];break;case \"textarea\":c=wc.getHostProps(a,c);d=wc.getHostProps(a,d);f=[];break;default:\"function\"!==typeof c.onClick&&\"function\"===typeof d.onClick&&(a.onclick=ca)}yc(b,d,Kc);\nvar g,h;a=null;for(g in c)if(!d.hasOwnProperty(g)&&c.hasOwnProperty(g)&&null!=c[g])if(\"style\"===g)for(h in b=c[g],b)b.hasOwnProperty(h)&&(a||(a={}),a[h]=\"\");else\"dangerouslySetInnerHTML\"!==g&&\"children\"!==g&&\"suppressContentEditableWarning\"!==g&&(Oc.hasOwnProperty(g)?f||(f=[]):(f=f||[]).push(g,null));for(g in d){var k=d[g];b=null!=c?c[g]:void 0;if(d.hasOwnProperty(g)&&k!==b&&(null!=k||null!=b))if(\"style\"===g)if(b){for(h in b)!b.hasOwnProperty(h)||k&&k.hasOwnProperty(h)||(a||(a={}),a[h]=\"\");for(h in k)k.hasOwnProperty(h)&&\nb[h]!==k[h]&&(a||(a={}),a[h]=k[h])}else a||(f||(f=[]),f.push(g,a)),a=k;else\"dangerouslySetInnerHTML\"===g?(k=k?k.__html:void 0,b=b?b.__html:void 0,null!=k&&b!==k&&(f=f||[]).push(g,\"\"+k)):\"children\"===g?b===k||\"string\"!==typeof k&&\"number\"!==typeof k||(f=f||[]).push(g,\"\"+k):\"suppressContentEditableWarning\"!==g&&(Oc.hasOwnProperty(g)?(null!=k&&Rc(e,g),f||b===k||(f=[])):(f=f||[]).push(g,k))}a&&(f=f||[]).push(\"style\",a);return f},updateProperties:function(a,b,c,d,e){Cc(c,d);d=Cc(c,e);for(var f=0;f<b.length;f+=\n2){var g=b[f],h=b[f+1];\"style\"===g?bc.setValueForStyles(a,h):\"dangerouslySetInnerHTML\"===g?Fc(a,h):\"children\"===g?Jc(a,h):d?null!=h?hc.setValueForAttribute(a,g,h):hc.deleteValueForAttribute(a,g):null!=h?hc.setValueForProperty(a,g,h):hc.deleteValueForProperty(a,g)}switch(c){case \"input\":qc.updateWrapper(a,e);Bc.updateValueIfChanged(a);break;case \"textarea\":wc.updateWrapper(a,e);break;case \"select\":uc.postUpdateWrapper(a,e)}},diffHydratedProperties:function(a,b,c,d,e){switch(b){case \"iframe\":case \"object\":M.trapBubbledEvent(\"topLoad\",\n\"load\",a);break;case \"video\":case \"audio\":for(var f in Sc)Sc.hasOwnProperty(f)&&M.trapBubbledEvent(f,Sc[f],a);break;case \"source\":M.trapBubbledEvent(\"topError\",\"error\",a);break;case \"img\":case \"image\":M.trapBubbledEvent(\"topError\",\"error\",a);M.trapBubbledEvent(\"topLoad\",\"load\",a);break;case \"form\":M.trapBubbledEvent(\"topReset\",\"reset\",a);M.trapBubbledEvent(\"topSubmit\",\"submit\",a);break;case \"details\":M.trapBubbledEvent(\"topToggle\",\"toggle\",a);break;case \"input\":qc.initWrapperState(a,c);M.trapBubbledEvent(\"topInvalid\",\n\"invalid\",a);Rc(e,\"onChange\");break;case \"option\":sc.validateProps(a,c);break;case \"select\":uc.initWrapperState(a,c);M.trapBubbledEvent(\"topInvalid\",\"invalid\",a);Rc(e,\"onChange\");break;case \"textarea\":wc.initWrapperState(a,c),M.trapBubbledEvent(\"topInvalid\",\"invalid\",a),Rc(e,\"onChange\")}yc(b,c,Kc);d=null;for(var g in c)c.hasOwnProperty(g)&&(f=c[g],\"children\"===g?\"string\"===typeof f?a.textContent!==f&&(d=[\"children\",f]):\"number\"===typeof f&&a.textContent!==\"\"+f&&(d=[\"children\",\"\"+f]):Oc.hasOwnProperty(g)&&\nnull!=f&&Rc(e,g));switch(b){case \"input\":Bc.track(a);qc.postMountWrapper(a,c);break;case \"textarea\":Bc.track(a);wc.postMountWrapper(a,c);break;case \"select\":case \"option\":break;default:\"function\"===typeof c.onClick&&(a.onclick=ca)}return d},diffHydratedText:function(a,b){return a.nodeValue!==b},warnForDeletedHydratableElement:function(){},warnForDeletedHydratableText:function(){},warnForInsertedHydratedElement:function(){},warnForInsertedHydratedText:function(){},restoreControlledState:function(a,\nb,c){switch(b){case \"input\":qc.restoreControlledState(a,c);break;case \"textarea\":wc.restoreControlledState(a,c);break;case \"select\":uc.restoreControlledState(a,c)}}},Tc=void 0;\nif(l.canUseDOM)if(\"function\"!==typeof requestIdleCallback){var Uc=null,Vc=null,Wc=!1,Xc=!1,Yc=0,Zc=33,$c=33,ad={timeRemaining:\"object\"===typeof performance&&\"function\"===typeof performance.now?function(){return Yc-performance.now()}:function(){return Yc-Date.now()}},bd=\"__reactIdleCallback$\"+Math.random().toString(36).slice(2);window.addEventListener(\"message\",function(a){a.source===window&&a.data===bd&&(Wc=!1,a=Vc,Vc=null,null!==a&&a(ad))},!1);var cd=function(a){Xc=!1;var b=a-Yc+$c;b<$c&&Zc<$c?(8>\nb&&(b=8),$c=b<Zc?Zc:b):Zc=b;Yc=a+$c;Wc||(Wc=!0,window.postMessage(bd,\"*\"));b=Uc;Uc=null;null!==b&&b(a)};Tc=function(a){Vc=a;Xc||(Xc=!0,requestAnimationFrame(cd));return 0}}else Tc=requestIdleCallback;else Tc=function(a){setTimeout(function(){a({timeRemaining:function(){return Infinity}})});return 0};\nvar dd={rIC:Tc},ed={enableAsyncSubtreeAPI:!0},Q={NoWork:0,SynchronousPriority:1,TaskPriority:2,HighPriority:3,LowPriority:4,OffscreenPriority:5},fd=J.Callback,gd=Q.NoWork,hd=Q.SynchronousPriority,id=Q.TaskPriority,jd=E.ClassComponent,kd=E.HostRoot,md=void 0,nd=void 0;function od(a,b){return a!==id&&a!==hd||b!==id&&b!==hd?a===gd&&b!==gd?-255:a!==gd&&b===gd?255:a-b:0}function pd(){return{first:null,last:null,hasForceUpdate:!1,callbackList:null}}\nfunction qd(a,b,c,d){null!==c?c.next=b:(b.next=a.first,a.first=b);null!==d?b.next=d:a.last=b}function rd(a,b){b=b.priorityLevel;var c=null;if(null!==a.last&&0>=od(a.last.priorityLevel,b))c=a.last;else for(a=a.first;null!==a&&0>=od(a.priorityLevel,b);)c=a,a=a.next;return c}\nfunction sd(a,b){var c=a.alternate,d=a.updateQueue;null===d&&(d=a.updateQueue=pd());null!==c?(a=c.updateQueue,null===a&&(a=c.updateQueue=pd())):a=null;md=d;nd=a!==d?a:null;var e=md;c=nd;var f=rd(e,b),g=null!==f?f.next:e.first;if(null===c)return qd(e,b,f,g),null;d=rd(c,b);a=null!==d?d.next:c.first;qd(e,b,f,g);if(g===a&&null!==g||f===d&&null!==f)return null===d&&(c.first=b),null===a&&(c.last=null),null;b={priorityLevel:b.priorityLevel,partialState:b.partialState,callback:b.callback,isReplace:b.isReplace,\nisForced:b.isForced,isTopLevelUnmount:b.isTopLevelUnmount,next:null};qd(c,b,d,a);return b}function td(a,b,c,d){a=a.partialState;return\"function\"===typeof a?a.call(b,c,d):a}\nvar ud={addUpdate:function(a,b,c,d){sd(a,{priorityLevel:d,partialState:b,callback:c,isReplace:!1,isForced:!1,isTopLevelUnmount:!1,next:null})},addReplaceUpdate:function(a,b,c,d){sd(a,{priorityLevel:d,partialState:b,callback:c,isReplace:!0,isForced:!1,isTopLevelUnmount:!1,next:null})},addForceUpdate:function(a,b,c){sd(a,{priorityLevel:c,partialState:null,callback:b,isReplace:!1,isForced:!0,isTopLevelUnmount:!1,next:null})},getUpdatePriority:function(a){var b=a.updateQueue;return null===b||a.tag!==\njd&&a.tag!==kd?gd:null!==b.first?b.first.priorityLevel:gd},addTopLevelUpdate:function(a,b,c,d){var e=null===b.element;b={priorityLevel:d,partialState:b,callback:c,isReplace:!1,isForced:!1,isTopLevelUnmount:e,next:null};a=sd(a,b);e&&(e=md,c=nd,null!==e&&null!==b.next&&(b.next=null,e.last=b),null!==c&&null!==a&&null!==a.next&&(a.next=null,c.last=b))},beginUpdateQueue:function(a,b,c,d,e,f,g){null!==a&&a.updateQueue===c&&(c=b.updateQueue={first:c.first,last:c.last,callbackList:null,hasForceUpdate:!1});\na=c.callbackList;for(var h=c.hasForceUpdate,k=!0,p=c.first;null!==p&&0>=od(p.priorityLevel,g);){c.first=p.next;null===c.first&&(c.last=null);var x;if(p.isReplace)e=td(p,d,e,f),k=!0;else if(x=td(p,d,e,f))e=k?n({},e,x):n(e,x),k=!1;p.isForced&&(h=!0);null===p.callback||p.isTopLevelUnmount&&null!==p.next||(a=null!==a?a:[],a.push(p.callback),b.effectTag|=fd);p=p.next}c.callbackList=a;c.hasForceUpdate=h;null!==c.first||null!==a||h||(b.updateQueue=null);return e},commitCallbacks:function(a,b,c){a=b.callbackList;\nif(null!==a)for(b.callbackList=null,b=0;b<a.length;b++){var d=a[b];\"function\"!==typeof d?w(\"191\",d):void 0;d.call(c)}}},vd=[],wd=-1,xd={createCursor:function(a){return{current:a}},isEmpty:function(){return-1===wd},pop:function(a){0>wd||(a.current=vd[wd],vd[wd]=null,wd--)},push:function(a,b){wd++;vd[wd]=a.current;a.current=b},reset:function(){for(;-1<wd;)vd[wd]=null,wd--}},yd=bb.isFiberMounted,zd=E.ClassComponent,Ad=E.HostRoot,Bd=xd.createCursor,Cd=xd.pop,Dd=xd.push,Ed=Bd(da),Fd=Bd(!1),Ld=da;\nfunction Md(a,b,c){a=a.stateNode;a.__reactInternalMemoizedUnmaskedChildContext=b;a.__reactInternalMemoizedMaskedChildContext=c}function Nd(a){return a.tag===zd&&null!=a.type.childContextTypes}function Od(a,b){var c=a.stateNode,d=a.type.childContextTypes;if(\"function\"!==typeof c.getChildContext)return b;c=c.getChildContext();for(var e in c)e in d?void 0:w(\"108\",Ra(a)||\"Unknown\",e);return n({},b,c)}\nvar R={getUnmaskedContext:function(a){return Nd(a)?Ld:Ed.current},cacheContext:Md,getMaskedContext:function(a,b){var c=a.type.contextTypes;if(!c)return da;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&Md(a,b,e);return e},hasContextChanged:function(){return Fd.current},isContextConsumer:function(a){return a.tag===zd&&null!=a.type.contextTypes},isContextProvider:Nd,popContextProvider:function(a){Nd(a)&&\n(Cd(Fd,a),Cd(Ed,a))},popTopLevelContextObject:function(a){Cd(Fd,a);Cd(Ed,a)},pushTopLevelContextObject:function(a,b,c){null!=Ed.cursor?w(\"168\"):void 0;Dd(Ed,b,a);Dd(Fd,c,a)},processChildContext:Od,pushContextProvider:function(a){if(!Nd(a))return!1;var b=a.stateNode;b=b&&b.__reactInternalMemoizedMergedChildContext||da;Ld=Ed.current;Dd(Ed,b,a);Dd(Fd,Fd.current,a);return!0},invalidateContextProvider:function(a,b){var c=a.stateNode;c?void 0:w(\"169\");if(b){var d=Od(a,Ld,!0);c.__reactInternalMemoizedMergedChildContext=\nd;Cd(Fd,a);Cd(Ed,a);Dd(Ed,d,a)}else Cd(Fd,a);Dd(Fd,b,a)},resetContext:function(){Ld=da;Ed.current=da;Fd.current=!1},findCurrentUnmaskedContext:function(a){for(yd(a)&&a.tag===zd?void 0:w(\"170\");a.tag!==Ad;){if(Nd(a))return a.stateNode.__reactInternalMemoizedMergedChildContext;(a=a[\"return\"])?void 0:w(\"171\")}return a.stateNode.context}},Pd={NoContext:0,AsyncUpdates:1},Qd=E.IndeterminateComponent,Rd=E.ClassComponent,Sd=E.HostRoot,Td=E.HostComponent,Ud=E.HostText,Vd=E.HostPortal,Wd=E.CoroutineComponent,\nXd=E.YieldComponent,Yd=E.Fragment,Zd=Q.NoWork,$d=Pd.NoContext,ae=J.NoEffect;function be(a,b,c){this.tag=a;this.key=b;this.stateNode=this.type=null;this.sibling=this.child=this[\"return\"]=null;this.index=0;this.memoizedState=this.updateQueue=this.memoizedProps=this.pendingProps=this.ref=null;this.internalContextTag=c;this.effectTag=ae;this.lastEffect=this.firstEffect=this.nextEffect=null;this.pendingWorkPriority=Zd;this.alternate=null}\nfunction ce(a,b,c){var d=void 0;\"function\"===typeof a?(d=a.prototype&&a.prototype.isReactComponent?new be(Rd,b,c):new be(Qd,b,c),d.type=a):\"string\"===typeof a?(d=new be(Td,b,c),d.type=a):\"object\"===typeof a&&null!==a&&\"number\"===typeof a.tag?d=a:w(\"130\",null==a?a:typeof a,\"\");return d}\nvar de={createWorkInProgress:function(a,b){var c=a.alternate;null===c?(c=new be(a.tag,a.key,a.internalContextTag),c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.effectTag=ae,c.nextEffect=null,c.firstEffect=null,c.lastEffect=null);c.pendingWorkPriority=b;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;c.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c},createHostRootFiber:function(){return new be(Sd,null,$d)},\ncreateFiberFromElement:function(a,b,c){b=ce(a.type,a.key,b,null);b.pendingProps=a.props;b.pendingWorkPriority=c;return b},createFiberFromFragment:function(a,b,c){b=new be(Yd,null,b);b.pendingProps=a;b.pendingWorkPriority=c;return b},createFiberFromText:function(a,b,c){b=new be(Ud,null,b);b.pendingProps=a;b.pendingWorkPriority=c;return b},createFiberFromElementType:ce,createFiberFromHostInstanceForDeletion:function(){var a=new be(Td,null,$d);a.type=\"DELETED\";return a},createFiberFromCoroutine:function(a,\nb,c){b=new be(Wd,a.key,b);b.type=a.handler;b.pendingProps=a;b.pendingWorkPriority=c;return b},createFiberFromYield:function(a,b){return new be(Xd,null,b)},createFiberFromPortal:function(a,b,c){b=new be(Vd,a.key,b);b.pendingProps=a.children||[];b.pendingWorkPriority=c;b.stateNode={containerInfo:a.containerInfo,implementation:a.implementation};return b},largerPriority:function(a,b){return a!==Zd&&(b===Zd||b>a)?a:b}},ee=de.createHostRootFiber,fe=E.IndeterminateComponent,ge=E.FunctionalComponent,he=E.ClassComponent,\nie=E.HostComponent,je,ke;\"function\"===typeof Symbol&&Symbol[\"for\"]?(je=Symbol[\"for\"](\"react.coroutine\"),ke=Symbol[\"for\"](\"react.yield\")):(je=60104,ke=60105);\nvar le={createCoroutine:function(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:je,key:null==d?null:\"\"+d,children:a,handler:b,props:c}},createYield:function(a){return{$$typeof:ke,value:a}},isCoroutine:function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===je},isYield:function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===ke},REACT_YIELD_TYPE:ke,REACT_COROUTINE_TYPE:je},me=\"function\"===typeof Symbol&&Symbol[\"for\"]&&Symbol[\"for\"](\"react.portal\")||\n60106,ne={createPortal:function(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:me,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}},isPortal:function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===me},REACT_PORTAL_TYPE:me},oe=le.REACT_COROUTINE_TYPE,pe=le.REACT_YIELD_TYPE,qe=ne.REACT_PORTAL_TYPE,re=de.createWorkInProgress,se=de.createFiberFromElement,te=de.createFiberFromFragment,ue=de.createFiberFromText,ve=de.createFiberFromCoroutine,\nwe=de.createFiberFromYield,xe=de.createFiberFromPortal,ye=Array.isArray,ze=E.FunctionalComponent,Ae=E.ClassComponent,Be=E.HostText,Ce=E.HostPortal,De=E.CoroutineComponent,Ee=E.YieldComponent,Fe=E.Fragment,Ge=J.NoEffect,He=J.Placement,Ie=J.Deletion,Je=\"function\"===typeof Symbol&&Symbol.iterator,Ke=\"function\"===typeof Symbol&&Symbol[\"for\"]&&Symbol[\"for\"](\"react.element\")||60103;\nfunction Le(a){if(null===a||\"undefined\"===typeof a)return null;a=Je&&a[Je]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nfunction Me(a,b){var c=b.ref;if(null!==c&&\"function\"!==typeof c){if(b._owner){b=b._owner;var d=void 0;b&&(\"number\"===typeof b.tag?(b.tag!==Ae?w(\"110\"):void 0,d=b.stateNode):d=b.getPublicInstance());d?void 0:w(\"147\",c);var e=\"\"+c;if(null!==a&&null!==a.ref&&a.ref._stringRef===e)return a.ref;a=function(a){var b=d.refs===da?d.refs={}:d.refs;null===a?delete b[e]:b[e]=a};a._stringRef=e;return a}\"string\"!==typeof c?w(\"148\"):void 0;b._owner?void 0:w(\"149\",c)}return c}\nfunction Ne(a,b){\"textarea\"!==a.type&&w(\"31\",\"[object Object]\"===Object.prototype.toString.call(b)?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":b,\"\")}\nfunction Oe(a,b){function c(c,d){if(b){if(!a){if(null===d.alternate)return;d=d.alternate}var m=c.lastEffect;null!==m?(m.nextEffect=d,c.lastEffect=d):c.firstEffect=c.lastEffect=d;d.nextEffect=null;d.effectTag=Ie}}function d(a,d){if(!b)return null;for(;null!==d;)c(a,d),d=d.sibling;return null}function e(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function f(b,c){if(a)return b=re(b,c),b.index=0,b.sibling=null,b;b.pendingWorkPriority=c;b.effectTag=Ge;\nb.index=0;b.sibling=null;return b}function g(a,c,d){a.index=d;if(!b)return c;d=a.alternate;if(null!==d)return d=d.index,d<c?(a.effectTag=He,c):d;a.effectTag=He;return c}function h(a){b&&null===a.alternate&&(a.effectTag=He);return a}function k(a,b,c,d){if(null===b||b.tag!==Be)return c=ue(c,a.internalContextTag,d),c[\"return\"]=a,c;b=f(b,d);b.pendingProps=c;b[\"return\"]=a;return b}function p(a,b,c,d){if(null===b||b.type!==c.type)return d=se(c,a.internalContextTag,d),d.ref=Me(b,c),d[\"return\"]=a,d;d=f(b,\nd);d.ref=Me(b,c);d.pendingProps=c.props;d[\"return\"]=a;return d}function x(a,b,c,d){if(null===b||b.tag!==De)return c=ve(c,a.internalContextTag,d),c[\"return\"]=a,c;b=f(b,d);b.pendingProps=c;b[\"return\"]=a;return b}function S(a,b,c,d){if(null===b||b.tag!==Ee)return b=we(c,a.internalContextTag,d),b.type=c.value,b[\"return\"]=a,b;b=f(b,d);b.type=c.value;b[\"return\"]=a;return b}function D(a,b,c,d){if(null===b||b.tag!==Ce||b.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return c=\nxe(c,a.internalContextTag,d),c[\"return\"]=a,c;b=f(b,d);b.pendingProps=c.children||[];b[\"return\"]=a;return b}function y(a,b,c,d){if(null===b||b.tag!==Fe)return c=te(c,a.internalContextTag,d),c[\"return\"]=a,c;b=f(b,d);b.pendingProps=c;b[\"return\"]=a;return b}function B(a,b,c){if(\"string\"===typeof b||\"number\"===typeof b)return b=ue(\"\"+b,a.internalContextTag,c),b[\"return\"]=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case Ke:return c=se(b,a.internalContextTag,c),c.ref=Me(null,b),c[\"return\"]=\na,c;case oe:return b=ve(b,a.internalContextTag,c),b[\"return\"]=a,b;case pe:return c=we(b,a.internalContextTag,c),c.type=b.value,c[\"return\"]=a,c;case qe:return b=xe(b,a.internalContextTag,c),b[\"return\"]=a,b}if(ye(b)||Le(b))return b=te(b,a.internalContextTag,c),b[\"return\"]=a,b;Ne(a,b)}return null}function H(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c||\"number\"===typeof c)return null!==e?null:k(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case Ke:return c.key===e?p(a,\nb,c,d):null;case oe:return c.key===e?x(a,b,c,d):null;case pe:return null===e?S(a,b,c,d):null;case qe:return c.key===e?D(a,b,c,d):null}if(ye(c)||Le(c))return null!==e?null:y(a,b,c,d);Ne(a,c)}return null}function C(a,b,c,d,e){if(\"string\"===typeof d||\"number\"===typeof d)return a=a.get(c)||null,k(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case Ke:return a=a.get(null===d.key?c:d.key)||null,p(b,a,d,e);case oe:return a=a.get(null===d.key?c:d.key)||null,x(b,a,d,e);case pe:return a=a.get(c)||\nnull,S(b,a,d,e);case qe:return a=a.get(null===d.key?c:d.key)||null,D(b,a,d,e)}if(ye(d)||Le(d))return a=a.get(c)||null,y(b,a,d,e);Ne(b,d)}return null}function Ca(a,f,h,k){for(var m=null,t=null,q=f,r=f=0,p=null;null!==q&&r<h.length;r++){q.index>r?(p=q,q=null):p=q.sibling;var v=H(a,q,h[r],k);if(null===v){null===q&&(q=p);break}b&&q&&null===v.alternate&&c(a,q);f=g(v,f,r);null===t?m=v:t.sibling=v;t=v;q=p}if(r===h.length)return d(a,q),m;if(null===q){for(;r<h.length;r++)if(q=B(a,h[r],k))f=g(q,f,r),null===\nt?m=q:t.sibling=q,t=q;return m}for(q=e(a,q);r<h.length;r++)if(p=C(q,a,r,h[r],k)){if(b&&null!==p.alternate)q[\"delete\"](null===p.key?r:p.key);f=g(p,f,r);null===t?m=p:t.sibling=p;t=p}b&&q.forEach(function(b){return c(a,b)});return m}function r(a,f,h,r){var m=Le(h);\"function\"!==typeof m?w(\"150\"):void 0;h=m.call(h);null==h?w(\"151\"):void 0;for(var t=m=null,q=f,k=f=0,p=null,v=h.next();null!==q&&!v.done;k++,v=h.next()){q.index>k?(p=q,q=null):p=q.sibling;var V=H(a,q,v.value,r);if(null===V){q||(q=p);break}b&&\nq&&null===V.alternate&&c(a,q);f=g(V,f,k);null===t?m=V:t.sibling=V;t=V;q=p}if(v.done)return d(a,q),m;if(null===q){for(;!v.done;k++,v=h.next())v=B(a,v.value,r),null!==v&&(f=g(v,f,k),null===t?m=v:t.sibling=v,t=v);return m}for(q=e(a,q);!v.done;k++,v=h.next())if(v=C(q,a,k,v.value,r),null!==v){if(b&&null!==v.alternate)q[\"delete\"](null===v.key?k:v.key);f=g(v,f,k);null===t?m=v:t.sibling=v;t=v}b&&q.forEach(function(b){return c(a,b)});return m}return function(a,b,e,g){var m=\"object\"===typeof e&&null!==e;if(m)switch(e.$$typeof){case Ke:a:{var C=\ne.key;for(m=b;null!==m;){if(m.key===C)if(m.type===e.type){d(a,m.sibling);b=f(m,g);b.ref=Me(m,e);b.pendingProps=e.props;b[\"return\"]=a;a=b;break a}else{d(a,m);break}else c(a,m);m=m.sibling}g=se(e,a.internalContextTag,g);g.ref=Me(b,e);g[\"return\"]=a;a=g}return h(a);case oe:a:{for(m=e.key;null!==b;){if(b.key===m)if(b.tag===De){d(a,b.sibling);b=f(b,g);b.pendingProps=e;b[\"return\"]=a;a=b;break a}else{d(a,b);break}else c(a,b);b=b.sibling}e=ve(e,a.internalContextTag,g);e[\"return\"]=a;a=e}return h(a);case pe:a:{if(null!==\nb)if(b.tag===Ee){d(a,b.sibling);b=f(b,g);b.type=e.value;b[\"return\"]=a;a=b;break a}else d(a,b);b=we(e,a.internalContextTag,g);b.type=e.value;b[\"return\"]=a;a=b}return h(a);case qe:a:{for(m=e.key;null!==b;){if(b.key===m)if(b.tag===Ce&&b.stateNode.containerInfo===e.containerInfo&&b.stateNode.implementation===e.implementation){d(a,b.sibling);b=f(b,g);b.pendingProps=e.children||[];b[\"return\"]=a;a=b;break a}else{d(a,b);break}else c(a,b);b=b.sibling}e=xe(e,a.internalContextTag,g);e[\"return\"]=a;a=e}return h(a)}if(\"string\"===\ntypeof e||\"number\"===typeof e)return e=\"\"+e,null!==b&&b.tag===Be?(d(a,b.sibling),b=f(b,g),b.pendingProps=e,b[\"return\"]=a,a=b):(d(a,b),e=ue(e,a.internalContextTag,g),e[\"return\"]=a,a=e),h(a);if(ye(e))return Ca(a,b,e,g);if(Le(e))return r(a,b,e,g);m&&Ne(a,e);if(\"undefined\"===typeof e)switch(a.tag){case Ae:case ze:e=a.type,w(\"152\",e.displayName||e.name||\"Component\")}return d(a,b)}}\nvar Pe=Oe(!0,!0),Qe=Oe(!1,!0),Re=Oe(!1,!1),Se={reconcileChildFibers:Pe,reconcileChildFibersInPlace:Qe,mountChildFibersInPlace:Re,cloneChildFibers:function(a,b){null!==a&&b.child!==a.child?w(\"153\"):void 0;if(null!==b.child){a=b.child;var c=re(a,a.pendingWorkPriority);c.pendingProps=a.pendingProps;b.child=c;for(c[\"return\"]=b;null!==a.sibling;)a=a.sibling,c=c.sibling=re(a,a.pendingWorkPriority),c.pendingProps=a.pendingProps,c[\"return\"]=b;c.sibling=null}}},Te=J.Update,Ue=Pd.AsyncUpdates,Ve=R.cacheContext,\nWe=R.getMaskedContext,Xe=R.getUnmaskedContext,Ye=R.isContextConsumer,Ze=ud.addUpdate,$e=ud.addReplaceUpdate,af=ud.addForceUpdate,bf=ud.beginUpdateQueue,cf=R.hasContextChanged,df=bb.isMounted;\nfunction ef(a,b,c,d){function e(a,b){b.updater=f;a.stateNode=b;Pa.set(b,a)}var f={isMounted:df,enqueueSetState:function(c,d,e){c=Pa.get(c);var f=b(c,!1);Ze(c,d,void 0===e?null:e,f);a(c,f)},enqueueReplaceState:function(c,d,e){c=Pa.get(c);var f=b(c,!1);$e(c,d,void 0===e?null:e,f);a(c,f)},enqueueForceUpdate:function(c,d){c=Pa.get(c);var e=b(c,!1);af(c,void 0===d?null:d,e);a(c,e)}};return{adoptClassInstance:e,constructClassInstance:function(a,b){var c=a.type,d=Xe(a),f=Ye(a),g=f?We(a,d):da;b=new c(b,g);\ne(a,b);f&&Ve(a,d,g);return b},mountClassInstance:function(a,b){var c=a.alternate,d=a.stateNode,e=d.state||null,g=a.pendingProps;g?void 0:w(\"158\");var h=Xe(a);d.props=g;d.state=e;d.refs=da;d.context=We(a,h);ed.enableAsyncSubtreeAPI&&null!=a.type&&null!=a.type.prototype&&!0===a.type.prototype.unstable_isAsyncReactComponent&&(a.internalContextTag|=Ue);\"function\"===typeof d.componentWillMount&&(h=d.state,d.componentWillMount(),h!==d.state&&f.enqueueReplaceState(d,d.state,null),h=a.updateQueue,null!==\nh&&(d.state=bf(c,a,h,d,e,g,b)));\"function\"===typeof d.componentDidMount&&(a.effectTag|=Te)},updateClassInstance:function(a,b,e){var g=b.stateNode;g.props=b.memoizedProps;g.state=b.memoizedState;var h=b.memoizedProps,k=b.pendingProps;k||(k=h,null==k?w(\"159\"):void 0);var D=g.context,y=Xe(b);y=We(b,y);\"function\"!==typeof g.componentWillReceiveProps||h===k&&D===y||(D=g.state,g.componentWillReceiveProps(k,y),g.state!==D&&f.enqueueReplaceState(g,g.state,null));D=b.memoizedState;e=null!==b.updateQueue?bf(a,\nb,b.updateQueue,g,D,k,e):D;if(!(h!==k||D!==e||cf()||null!==b.updateQueue&&b.updateQueue.hasForceUpdate))return\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&D===a.memoizedState||(b.effectTag|=Te),!1;var B=k;if(null===h||null!==b.updateQueue&&b.updateQueue.hasForceUpdate)B=!0;else{var H=b.stateNode,C=b.type;B=\"function\"===typeof H.shouldComponentUpdate?H.shouldComponentUpdate(B,e,y):C.prototype&&C.prototype.isPureReactComponent?!ea(h,B)||!ea(D,e):!0}B?(\"function\"===typeof g.componentWillUpdate&&\ng.componentWillUpdate(k,e,y),\"function\"===typeof g.componentDidUpdate&&(b.effectTag|=Te)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&D===a.memoizedState||(b.effectTag|=Te),c(b,k),d(b,e));g.props=k;g.state=e;g.context=y;return B}}}\nvar ff=Se.mountChildFibersInPlace,gf=Se.reconcileChildFibers,hf=Se.reconcileChildFibersInPlace,jf=Se.cloneChildFibers,kf=ud.beginUpdateQueue,lf=R.getMaskedContext,mf=R.getUnmaskedContext,nf=R.hasContextChanged,of=R.pushContextProvider,pf=R.pushTopLevelContextObject,qf=R.invalidateContextProvider,rf=E.IndeterminateComponent,sf=E.FunctionalComponent,tf=E.ClassComponent,uf=E.HostRoot,wf=E.HostComponent,xf=E.HostText,yf=E.HostPortal,zf=E.CoroutineComponent,Af=E.CoroutineHandlerPhase,Bf=E.YieldComponent,\nCf=E.Fragment,Df=Q.NoWork,Ef=Q.OffscreenPriority,Ff=J.PerformedWork,Gf=J.Placement,Hf=J.ContentReset,If=J.Err,Jf=J.Ref,Kf=Qa.ReactCurrentOwner;\nfunction Lf(a,b,c,d,e){function f(a,b,c){g(a,b,c,b.pendingWorkPriority)}function g(a,b,c,d){b.child=null===a?ff(b,b.child,c,d):a.child===b.child?gf(b,b.child,c,d):hf(b,b.child,c,d)}function h(a,b){var c=b.ref;null===c||a&&a.ref===c||(b.effectTag|=Jf)}function k(a,b,c,d){h(a,b);if(!c)return d&&qf(b,!1),x(a,b);c=b.stateNode;Kf.current=b;var e=c.render();b.effectTag|=Ff;f(a,b,e);b.memoizedState=c.state;b.memoizedProps=c.props;d&&qf(b,!0);return b.child}function p(a){var b=a.stateNode;b.pendingContext?\npf(a,b.pendingContext,b.pendingContext!==b.context):b.context&&pf(a,b.context,!1);C(a,b.containerInfo)}function x(a,b){jf(a,b);return b.child}function S(a,b){switch(b.tag){case uf:p(b);break;case tf:of(b);break;case yf:C(b,b.stateNode.containerInfo)}return null}var D=a.shouldSetTextContent,y=a.useSyncScheduling,B=a.shouldDeprioritizeSubtree,H=b.pushHostContext,C=b.pushHostContainer,Ca=c.enterHydrationState,r=c.resetHydrationState,m=c.tryToClaimNextHydratableInstance;a=ef(d,e,function(a,b){a.memoizedProps=\nb},function(a,b){a.memoizedState=b});var t=a.adoptClassInstance,v=a.constructClassInstance,V=a.mountClassInstance,ld=a.updateClassInstance;return{beginWork:function(a,b,c){if(b.pendingWorkPriority===Df||b.pendingWorkPriority>c)return S(a,b);switch(b.tag){case rf:null!==a?w(\"155\"):void 0;var d=b.type,e=b.pendingProps,g=mf(b);g=lf(b,g);d=d(e,g);b.effectTag|=Ff;\"object\"===typeof d&&null!==d&&\"function\"===typeof d.render?(b.tag=tf,e=of(b),t(b,d),V(b,c),b=k(a,b,!0,e)):(b.tag=sf,f(a,b,d),b.memoizedProps=\ne,b=b.child);return b;case sf:a:{e=b.type;c=b.pendingProps;d=b.memoizedProps;if(nf())null===c&&(c=d);else if(null===c||d===c){b=x(a,b);break a}d=mf(b);d=lf(b,d);e=e(c,d);b.effectTag|=Ff;f(a,b,e);b.memoizedProps=c;b=b.child}return b;case tf:return e=of(b),d=void 0,null===a?b.stateNode?w(\"153\"):(v(b,b.pendingProps),V(b,c),d=!0):d=ld(a,b,c),k(a,b,d,e);case uf:return p(b),d=b.updateQueue,null!==d?(e=b.memoizedState,d=kf(a,b,d,null,e,null,c),e===d?(r(),b=x(a,b)):(e=d.element,null!==a&&null!==a.child||\n!Ca(b)?(r(),f(a,b,e)):(b.effectTag|=Gf,b.child=ff(b,b.child,e,c)),b.memoizedState=d,b=b.child)):(r(),b=x(a,b)),b;case wf:H(b);null===a&&m(b);e=b.type;var q=b.memoizedProps;d=b.pendingProps;null===d&&(d=q,null===d?w(\"154\"):void 0);g=null!==a?a.memoizedProps:null;nf()||null!==d&&q!==d?(q=d.children,D(e,d)?q=null:g&&D(e,g)&&(b.effectTag|=Hf),h(a,b),c!==Ef&&!y&&B(e,d)?(b.pendingWorkPriority=Ef,b=null):(f(a,b,q),b.memoizedProps=d,b=b.child)):b=x(a,b);return b;case xf:return null===a&&m(b),a=b.pendingProps,\nnull===a&&(a=b.memoizedProps),b.memoizedProps=a,null;case Af:b.tag=zf;case zf:c=b.pendingProps;if(nf())null===c&&(c=a&&a.memoizedProps,null===c?w(\"154\"):void 0);else if(null===c||b.memoizedProps===c)c=b.memoizedProps;e=c.children;d=b.pendingWorkPriority;b.stateNode=null===a?ff(b,b.stateNode,e,d):a.child===b.child?gf(b,b.stateNode,e,d):hf(b,b.stateNode,e,d);b.memoizedProps=c;return b.stateNode;case Bf:return null;case yf:a:{C(b,b.stateNode.containerInfo);c=b.pendingWorkPriority;e=b.pendingProps;if(nf())null===\ne&&(e=a&&a.memoizedProps,null==e?w(\"154\"):void 0);else if(null===e||b.memoizedProps===e){b=x(a,b);break a}null===a?b.child=hf(b,b.child,e,c):f(a,b,e);b.memoizedProps=e;b=b.child}return b;case Cf:a:{c=b.pendingProps;if(nf())null===c&&(c=b.memoizedProps);else if(null===c||b.memoizedProps===c){b=x(a,b);break a}f(a,b,c);b.memoizedProps=c;b=b.child}return b;default:w(\"156\")}},beginFailedWork:function(a,b,c){switch(b.tag){case tf:of(b);break;case uf:p(b);break;default:w(\"157\")}b.effectTag|=If;null===a?\nb.child=null:b.child!==a.child&&(b.child=a.child);if(b.pendingWorkPriority===Df||b.pendingWorkPriority>c)return S(a,b);b.firstEffect=null;b.lastEffect=null;g(a,b,null,c);b.tag===tf&&(a=b.stateNode,b.memoizedProps=a.props,b.memoizedState=a.state);return b.child}}}\nvar Mf=Se.reconcileChildFibers,Nf=R.popContextProvider,Of=R.popTopLevelContextObject,Pf=E.IndeterminateComponent,Qf=E.FunctionalComponent,Rf=E.ClassComponent,Sf=E.HostRoot,Tf=E.HostComponent,Uf=E.HostText,Vf=E.HostPortal,Wf=E.CoroutineComponent,Xf=E.CoroutineHandlerPhase,Yf=E.YieldComponent,Zf=E.Fragment,ag=J.Placement,bg=J.Ref,cg=J.Update,dg=Q.OffscreenPriority;\nfunction eg(a,b,c){var d=a.createInstance,e=a.createTextInstance,f=a.appendInitialChild,g=a.finalizeInitialChildren,h=a.prepareUpdate,k=b.getRootHostContainer,p=b.popHostContext,x=b.getHostContext,S=b.popHostContainer,D=c.prepareToHydrateHostInstance,y=c.prepareToHydrateHostTextInstance,B=c.popHydrationState;return{completeWork:function(a,b,c){var r=b.pendingProps;if(null===r)r=b.memoizedProps;else if(b.pendingWorkPriority!==dg||c===dg)b.pendingProps=null;switch(b.tag){case Qf:return null;case Rf:return Nf(b),\nnull;case Sf:S(b);Of(b);r=b.stateNode;r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null);if(null===a||null===a.child)B(b),b.effectTag&=~ag;return null;case Tf:p(b);c=k();var m=b.type;if(null!==a&&null!=b.stateNode){var t=a.memoizedProps,C=b.stateNode,V=x();r=h(C,m,t,r,c,V);if(b.updateQueue=r)b.effectTag|=cg;a.ref!==b.ref&&(b.effectTag|=bg)}else{if(!r)return null===b.stateNode?w(\"166\"):void 0,null;a=x();if(B(b))D(b,c,a)&&(b.effectTag|=cg);else{a=d(m,r,c,a,b);a:for(t=b.child;null!==\nt;){if(t.tag===Tf||t.tag===Uf)f(a,t.stateNode);else if(t.tag!==Vf&&null!==t.child){t=t.child;continue}if(t===b)break a;for(;null===t.sibling;){if(null===t[\"return\"]||t[\"return\"]===b)break a;t=t[\"return\"]}t=t.sibling}g(a,m,r,c)&&(b.effectTag|=cg);b.stateNode=a}null!==b.ref&&(b.effectTag|=bg)}return null;case Uf:if(a&&null!=b.stateNode)a.memoizedProps!==r&&(b.effectTag|=cg);else{if(\"string\"!==typeof r)return null===b.stateNode?w(\"166\"):void 0,null;a=k();c=x();B(b)?y(b)&&(b.effectTag|=cg):b.stateNode=\ne(r,a,c,b)}return null;case Wf:(r=b.memoizedProps)?void 0:w(\"165\");b.tag=Xf;c=[];a:for((m=b.stateNode)&&(m[\"return\"]=b);null!==m;){if(m.tag===Tf||m.tag===Uf||m.tag===Vf)w(\"164\");else if(m.tag===Yf)c.push(m.type);else if(null!==m.child){m.child[\"return\"]=m;m=m.child;continue}for(;null===m.sibling;){if(null===m[\"return\"]||m[\"return\"]===b)break a;m=m[\"return\"]}m.sibling[\"return\"]=m[\"return\"];m=m.sibling}m=r.handler;r=m(r.props,c);b.child=Mf(b,null!==a?a.child:null,r,b.pendingWorkPriority);return b.child;\ncase Xf:return b.tag=Wf,null;case Yf:return null;case Zf:return null;case Vf:return b.effectTag|=cg,S(b),null;case Pf:w(\"167\");default:w(\"156\")}}}}var fg=null,gg=null;function hg(a){return function(b){try{return a(b)}catch(c){}}}\nvar ig={injectInternals:function(a){if(\"undefined\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var b=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!b.supportsFiber)return!0;try{var c=b.inject(a);fg=hg(function(a){return b.onCommitFiberRoot(c,a)});gg=hg(function(a){return b.onCommitFiberUnmount(c,a)})}catch(d){}return!0},onCommitRoot:function(a){\"function\"===typeof fg&&fg(a)},onCommitUnmount:function(a){\"function\"===typeof gg&&gg(a)}},jg=E.ClassComponent,kg=E.HostRoot,lg=E.HostComponent,mg=E.HostText,ng=\nE.HostPortal,og=E.CoroutineComponent,pg=ud.commitCallbacks,qg=ig.onCommitUnmount,rg=J.Placement,sg=J.Update,tg=J.Callback,ug=J.ContentReset;\nfunction vg(a,b){function c(a){var c=a.ref;if(null!==c)try{c(null)}catch(t){b(a,t)}}function d(a){return a.tag===lg||a.tag===kg||a.tag===ng}function e(a){for(var b=a;;)if(g(b),null!==b.child&&b.tag!==ng)b.child[\"return\"]=b,b=b.child;else{if(b===a)break;for(;null===b.sibling;){if(null===b[\"return\"]||b[\"return\"]===a)return;b=b[\"return\"]}b.sibling[\"return\"]=b[\"return\"];b=b.sibling}}function f(a){for(var b=a,c=!1,d=void 0,f=void 0;;){if(!c){c=b[\"return\"];a:for(;;){null===c?w(\"160\"):void 0;switch(c.tag){case lg:d=\nc.stateNode;f=!1;break a;case kg:d=c.stateNode.containerInfo;f=!0;break a;case ng:d=c.stateNode.containerInfo;f=!0;break a}c=c[\"return\"]}c=!0}if(b.tag===lg||b.tag===mg)e(b),f?C(d,b.stateNode):H(d,b.stateNode);else if(b.tag===ng?d=b.stateNode.containerInfo:g(b),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;b=b[\"return\"];b.tag===ng&&(c=!1)}b.sibling[\"return\"]=b[\"return\"];b=b.sibling}}function g(a){\"function\"===\ntypeof qg&&qg(a);switch(a.tag){case jg:c(a);var d=a.stateNode;if(\"function\"===typeof d.componentWillUnmount)try{d.props=a.memoizedProps,d.state=a.memoizedState,d.componentWillUnmount()}catch(t){b(a,t)}break;case lg:c(a);break;case og:e(a.stateNode);break;case ng:f(a)}}var h=a.commitMount,k=a.commitUpdate,p=a.resetTextContent,x=a.commitTextUpdate,S=a.appendChild,D=a.appendChildToContainer,y=a.insertBefore,B=a.insertInContainerBefore,H=a.removeChild,C=a.removeChildFromContainer,Ca=a.getPublicInstance;\nreturn{commitPlacement:function(a){a:{for(var b=a[\"return\"];null!==b;){if(d(b)){var c=b;break a}b=b[\"return\"]}w(\"160\");c=void 0}var e=b=void 0;switch(c.tag){case lg:b=c.stateNode;e=!1;break;case kg:b=c.stateNode.containerInfo;e=!0;break;case ng:b=c.stateNode.containerInfo;e=!0;break;default:w(\"161\")}c.effectTag&ug&&(p(b),c.effectTag&=~ug);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c[\"return\"]||d(c[\"return\"])){c=null;break a}c=c[\"return\"]}c.sibling[\"return\"]=c[\"return\"];for(c=c.sibling;c.tag!==\nlg&&c.tag!==mg;){if(c.effectTag&rg)continue b;if(null===c.child||c.tag===ng)continue b;else c.child[\"return\"]=c,c=c.child}if(!(c.effectTag&rg)){c=c.stateNode;break a}}for(var f=a;;){if(f.tag===lg||f.tag===mg)c?e?B(b,f.stateNode,c):y(b,f.stateNode,c):e?D(b,f.stateNode):S(b,f.stateNode);else if(f.tag!==ng&&null!==f.child){f.child[\"return\"]=f;f=f.child;continue}if(f===a)break;for(;null===f.sibling;){if(null===f[\"return\"]||f[\"return\"]===a)return;f=f[\"return\"]}f.sibling[\"return\"]=f[\"return\"];f=f.sibling}},\ncommitDeletion:function(a){f(a);a[\"return\"]=null;a.child=null;a.alternate&&(a.alternate.child=null,a.alternate[\"return\"]=null)},commitWork:function(a,b){switch(b.tag){case jg:break;case lg:var c=b.stateNode;if(null!=c){var d=b.memoizedProps;a=null!==a?a.memoizedProps:d;var e=b.type,f=b.updateQueue;b.updateQueue=null;null!==f&&k(c,f,e,a,d,b)}break;case mg:null===b.stateNode?w(\"162\"):void 0;c=b.memoizedProps;x(b.stateNode,null!==a?a.memoizedProps:c,c);break;case kg:break;case ng:break;default:w(\"163\")}},\ncommitLifeCycles:function(a,b){switch(b.tag){case jg:var c=b.stateNode;if(b.effectTag&sg)if(null===a)c.props=b.memoizedProps,c.state=b.memoizedState,c.componentDidMount();else{var d=a.memoizedProps;a=a.memoizedState;c.props=b.memoizedProps;c.state=b.memoizedState;c.componentDidUpdate(d,a)}b.effectTag&tg&&null!==b.updateQueue&&pg(b,b.updateQueue,c);break;case kg:a=b.updateQueue;null!==a&&pg(b,a,b.child&&b.child.stateNode);break;case lg:c=b.stateNode;null===a&&b.effectTag&sg&&h(c,b.type,b.memoizedProps,\nb);break;case mg:break;case ng:break;default:w(\"163\")}},commitAttachRef:function(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case lg:b(Ca(c));break;default:b(c)}}},commitDetachRef:function(a){a=a.ref;null!==a&&a(null)}}}var wg=xd.createCursor,xg=xd.pop,yg=xd.push,zg={};\nfunction Ag(a){function b(a){a===zg?w(\"174\"):void 0;return a}var c=a.getChildHostContext,d=a.getRootHostContext,e=wg(zg),f=wg(zg),g=wg(zg);return{getHostContext:function(){return b(e.current)},getRootHostContainer:function(){return b(g.current)},popHostContainer:function(a){xg(e,a);xg(f,a);xg(g,a)},popHostContext:function(a){f.current===a&&(xg(e,a),xg(f,a))},pushHostContainer:function(a,b){yg(g,b,a);b=d(b);yg(f,a,a);yg(e,b,a)},pushHostContext:function(a){var d=b(g.current),h=b(e.current);d=c(h,a.type,\nd);h!==d&&(yg(f,a,a),yg(e,d,a))},resetHostContainer:function(){e.current=zg;g.current=zg}}}var Bg=E.HostComponent,Cg=E.HostText,Dg=E.HostRoot,Eg=J.Deletion,Fg=J.Placement,Gg=de.createFiberFromHostInstanceForDeletion;\nfunction Hg(a){function b(a,b){var c=Gg();c.stateNode=b;c[\"return\"]=a;c.effectTag=Eg;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function c(a,b){switch(a.tag){case Bg:return f(b,a.type,a.pendingProps);case Cg:return g(b,a.pendingProps);default:return!1}}function d(a){for(a=a[\"return\"];null!==a&&a.tag!==Bg&&a.tag!==Dg;)a=a[\"return\"];y=a}var e=a.shouldSetTextContent,f=a.canHydrateInstance,g=a.canHydrateTextInstance,h=a.getNextHydratableSibling,k=a.getFirstHydratableChild,\np=a.hydrateInstance,x=a.hydrateTextInstance,S=a.didNotHydrateInstance,D=a.didNotFindHydratableInstance;a=a.didNotFindHydratableTextInstance;if(!(f&&g&&h&&k&&p&&x&&S&&D&&a))return{enterHydrationState:function(){return!1},resetHydrationState:function(){},tryToClaimNextHydratableInstance:function(){},prepareToHydrateHostInstance:function(){w(\"175\")},prepareToHydrateHostTextInstance:function(){w(\"176\")},popHydrationState:function(){return!1}};var y=null,B=null,H=!1;return{enterHydrationState:function(a){B=\nk(a.stateNode.containerInfo);y=a;return H=!0},resetHydrationState:function(){B=y=null;H=!1},tryToClaimNextHydratableInstance:function(a){if(H){var d=B;if(d){if(!c(a,d)){d=h(d);if(!d||!c(a,d)){a.effectTag|=Fg;H=!1;y=a;return}b(y,B)}a.stateNode=d;y=a;B=k(d)}else a.effectTag|=Fg,H=!1,y=a}},prepareToHydrateHostInstance:function(a,b,c){b=p(a.stateNode,a.type,a.memoizedProps,b,c,a);a.updateQueue=b;return null!==b?!0:!1},prepareToHydrateHostTextInstance:function(a){return x(a.stateNode,a.memoizedProps,a)},\npopHydrationState:function(a){if(a!==y)return!1;if(!H)return d(a),H=!0,!1;var c=a.type;if(a.tag!==Bg||\"head\"!==c&&\"body\"!==c&&!e(c,a.memoizedProps))for(c=B;c;)b(a,c),c=h(c);d(a);B=y?h(a.stateNode):null;return!0}}}\nvar Ig=R.popContextProvider,Jg=xd.reset,Kg=Qa.ReactCurrentOwner,Lg=de.createWorkInProgress,Mg=de.largerPriority,Ng=ig.onCommitRoot,T=Q.NoWork,Og=Q.SynchronousPriority,U=Q.TaskPriority,Pg=Q.HighPriority,Qg=Q.LowPriority,Rg=Q.OffscreenPriority,Sg=Pd.AsyncUpdates,Tg=J.PerformedWork,Ug=J.Placement,Vg=J.Update,Wg=J.PlacementAndUpdate,Xg=J.Deletion,Yg=J.ContentReset,Zg=J.Callback,$g=J.Err,ah=J.Ref,bh=E.HostRoot,ch=E.HostComponent,dh=E.HostPortal,eh=E.ClassComponent,fh=ud.getUpdatePriority,gh=R.resetContext;\nfunction hh(a){function b(){for(;null!==ma&&ma.current.pendingWorkPriority===T;){ma.isScheduled=!1;var a=ma.nextScheduledRoot;ma.nextScheduledRoot=null;if(ma===zb)return zb=ma=null,z=T,null;ma=a}a=ma;for(var b=null,c=T;null!==a;)a.current.pendingWorkPriority!==T&&(c===T||c>a.current.pendingWorkPriority)&&(c=a.current.pendingWorkPriority,b=a),a=a.nextScheduledRoot;null!==b?(z=c,Jg(),gh(),t(),I=Lg(b.current,c),b!==nc&&(oc=0,nc=b)):(z=T,nc=I=null)}function c(c){Hd=!0;na=null;var d=c.stateNode;d.current===\nc?w(\"177\"):void 0;z!==Og&&z!==U||oc++;Kg.current=null;if(c.effectTag>Tg)if(null!==c.lastEffect){c.lastEffect.nextEffect=c;var e=c.firstEffect}else e=c;else e=c.firstEffect;Ui();for(u=e;null!==u;){var f=!1,g=void 0;try{for(;null!==u;){var h=u.effectTag;h&Yg&&a.resetTextContent(u.stateNode);if(h&ah){var k=u.alternate;null!==k&&Ph(k)}switch(h&~(Zg|$g|Yg|ah|Tg)){case Ug:q(u);u.effectTag&=~Ug;break;case Wg:q(u);u.effectTag&=~Ug;vf(u.alternate,u);break;case Vg:vf(u.alternate,u);break;case Xg:Id=!0,Mh(u),\nId=!1}u=u.nextEffect}}catch(Jd){f=!0,g=Jd}f&&(null===u?w(\"178\"):void 0,x(u,g),null!==u&&(u=u.nextEffect))}Vi();d.current=c;for(u=e;null!==u;){d=!1;e=void 0;try{for(;null!==u;){var Gd=u.effectTag;Gd&(Vg|Zg)&&Nh(u.alternate,u);Gd&ah&&Oh(u);if(Gd&$g)switch(f=u,g=void 0,null!==P&&(g=P.get(f),P[\"delete\"](f),null==g&&null!==f.alternate&&(f=f.alternate,g=P.get(f),P[\"delete\"](f))),null==g?w(\"184\"):void 0,f.tag){case eh:f.stateNode.componentDidCatch(g.error,{componentStack:g.componentStack});break;case bh:null===\nJa&&(Ja=g.error);break;default:w(\"157\")}var m=u.nextEffect;u.nextEffect=null;u=m}}catch(Jd){d=!0,e=Jd}d&&(null===u?w(\"178\"):void 0,x(u,e),null!==u&&(u=u.nextEffect))}Hd=!1;\"function\"===typeof Ng&&Ng(c.stateNode);va&&(va.forEach(H),va=null);b()}function d(a){for(;;){var b=Lh(a.alternate,a,z),c=a[\"return\"],d=a.sibling;var e=a;if(!(e.pendingWorkPriority!==T&&e.pendingWorkPriority>z)){for(var f=fh(e),g=e.child;null!==g;)f=Mg(f,g.pendingWorkPriority),g=g.sibling;e.pendingWorkPriority=f}if(null!==b)return b;\nnull!==c&&(null===c.firstEffect&&(c.firstEffect=a.firstEffect),null!==a.lastEffect&&(null!==c.lastEffect&&(c.lastEffect.nextEffect=a.firstEffect),c.lastEffect=a.lastEffect),a.effectTag>Tg&&(null!==c.lastEffect?c.lastEffect.nextEffect=a:c.firstEffect=a,c.lastEffect=a));if(null!==d)return d;if(null!==c)a=c;else{na=a;break}}return null}function e(a){var b=V(a.alternate,a,z);null===b&&(b=d(a));Kg.current=null;return b}function f(a){var b=ld(a.alternate,a,z);null===b&&(b=d(a));Kg.current=null;return b}\nfunction g(a){p(Rg,a)}function h(){if(null!==P&&0<P.size&&z===U)for(;null!==I;){var a=I;I=null!==P&&(P.has(a)||null!==a.alternate&&P.has(a.alternate))?f(I):e(I);if(null===I&&(null===na?w(\"179\"):void 0,O=U,c(na),O=z,null===P||0===P.size||z!==U))break}}function k(a,d){null!==na?(O=U,c(na),h()):null===I&&b();if(!(z===T||z>a)){O=z;a:do{if(z<=U)for(;null!==I&&!(I=e(I),null===I&&(null===na?w(\"179\"):void 0,O=U,c(na),O=z,h(),z===T||z>a||z>U)););else if(null!==d)for(;null!==I&&!Ab;)if(1<d.timeRemaining()){if(I=\ne(I),null===I)if(null===na?w(\"179\"):void 0,1<d.timeRemaining()){if(O=U,c(na),O=z,h(),z===T||z>a||z<Pg)break}else Ab=!0}else Ab=!0;switch(z){case Og:case U:if(z<=a)continue a;break a;case Pg:case Qg:case Rg:if(null===d)break a;if(!Ab&&z<=a)continue a;break a;case T:break a;default:w(\"181\")}}while(1)}}function p(a,b){Da?w(\"182\"):void 0;Da=!0;var c=O,d=!1,e=null;try{k(a,b)}catch(Kd){d=!0,e=Kd}for(;d;){if(Ya){Ja=e;break}var h=I;if(null===h)Ya=!0;else{var p=x(h,e);null===p?w(\"183\"):void 0;if(!Ya){try{d=\np;e=a;p=b;for(var q=d;null!==h;){switch(h.tag){case eh:Ig(h);break;case ch:m(h);break;case bh:r(h);break;case dh:r(h)}if(h===q||h.alternate===q)break;h=h[\"return\"]}I=f(d);k(e,p)}catch(Kd){d=!0;e=Kd;continue}break}}}O=c;null!==b&&(Bb=!1);z>U&&!Bb&&($f(g),Bb=!0);a=Ja;Ya=Ab=Da=!1;nc=Ka=P=Ja=null;oc=0;if(null!==a)throw a;}function x(a,b){var c=Kg.current=null,d=!1,e=!1,f=null;if(a.tag===bh)c=a,S(a)&&(Ya=!0);else for(var g=a[\"return\"];null!==g&&null===c;){g.tag===eh?\"function\"===typeof g.stateNode.componentDidCatch&&\n(d=!0,f=Ra(g),c=g,e=!0):g.tag===bh&&(c=g);if(S(g)){if(Id||null!==va&&(va.has(g)||null!==g.alternate&&va.has(g.alternate)))return null;c=null;e=!1}g=g[\"return\"]}if(null!==c){null===Ka&&(Ka=new Set);Ka.add(c);var h=\"\";g=a;do{a:switch(g.tag){case fe:case ge:case he:case ie:var k=g._debugOwner,m=g._debugSource;var p=Ra(g);var q=null;k&&(q=Ra(k));k=m;p=\"\\n    in \"+(p||\"Unknown\")+(k?\" (at \"+k.fileName.replace(/^.*[\\\\\\/]/,\"\")+\":\"+k.lineNumber+\")\":q?\" (created by \"+q+\")\":\"\");break a;default:p=\"\"}h+=p;g=g[\"return\"]}while(g);\ng=h;a=Ra(a);null===P&&(P=new Map);b={componentName:a,componentStack:g,error:b,errorBoundary:d?c.stateNode:null,errorBoundaryFound:d,errorBoundaryName:f,willRetry:e};P.set(c,b);try{console.error(b.error)}catch(Wi){console.error(Wi)}Hd?(null===va&&(va=new Set),va.add(c)):H(c);return c}null===Ja&&(Ja=b);return null}function S(a){return null!==Ka&&(Ka.has(a)||null!==a.alternate&&Ka.has(a.alternate))}function D(a,b){return y(a,b,!1)}function y(a,b){oc>Xi&&(Ya=!0,w(\"185\"));!Da&&b<=z&&(I=null);for(var c=\n!0;null!==a&&c;){c=!1;if(a.pendingWorkPriority===T||a.pendingWorkPriority>b)c=!0,a.pendingWorkPriority=b;null!==a.alternate&&(a.alternate.pendingWorkPriority===T||a.alternate.pendingWorkPriority>b)&&(c=!0,a.alternate.pendingWorkPriority=b);if(null===a[\"return\"])if(a.tag===bh){var d=a.stateNode;b===T||d.isScheduled||(d.isScheduled=!0,zb?zb.nextScheduledRoot=d:ma=d,zb=d);if(!Da)switch(b){case Og:pc?p(Og,null):p(U,null);break;case U:W?void 0:w(\"186\");break;default:Bb||($f(g),Bb=!0)}}else break;a=a[\"return\"]}}\nfunction B(a,b){var c=O;c===T&&(c=!Yi||a.internalContextTag&Sg||b?Qg:Og);return c===Og&&(Da||W)?U:c}function H(a){y(a,U,!0)}var C=Ag(a),Ca=Hg(a),r=C.popHostContainer,m=C.popHostContext,t=C.resetHostContainer,v=Lf(a,C,Ca,D,B),V=v.beginWork,ld=v.beginFailedWork,Lh=eg(a,C,Ca).completeWork;C=vg(a,x);var q=C.commitPlacement,Mh=C.commitDeletion,vf=C.commitWork,Nh=C.commitLifeCycles,Oh=C.commitAttachRef,Ph=C.commitDetachRef,$f=a.scheduleDeferredCallback,Yi=a.useSyncScheduling,Ui=a.prepareForCommit,Vi=a.resetAfterCommit,\nO=T,Da=!1,Ab=!1,W=!1,pc=!1,I=null,z=T,u=null,na=null,ma=null,zb=null,Bb=!1,P=null,Ka=null,va=null,Ja=null,Ya=!1,Hd=!1,Id=!1,Xi=1E3,oc=0,nc=null;return{scheduleUpdate:D,getPriorityContext:B,batchedUpdates:function(a,b){var c=W;W=!0;try{return a(b)}finally{W=c,Da||W||p(U,null)}},unbatchedUpdates:function(a){var b=pc,c=W;pc=W;W=!1;try{return a()}finally{W=c,pc=b}},flushSync:function(a){var b=W,c=O;W=!0;O=Og;try{return a()}finally{W=b,O=c,Da?w(\"187\"):void 0,p(U,null)}},deferredUpdates:function(a){var b=\nO;O=Qg;try{return a()}finally{O=b}}}}function ih(){w(\"196\")}function jh(a){if(!a)return da;a=Pa.get(a);return\"number\"===typeof a.tag?ih(a):a._processChildContext(a._context)}jh._injectFiber=function(a){ih=a};var kh=ud.addTopLevelUpdate,lh=R.findCurrentUnmaskedContext,mh=R.isContextProvider,nh=R.processChildContext,oh=E.HostComponent,ph=bb.findCurrentHostFiber,qh=bb.findCurrentHostFiberWithNoPortals;jh._injectFiber(function(a){var b=lh(a);return mh(a)?nh(a,b,!1):b});var rh=F.TEXT_NODE;\nfunction sh(a){for(;a&&a.firstChild;)a=a.firstChild;return a}function th(a,b){var c=sh(a);a=0;for(var d;c;){if(c.nodeType===rh){d=a+c.textContent.length;if(a<=b&&d>=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=sh(c)}}var uh=null;function vh(){!uh&&l.canUseDOM&&(uh=\"textContent\"in document.documentElement?\"textContent\":\"innerText\");return uh}\nvar wh={getOffsets:function(a){var b=window.getSelection&&window.getSelection();if(!b||0===b.rangeCount)return null;var c=b.anchorNode,d=b.anchorOffset,e=b.focusNode,f=b.focusOffset,g=b.getRangeAt(0);try{g.startContainer.nodeType,g.endContainer.nodeType}catch(k){return null}b=b.anchorNode===b.focusNode&&b.anchorOffset===b.focusOffset?0:g.toString().length;var h=g.cloneRange();h.selectNodeContents(a);h.setEnd(g.startContainer,g.startOffset);a=h.startContainer===h.endContainer&&h.startOffset===h.endOffset?\n0:h.toString().length;g=a+b;b=document.createRange();b.setStart(c,d);b.setEnd(e,f);c=b.collapsed;return{start:c?g:a,end:c?a:g}},setOffsets:function(a,b){if(window.getSelection){var c=window.getSelection(),d=a[vh()].length,e=Math.min(b.start,d);b=void 0===b.end?e:Math.min(b.end,d);!c.extend&&e>b&&(d=b,b=e,e=d);d=th(a,e);a=th(a,b);if(d&&a){var f=document.createRange();f.setStart(d.node,d.offset);c.removeAllRanges();e>b?(c.addRange(f),c.extend(a.node,a.offset)):(f.setEnd(a.node,a.offset),c.addRange(f))}}}},\nxh=F.ELEMENT_NODE,yh={hasSelectionCapabilities:function(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&\"text\"===a.type||\"textarea\"===b||\"true\"===a.contentEditable)},getSelectionInformation:function(){var a=ia();return{focusedElem:a,selectionRange:yh.hasSelectionCapabilities(a)?yh.getSelection(a):null}},restoreSelection:function(a){var b=ia(),c=a.focusedElem;a=a.selectionRange;if(b!==c&&fa(document.documentElement,c)){yh.hasSelectionCapabilities(c)&&yh.setSelection(c,a);b=\n[];for(a=c;a=a.parentNode;)a.nodeType===xh&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});ha(c);for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}},getSelection:function(a){return(\"selectionStart\"in a?{start:a.selectionStart,end:a.selectionEnd}:wh.getOffsets(a))||{start:0,end:0}},setSelection:function(a,b){var c=b.start,d=b.end;void 0===d&&(d=c);\"selectionStart\"in a?(a.selectionStart=c,a.selectionEnd=Math.min(d,a.value.length)):wh.setOffsets(a,b)}},zh=yh,\nAh=F.ELEMENT_NODE;function Bh(){w(\"211\")}function Ch(){w(\"212\")}function Dh(a){if(null==a)return null;if(a.nodeType===Ah)return a;var b=Pa.get(a);if(b)return\"number\"===typeof b.tag?Bh(b):Ch(b);\"function\"===typeof a.render?w(\"188\"):w(\"213\",Object.keys(a))}Dh._injectFiber=function(a){Bh=a};Dh._injectStack=function(a){Ch=a};var Eh=E.HostComponent;function Fh(a){if(void 0!==a._hostParent)return a._hostParent;if(\"number\"===typeof a.tag){do a=a[\"return\"];while(a&&a.tag!==Eh);if(a)return a}return null}\nfunction Gh(a,b){for(var c=0,d=a;d;d=Fh(d))c++;d=0;for(var e=b;e;e=Fh(e))d++;for(;0<c-d;)a=Fh(a),c--;for(;0<d-c;)b=Fh(b),d--;for(;c--;){if(a===b||a===b.alternate)return a;a=Fh(a);b=Fh(b)}return null}\nvar Hh={isAncestor:function(a,b){for(;b;){if(a===b||a===b.alternate)return!0;b=Fh(b)}return!1},getLowestCommonAncestor:Gh,getParentInstance:function(a){return Fh(a)},traverseTwoPhase:function(a,b,c){for(var d=[];a;)d.push(a),a=Fh(a);for(a=d.length;0<a--;)b(d[a],\"captured\",c);for(a=0;a<d.length;a++)b(d[a],\"bubbled\",c)},traverseEnterLeave:function(a,b,c,d,e){for(var f=a&&b?Gh(a,b):null,g=[];a&&a!==f;)g.push(a),a=Fh(a);for(a=[];b&&b!==f;)a.push(b),b=Fh(b);for(b=0;b<g.length;b++)c(g[b],\"bubbled\",d);for(b=\na.length;0<b--;)c(a[b],\"captured\",e)}},Ih=Jb.getListener;function Jh(a,b,c){if(b=Ih(a,c.dispatchConfig.phasedRegistrationNames[b]))c._dispatchListeners=Cb(c._dispatchListeners,b),c._dispatchInstances=Cb(c._dispatchInstances,a)}function Kh(a){a&&a.dispatchConfig.phasedRegistrationNames&&Hh.traverseTwoPhase(a._targetInst,Jh,a)}function Qh(a){if(a&&a.dispatchConfig.phasedRegistrationNames){var b=a._targetInst;b=b?Hh.getParentInstance(b):null;Hh.traverseTwoPhase(b,Jh,a)}}\nfunction Rh(a,b,c){a&&c&&c.dispatchConfig.registrationName&&(b=Ih(a,c.dispatchConfig.registrationName))&&(c._dispatchListeners=Cb(c._dispatchListeners,b),c._dispatchInstances=Cb(c._dispatchInstances,a))}function Sh(a){a&&a.dispatchConfig.registrationName&&Rh(a._targetInst,null,a)}\nvar Th={accumulateTwoPhaseDispatches:function(a){Db(a,Kh)},accumulateTwoPhaseDispatchesSkipTarget:function(a){Db(a,Qh)},accumulateDirectDispatches:function(a){Db(a,Sh)},accumulateEnterLeaveDispatches:function(a,b,c,d){Hh.traverseEnterLeave(c,d,Rh,a,b)}},X={_root:null,_startText:null,_fallbackText:null},Uh={initialize:function(a){X._root=a;X._startText=Uh.getText();return!0},reset:function(){X._root=null;X._startText=null;X._fallbackText=null},getData:function(){if(X._fallbackText)return X._fallbackText;\nvar a,b=X._startText,c=b.length,d,e=Uh.getText(),f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);X._fallbackText=e.slice(a,1<d?1-d:void 0);return X._fallbackText},getText:function(){return\"value\"in X._root?X._root.value:X._root[vh()]}},Vh=Uh,Wh=\"dispatchConfig _targetInst nativeEvent isDefaultPrevented isPropagationStopped _dispatchListeners _dispatchInstances\".split(\" \"),Xh={type:null,target:null,currentTarget:ca.thatReturnsNull,eventPhase:null,bubbles:null,\ncancelable:null,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null};\nfunction Y(a,b,c,d){this.dispatchConfig=a;this._targetInst=b;this.nativeEvent=c;a=this.constructor.Interface;for(var e in a)a.hasOwnProperty(e)&&((b=a[e])?this[e]=b(c):\"target\"===e?this.target=d:this[e]=c[e]);this.isDefaultPrevented=(null!=c.defaultPrevented?c.defaultPrevented:!1===c.returnValue)?ca.thatReturnsTrue:ca.thatReturnsFalse;this.isPropagationStopped=ca.thatReturnsFalse;return this}\nn(Y.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&(a.returnValue=!1),this.isDefaultPrevented=ca.thatReturnsTrue)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=ca.thatReturnsTrue)},persist:function(){this.isPersistent=ca.thatReturnsTrue},isPersistent:ca.thatReturnsFalse,\ndestructor:function(){var a=this.constructor.Interface,b;for(b in a)this[b]=null;for(a=0;a<Wh.length;a++)this[Wh[a]]=null}});Y.Interface=Xh;Y.augmentClass=function(a,b){function c(){}c.prototype=this.prototype;var d=new c;n(d,a.prototype);a.prototype=d;a.prototype.constructor=a;a.Interface=n({},this.Interface,b);a.augmentClass=this.augmentClass;Yh(a)};Yh(Y);function Zh(a,b,c,d){if(this.eventPool.length){var e=this.eventPool.pop();this.call(e,a,b,c,d);return e}return new this(a,b,c,d)}\nfunction $h(a){a instanceof this?void 0:w(\"223\");a.destructor();10>this.eventPool.length&&this.eventPool.push(a)}function Yh(a){a.eventPool=[];a.getPooled=Zh;a.release=$h}function ai(a,b,c,d){return Y.call(this,a,b,c,d)}Y.augmentClass(ai,{data:null});function bi(a,b,c,d){return Y.call(this,a,b,c,d)}Y.augmentClass(bi,{data:null});var ci=[9,13,27,32],di=l.canUseDOM&&\"CompositionEvent\"in window,ei=null;l.canUseDOM&&\"documentMode\"in document&&(ei=document.documentMode);var fi;\nif(fi=l.canUseDOM&&\"TextEvent\"in window&&!ei){var gi=window.opera;fi=!(\"object\"===typeof gi&&\"function\"===typeof gi.version&&12>=parseInt(gi.version(),10))}\nvar hi=fi,ii=l.canUseDOM&&(!di||ei&&8<ei&&11>=ei),ji=String.fromCharCode(32),ki={beforeInput:{phasedRegistrationNames:{bubbled:\"onBeforeInput\",captured:\"onBeforeInputCapture\"},dependencies:[\"topCompositionEnd\",\"topKeyPress\",\"topTextInput\",\"topPaste\"]},compositionEnd:{phasedRegistrationNames:{bubbled:\"onCompositionEnd\",captured:\"onCompositionEndCapture\"},dependencies:\"topBlur topCompositionEnd topKeyDown topKeyPress topKeyUp topMouseDown\".split(\" \")},compositionStart:{phasedRegistrationNames:{bubbled:\"onCompositionStart\",\ncaptured:\"onCompositionStartCapture\"},dependencies:\"topBlur topCompositionStart topKeyDown topKeyPress topKeyUp topMouseDown\".split(\" \")},compositionUpdate:{phasedRegistrationNames:{bubbled:\"onCompositionUpdate\",captured:\"onCompositionUpdateCapture\"},dependencies:\"topBlur topCompositionUpdate topKeyDown topKeyPress topKeyUp topMouseDown\".split(\" \")}},li=!1;\nfunction mi(a,b){switch(a){case \"topKeyUp\":return-1!==ci.indexOf(b.keyCode);case \"topKeyDown\":return 229!==b.keyCode;case \"topKeyPress\":case \"topMouseDown\":case \"topBlur\":return!0;default:return!1}}function ni(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var oi=!1;function pi(a,b){switch(a){case \"topCompositionEnd\":return ni(b);case \"topKeyPress\":if(32!==b.which)return null;li=!0;return ji;case \"topTextInput\":return a=b.data,a===ji&&li?null:a;default:return null}}\nfunction qi(a,b){if(oi)return\"topCompositionEnd\"===a||!di&&mi(a,b)?(a=Vh.getData(),Vh.reset(),oi=!1,a):null;switch(a){case \"topPaste\":return null;case \"topKeyPress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"topCompositionEnd\":return ii?null:b.data;default:return null}}\nvar ri={eventTypes:ki,extractEvents:function(a,b,c,d){var e;if(di)b:{switch(a){case \"topCompositionStart\":var f=ki.compositionStart;break b;case \"topCompositionEnd\":f=ki.compositionEnd;break b;case \"topCompositionUpdate\":f=ki.compositionUpdate;break b}f=void 0}else oi?mi(a,c)&&(f=ki.compositionEnd):\"topKeyDown\"===a&&229===c.keyCode&&(f=ki.compositionStart);f?(ii&&(oi||f!==ki.compositionStart?f===ki.compositionEnd&&oi&&(e=Vh.getData()):oi=Vh.initialize(d)),f=ai.getPooled(f,b,c,d),e?f.data=e:(e=ni(c),\nnull!==e&&(f.data=e)),Th.accumulateTwoPhaseDispatches(f),e=f):e=null;(a=hi?pi(a,c):qi(a,c))?(b=bi.getPooled(ki.beforeInput,b,c,d),b.data=a,Th.accumulateTwoPhaseDispatches(b)):b=null;return[e,b]}},si={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function ti(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!si[a.type]:\"textarea\"===b?!0:!1}\nvar ui={change:{phasedRegistrationNames:{bubbled:\"onChange\",captured:\"onChangeCapture\"},dependencies:\"topBlur topChange topClick topFocus topInput topKeyDown topKeyUp topSelectionChange\".split(\" \")}};function vi(a,b,c){a=Y.getPooled(ui.change,a,b,c);a.type=\"change\";nb.enqueueStateRestore(c);Th.accumulateTwoPhaseDispatches(a);return a}var wi=null,xi=null;function yi(a){Jb.enqueueEvents(a);Jb.processEventQueue(!1)}\nfunction zi(a){var b=G.getNodeFromInstance(a);if(Bc.updateValueIfChanged(b))return a}function Ai(a,b){if(\"topChange\"===a)return b}var Bi=!1;l.canUseDOM&&(Bi=Lb(\"input\")&&(!document.documentMode||9<document.documentMode));function Ci(){wi&&(wi.detachEvent(\"onpropertychange\",Di),xi=wi=null)}function Di(a){\"value\"===a.propertyName&&zi(xi)&&(a=vi(xi,a,ub(a)),sb.batchedUpdates(yi,a))}function Ei(a,b,c){\"topFocus\"===a?(Ci(),wi=b,xi=c,wi.attachEvent(\"onpropertychange\",Di)):\"topBlur\"===a&&Ci()}\nfunction Fi(a){if(\"topSelectionChange\"===a||\"topKeyUp\"===a||\"topKeyDown\"===a)return zi(xi)}function Gi(a,b){if(\"topClick\"===a)return zi(b)}function Hi(a,b){if(\"topInput\"===a||\"topChange\"===a)return zi(b)}\nvar Ii={eventTypes:ui,_isInputEventSupported:Bi,extractEvents:function(a,b,c,d){var e=b?G.getNodeFromInstance(b):window,f=e.nodeName&&e.nodeName.toLowerCase();if(\"select\"===f||\"input\"===f&&\"file\"===e.type)var g=Ai;else if(ti(e))if(Bi)g=Hi;else{g=Fi;var h=Ei}else f=e.nodeName,!f||\"input\"!==f.toLowerCase()||\"checkbox\"!==e.type&&\"radio\"!==e.type||(g=Gi);if(g&&(g=g(a,b)))return vi(g,c,d);h&&h(a,e,b);\"topBlur\"===a&&null!=b&&(a=b._wrapperState||e._wrapperState)&&a.controlled&&\"number\"===e.type&&(a=\"\"+e.value,\ne.getAttribute(\"value\")!==a&&e.setAttribute(\"value\",a))}};function Ji(a,b,c,d){return Y.call(this,a,b,c,d)}Y.augmentClass(Ji,{view:function(a){if(a.view)return a.view;a=ub(a);return a.window===a?a:(a=a.ownerDocument)?a.defaultView||a.parentWindow:window},detail:function(a){return a.detail||0}});var Ki={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Li(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Ki[a])?!!b[a]:!1}function Mi(){return Li}\nfunction Ni(a,b,c,d){return Y.call(this,a,b,c,d)}Ji.augmentClass(Ni,{screenX:null,screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:Mi,button:null,buttons:null,relatedTarget:function(a){return a.relatedTarget||(a.fromElement===a.srcElement?a.toElement:a.fromElement)}});\nvar Oi={mouseEnter:{registrationName:\"onMouseEnter\",dependencies:[\"topMouseOut\",\"topMouseOver\"]},mouseLeave:{registrationName:\"onMouseLeave\",dependencies:[\"topMouseOut\",\"topMouseOver\"]}},Pi={eventTypes:Oi,extractEvents:function(a,b,c,d){if(\"topMouseOver\"===a&&(c.relatedTarget||c.fromElement)||\"topMouseOut\"!==a&&\"topMouseOver\"!==a)return null;var e=d.window===d?d:(e=d.ownerDocument)?e.defaultView||e.parentWindow:window;\"topMouseOut\"===a?(a=b,b=(b=c.relatedTarget||c.toElement)?G.getClosestInstanceFromNode(b):\nnull):a=null;if(a===b)return null;var f=null==a?e:G.getNodeFromInstance(a);e=null==b?e:G.getNodeFromInstance(b);var g=Ni.getPooled(Oi.mouseLeave,a,c,d);g.type=\"mouseleave\";g.target=f;g.relatedTarget=e;c=Ni.getPooled(Oi.mouseEnter,b,c,d);c.type=\"mouseenter\";c.target=e;c.relatedTarget=f;Th.accumulateEnterLeaveDispatches(g,c,a,b);return[g,c]}},Qi=F.DOCUMENT_NODE,Ri=l.canUseDOM&&\"documentMode\"in document&&11>=document.documentMode,Si={select:{phasedRegistrationNames:{bubbled:\"onSelect\",captured:\"onSelectCapture\"},\ndependencies:\"topBlur topContextMenu topFocus topKeyDown topKeyUp topMouseDown topMouseUp topSelectionChange\".split(\" \")}},Ti=null,Zi=null,$i=null,aj=!1,bj=M.isListeningToAllDependencies;\nfunction cj(a,b){if(aj||null==Ti||Ti!==ia())return null;var c=Ti;\"selectionStart\"in c&&zh.hasSelectionCapabilities(c)?c={start:c.selectionStart,end:c.selectionEnd}:window.getSelection?(c=window.getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset}):c=void 0;return $i&&ea($i,c)?null:($i=c,a=Y.getPooled(Si.select,Zi,a,b),a.type=\"select\",a.target=Ti,Th.accumulateTwoPhaseDispatches(a),a)}\nvar dj={eventTypes:Si,extractEvents:function(a,b,c,d){var e=d.window===d?d.document:d.nodeType===Qi?d:d.ownerDocument;if(!e||!bj(\"onSelect\",e))return null;e=b?G.getNodeFromInstance(b):window;switch(a){case \"topFocus\":if(ti(e)||\"true\"===e.contentEditable)Ti=e,Zi=b,$i=null;break;case \"topBlur\":$i=Zi=Ti=null;break;case \"topMouseDown\":aj=!0;break;case \"topContextMenu\":case \"topMouseUp\":return aj=!1,cj(c,d);case \"topSelectionChange\":if(Ri)break;case \"topKeyDown\":case \"topKeyUp\":return cj(c,d)}return null}};\nfunction ej(a,b,c,d){return Y.call(this,a,b,c,d)}Y.augmentClass(ej,{animationName:null,elapsedTime:null,pseudoElement:null});function fj(a,b,c,d){return Y.call(this,a,b,c,d)}Y.augmentClass(fj,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}});function gj(a,b,c,d){return Y.call(this,a,b,c,d)}Ji.augmentClass(gj,{relatedTarget:null});function hj(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;return 32<=a||13===a?a:0}\nvar ij={Esc:\"Escape\",Spacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},jj={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",\n116:\"F5\",117:\"F6\",118:\"F7\",119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"};function kj(a,b,c,d){return Y.call(this,a,b,c,d)}\nJi.augmentClass(kj,{key:function(a){if(a.key){var b=ij[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=hj(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?jj[a.keyCode]||\"Unidentified\":\"\"},location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:Mi,charCode:function(a){return\"keypress\"===a.type?hj(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?hj(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}});function lj(a,b,c,d){return Y.call(this,a,b,c,d)}Ni.augmentClass(lj,{dataTransfer:null});function mj(a,b,c,d){return Y.call(this,a,b,c,d)}Ji.augmentClass(mj,{touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:Mi});function nj(a,b,c,d){return Y.call(this,a,b,c,d)}Y.augmentClass(nj,{propertyName:null,elapsedTime:null,pseudoElement:null});\nfunction oj(a,b,c,d){return Y.call(this,a,b,c,d)}Ni.augmentClass(oj,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},deltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:null,deltaMode:null});var pj={},qj={};\n\"abort animationEnd animationIteration animationStart blur cancel canPlay canPlayThrough click close contextMenu copy cut doubleClick drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error focus input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing progress rateChange reset scroll seeked seeking stalled submit suspend timeUpdate toggle touchCancel touchEnd touchMove touchStart transitionEnd volumeChange waiting wheel\".split(\" \").forEach(function(a){var b=a[0].toUpperCase()+\na.slice(1),c=\"on\"+b;b=\"top\"+b;c={phasedRegistrationNames:{bubbled:c,captured:c+\"Capture\"},dependencies:[b]};pj[a]=c;qj[b]=c});\nvar rj={eventTypes:pj,extractEvents:function(a,b,c,d){var e=qj[a];if(!e)return null;switch(a){case \"topAbort\":case \"topCancel\":case \"topCanPlay\":case \"topCanPlayThrough\":case \"topClose\":case \"topDurationChange\":case \"topEmptied\":case \"topEncrypted\":case \"topEnded\":case \"topError\":case \"topInput\":case \"topInvalid\":case \"topLoad\":case \"topLoadedData\":case \"topLoadedMetadata\":case \"topLoadStart\":case \"topPause\":case \"topPlay\":case \"topPlaying\":case \"topProgress\":case \"topRateChange\":case \"topReset\":case \"topSeeked\":case \"topSeeking\":case \"topStalled\":case \"topSubmit\":case \"topSuspend\":case \"topTimeUpdate\":case \"topToggle\":case \"topVolumeChange\":case \"topWaiting\":var f=Y;\nbreak;case \"topKeyPress\":if(0===hj(c))return null;case \"topKeyDown\":case \"topKeyUp\":f=kj;break;case \"topBlur\":case \"topFocus\":f=gj;break;case \"topClick\":if(2===c.button)return null;case \"topDoubleClick\":case \"topMouseDown\":case \"topMouseMove\":case \"topMouseUp\":case \"topMouseOut\":case \"topMouseOver\":case \"topContextMenu\":f=Ni;break;case \"topDrag\":case \"topDragEnd\":case \"topDragEnter\":case \"topDragExit\":case \"topDragLeave\":case \"topDragOver\":case \"topDragStart\":case \"topDrop\":f=lj;break;case \"topTouchCancel\":case \"topTouchEnd\":case \"topTouchMove\":case \"topTouchStart\":f=\nmj;break;case \"topAnimationEnd\":case \"topAnimationIteration\":case \"topAnimationStart\":f=ej;break;case \"topTransitionEnd\":f=nj;break;case \"topScroll\":f=Ji;break;case \"topWheel\":f=oj;break;case \"topCopy\":case \"topCut\":case \"topPaste\":f=fj}f?void 0:w(\"86\",a);a=f.getPooled(e,b,c,d);Th.accumulateTwoPhaseDispatches(a);return a}};L.setHandleTopLevel(M.handleTopLevel);Jb.injection.injectEventPluginOrder(\"ResponderEventPlugin SimpleEventPlugin TapEventPlugin EnterLeaveEventPlugin ChangeEventPlugin SelectEventPlugin BeforeInputEventPlugin\".split(\" \"));\nib.injection.injectComponentTree(G);Jb.injection.injectEventPluginsByName({SimpleEventPlugin:rj,EnterLeaveEventPlugin:Pi,ChangeEventPlugin:Ii,SelectEventPlugin:dj,BeforeInputEventPlugin:ri});\nvar sj=A.injection.MUST_USE_PROPERTY,Z=A.injection.HAS_BOOLEAN_VALUE,tj=A.injection.HAS_NUMERIC_VALUE,uj=A.injection.HAS_POSITIVE_NUMERIC_VALUE,vj=A.injection.HAS_STRING_BOOLEAN_VALUE,wj={Properties:{allowFullScreen:Z,allowTransparency:vj,async:Z,autoPlay:Z,capture:Z,checked:sj|Z,cols:uj,contentEditable:vj,controls:Z,\"default\":Z,defer:Z,disabled:Z,download:A.injection.HAS_OVERLOADED_BOOLEAN_VALUE,draggable:vj,formNoValidate:Z,hidden:Z,loop:Z,multiple:sj|Z,muted:sj|Z,noValidate:Z,open:Z,playsInline:Z,\nreadOnly:Z,required:Z,reversed:Z,rows:uj,rowSpan:tj,scoped:Z,seamless:Z,selected:sj|Z,size:uj,start:tj,span:uj,spellCheck:vj,style:0,itemScope:Z,acceptCharset:0,className:0,htmlFor:0,httpEquiv:0,value:vj},DOMAttributeNames:{acceptCharset:\"accept-charset\",className:\"class\",htmlFor:\"for\",httpEquiv:\"http-equiv\"},DOMMutationMethods:{value:function(a,b){if(null==b)return a.removeAttribute(\"value\");\"number\"!==a.type||!1===a.hasAttribute(\"value\")?a.setAttribute(\"value\",\"\"+b):a.validity&&!a.validity.badInput&&\na.ownerDocument.activeElement!==a&&a.setAttribute(\"value\",\"\"+b)}}},xj=A.injection.HAS_STRING_BOOLEAN_VALUE,yj={xlink:\"http://www.w3.org/1999/xlink\",xml:\"http://www.w3.org/XML/1998/namespace\"},zj={Properties:{autoReverse:xj,externalResourcesRequired:xj,preserveAlpha:xj},DOMAttributeNames:{autoReverse:\"autoReverse\",externalResourcesRequired:\"externalResourcesRequired\",preserveAlpha:\"preserveAlpha\"},DOMAttributeNamespaces:{xlinkActuate:yj.xlink,xlinkArcrole:yj.xlink,xlinkHref:yj.xlink,xlinkRole:yj.xlink,\nxlinkShow:yj.xlink,xlinkTitle:yj.xlink,xlinkType:yj.xlink,xmlBase:yj.xml,xmlLang:yj.xml,xmlSpace:yj.xml}},Aj=/[\\-\\:]([a-z])/g;function Bj(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 x-height xlink:actuate xlink:arcrole xlink:href xlink:role xlink:show xlink:title xlink:type xml:base xmlns:xlink xml:lang xml:space\".split(\" \").forEach(function(a){var b=a.replace(Aj,\nBj);zj.Properties[b]=0;zj.DOMAttributeNames[b]=a});A.injection.injectDOMPropertyConfig(wj);A.injection.injectDOMPropertyConfig(zj);\nvar Cj=ig.injectInternals,Dj=F.ELEMENT_NODE,Ej=F.TEXT_NODE,Fj=F.COMMENT_NODE,Gj=F.DOCUMENT_NODE,Hj=F.DOCUMENT_FRAGMENT_NODE,Ij=A.ROOT_ATTRIBUTE_NAME,Jj=ka.getChildNamespace,Kj=N.createElement,Lj=N.createTextNode,Mj=N.setInitialProperties,Nj=N.diffProperties,Oj=N.updateProperties,Pj=N.diffHydratedProperties,Qj=N.diffHydratedText,Rj=N.warnForDeletedHydratableElement,Sj=N.warnForDeletedHydratableText,Tj=N.warnForInsertedHydratedElement,Uj=N.warnForInsertedHydratedText,Vj=G.precacheFiberNode,Wj=G.updateFiberProps;\nnb.injection.injectFiberControlledHostComponent(N);Dh._injectFiber(function(a){return Xj.findHostInstance(a)});var Yj=null,Zj=null;function ak(a){return!(!a||a.nodeType!==Dj&&a.nodeType!==Gj&&a.nodeType!==Hj&&(a.nodeType!==Fj||\" react-mount-point-unstable \"!==a.nodeValue))}function bk(a){a=a?a.nodeType===Gj?a.documentElement:a.firstChild:null;return!(!a||a.nodeType!==Dj||!a.hasAttribute(Ij))}\nvar Xj=function(a){var b=a.getPublicInstance;a=hh(a);var c=a.scheduleUpdate,d=a.getPriorityContext;return{createContainer:function(a){var b=ee();a={current:b,containerInfo:a,isScheduled:!1,nextScheduledRoot:null,context:null,pendingContext:null};return b.stateNode=a},updateContainer:function(a,b,g,h){var e=b.current;g=jh(g);null===b.context?b.context=g:b.pendingContext=g;b=h;h=d(e,ed.enableAsyncSubtreeAPI&&null!=a&&null!=a.type&&null!=a.type.prototype&&!0===a.type.prototype.unstable_isAsyncReactComponent);\na={element:a};kh(e,a,void 0===b?null:b,h);c(e,h)},batchedUpdates:a.batchedUpdates,unbatchedUpdates:a.unbatchedUpdates,deferredUpdates:a.deferredUpdates,flushSync:a.flushSync,getPublicRootInstance:function(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case oh:return b(a.child.stateNode);default:return a.child.stateNode}},findHostInstance:function(a){a=ph(a);return null===a?null:a.stateNode},findHostInstanceWithNoPortals:function(a){a=qh(a);return null===a?null:a.stateNode}}}({getRootHostContext:function(a){if(a.nodeType===\nGj)a=(a=a.documentElement)?a.namespaceURI:Jj(null,\"\");else{var b=a.nodeType===Fj?a.parentNode:a;a=b.namespaceURI||null;b=b.tagName;a=Jj(a,b)}return a},getChildHostContext:function(a,b){return Jj(a,b)},getPublicInstance:function(a){return a},prepareForCommit:function(){Yj=M.isEnabled();Zj=zh.getSelectionInformation();M.setEnabled(!1)},resetAfterCommit:function(){zh.restoreSelection(Zj);Zj=null;M.setEnabled(Yj);Yj=null},createInstance:function(a,b,c,d,e){a=Kj(a,b,c,d);Vj(e,a);Wj(a,b);return a},appendInitialChild:function(a,\nb){a.appendChild(b)},finalizeInitialChildren:function(a,b,c,d){Mj(a,b,c,d);a:{switch(b){case \"button\":case \"input\":case \"select\":case \"textarea\":a=!!c.autoFocus;break a}a=!1}return a},prepareUpdate:function(a,b,c,d,e){return Nj(a,b,c,d,e)},commitMount:function(a){a.focus()},commitUpdate:function(a,b,c,d,e){Wj(a,e);Oj(a,b,c,d,e)},shouldSetTextContent:function(a,b){return\"textarea\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&\n\"string\"===typeof b.dangerouslySetInnerHTML.__html},resetTextContent:function(a){a.textContent=\"\"},shouldDeprioritizeSubtree:function(a,b){return!!b.hidden},createTextInstance:function(a,b,c,d){a=Lj(a,b);Vj(d,a);return a},commitTextUpdate:function(a,b,c){a.nodeValue=c},appendChild:function(a,b){a.appendChild(b)},appendChildToContainer:function(a,b){a.nodeType===Fj?a.parentNode.insertBefore(b,a):a.appendChild(b)},insertBefore:function(a,b,c){a.insertBefore(b,c)},insertInContainerBefore:function(a,\nb,c){a.nodeType===Fj?a.parentNode.insertBefore(b,c):a.insertBefore(b,c)},removeChild:function(a,b){a.removeChild(b)},removeChildFromContainer:function(a,b){a.nodeType===Fj?a.parentNode.removeChild(b):a.removeChild(b)},canHydrateInstance:function(a,b){return a.nodeType===Dj&&b===a.nodeName.toLowerCase()},canHydrateTextInstance:function(a,b){return\"\"===b?!1:a.nodeType===Ej},getNextHydratableSibling:function(a){for(a=a.nextSibling;a&&a.nodeType!==Dj&&a.nodeType!==Ej;)a=a.nextSibling;return a},getFirstHydratableChild:function(a){for(a=\na.firstChild;a&&a.nodeType!==Dj&&a.nodeType!==Ej;)a=a.nextSibling;return a},hydrateInstance:function(a,b,c,d,e,f){Vj(f,a);Wj(a,c);return Pj(a,b,c,e,d)},hydrateTextInstance:function(a,b,c){Vj(c,a);return Qj(a,b)},didNotHydrateInstance:function(a,b){1===b.nodeType?Rj(a,b):Sj(a,b)},didNotFindHydratableInstance:function(a,b,c){Tj(a,b,c)},didNotFindHydratableTextInstance:function(a,b){Uj(a,b)},scheduleDeferredCallback:dd.rIC,useSyncScheduling:!0});sb.injection.injectFiberBatchedUpdates(Xj.batchedUpdates);\nfunction ck(a,b,c,d,e){ak(c)?void 0:w(\"200\");var f=c._reactRootContainer;if(f)Xj.updateContainer(b,f,a,e);else{if(!d&&!bk(c))for(d=void 0;d=c.lastChild;)c.removeChild(d);var g=Xj.createContainer(c);f=c._reactRootContainer=g;Xj.unbatchedUpdates(function(){Xj.updateContainer(b,g,a,e)})}return Xj.getPublicRootInstance(f)}function dk(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;ak(b)?void 0:w(\"200\");return ne.createPortal(a,b,null,c)}\nvar ek={createPortal:dk,hydrate:function(a,b,c){return ck(null,a,b,!0,c)},render:function(a,b,c){return ck(null,a,b,!1,c)},unstable_renderSubtreeIntoContainer:function(a,b,c,d){null!=a&&Pa.has(a)?void 0:w(\"38\");return ck(a,b,c,!1,d)},unmountComponentAtNode:function(a){ak(a)?void 0:w(\"40\");return a._reactRootContainer?(Xj.unbatchedUpdates(function(){ck(null,null,a,!1,function(){a._reactRootContainer=null})}),!0):!1},findDOMNode:Dh,unstable_createPortal:dk,unstable_batchedUpdates:sb.batchedUpdates,\nunstable_deferredUpdates:Xj.deferredUpdates,flushSync:Xj.flushSync,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{EventPluginHub:Jb,EventPluginRegistry:sa,EventPropagators:Th,ReactControlledComponent:nb,ReactDOMComponentTree:G,ReactDOMEventListener:L}};Cj({findFiberByHostInstance:G.getClosestInstanceFromNode,findHostInstanceByFiber:Xj.findHostInstance,bundleType:0,version:\"16.0.0\",rendererPackageName:\"react-dom\"});module.exports=ek;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/cjs/react-dom.production.min.js\n// module id = 338\n// module chunks = 0","'use strict';\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 * @typechecks\n */\n\nvar isNode = require('./isNode');\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM text node.\n */\nfunction isTextNode(object) {\n  return isNode(object) && object.nodeType == 3;\n}\n\nmodule.exports = isTextNode;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/isTextNode.js\n// module id = 339\n// module chunks = 0","'use strict';\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 * @typechecks\n */\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM node.\n */\nfunction isNode(object) {\n  var doc = object ? object.ownerDocument || object : document;\n  var defaultView = doc.defaultView || window;\n  return !!(object && (typeof defaultView.Node === 'function' ? object instanceof defaultView.Node : typeof object === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string'));\n}\n\nmodule.exports = isNode;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/isNode.js\n// module id = 340\n// module chunks = 0","/** @license React v16.0.0\n * react-dom.development.js\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'use strict';\n\n\nif (process.env.NODE_ENV !== \"production\") {\n(function() {\n\n'use strict';\n\nvar react = require('react');\nvar invariant = require('fbjs/lib/invariant');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar _assign = require('object-assign');\nvar EventListener = require('fbjs/lib/EventListener');\nvar require$$0 = require('fbjs/lib/warning');\nvar hyphenateStyleName = require('fbjs/lib/hyphenateStyleName');\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar camelizeStyleName = require('fbjs/lib/camelizeStyleName');\nvar performanceNow = require('fbjs/lib/performanceNow');\nvar propTypes = require('prop-types');\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar checkPropTypes = require('prop-types/checkPropTypes');\nvar shallowEqual = require('fbjs/lib/shallowEqual');\nvar containsNode = require('fbjs/lib/containsNode');\nvar focusNode = require('fbjs/lib/focusNode');\nvar getActiveElement = require('fbjs/lib/getActiveElement');\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 * @providesModule reactProdInvariant\n * \n */\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 * @providesModule checkReact\n * \n */\n\n\n\n\n!react ? invariant(false, 'ReactDOM was loaded before React. Make sure you load the React package before loading ReactDOM.') : void 0;\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 * @providesModule DOMNamespaces\n */\n\nvar HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\nvar MATH_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\nvar SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n\nvar Namespaces = {\n  html: HTML_NAMESPACE,\n  mathml: MATH_NAMESPACE,\n  svg: SVG_NAMESPACE\n};\n\n// Assumes there is no parent namespace.\nfunction getIntrinsicNamespace(type) {\n  switch (type) {\n    case 'svg':\n      return SVG_NAMESPACE;\n    case 'math':\n      return MATH_NAMESPACE;\n    default:\n      return HTML_NAMESPACE;\n  }\n}\n\nfunction getChildNamespace$1(parentNamespace, type) {\n  if (parentNamespace == null || parentNamespace === HTML_NAMESPACE) {\n    // No (or default) parent namespace: potential entry point.\n    return getIntrinsicNamespace(type);\n  }\n  if (parentNamespace === SVG_NAMESPACE && type === 'foreignObject') {\n    // We're leaving SVG.\n    return HTML_NAMESPACE;\n  }\n  // By default, pass namespace below.\n  return parentNamespace;\n}\n\nvar Namespaces_1 = Namespaces;\nvar getIntrinsicNamespace_1 = getIntrinsicNamespace;\nvar getChildNamespace_1 = getChildNamespace$1;\n\nvar DOMNamespaces = {\n\tNamespaces: Namespaces_1,\n\tgetIntrinsicNamespace: getIntrinsicNamespace_1,\n\tgetChildNamespace: getChildNamespace_1\n};\n\n/**\n * Injectable ordering of event plugins.\n */\nvar eventPluginOrder = null;\n\n/**\n * Injectable mapping from names to event plugin modules.\n */\nvar namesToPlugins = {};\n\n/**\n * Recomputes the plugin list using the injected plugins and plugin ordering.\n *\n * @private\n */\nfunction recomputePluginOrdering() {\n  if (!eventPluginOrder) {\n    // Wait until an `eventPluginOrder` is injected.\n    return;\n  }\n  for (var pluginName in namesToPlugins) {\n    var pluginModule = namesToPlugins[pluginName];\n    var pluginIndex = eventPluginOrder.indexOf(pluginName);\n    !(pluginIndex > -1) ? invariant(false, 'EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.', pluginName) : void 0;\n    if (EventPluginRegistry.plugins[pluginIndex]) {\n      continue;\n    }\n    !pluginModule.extractEvents ? invariant(false, 'EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.', pluginName) : void 0;\n    EventPluginRegistry.plugins[pluginIndex] = pluginModule;\n    var publishedEvents = pluginModule.eventTypes;\n    for (var eventName in publishedEvents) {\n      !publishEventForPlugin(publishedEvents[eventName], pluginModule, eventName) ? invariant(false, 'EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.', eventName, pluginName) : void 0;\n    }\n  }\n}\n\n/**\n * Publishes an event so that it can be dispatched by the supplied plugin.\n *\n * @param {object} dispatchConfig Dispatch configuration for the event.\n * @param {object} PluginModule Plugin publishing the event.\n * @return {boolean} True if the event was successfully published.\n * @private\n */\nfunction publishEventForPlugin(dispatchConfig, pluginModule, eventName) {\n  !!EventPluginRegistry.eventNameDispatchConfigs.hasOwnProperty(eventName) ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.', eventName) : void 0;\n  EventPluginRegistry.eventNameDispatchConfigs[eventName] = dispatchConfig;\n\n  var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n  if (phasedRegistrationNames) {\n    for (var phaseName in phasedRegistrationNames) {\n      if (phasedRegistrationNames.hasOwnProperty(phaseName)) {\n        var phasedRegistrationName = phasedRegistrationNames[phaseName];\n        publishRegistrationName(phasedRegistrationName, pluginModule, eventName);\n      }\n    }\n    return true;\n  } else if (dispatchConfig.registrationName) {\n    publishRegistrationName(dispatchConfig.registrationName, pluginModule, eventName);\n    return true;\n  }\n  return false;\n}\n\n/**\n * Publishes a registration name that is used to identify dispatched events.\n *\n * @param {string} registrationName Registration name to add.\n * @param {object} PluginModule Plugin publishing the event.\n * @private\n */\nfunction publishRegistrationName(registrationName, pluginModule, eventName) {\n  !!EventPluginRegistry.registrationNameModules[registrationName] ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.', registrationName) : void 0;\n  EventPluginRegistry.registrationNameModules[registrationName] = pluginModule;\n  EventPluginRegistry.registrationNameDependencies[registrationName] = pluginModule.eventTypes[eventName].dependencies;\n\n  {\n    var lowerCasedName = registrationName.toLowerCase();\n    EventPluginRegistry.possibleRegistrationNames[lowerCasedName] = registrationName;\n\n    if (registrationName === 'onDoubleClick') {\n      EventPluginRegistry.possibleRegistrationNames.ondblclick = registrationName;\n    }\n  }\n}\n\n/**\n * Registers plugins so that they can extract and dispatch events.\n *\n * @see {EventPluginHub}\n */\nvar EventPluginRegistry = {\n  /**\n   * Ordered list of injected plugins.\n   */\n  plugins: [],\n\n  /**\n   * Mapping from event name to dispatch config\n   */\n  eventNameDispatchConfigs: {},\n\n  /**\n   * Mapping from registration name to plugin module\n   */\n  registrationNameModules: {},\n\n  /**\n   * Mapping from registration name to event name\n   */\n  registrationNameDependencies: {},\n\n  /**\n   * Mapping from lowercase registration names to the properly cased version,\n   * used to warn in the case of missing event handlers. Available\n   * only in true.\n   * @type {Object}\n   */\n  possibleRegistrationNames: {},\n  // Trust the developer to only use possibleRegistrationNames in true\n\n  /**\n   * Injects an ordering of plugins (by plugin name). This allows the ordering\n   * to be decoupled from injection of the actual plugins so that ordering is\n   * always deterministic regardless of packaging, on-the-fly injection, etc.\n   *\n   * @param {array} InjectedEventPluginOrder\n   * @internal\n   * @see {EventPluginHub.injection.injectEventPluginOrder}\n   */\n  injectEventPluginOrder: function (injectedEventPluginOrder) {\n    !!eventPluginOrder ? invariant(false, 'EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React.') : void 0;\n    // Clone the ordering so it cannot be dynamically mutated.\n    eventPluginOrder = Array.prototype.slice.call(injectedEventPluginOrder);\n    recomputePluginOrdering();\n  },\n\n  /**\n   * Injects plugins to be used by `EventPluginHub`. The plugin names must be\n   * in the ordering injected by `injectEventPluginOrder`.\n   *\n   * Plugins can be injected as part of page initialization or on-the-fly.\n   *\n   * @param {object} injectedNamesToPlugins Map from names to plugin modules.\n   * @internal\n   * @see {EventPluginHub.injection.injectEventPluginsByName}\n   */\n  injectEventPluginsByName: function (injectedNamesToPlugins) {\n    var isOrderingDirty = false;\n    for (var pluginName in injectedNamesToPlugins) {\n      if (!injectedNamesToPlugins.hasOwnProperty(pluginName)) {\n        continue;\n      }\n      var pluginModule = injectedNamesToPlugins[pluginName];\n      if (!namesToPlugins.hasOwnProperty(pluginName) || namesToPlugins[pluginName] !== pluginModule) {\n        !!namesToPlugins[pluginName] ? invariant(false, 'EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.', pluginName) : void 0;\n        namesToPlugins[pluginName] = pluginModule;\n        isOrderingDirty = true;\n      }\n    }\n    if (isOrderingDirty) {\n      recomputePluginOrdering();\n    }\n  }\n};\n\nvar EventPluginRegistry_1 = EventPluginRegistry;\n\n// These attributes should be all lowercase to allow for\n// case insensitive checks\nvar RESERVED_PROPS = {\n  children: true,\n  dangerouslySetInnerHTML: true,\n  autoFocus: true,\n  defaultValue: true,\n  defaultChecked: true,\n  innerHTML: true,\n  suppressContentEditableWarning: true,\n  style: true\n};\n\nfunction checkMask(value, bitmask) {\n  return (value & bitmask) === bitmask;\n}\n\nvar DOMPropertyInjection = {\n  /**\n   * Mapping from normalized, camelcased property names to a configuration that\n   * specifies how the associated DOM property should be accessed or rendered.\n   */\n  MUST_USE_PROPERTY: 0x1,\n  HAS_BOOLEAN_VALUE: 0x4,\n  HAS_NUMERIC_VALUE: 0x8,\n  HAS_POSITIVE_NUMERIC_VALUE: 0x10 | 0x8,\n  HAS_OVERLOADED_BOOLEAN_VALUE: 0x20,\n  HAS_STRING_BOOLEAN_VALUE: 0x40,\n\n  /**\n   * Inject some specialized knowledge about the DOM. This takes a config object\n   * with the following properties:\n   *\n   * Properties: object mapping DOM property name to one of the\n   * DOMPropertyInjection constants or null. If your attribute isn't in here,\n   * it won't get written to the DOM.\n   *\n   * DOMAttributeNames: object mapping React attribute name to the DOM\n   * attribute name. Attribute names not specified use the **lowercase**\n   * normalized name.\n   *\n   * DOMAttributeNamespaces: object mapping React attribute name to the DOM\n   * attribute namespace URL. (Attribute names not specified use no namespace.)\n   *\n   * DOMPropertyNames: similar to DOMAttributeNames but for DOM properties.\n   * Property names not specified use the normalized name.\n   *\n   * DOMMutationMethods: Properties that require special mutation methods. If\n   * `value` is undefined, the mutation method should unset the property.\n   *\n   * @param {object} domPropertyConfig the config as described above.\n   */\n  injectDOMPropertyConfig: function (domPropertyConfig) {\n    var Injection = DOMPropertyInjection;\n    var Properties = domPropertyConfig.Properties || {};\n    var DOMAttributeNamespaces = domPropertyConfig.DOMAttributeNamespaces || {};\n    var DOMAttributeNames = domPropertyConfig.DOMAttributeNames || {};\n    var DOMMutationMethods = domPropertyConfig.DOMMutationMethods || {};\n\n    for (var propName in Properties) {\n      !!DOMProperty.properties.hasOwnProperty(propName) ? invariant(false, 'injectDOMPropertyConfig(...): You\\'re trying to inject DOM property \\'%s\\' which has already been injected. You may be accidentally injecting the same DOM property config twice, or you may be injecting two configs that have conflicting property names.', propName) : void 0;\n\n      var lowerCased = propName.toLowerCase();\n      var propConfig = Properties[propName];\n\n      var propertyInfo = {\n        attributeName: lowerCased,\n        attributeNamespace: null,\n        propertyName: propName,\n        mutationMethod: null,\n\n        mustUseProperty: checkMask(propConfig, Injection.MUST_USE_PROPERTY),\n        hasBooleanValue: checkMask(propConfig, Injection.HAS_BOOLEAN_VALUE),\n        hasNumericValue: checkMask(propConfig, Injection.HAS_NUMERIC_VALUE),\n        hasPositiveNumericValue: checkMask(propConfig, Injection.HAS_POSITIVE_NUMERIC_VALUE),\n        hasOverloadedBooleanValue: checkMask(propConfig, Injection.HAS_OVERLOADED_BOOLEAN_VALUE),\n        hasStringBooleanValue: checkMask(propConfig, Injection.HAS_STRING_BOOLEAN_VALUE)\n      };\n      !(propertyInfo.hasBooleanValue + propertyInfo.hasNumericValue + propertyInfo.hasOverloadedBooleanValue <= 1) ? invariant(false, 'DOMProperty: Value can be one of boolean, overloaded boolean, or numeric value, but not a combination: %s', propName) : void 0;\n\n      if (DOMAttributeNames.hasOwnProperty(propName)) {\n        var attributeName = DOMAttributeNames[propName];\n\n        propertyInfo.attributeName = attributeName;\n      }\n\n      if (DOMAttributeNamespaces.hasOwnProperty(propName)) {\n        propertyInfo.attributeNamespace = DOMAttributeNamespaces[propName];\n      }\n\n      if (DOMMutationMethods.hasOwnProperty(propName)) {\n        propertyInfo.mutationMethod = DOMMutationMethods[propName];\n      }\n\n      // Downcase references to whitelist properties to check for membership\n      // without case-sensitivity. This allows the whitelist to pick up\n      // `allowfullscreen`, which should be written using the property configuration\n      // for `allowFullscreen`\n      DOMProperty.properties[propName] = propertyInfo;\n    }\n  }\n};\n\n/* eslint-disable max-len */\nvar ATTRIBUTE_NAME_START_CHAR = ':A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\n/* eslint-enable max-len */\n\n/**\n * DOMProperty exports lookup objects that can be used like functions:\n *\n *   > DOMProperty.isValid['id']\n *   true\n *   > DOMProperty.isValid['foobar']\n *   undefined\n *\n * Although this may be confusing, it performs better in general.\n *\n * @see http://jsperf.com/key-exists\n * @see http://jsperf.com/key-missing\n */\nvar DOMProperty = {\n  ID_ATTRIBUTE_NAME: 'data-reactid',\n  ROOT_ATTRIBUTE_NAME: 'data-reactroot',\n\n  ATTRIBUTE_NAME_START_CHAR: ATTRIBUTE_NAME_START_CHAR,\n  ATTRIBUTE_NAME_CHAR: ATTRIBUTE_NAME_START_CHAR + '\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040',\n\n  /**\n   * Map from property \"standard name\" to an object with info about how to set\n   * the property in the DOM. Each object contains:\n   *\n   * attributeName:\n   *   Used when rendering markup or with `*Attribute()`.\n   * attributeNamespace\n   * propertyName:\n   *   Used on DOM node instances. (This includes properties that mutate due to\n   *   external factors.)\n   * mutationMethod:\n   *   If non-null, used instead of the property or `setAttribute()` after\n   *   initial render.\n   * mustUseProperty:\n   *   Whether the property must be accessed and mutated as an object property.\n   * hasBooleanValue:\n   *   Whether the property should be removed when set to a falsey value.\n   * hasNumericValue:\n   *   Whether the property must be numeric or parse as a numeric and should be\n   *   removed when set to a falsey value.\n   * hasPositiveNumericValue:\n   *   Whether the property must be positive numeric or parse as a positive\n   *   numeric and should be removed when set to a falsey value.\n   * hasOverloadedBooleanValue:\n   *   Whether the property can be used as a flag as well as with a value.\n   *   Removed when strictly equal to false; present without a value when\n   *   strictly equal to true; present with a value otherwise.\n   */\n  properties: {},\n\n  /**\n   * Checks whether a property name is a writeable attribute.\n   * @method\n   */\n  shouldSetAttribute: function (name, value) {\n    if (DOMProperty.isReservedProp(name)) {\n      return false;\n    }\n    if ((name[0] === 'o' || name[0] === 'O') && (name[1] === 'n' || name[1] === 'N')) {\n      return false;\n    }\n    if (value === null) {\n      return true;\n    }\n    switch (typeof value) {\n      case 'boolean':\n        return DOMProperty.shouldAttributeAcceptBooleanValue(name);\n      case 'undefined':\n      case 'number':\n      case 'string':\n      case 'object':\n        return true;\n      default:\n        // function, symbol\n        return false;\n    }\n  },\n\n  getPropertyInfo: function (name) {\n    return DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n  },\n  shouldAttributeAcceptBooleanValue: function (name) {\n    if (DOMProperty.isReservedProp(name)) {\n      return true;\n    }\n    var propertyInfo = DOMProperty.getPropertyInfo(name);\n    if (propertyInfo) {\n      return propertyInfo.hasBooleanValue || propertyInfo.hasStringBooleanValue || propertyInfo.hasOverloadedBooleanValue;\n    }\n    var prefix = name.toLowerCase().slice(0, 5);\n    return prefix === 'data-' || prefix === 'aria-';\n  },\n\n\n  /**\n   * Checks to see if a property name is within the list of properties\n   * reserved for internal React operations. These properties should\n   * not be set on an HTML element.\n   *\n   * @private\n   * @param {string} name\n   * @return {boolean} If the name is within reserved props\n   */\n  isReservedProp: function (name) {\n    return RESERVED_PROPS.hasOwnProperty(name);\n  },\n\n\n  injection: DOMPropertyInjection\n};\n\nvar DOMProperty_1 = DOMProperty;\n\n/**\n * Copyright (c) 2015-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 * @providesModule ReactDOMComponentFlags\n */\n\nvar ReactDOMComponentFlags = {\n  hasCachedChildNodes: 1 << 0\n};\n\nvar ReactDOMComponentFlags_1 = ReactDOMComponentFlags;\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 * @providesModule ReactTypeOfWork\n * \n */\n\nvar ReactTypeOfWork = {\n  IndeterminateComponent: 0, // Before we know whether it is functional or class\n  FunctionalComponent: 1,\n  ClassComponent: 2,\n  HostRoot: 3, // Root of a host tree. Could be nested inside another node.\n  HostPortal: 4, // A subtree. Could be an entry point to a different renderer.\n  HostComponent: 5,\n  HostText: 6,\n  CoroutineComponent: 7,\n  CoroutineHandlerPhase: 8,\n  YieldComponent: 9,\n  Fragment: 10\n};\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 * @providesModule HTMLNodeType\n */\n\n/**\n * HTML nodeType values that represent the type of the node\n */\n\nvar HTMLNodeType = {\n  ELEMENT_NODE: 1,\n  TEXT_NODE: 3,\n  COMMENT_NODE: 8,\n  DOCUMENT_NODE: 9,\n  DOCUMENT_FRAGMENT_NODE: 11\n};\n\nvar HTMLNodeType_1 = HTMLNodeType;\n\nvar HostComponent = ReactTypeOfWork.HostComponent;\nvar HostText = ReactTypeOfWork.HostText;\n\nvar ELEMENT_NODE$1 = HTMLNodeType_1.ELEMENT_NODE;\nvar COMMENT_NODE$1 = HTMLNodeType_1.COMMENT_NODE;\n\n\n\nvar ATTR_NAME = DOMProperty_1.ID_ATTRIBUTE_NAME;\nvar Flags = ReactDOMComponentFlags_1;\n\nvar randomKey = Math.random().toString(36).slice(2);\n\nvar internalInstanceKey = '__reactInternalInstance$' + randomKey;\n\nvar internalEventHandlersKey = '__reactEventHandlers$' + randomKey;\n\n/**\n * Check if a given node should be cached.\n */\nfunction shouldPrecacheNode(node, nodeID) {\n  return node.nodeType === ELEMENT_NODE$1 && node.getAttribute(ATTR_NAME) === '' + nodeID || node.nodeType === COMMENT_NODE$1 && node.nodeValue === ' react-text: ' + nodeID + ' ' || node.nodeType === COMMENT_NODE$1 && node.nodeValue === ' react-empty: ' + nodeID + ' ';\n}\n\n/**\n * Drill down (through composites and empty components) until we get a host or\n * host text component.\n *\n * This is pretty polymorphic but unavoidable with the current structure we have\n * for `_renderedChildren`.\n */\nfunction getRenderedHostOrTextFromComponent(component) {\n  var rendered;\n  while (rendered = component._renderedComponent) {\n    component = rendered;\n  }\n  return component;\n}\n\n/**\n * Populate `_hostNode` on the rendered host/text component with the given\n * DOM node. The passed `inst` can be a composite.\n */\nfunction precacheNode(inst, node) {\n  var hostInst = getRenderedHostOrTextFromComponent(inst);\n  hostInst._hostNode = node;\n  node[internalInstanceKey] = hostInst;\n}\n\nfunction precacheFiberNode$1(hostInst, node) {\n  node[internalInstanceKey] = hostInst;\n}\n\nfunction uncacheNode(inst) {\n  var node = inst._hostNode;\n  if (node) {\n    delete node[internalInstanceKey];\n    inst._hostNode = null;\n  }\n}\n\n/**\n * Populate `_hostNode` on each child of `inst`, assuming that the children\n * match up with the DOM (element) children of `node`.\n *\n * We cache entire levels at once to avoid an n^2 problem where we access the\n * children of a node sequentially and have to walk from the start to our target\n * node every time.\n *\n * Since we update `_renderedChildren` and the actual DOM at (slightly)\n * different times, we could race here and see a newer `_renderedChildren` than\n * the DOM nodes we see. To avoid this, ReactMultiChild calls\n * `prepareToManageChildren` before we change `_renderedChildren`, at which\n * time the container's child nodes are always cached (until it unmounts).\n */\nfunction precacheChildNodes(inst, node) {\n  if (inst._flags & Flags.hasCachedChildNodes) {\n    return;\n  }\n  var children = inst._renderedChildren;\n  var childNode = node.firstChild;\n  outer: for (var name in children) {\n    if (!children.hasOwnProperty(name)) {\n      continue;\n    }\n    var childInst = children[name];\n    var childID = getRenderedHostOrTextFromComponent(childInst)._domID;\n    if (childID === 0) {\n      // We're currently unmounting this child in ReactMultiChild; skip it.\n      continue;\n    }\n    // We assume the child nodes are in the same order as the child instances.\n    for (; childNode !== null; childNode = childNode.nextSibling) {\n      if (shouldPrecacheNode(childNode, childID)) {\n        precacheNode(childInst, childNode);\n        continue outer;\n      }\n    }\n    // We reached the end of the DOM children without finding an ID match.\n    invariant(false, 'Unable to find element with ID %s.', childID);\n  }\n  inst._flags |= Flags.hasCachedChildNodes;\n}\n\n/**\n * Given a DOM node, return the closest ReactDOMComponent or\n * ReactDOMTextComponent instance ancestor.\n */\nfunction getClosestInstanceFromNode(node) {\n  if (node[internalInstanceKey]) {\n    return node[internalInstanceKey];\n  }\n\n  // Walk up the tree until we find an ancestor whose instance we have cached.\n  var parents = [];\n  while (!node[internalInstanceKey]) {\n    parents.push(node);\n    if (node.parentNode) {\n      node = node.parentNode;\n    } else {\n      // Top of the tree. This node must not be part of a React tree (or is\n      // unmounted, potentially).\n      return null;\n    }\n  }\n\n  var closest;\n  var inst = node[internalInstanceKey];\n  if (inst.tag === HostComponent || inst.tag === HostText) {\n    // In Fiber, this will always be the deepest root.\n    return inst;\n  }\n  for (; node && (inst = node[internalInstanceKey]); node = parents.pop()) {\n    closest = inst;\n    if (parents.length) {\n      precacheChildNodes(inst, node);\n    }\n  }\n\n  return closest;\n}\n\n/**\n * Given a DOM node, return the ReactDOMComponent or ReactDOMTextComponent\n * instance, or null if the node was not rendered by this React.\n */\nfunction getInstanceFromNode(node) {\n  var inst = node[internalInstanceKey];\n  if (inst) {\n    if (inst.tag === HostComponent || inst.tag === HostText) {\n      return inst;\n    } else if (inst._hostNode === node) {\n      return inst;\n    } else {\n      return null;\n    }\n  }\n  inst = getClosestInstanceFromNode(node);\n  if (inst != null && inst._hostNode === node) {\n    return inst;\n  } else {\n    return null;\n  }\n}\n\n/**\n * Given a ReactDOMComponent or ReactDOMTextComponent, return the corresponding\n * DOM node.\n */\nfunction getNodeFromInstance(inst) {\n  if (inst.tag === HostComponent || inst.tag === HostText) {\n    // In Fiber this, is just the state node right now. We assume it will be\n    // a host component or host text.\n    return inst.stateNode;\n  }\n\n  // Without this first invariant, passing a non-DOM-component triggers the next\n  // invariant for a missing parent, which is super confusing.\n  !(inst._hostNode !== undefined) ? invariant(false, 'getNodeFromInstance: Invalid argument.') : void 0;\n\n  if (inst._hostNode) {\n    return inst._hostNode;\n  }\n\n  // Walk up the tree until we find an ancestor whose DOM node we have cached.\n  var parents = [];\n  while (!inst._hostNode) {\n    parents.push(inst);\n    !inst._hostParent ? invariant(false, 'React DOM tree root should always have a node reference.') : void 0;\n    inst = inst._hostParent;\n  }\n\n  // Now parents contains each ancestor that does *not* have a cached native\n  // node, and `inst` is the deepest ancestor that does.\n  for (; parents.length; inst = parents.pop()) {\n    precacheChildNodes(inst, inst._hostNode);\n  }\n\n  return inst._hostNode;\n}\n\nfunction getFiberCurrentPropsFromNode(node) {\n  return node[internalEventHandlersKey] || null;\n}\n\nfunction updateFiberProps$1(node, props) {\n  node[internalEventHandlersKey] = props;\n}\n\nvar ReactDOMComponentTree = {\n  getClosestInstanceFromNode: getClosestInstanceFromNode,\n  getInstanceFromNode: getInstanceFromNode,\n  getNodeFromInstance: getNodeFromInstance,\n  precacheChildNodes: precacheChildNodes,\n  precacheNode: precacheNode,\n  uncacheNode: uncacheNode,\n  precacheFiberNode: precacheFiberNode$1,\n  getFiberCurrentPropsFromNode: getFiberCurrentPropsFromNode,\n  updateFiberProps: updateFiberProps$1\n};\n\nvar ReactDOMComponentTree_1 = ReactDOMComponentTree;\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 * @providesModule ReactInstanceMap\n */\n\n/**\n * `ReactInstanceMap` maintains a mapping from a public facing stateful\n * instance (key) and the internal representation (value). This allows public\n * methods to accept the user facing instance as an argument and map them back\n * to internal methods.\n */\n\n// TODO: Replace this with ES6: var ReactInstanceMap = new Map();\n\nvar ReactInstanceMap = {\n  /**\n   * This API should be called `delete` but we'd have to make sure to always\n   * transform these to strings for IE support. When this transform is fully\n   * supported we can rename it.\n   */\n  remove: function (key) {\n    key._reactInternalFiber = undefined;\n  },\n\n  get: function (key) {\n    return key._reactInternalFiber;\n  },\n\n  has: function (key) {\n    return key._reactInternalFiber !== undefined;\n  },\n\n  set: function (key, value) {\n    key._reactInternalFiber = value;\n  }\n};\n\nvar ReactInstanceMap_1 = ReactInstanceMap;\n\nvar ReactInternals = react.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nvar ReactGlobalSharedState = {\n  ReactCurrentOwner: ReactInternals.ReactCurrentOwner\n};\n\n{\n  _assign(ReactGlobalSharedState, {\n    ReactComponentTreeHook: ReactInternals.ReactComponentTreeHook,\n    ReactDebugCurrentFrame: ReactInternals.ReactDebugCurrentFrame\n  });\n}\n\nvar ReactGlobalSharedState_1 = ReactGlobalSharedState;\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 * @providesModule getComponentName\n * \n */\n\nfunction getComponentName(instanceOrFiber) {\n  if (typeof instanceOrFiber.getName === 'function') {\n    // Stack reconciler\n    var instance = instanceOrFiber;\n    return instance.getName();\n  }\n  if (typeof instanceOrFiber.tag === 'number') {\n    // Fiber reconciler\n    var fiber = instanceOrFiber;\n    var type = fiber.type;\n\n    if (typeof type === 'string') {\n      return type;\n    }\n    if (typeof type === 'function') {\n      return type.displayName || type.name;\n    }\n  }\n  return null;\n}\n\nvar getComponentName_1 = getComponentName;\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 * @providesModule ReactTypeOfSideEffect\n * \n */\n\nvar ReactTypeOfSideEffect = {\n  // Don't change these two values:\n  NoEffect: 0, //           0b00000000\n  PerformedWork: 1, //      0b00000001\n  // You can change the rest (and add more).\n  Placement: 2, //          0b00000010\n  Update: 4, //             0b00000100\n  PlacementAndUpdate: 6, // 0b00000110\n  Deletion: 8, //           0b00001000\n  ContentReset: 16, //      0b00010000\n  Callback: 32, //          0b00100000\n  Err: 64, //               0b01000000\n  Ref: 128 };\n\nvar ReactCurrentOwner = ReactGlobalSharedState_1.ReactCurrentOwner;\n\n\n\n\n{\n  var warning$1 = require$$0;\n}\n\nvar ClassComponent = ReactTypeOfWork.ClassComponent;\nvar HostComponent$1 = ReactTypeOfWork.HostComponent;\nvar HostRoot$1 = ReactTypeOfWork.HostRoot;\nvar HostPortal = ReactTypeOfWork.HostPortal;\nvar HostText$1 = ReactTypeOfWork.HostText;\n\nvar NoEffect = ReactTypeOfSideEffect.NoEffect;\nvar Placement = ReactTypeOfSideEffect.Placement;\n\nvar MOUNTING = 1;\nvar MOUNTED = 2;\nvar UNMOUNTED = 3;\n\nfunction isFiberMountedImpl(fiber) {\n  var node = fiber;\n  if (!fiber.alternate) {\n    // If there is no alternate, this might be a new tree that isn't inserted\n    // yet. If it is, then it will have a pending insertion effect on it.\n    if ((node.effectTag & Placement) !== NoEffect) {\n      return MOUNTING;\n    }\n    while (node['return']) {\n      node = node['return'];\n      if ((node.effectTag & Placement) !== NoEffect) {\n        return MOUNTING;\n      }\n    }\n  } else {\n    while (node['return']) {\n      node = node['return'];\n    }\n  }\n  if (node.tag === HostRoot$1) {\n    // TODO: Check if this was a nested HostRoot when used with\n    // renderContainerIntoSubtree.\n    return MOUNTED;\n  }\n  // If we didn't hit the root, that means that we're in an disconnected tree\n  // that has been unmounted.\n  return UNMOUNTED;\n}\nvar isFiberMounted = function (fiber) {\n  return isFiberMountedImpl(fiber) === MOUNTED;\n};\n\nvar isMounted = function (component) {\n  {\n    var owner = ReactCurrentOwner.current;\n    if (owner !== null && owner.tag === ClassComponent) {\n      var ownerFiber = owner;\n      var instance = ownerFiber.stateNode;\n      warning$1(instance._warnedAboutRefsInRender, '%s is accessing isMounted inside its render() function. ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', getComponentName_1(ownerFiber) || 'A component');\n      instance._warnedAboutRefsInRender = true;\n    }\n  }\n\n  var fiber = ReactInstanceMap_1.get(component);\n  if (!fiber) {\n    return false;\n  }\n  return isFiberMountedImpl(fiber) === MOUNTED;\n};\n\nfunction assertIsMounted(fiber) {\n  !(isFiberMountedImpl(fiber) === MOUNTED) ? invariant(false, 'Unable to find node on an unmounted component.') : void 0;\n}\n\nfunction findCurrentFiberUsingSlowPath(fiber) {\n  var alternate = fiber.alternate;\n  if (!alternate) {\n    // If there is no alternate, then we only need to check if it is mounted.\n    var state = isFiberMountedImpl(fiber);\n    !(state !== UNMOUNTED) ? invariant(false, 'Unable to find node on an unmounted component.') : void 0;\n    if (state === MOUNTING) {\n      return null;\n    }\n    return fiber;\n  }\n  // If we have two possible branches, we'll walk backwards up to the root\n  // to see what path the root points to. On the way we may hit one of the\n  // special cases and we'll deal with them.\n  var a = fiber;\n  var b = alternate;\n  while (true) {\n    var parentA = a['return'];\n    var parentB = parentA ? parentA.alternate : null;\n    if (!parentA || !parentB) {\n      // We're at the root.\n      break;\n    }\n\n    // If both copies of the parent fiber point to the same child, we can\n    // assume that the child is current. This happens when we bailout on low\n    // priority: the bailed out fiber's child reuses the current child.\n    if (parentA.child === parentB.child) {\n      var child = parentA.child;\n      while (child) {\n        if (child === a) {\n          // We've determined that A is the current branch.\n          assertIsMounted(parentA);\n          return fiber;\n        }\n        if (child === b) {\n          // We've determined that B is the current branch.\n          assertIsMounted(parentA);\n          return alternate;\n        }\n        child = child.sibling;\n      }\n      // We should never have an alternate for any mounting node. So the only\n      // way this could possibly happen is if this was unmounted, if at all.\n      invariant(false, 'Unable to find node on an unmounted component.');\n    }\n\n    if (a['return'] !== b['return']) {\n      // The return pointer of A and the return pointer of B point to different\n      // fibers. We assume that return pointers never criss-cross, so A must\n      // belong to the child set of A.return, and B must belong to the child\n      // set of B.return.\n      a = parentA;\n      b = parentB;\n    } else {\n      // The return pointers point to the same fiber. We'll have to use the\n      // default, slow path: scan the child sets of each parent alternate to see\n      // which child belongs to which set.\n      //\n      // Search parent A's child set\n      var didFindChild = false;\n      var _child = parentA.child;\n      while (_child) {\n        if (_child === a) {\n          didFindChild = true;\n          a = parentA;\n          b = parentB;\n          break;\n        }\n        if (_child === b) {\n          didFindChild = true;\n          b = parentA;\n          a = parentB;\n          break;\n        }\n        _child = _child.sibling;\n      }\n      if (!didFindChild) {\n        // Search parent B's child set\n        _child = parentB.child;\n        while (_child) {\n          if (_child === a) {\n            didFindChild = true;\n            a = parentB;\n            b = parentA;\n            break;\n          }\n          if (_child === b) {\n            didFindChild = true;\n            b = parentB;\n            a = parentA;\n            break;\n          }\n          _child = _child.sibling;\n        }\n        !didFindChild ? invariant(false, 'Child was not found in either parent set. This indicates a bug in React related to the return pointer. Please file an issue.') : void 0;\n      }\n    }\n\n    !(a.alternate === b) ? invariant(false, 'Return fibers should always be each others\\' alternates. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n  }\n  // If the root is not a host container, we're in a disconnected tree. I.e.\n  // unmounted.\n  !(a.tag === HostRoot$1) ? invariant(false, 'Unable to find node on an unmounted component.') : void 0;\n  if (a.stateNode.current === a) {\n    // We've determined that A is the current branch.\n    return fiber;\n  }\n  // Otherwise B has to be current branch.\n  return alternate;\n}\nvar findCurrentFiberUsingSlowPath_1 = findCurrentFiberUsingSlowPath;\n\nvar findCurrentHostFiber = function (parent) {\n  var currentParent = findCurrentFiberUsingSlowPath(parent);\n  if (!currentParent) {\n    return null;\n  }\n\n  // Next we'll drill down this component to find the first HostComponent/Text.\n  var node = currentParent;\n  while (true) {\n    if (node.tag === HostComponent$1 || node.tag === HostText$1) {\n      return node;\n    } else if (node.child) {\n      node.child['return'] = node;\n      node = node.child;\n      continue;\n    }\n    if (node === currentParent) {\n      return null;\n    }\n    while (!node.sibling) {\n      if (!node['return'] || node['return'] === currentParent) {\n        return null;\n      }\n      node = node['return'];\n    }\n    node.sibling['return'] = node['return'];\n    node = node.sibling;\n  }\n  // Flow needs the return null here, but ESLint complains about it.\n  // eslint-disable-next-line no-unreachable\n  return null;\n};\n\nvar findCurrentHostFiberWithNoPortals = function (parent) {\n  var currentParent = findCurrentFiberUsingSlowPath(parent);\n  if (!currentParent) {\n    return null;\n  }\n\n  // Next we'll drill down this component to find the first HostComponent/Text.\n  var node = currentParent;\n  while (true) {\n    if (node.tag === HostComponent$1 || node.tag === HostText$1) {\n      return node;\n    } else if (node.child && node.tag !== HostPortal) {\n      node.child['return'] = node;\n      node = node.child;\n      continue;\n    }\n    if (node === currentParent) {\n      return null;\n    }\n    while (!node.sibling) {\n      if (!node['return'] || node['return'] === currentParent) {\n        return null;\n      }\n      node = node['return'];\n    }\n    node.sibling['return'] = node['return'];\n    node = node.sibling;\n  }\n  // Flow needs the return null here, but ESLint complains about it.\n  // eslint-disable-next-line no-unreachable\n  return null;\n};\n\nvar ReactFiberTreeReflection = {\n\tisFiberMounted: isFiberMounted,\n\tisMounted: isMounted,\n\tfindCurrentFiberUsingSlowPath: findCurrentFiberUsingSlowPath_1,\n\tfindCurrentHostFiber: findCurrentHostFiber,\n\tfindCurrentHostFiberWithNoPortals: findCurrentHostFiberWithNoPortals\n};\n\nvar ReactErrorUtils = {\n  // Used by Fiber to simulate a try-catch.\n  _caughtError: null,\n  _hasCaughtError: false,\n\n  // Used by event system to capture/rethrow the first error.\n  _rethrowError: null,\n  _hasRethrowError: false,\n\n  injection: {\n    injectErrorUtils: function (injectedErrorUtils) {\n      !(typeof injectedErrorUtils.invokeGuardedCallback === 'function') ? invariant(false, 'Injected invokeGuardedCallback() must be a function.') : void 0;\n      invokeGuardedCallback = injectedErrorUtils.invokeGuardedCallback;\n    }\n  },\n\n  /**\n   * Call a function while guarding against errors that happens within it.\n   * Returns an error if it throws, otherwise null.\n   *\n   * In production, this is implemented using a try-catch. The reason we don't\n   * use a try-catch directly is so that we can swap out a different\n   * implementation in DEV mode.\n   *\n   * @param {String} name of the guard to use for logging or debugging\n   * @param {Function} func The function to invoke\n   * @param {*} context The context to use when calling the function\n   * @param {...*} args Arguments for function\n   */\n  invokeGuardedCallback: function (name, func, context, a, b, c, d, e, f) {\n    invokeGuardedCallback.apply(ReactErrorUtils, arguments);\n  },\n\n  /**\n   * Same as invokeGuardedCallback, but instead of returning an error, it stores\n   * it in a global so it can be rethrown by `rethrowCaughtError` later.\n   * TODO: See if _caughtError and _rethrowError can be unified.\n   *\n   * @param {String} name of the guard to use for logging or debugging\n   * @param {Function} func The function to invoke\n   * @param {*} context The context to use when calling the function\n   * @param {...*} args Arguments for function\n   */\n  invokeGuardedCallbackAndCatchFirstError: function (name, func, context, a, b, c, d, e, f) {\n    ReactErrorUtils.invokeGuardedCallback.apply(this, arguments);\n    if (ReactErrorUtils.hasCaughtError()) {\n      var error = ReactErrorUtils.clearCaughtError();\n      if (!ReactErrorUtils._hasRethrowError) {\n        ReactErrorUtils._hasRethrowError = true;\n        ReactErrorUtils._rethrowError = error;\n      }\n    }\n  },\n\n  /**\n   * During execution of guarded functions we will capture the first error which\n   * we will rethrow to be handled by the top level error handler.\n   */\n  rethrowCaughtError: function () {\n    return rethrowCaughtError.apply(ReactErrorUtils, arguments);\n  },\n\n  hasCaughtError: function () {\n    return ReactErrorUtils._hasCaughtError;\n  },\n\n  clearCaughtError: function () {\n    if (ReactErrorUtils._hasCaughtError) {\n      var error = ReactErrorUtils._caughtError;\n      ReactErrorUtils._caughtError = null;\n      ReactErrorUtils._hasCaughtError = false;\n      return error;\n    } else {\n      invariant(false, 'clearCaughtError was called but no error was captured. This error is likely caused by a bug in React. Please file an issue.');\n    }\n  }\n};\n\nvar invokeGuardedCallback = function (name, func, context, a, b, c, d, e, f) {\n  ReactErrorUtils._hasCaughtError = false;\n  ReactErrorUtils._caughtError = null;\n  var funcArgs = Array.prototype.slice.call(arguments, 3);\n  try {\n    func.apply(context, funcArgs);\n  } catch (error) {\n    ReactErrorUtils._caughtError = error;\n    ReactErrorUtils._hasCaughtError = true;\n  }\n};\n\n{\n  // In DEV mode, we swap out invokeGuardedCallback for a special version\n  // that plays more nicely with the browser's DevTools. The idea is to preserve\n  // \"Pause on exceptions\" behavior. Because React wraps all user-provided\n  // functions in invokeGuardedCallback, and the production version of\n  // invokeGuardedCallback uses a try-catch, all user exceptions are treated\n  // like caught exceptions, and the DevTools won't pause unless the developer\n  // takes the extra step of enabling pause on caught exceptions. This is\n  // untintuitive, though, because even though React has caught the error, from\n  // the developer's perspective, the error is uncaught.\n  //\n  // To preserve the expected \"Pause on exceptions\" behavior, we don't use a\n  // try-catch in DEV. Instead, we synchronously dispatch a fake event to a fake\n  // DOM node, and call the user-provided callback from inside an event handler\n  // for that fake event. If the callback throws, the error is \"captured\" using\n  // a global event handler. But because the error happens in a different\n  // event loop context, it does not interrupt the normal program flow.\n  // Effectively, this gives us try-catch behavior without actually using\n  // try-catch. Neat!\n\n  // Check that the browser supports the APIs we need to implement our special\n  // DEV version of invokeGuardedCallback\n  if (typeof window !== 'undefined' && typeof window.dispatchEvent === 'function' && typeof document !== 'undefined' && typeof document.createEvent === 'function') {\n    var fakeNode = document.createElement('react');\n\n    var invokeGuardedCallbackDev = function (name, func, context, a, b, c, d, e, f) {\n      // Keeps track of whether the user-provided callback threw an error. We\n      // set this to true at the beginning, then set it to false right after\n      // calling the function. If the function errors, `didError` will never be\n      // set to false. This strategy works even if the browser is flaky and\n      // fails to call our global error handler, because it doesn't rely on\n      // the error event at all.\n      var didError = true;\n\n      // Create an event handler for our fake event. We will synchronously\n      // dispatch our fake event using `dispatchEvent`. Inside the handler, we\n      // call the user-provided callback.\n      var funcArgs = Array.prototype.slice.call(arguments, 3);\n      function callCallback() {\n        // We immediately remove the callback from event listeners so that\n        // nested `invokeGuardedCallback` calls do not clash. Otherwise, a\n        // nested call would trigger the fake event handlers of any call higher\n        // in the stack.\n        fakeNode.removeEventListener(evtType, callCallback, false);\n        func.apply(context, funcArgs);\n        didError = false;\n      }\n\n      // Create a global error event handler. We use this to capture the value\n      // that was thrown. It's possible that this error handler will fire more\n      // than once; for example, if non-React code also calls `dispatchEvent`\n      // and a handler for that event throws. We should be resilient to most of\n      // those cases. Even if our error event handler fires more than once, the\n      // last error event is always used. If the callback actually does error,\n      // we know that the last error event is the correct one, because it's not\n      // possible for anything else to have happened in between our callback\n      // erroring and the code that follows the `dispatchEvent` call below. If\n      // the callback doesn't error, but the error event was fired, we know to\n      // ignore it because `didError` will be false, as described above.\n      var error = void 0;\n      // Use this to track whether the error event is ever called.\n      var didSetError = false;\n      var isCrossOriginError = false;\n\n      function onError(event) {\n        error = event.error;\n        didSetError = true;\n        if (error === null && event.colno === 0 && event.lineno === 0) {\n          isCrossOriginError = true;\n        }\n      }\n\n      // Create a fake event type.\n      var evtType = 'react-' + (name ? name : 'invokeguardedcallback');\n\n      // Attach our event handlers\n      window.addEventListener('error', onError);\n      fakeNode.addEventListener(evtType, callCallback, false);\n\n      // Synchronously dispatch our fake event. If the user-provided function\n      // errors, it will trigger our global error handler.\n      var evt = document.createEvent('Event');\n      evt.initEvent(evtType, false, false);\n      fakeNode.dispatchEvent(evt);\n\n      if (didError) {\n        if (!didSetError) {\n          // The callback errored, but the error event never fired.\n          error = new Error('An error was thrown inside one of your components, but React ' + \"doesn't know what it was. This is likely due to browser \" + 'flakiness. React does its best to preserve the \"Pause on ' + 'exceptions\" behavior of the DevTools, which requires some ' + \"DEV-mode only tricks. It's possible that these don't work in \" + 'your browser. Try triggering the error in production mode, ' + 'or switching to a modern browser. If you suspect that this is ' + 'actually an issue with React, please file an issue.');\n        } else if (isCrossOriginError) {\n          error = new Error(\"A cross-origin error was thrown. React doesn't have access to \" + 'the actual error object in development. ' + 'See https://fb.me/react-crossorigin-error for more information.');\n        }\n        ReactErrorUtils._hasCaughtError = true;\n        ReactErrorUtils._caughtError = error;\n      } else {\n        ReactErrorUtils._hasCaughtError = false;\n        ReactErrorUtils._caughtError = null;\n      }\n\n      // Remove our event listeners\n      window.removeEventListener('error', onError);\n    };\n\n    invokeGuardedCallback = invokeGuardedCallbackDev;\n  }\n}\n\nvar rethrowCaughtError = function () {\n  if (ReactErrorUtils._hasRethrowError) {\n    var error = ReactErrorUtils._rethrowError;\n    ReactErrorUtils._rethrowError = null;\n    ReactErrorUtils._hasRethrowError = false;\n    throw error;\n  }\n};\n\nvar ReactErrorUtils_1 = ReactErrorUtils;\n\n{\n  var warning$2 = require$$0;\n}\n\n/**\n * Injected dependencies:\n */\n\n/**\n * - `ComponentTree`: [required] Module that can convert between React instances\n *   and actual node references.\n */\nvar ComponentTree;\nvar injection = {\n  injectComponentTree: function (Injected) {\n    ComponentTree = Injected;\n    {\n      warning$2(Injected && Injected.getNodeFromInstance && Injected.getInstanceFromNode, 'EventPluginUtils.injection.injectComponentTree(...): Injected ' + 'module is missing getNodeFromInstance or getInstanceFromNode.');\n    }\n  }\n};\n\nfunction isEndish(topLevelType) {\n  return topLevelType === 'topMouseUp' || topLevelType === 'topTouchEnd' || topLevelType === 'topTouchCancel';\n}\n\nfunction isMoveish(topLevelType) {\n  return topLevelType === 'topMouseMove' || topLevelType === 'topTouchMove';\n}\nfunction isStartish(topLevelType) {\n  return topLevelType === 'topMouseDown' || topLevelType === 'topTouchStart';\n}\n\nvar validateEventDispatches;\n{\n  validateEventDispatches = function (event) {\n    var dispatchListeners = event._dispatchListeners;\n    var dispatchInstances = event._dispatchInstances;\n\n    var listenersIsArr = Array.isArray(dispatchListeners);\n    var listenersLen = listenersIsArr ? dispatchListeners.length : dispatchListeners ? 1 : 0;\n\n    var instancesIsArr = Array.isArray(dispatchInstances);\n    var instancesLen = instancesIsArr ? dispatchInstances.length : dispatchInstances ? 1 : 0;\n\n    warning$2(instancesIsArr === listenersIsArr && instancesLen === listenersLen, 'EventPluginUtils: Invalid `event`.');\n  };\n}\n\n/**\n * Dispatch the event to the listener.\n * @param {SyntheticEvent} event SyntheticEvent to handle\n * @param {boolean} simulated If the event is simulated (changes exn behavior)\n * @param {function} listener Application-level callback\n * @param {*} inst Internal component instance\n */\nfunction executeDispatch(event, simulated, listener, inst) {\n  var type = event.type || 'unknown-event';\n  event.currentTarget = EventPluginUtils.getNodeFromInstance(inst);\n  ReactErrorUtils_1.invokeGuardedCallbackAndCatchFirstError(type, listener, undefined, event);\n  event.currentTarget = null;\n}\n\n/**\n * Standard/simple iteration through an event's collected dispatches.\n */\nfunction executeDispatchesInOrder(event, simulated) {\n  var dispatchListeners = event._dispatchListeners;\n  var dispatchInstances = event._dispatchInstances;\n  {\n    validateEventDispatches(event);\n  }\n  if (Array.isArray(dispatchListeners)) {\n    for (var i = 0; i < dispatchListeners.length; i++) {\n      if (event.isPropagationStopped()) {\n        break;\n      }\n      // Listeners and Instances are two parallel arrays that are always in sync.\n      executeDispatch(event, simulated, dispatchListeners[i], dispatchInstances[i]);\n    }\n  } else if (dispatchListeners) {\n    executeDispatch(event, simulated, dispatchListeners, dispatchInstances);\n  }\n  event._dispatchListeners = null;\n  event._dispatchInstances = null;\n}\n\n/**\n * Standard/simple iteration through an event's collected dispatches, but stops\n * at the first dispatch execution returning true, and returns that id.\n *\n * @return {?string} id of the first dispatch execution who's listener returns\n * true, or null if no listener returned true.\n */\nfunction executeDispatchesInOrderStopAtTrueImpl(event) {\n  var dispatchListeners = event._dispatchListeners;\n  var dispatchInstances = event._dispatchInstances;\n  {\n    validateEventDispatches(event);\n  }\n  if (Array.isArray(dispatchListeners)) {\n    for (var i = 0; i < dispatchListeners.length; i++) {\n      if (event.isPropagationStopped()) {\n        break;\n      }\n      // Listeners and Instances are two parallel arrays that are always in sync.\n      if (dispatchListeners[i](event, dispatchInstances[i])) {\n        return dispatchInstances[i];\n      }\n    }\n  } else if (dispatchListeners) {\n    if (dispatchListeners(event, dispatchInstances)) {\n      return dispatchInstances;\n    }\n  }\n  return null;\n}\n\n/**\n * @see executeDispatchesInOrderStopAtTrueImpl\n */\nfunction executeDispatchesInOrderStopAtTrue(event) {\n  var ret = executeDispatchesInOrderStopAtTrueImpl(event);\n  event._dispatchInstances = null;\n  event._dispatchListeners = null;\n  return ret;\n}\n\n/**\n * Execution of a \"direct\" dispatch - there must be at most one dispatch\n * accumulated on the event or it is considered an error. It doesn't really make\n * sense for an event with multiple dispatches (bubbled) to keep track of the\n * return values at each dispatch execution, but it does tend to make sense when\n * dealing with \"direct\" dispatches.\n *\n * @return {*} The return value of executing the single dispatch.\n */\nfunction executeDirectDispatch(event) {\n  {\n    validateEventDispatches(event);\n  }\n  var dispatchListener = event._dispatchListeners;\n  var dispatchInstance = event._dispatchInstances;\n  !!Array.isArray(dispatchListener) ? invariant(false, 'executeDirectDispatch(...): Invalid `event`.') : void 0;\n  event.currentTarget = dispatchListener ? EventPluginUtils.getNodeFromInstance(dispatchInstance) : null;\n  var res = dispatchListener ? dispatchListener(event) : null;\n  event.currentTarget = null;\n  event._dispatchListeners = null;\n  event._dispatchInstances = null;\n  return res;\n}\n\n/**\n * @param {SyntheticEvent} event\n * @return {boolean} True iff number of dispatches accumulated is greater than 0.\n */\nfunction hasDispatches(event) {\n  return !!event._dispatchListeners;\n}\n\n/**\n * General utilities that are useful in creating custom Event Plugins.\n */\nvar EventPluginUtils = {\n  isEndish: isEndish,\n  isMoveish: isMoveish,\n  isStartish: isStartish,\n\n  executeDirectDispatch: executeDirectDispatch,\n  executeDispatchesInOrder: executeDispatchesInOrder,\n  executeDispatchesInOrderStopAtTrue: executeDispatchesInOrderStopAtTrue,\n  hasDispatches: hasDispatches,\n\n  getFiberCurrentPropsFromNode: function (node) {\n    return ComponentTree.getFiberCurrentPropsFromNode(node);\n  },\n  getInstanceFromNode: function (node) {\n    return ComponentTree.getInstanceFromNode(node);\n  },\n  getNodeFromInstance: function (node) {\n    return ComponentTree.getNodeFromInstance(node);\n  },\n\n  injection: injection\n};\n\nvar EventPluginUtils_1 = EventPluginUtils;\n\n// Use to restore controlled state after a change event has fired.\n\nvar fiberHostComponent = null;\n\nvar ReactControlledComponentInjection = {\n  injectFiberControlledHostComponent: function (hostComponentImpl) {\n    // The fiber implementation doesn't use dynamic dispatch so we need to\n    // inject the implementation.\n    fiberHostComponent = hostComponentImpl;\n  }\n};\n\nvar restoreTarget = null;\nvar restoreQueue = null;\n\nfunction restoreStateOfTarget(target) {\n  // We perform this translation at the end of the event loop so that we\n  // always receive the correct fiber here\n  var internalInstance = EventPluginUtils_1.getInstanceFromNode(target);\n  if (!internalInstance) {\n    // Unmounted\n    return;\n  }\n  if (typeof internalInstance.tag === 'number') {\n    !(fiberHostComponent && typeof fiberHostComponent.restoreControlledState === 'function') ? invariant(false, 'Fiber needs to be injected to handle a fiber target for controlled events. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n    var props = EventPluginUtils_1.getFiberCurrentPropsFromNode(internalInstance.stateNode);\n    fiberHostComponent.restoreControlledState(internalInstance.stateNode, internalInstance.type, props);\n    return;\n  }\n  !(typeof internalInstance.restoreControlledState === 'function') ? invariant(false, 'The internal instance must be a React host component. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n  // If it is not a Fiber, we can just use dynamic dispatch.\n  internalInstance.restoreControlledState();\n}\n\nvar ReactControlledComponent = {\n  injection: ReactControlledComponentInjection,\n\n  enqueueStateRestore: function (target) {\n    if (restoreTarget) {\n      if (restoreQueue) {\n        restoreQueue.push(target);\n      } else {\n        restoreQueue = [target];\n      }\n    } else {\n      restoreTarget = target;\n    }\n  },\n  restoreStateIfNeeded: function () {\n    if (!restoreTarget) {\n      return;\n    }\n    var target = restoreTarget;\n    var queuedTargets = restoreQueue;\n    restoreTarget = null;\n    restoreQueue = null;\n\n    restoreStateOfTarget(target);\n    if (queuedTargets) {\n      for (var i = 0; i < queuedTargets.length; i++) {\n        restoreStateOfTarget(queuedTargets[i]);\n      }\n    }\n  }\n};\n\nvar ReactControlledComponent_1 = ReactControlledComponent;\n\n// Used as a way to call batchedUpdates when we don't know if we're in a Fiber\n// or Stack context. Such as when we're dispatching events or if third party\n// libraries need to call batchedUpdates. Eventually, this API will go away when\n// everything is batched by default. We'll then have a similar API to opt-out of\n// scheduled work and instead do synchronous work.\n\n// Defaults\nvar stackBatchedUpdates = function (fn, a, b, c, d, e) {\n  return fn(a, b, c, d, e);\n};\nvar fiberBatchedUpdates = function (fn, bookkeeping) {\n  return fn(bookkeeping);\n};\n\nfunction performFiberBatchedUpdates(fn, bookkeeping) {\n  // If we have Fiber loaded, we need to wrap this in a batching call so that\n  // Fiber can apply its default priority for this call.\n  return fiberBatchedUpdates(fn, bookkeeping);\n}\nfunction batchedUpdates(fn, bookkeeping) {\n  // We first perform work with the stack batching strategy, by passing our\n  // indirection to it.\n  return stackBatchedUpdates(performFiberBatchedUpdates, fn, bookkeeping);\n}\n\nvar isNestingBatched = false;\nfunction batchedUpdatesWithControlledComponents(fn, bookkeeping) {\n  if (isNestingBatched) {\n    // If we are currently inside another batch, we need to wait until it\n    // fully completes before restoring state. Therefore, we add the target to\n    // a queue of work.\n    return batchedUpdates(fn, bookkeeping);\n  }\n  isNestingBatched = true;\n  try {\n    return batchedUpdates(fn, bookkeeping);\n  } finally {\n    // Here we wait until all updates have propagated, which is important\n    // when using controlled components within layers:\n    // https://github.com/facebook/react/issues/1698\n    // Then we restore state of any controlled component.\n    isNestingBatched = false;\n    ReactControlledComponent_1.restoreStateIfNeeded();\n  }\n}\n\nvar ReactGenericBatchingInjection = {\n  injectStackBatchedUpdates: function (_batchedUpdates) {\n    stackBatchedUpdates = _batchedUpdates;\n  },\n  injectFiberBatchedUpdates: function (_batchedUpdates) {\n    fiberBatchedUpdates = _batchedUpdates;\n  }\n};\n\nvar ReactGenericBatching = {\n  batchedUpdates: batchedUpdatesWithControlledComponents,\n  injection: ReactGenericBatchingInjection\n};\n\nvar ReactGenericBatching_1 = ReactGenericBatching;\n\nvar TEXT_NODE$1 = HTMLNodeType_1.TEXT_NODE;\n\n/**\n * Gets the target node from a native browser event by accounting for\n * inconsistencies in browser DOM APIs.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {DOMEventTarget} Target node.\n */\n\n\nfunction getEventTarget(nativeEvent) {\n  var target = nativeEvent.target || nativeEvent.srcElement || window;\n\n  // Normalize SVG <use> element events #4963\n  if (target.correspondingUseElement) {\n    target = target.correspondingUseElement;\n  }\n\n  // Safari may fire events on text nodes (Node.TEXT_NODE is 3).\n  // @see http://www.quirksmode.org/js/events_properties.html\n  return target.nodeType === TEXT_NODE$1 ? target.parentNode : target;\n}\n\nvar getEventTarget_1 = getEventTarget;\n\nvar HostRoot = ReactTypeOfWork.HostRoot;\n\n\nvar CALLBACK_BOOKKEEPING_POOL_SIZE = 10;\nvar callbackBookkeepingPool = [];\n\n/**\n * Find the deepest React component completely containing the root of the\n * passed-in instance (for use when entire React trees are nested within each\n * other). If React trees are not nested, returns null.\n */\nfunction findRootContainerNode(inst) {\n  // TODO: It may be a good idea to cache this to prevent unnecessary DOM\n  // traversal, but caching is difficult to do correctly without using a\n  // mutation observer to listen for all DOM changes.\n  if (typeof inst.tag === 'number') {\n    while (inst['return']) {\n      inst = inst['return'];\n    }\n    if (inst.tag !== HostRoot) {\n      // This can happen if we're in a detached tree.\n      return null;\n    }\n    return inst.stateNode.containerInfo;\n  } else {\n    while (inst._hostParent) {\n      inst = inst._hostParent;\n    }\n    var rootNode = ReactDOMComponentTree_1.getNodeFromInstance(inst);\n    return rootNode.parentNode;\n  }\n}\n\n// Used to store ancestor hierarchy in top level callback\nfunction getTopLevelCallbackBookKeeping(topLevelType, nativeEvent, targetInst) {\n  if (callbackBookkeepingPool.length) {\n    var instance = callbackBookkeepingPool.pop();\n    instance.topLevelType = topLevelType;\n    instance.nativeEvent = nativeEvent;\n    instance.targetInst = targetInst;\n    return instance;\n  }\n  return {\n    topLevelType: topLevelType,\n    nativeEvent: nativeEvent,\n    targetInst: targetInst,\n    ancestors: []\n  };\n}\n\nfunction releaseTopLevelCallbackBookKeeping(instance) {\n  instance.topLevelType = null;\n  instance.nativeEvent = null;\n  instance.targetInst = null;\n  instance.ancestors.length = 0;\n  if (callbackBookkeepingPool.length < CALLBACK_BOOKKEEPING_POOL_SIZE) {\n    callbackBookkeepingPool.push(instance);\n  }\n}\n\nfunction handleTopLevelImpl(bookKeeping) {\n  var targetInst = bookKeeping.targetInst;\n\n  // Loop through the hierarchy, in case there's any nested components.\n  // It's important that we build the array of ancestors before calling any\n  // event handlers, because event handlers can modify the DOM, leading to\n  // inconsistencies with ReactMount's node cache. See #1105.\n  var ancestor = targetInst;\n  do {\n    if (!ancestor) {\n      bookKeeping.ancestors.push(ancestor);\n      break;\n    }\n    var root = findRootContainerNode(ancestor);\n    if (!root) {\n      break;\n    }\n    bookKeeping.ancestors.push(ancestor);\n    ancestor = ReactDOMComponentTree_1.getClosestInstanceFromNode(root);\n  } while (ancestor);\n\n  for (var i = 0; i < bookKeeping.ancestors.length; i++) {\n    targetInst = bookKeeping.ancestors[i];\n    ReactDOMEventListener._handleTopLevel(bookKeeping.topLevelType, targetInst, bookKeeping.nativeEvent, getEventTarget_1(bookKeeping.nativeEvent));\n  }\n}\n\nvar ReactDOMEventListener = {\n  _enabled: true,\n  _handleTopLevel: null,\n\n  setHandleTopLevel: function (handleTopLevel) {\n    ReactDOMEventListener._handleTopLevel = handleTopLevel;\n  },\n\n  setEnabled: function (enabled) {\n    ReactDOMEventListener._enabled = !!enabled;\n  },\n\n  isEnabled: function () {\n    return ReactDOMEventListener._enabled;\n  },\n\n  /**\n   * Traps top-level events by using event bubbling.\n   *\n   * @param {string} topLevelType Record from `BrowserEventConstants`.\n   * @param {string} handlerBaseName Event name (e.g. \"click\").\n   * @param {object} element Element on which to attach listener.\n   * @return {?object} An object with a remove function which will forcefully\n   *                  remove the listener.\n   * @internal\n   */\n  trapBubbledEvent: function (topLevelType, handlerBaseName, element) {\n    if (!element) {\n      return null;\n    }\n    return EventListener.listen(element, handlerBaseName, ReactDOMEventListener.dispatchEvent.bind(null, topLevelType));\n  },\n\n  /**\n   * Traps a top-level event by using event capturing.\n   *\n   * @param {string} topLevelType Record from `BrowserEventConstants`.\n   * @param {string} handlerBaseName Event name (e.g. \"click\").\n   * @param {object} element Element on which to attach listener.\n   * @return {?object} An object with a remove function which will forcefully\n   *                  remove the listener.\n   * @internal\n   */\n  trapCapturedEvent: function (topLevelType, handlerBaseName, element) {\n    if (!element) {\n      return null;\n    }\n    return EventListener.capture(element, handlerBaseName, ReactDOMEventListener.dispatchEvent.bind(null, topLevelType));\n  },\n\n  dispatchEvent: function (topLevelType, nativeEvent) {\n    if (!ReactDOMEventListener._enabled) {\n      return;\n    }\n\n    var nativeEventTarget = getEventTarget_1(nativeEvent);\n    var targetInst = ReactDOMComponentTree_1.getClosestInstanceFromNode(nativeEventTarget);\n    if (targetInst !== null && typeof targetInst.tag === 'number' && !ReactFiberTreeReflection.isFiberMounted(targetInst)) {\n      // If we get an event (ex: img onload) before committing that\n      // component's mount, ignore it for now (that is, treat it as if it was an\n      // event on a non-React tree). We might also consider queueing events and\n      // dispatching them after the mount.\n      targetInst = null;\n    }\n\n    var bookKeeping = getTopLevelCallbackBookKeeping(topLevelType, nativeEvent, targetInst);\n\n    try {\n      // Event queue being processed in the same cycle allows\n      // `preventDefault`.\n      ReactGenericBatching_1.batchedUpdates(handleTopLevelImpl, bookKeeping);\n    } finally {\n      releaseTopLevelCallbackBookKeeping(bookKeeping);\n    }\n  }\n};\n\nvar ReactDOMEventListener_1 = ReactDOMEventListener;\n\n/**\n * Accumulates items that must not be null or undefined into the first one. This\n * is used to conserve memory by avoiding array allocations, and thus sacrifices\n * API cleanness. Since `current` can be null before being passed in and not\n * null after this function, make sure to assign it back to `current`:\n *\n * `a = accumulateInto(a, b);`\n *\n * This API should be sparingly used. Try `accumulate` for something cleaner.\n *\n * @return {*|array<*>} An accumulation of items.\n */\n\nfunction accumulateInto(current, next) {\n  !(next != null) ? invariant(false, 'accumulateInto(...): Accumulated items must not be null or undefined.') : void 0;\n\n  if (current == null) {\n    return next;\n  }\n\n  // Both are not empty. Warning: Never call x.concat(y) when you are not\n  // certain that x is an Array (x could be a string with concat method).\n  if (Array.isArray(current)) {\n    if (Array.isArray(next)) {\n      current.push.apply(current, next);\n      return current;\n    }\n    current.push(next);\n    return current;\n  }\n\n  if (Array.isArray(next)) {\n    // A bit too dangerous to mutate `next`.\n    return [current].concat(next);\n  }\n\n  return [current, next];\n}\n\nvar accumulateInto_1 = accumulateInto;\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 * @providesModule forEachAccumulated\n * \n */\n\n/**\n * @param {array} arr an \"accumulation\" of items which is either an Array or\n * a single item. Useful when paired with the `accumulate` module. This is a\n * simple utility that allows us to reason about a collection of items, but\n * handling the case when there is exactly one item (and we do not need to\n * allocate an array).\n * @param {function} cb Callback invoked with each element or a collection.\n * @param {?} [scope] Scope used as `this` in a callback.\n */\n\nfunction forEachAccumulated(arr, cb, scope) {\n  if (Array.isArray(arr)) {\n    arr.forEach(cb, scope);\n  } else if (arr) {\n    cb.call(scope, arr);\n  }\n}\n\nvar forEachAccumulated_1 = forEachAccumulated;\n\n/**\n * Internal queue of events that have accumulated their dispatches and are\n * waiting to have their dispatches executed.\n */\nvar eventQueue = null;\n\n/**\n * Dispatches an event and releases it back into the pool, unless persistent.\n *\n * @param {?object} event Synthetic event to be dispatched.\n * @param {boolean} simulated If the event is simulated (changes exn behavior)\n * @private\n */\nvar executeDispatchesAndRelease = function (event, simulated) {\n  if (event) {\n    EventPluginUtils_1.executeDispatchesInOrder(event, simulated);\n\n    if (!event.isPersistent()) {\n      event.constructor.release(event);\n    }\n  }\n};\nvar executeDispatchesAndReleaseSimulated = function (e) {\n  return executeDispatchesAndRelease(e, true);\n};\nvar executeDispatchesAndReleaseTopLevel = function (e) {\n  return executeDispatchesAndRelease(e, false);\n};\n\nfunction isInteractive(tag) {\n  return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea';\n}\n\nfunction shouldPreventMouseEvent(name, type, props) {\n  switch (name) {\n    case 'onClick':\n    case 'onClickCapture':\n    case 'onDoubleClick':\n    case 'onDoubleClickCapture':\n    case 'onMouseDown':\n    case 'onMouseDownCapture':\n    case 'onMouseMove':\n    case 'onMouseMoveCapture':\n    case 'onMouseUp':\n    case 'onMouseUpCapture':\n      return !!(props.disabled && isInteractive(type));\n    default:\n      return false;\n  }\n}\n\n/**\n * This is a unified interface for event plugins to be installed and configured.\n *\n * Event plugins can implement the following properties:\n *\n *   `extractEvents` {function(string, DOMEventTarget, string, object): *}\n *     Required. When a top-level event is fired, this method is expected to\n *     extract synthetic events that will in turn be queued and dispatched.\n *\n *   `eventTypes` {object}\n *     Optional, plugins that fire events must publish a mapping of registration\n *     names that are used to register listeners. Values of this mapping must\n *     be objects that contain `registrationName` or `phasedRegistrationNames`.\n *\n *   `executeDispatch` {function(object, function, string)}\n *     Optional, allows plugins to override how an event gets dispatched. By\n *     default, the listener is simply invoked.\n *\n * Each plugin that is injected into `EventsPluginHub` is immediately operable.\n *\n * @public\n */\nvar EventPluginHub = {\n  /**\n   * Methods for injecting dependencies.\n   */\n  injection: {\n    /**\n     * @param {array} InjectedEventPluginOrder\n     * @public\n     */\n    injectEventPluginOrder: EventPluginRegistry_1.injectEventPluginOrder,\n\n    /**\n     * @param {object} injectedNamesToPlugins Map from names to plugin modules.\n     */\n    injectEventPluginsByName: EventPluginRegistry_1.injectEventPluginsByName\n  },\n\n  /**\n   * @param {object} inst The instance, which is the source of events.\n   * @param {string} registrationName Name of listener (e.g. `onClick`).\n   * @return {?function} The stored callback.\n   */\n  getListener: function (inst, registrationName) {\n    var listener;\n\n    // TODO: shouldPreventMouseEvent is DOM-specific and definitely should not\n    // live here; needs to be moved to a better place soon\n    if (typeof inst.tag === 'number') {\n      var stateNode = inst.stateNode;\n      if (!stateNode) {\n        // Work in progress (ex: onload events in incremental mode).\n        return null;\n      }\n      var props = EventPluginUtils_1.getFiberCurrentPropsFromNode(stateNode);\n      if (!props) {\n        // Work in progress.\n        return null;\n      }\n      listener = props[registrationName];\n      if (shouldPreventMouseEvent(registrationName, inst.type, props)) {\n        return null;\n      }\n    } else {\n      var currentElement = inst._currentElement;\n      if (typeof currentElement === 'string' || typeof currentElement === 'number') {\n        // Text node, let it bubble through.\n        return null;\n      }\n      if (!inst._rootNodeID) {\n        // If the instance is already unmounted, we have no listeners.\n        return null;\n      }\n      var _props = currentElement.props;\n      listener = _props[registrationName];\n      if (shouldPreventMouseEvent(registrationName, currentElement.type, _props)) {\n        return null;\n      }\n    }\n\n    !(!listener || typeof listener === 'function') ? invariant(false, 'Expected `%s` listener to be a function, instead got a value of `%s` type.', registrationName, typeof listener) : void 0;\n    return listener;\n  },\n\n  /**\n   * Allows registered plugins an opportunity to extract events from top-level\n   * native browser events.\n   *\n   * @return {*} An accumulation of synthetic events.\n   * @internal\n   */\n  extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n    var events;\n    var plugins = EventPluginRegistry_1.plugins;\n    for (var i = 0; i < plugins.length; i++) {\n      // Not every plugin in the ordering may be loaded at runtime.\n      var possiblePlugin = plugins[i];\n      if (possiblePlugin) {\n        var extractedEvents = possiblePlugin.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);\n        if (extractedEvents) {\n          events = accumulateInto_1(events, extractedEvents);\n        }\n      }\n    }\n    return events;\n  },\n\n  /**\n   * Enqueues a synthetic event that should be dispatched when\n   * `processEventQueue` is invoked.\n   *\n   * @param {*} events An accumulation of synthetic events.\n   * @internal\n   */\n  enqueueEvents: function (events) {\n    if (events) {\n      eventQueue = accumulateInto_1(eventQueue, events);\n    }\n  },\n\n  /**\n   * Dispatches all synthetic events on the event queue.\n   *\n   * @internal\n   */\n  processEventQueue: function (simulated) {\n    // Set `eventQueue` to null before processing it so that we can tell if more\n    // events get enqueued while processing.\n    var processingEventQueue = eventQueue;\n    eventQueue = null;\n    if (simulated) {\n      forEachAccumulated_1(processingEventQueue, executeDispatchesAndReleaseSimulated);\n    } else {\n      forEachAccumulated_1(processingEventQueue, executeDispatchesAndReleaseTopLevel);\n    }\n    !!eventQueue ? invariant(false, 'processEventQueue(): Additional events were enqueued while processing an event queue. Support for this has not yet been implemented.') : void 0;\n    // This would be a good time to rethrow if any of the event handlers threw.\n    ReactErrorUtils_1.rethrowCaughtError();\n  }\n};\n\nvar EventPluginHub_1 = EventPluginHub;\n\nfunction runEventQueueInBatch(events) {\n  EventPluginHub_1.enqueueEvents(events);\n  EventPluginHub_1.processEventQueue(false);\n}\n\nvar ReactEventEmitterMixin = {\n  /**\n   * Streams a fired top-level event to `EventPluginHub` where plugins have the\n   * opportunity to create `ReactEvent`s to be dispatched.\n   */\n  handleTopLevel: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n    var events = EventPluginHub_1.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);\n    runEventQueueInBatch(events);\n  }\n};\n\nvar ReactEventEmitterMixin_1 = ReactEventEmitterMixin;\n\nvar useHasFeature;\nif (ExecutionEnvironment.canUseDOM) {\n  useHasFeature = document.implementation && document.implementation.hasFeature &&\n  // always returns true in newer browsers as per the standard.\n  // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n  document.implementation.hasFeature('', '') !== true;\n}\n\n/**\n * Checks if an event is supported in the current execution environment.\n *\n * NOTE: This will not work correctly for non-generic events such as `change`,\n * `reset`, `load`, `error`, and `select`.\n *\n * Borrows from Modernizr.\n *\n * @param {string} eventNameSuffix Event name, e.g. \"click\".\n * @param {?boolean} capture Check if the capture phase is supported.\n * @return {boolean} True if the event is supported.\n * @internal\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\nfunction isEventSupported(eventNameSuffix, capture) {\n  if (!ExecutionEnvironment.canUseDOM || capture && !('addEventListener' in document)) {\n    return false;\n  }\n\n  var eventName = 'on' + eventNameSuffix;\n  var isSupported = eventName in document;\n\n  if (!isSupported) {\n    var element = document.createElement('div');\n    element.setAttribute(eventName, 'return;');\n    isSupported = typeof element[eventName] === 'function';\n  }\n\n  if (!isSupported && useHasFeature && eventNameSuffix === 'wheel') {\n    // This is the only way to test support for the `wheel` event in IE9+.\n    isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n  }\n\n  return isSupported;\n}\n\nvar isEventSupported_1 = isEventSupported;\n\n/**\n * Generate a mapping of standard vendor prefixes using the defined style property and event name.\n *\n * @param {string} styleProp\n * @param {string} eventName\n * @returns {object}\n */\nfunction makePrefixMap(styleProp, eventName) {\n  var prefixes = {};\n\n  prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n  prefixes['Webkit' + styleProp] = 'webkit' + eventName;\n  prefixes['Moz' + styleProp] = 'moz' + eventName;\n  prefixes['ms' + styleProp] = 'MS' + eventName;\n  prefixes['O' + styleProp] = 'o' + eventName.toLowerCase();\n\n  return prefixes;\n}\n\n/**\n * A list of event names to a configurable list of vendor prefixes.\n */\nvar vendorPrefixes = {\n  animationend: makePrefixMap('Animation', 'AnimationEnd'),\n  animationiteration: makePrefixMap('Animation', 'AnimationIteration'),\n  animationstart: makePrefixMap('Animation', 'AnimationStart'),\n  transitionend: makePrefixMap('Transition', 'TransitionEnd')\n};\n\n/**\n * Event names that have already been detected and prefixed (if applicable).\n */\nvar prefixedEventNames = {};\n\n/**\n * Element to check for prefixes on.\n */\nvar style = {};\n\n/**\n * Bootstrap if a DOM exists.\n */\nif (ExecutionEnvironment.canUseDOM) {\n  style = document.createElement('div').style;\n\n  // On some platforms, in particular some releases of Android 4.x,\n  // the un-prefixed \"animation\" and \"transition\" properties are defined on the\n  // style object but the events that fire will still be prefixed, so we need\n  // to check if the un-prefixed events are usable, and if not remove them from the map.\n  if (!('AnimationEvent' in window)) {\n    delete vendorPrefixes.animationend.animation;\n    delete vendorPrefixes.animationiteration.animation;\n    delete vendorPrefixes.animationstart.animation;\n  }\n\n  // Same as above\n  if (!('TransitionEvent' in window)) {\n    delete vendorPrefixes.transitionend.transition;\n  }\n}\n\n/**\n * Attempts to determine the correct vendor prefixed event name.\n *\n * @param {string} eventName\n * @returns {string}\n */\nfunction getVendorPrefixedEventName(eventName) {\n  if (prefixedEventNames[eventName]) {\n    return prefixedEventNames[eventName];\n  } else if (!vendorPrefixes[eventName]) {\n    return eventName;\n  }\n\n  var prefixMap = vendorPrefixes[eventName];\n\n  for (var styleProp in prefixMap) {\n    if (prefixMap.hasOwnProperty(styleProp) && styleProp in style) {\n      return prefixedEventNames[eventName] = prefixMap[styleProp];\n    }\n  }\n\n  return '';\n}\n\nvar getVendorPrefixedEventName_1 = getVendorPrefixedEventName;\n\n/**\n * Types of raw signals from the browser caught at the top level.\n *\n * For events like 'submit' which don't consistently bubble (which we\n * trap at a lower node than `document`), binding at `document` would\n * cause duplicate events so we don't include them here.\n */\nvar topLevelTypes$1 = {\n  topAbort: 'abort',\n  topAnimationEnd: getVendorPrefixedEventName_1('animationend') || 'animationend',\n  topAnimationIteration: getVendorPrefixedEventName_1('animationiteration') || 'animationiteration',\n  topAnimationStart: getVendorPrefixedEventName_1('animationstart') || 'animationstart',\n  topBlur: 'blur',\n  topCancel: 'cancel',\n  topCanPlay: 'canplay',\n  topCanPlayThrough: 'canplaythrough',\n  topChange: 'change',\n  topClick: 'click',\n  topClose: 'close',\n  topCompositionEnd: 'compositionend',\n  topCompositionStart: 'compositionstart',\n  topCompositionUpdate: 'compositionupdate',\n  topContextMenu: 'contextmenu',\n  topCopy: 'copy',\n  topCut: 'cut',\n  topDoubleClick: 'dblclick',\n  topDrag: 'drag',\n  topDragEnd: 'dragend',\n  topDragEnter: 'dragenter',\n  topDragExit: 'dragexit',\n  topDragLeave: 'dragleave',\n  topDragOver: 'dragover',\n  topDragStart: 'dragstart',\n  topDrop: 'drop',\n  topDurationChange: 'durationchange',\n  topEmptied: 'emptied',\n  topEncrypted: 'encrypted',\n  topEnded: 'ended',\n  topError: 'error',\n  topFocus: 'focus',\n  topInput: 'input',\n  topKeyDown: 'keydown',\n  topKeyPress: 'keypress',\n  topKeyUp: 'keyup',\n  topLoadedData: 'loadeddata',\n  topLoad: 'load',\n  topLoadedMetadata: 'loadedmetadata',\n  topLoadStart: 'loadstart',\n  topMouseDown: 'mousedown',\n  topMouseMove: 'mousemove',\n  topMouseOut: 'mouseout',\n  topMouseOver: 'mouseover',\n  topMouseUp: 'mouseup',\n  topPaste: 'paste',\n  topPause: 'pause',\n  topPlay: 'play',\n  topPlaying: 'playing',\n  topProgress: 'progress',\n  topRateChange: 'ratechange',\n  topScroll: 'scroll',\n  topSeeked: 'seeked',\n  topSeeking: 'seeking',\n  topSelectionChange: 'selectionchange',\n  topStalled: 'stalled',\n  topSuspend: 'suspend',\n  topTextInput: 'textInput',\n  topTimeUpdate: 'timeupdate',\n  topToggle: 'toggle',\n  topTouchCancel: 'touchcancel',\n  topTouchEnd: 'touchend',\n  topTouchMove: 'touchmove',\n  topTouchStart: 'touchstart',\n  topTransitionEnd: getVendorPrefixedEventName_1('transitionend') || 'transitionend',\n  topVolumeChange: 'volumechange',\n  topWaiting: 'waiting',\n  topWheel: 'wheel'\n};\n\nvar BrowserEventConstants = {\n  topLevelTypes: topLevelTypes$1\n};\n\nvar BrowserEventConstants_1 = BrowserEventConstants;\n\nvar topLevelTypes = BrowserEventConstants_1.topLevelTypes;\n\n/**\n * Summary of `ReactBrowserEventEmitter` event handling:\n *\n *  - Top-level delegation is used to trap most native browser events. This\n *    may only occur in the main thread and is the responsibility of\n *    ReactDOMEventListener, which is injected and can therefore support\n *    pluggable event sources. This is the only work that occurs in the main\n *    thread.\n *\n *  - We normalize and de-duplicate events to account for browser quirks. This\n *    may be done in the worker thread.\n *\n *  - Forward these native events (with the associated top-level type used to\n *    trap it) to `EventPluginHub`, which in turn will ask plugins if they want\n *    to extract any synthetic events.\n *\n *  - The `EventPluginHub` will then process each event by annotating them with\n *    \"dispatches\", a sequence of listeners and IDs that care about that event.\n *\n *  - The `EventPluginHub` then dispatches the events.\n *\n * Overview of React and the event system:\n *\n * +------------+    .\n * |    DOM     |    .\n * +------------+    .\n *       |           .\n *       v           .\n * +------------+    .\n * | ReactEvent |    .\n * |  Listener  |    .\n * +------------+    .                         +-----------+\n *       |           .               +--------+|SimpleEvent|\n *       |           .               |         |Plugin     |\n * +-----|------+    .               v         +-----------+\n * |     |      |    .    +--------------+                    +------------+\n * |     +-----------.--->|EventPluginHub|                    |    Event   |\n * |            |    .    |              |     +-----------+  | Propagators|\n * | ReactEvent |    .    |              |     |TapEvent   |  |------------|\n * |  Emitter   |    .    |              |<---+|Plugin     |  |other plugin|\n * |            |    .    |              |     +-----------+  |  utilities |\n * |     +-----------.--->|              |                    +------------+\n * |     |      |    .    +--------------+\n * +-----|------+    .                ^        +-----------+\n *       |           .                |        |Enter/Leave|\n *       +           .                +-------+|Plugin     |\n * +-------------+   .                         +-----------+\n * | application |   .\n * |-------------|   .\n * |             |   .\n * |             |   .\n * +-------------+   .\n *                   .\n *    React Core     .  General Purpose Event Plugin System\n */\n\nvar alreadyListeningTo = {};\nvar reactTopListenersCounter = 0;\n\n/**\n * To ensure no conflicts with other potential React instances on the page\n */\nvar topListenersIDKey = '_reactListenersID' + ('' + Math.random()).slice(2);\n\nfunction getListeningForDocument(mountAt) {\n  // In IE8, `mountAt` is a host object and doesn't have `hasOwnProperty`\n  // directly.\n  if (!Object.prototype.hasOwnProperty.call(mountAt, topListenersIDKey)) {\n    mountAt[topListenersIDKey] = reactTopListenersCounter++;\n    alreadyListeningTo[mountAt[topListenersIDKey]] = {};\n  }\n  return alreadyListeningTo[mountAt[topListenersIDKey]];\n}\n\nvar ReactBrowserEventEmitter = _assign({}, ReactEventEmitterMixin_1, {\n  /**\n   * Sets whether or not any created callbacks should be enabled.\n   *\n   * @param {boolean} enabled True if callbacks should be enabled.\n   */\n  setEnabled: function (enabled) {\n    if (ReactDOMEventListener_1) {\n      ReactDOMEventListener_1.setEnabled(enabled);\n    }\n  },\n\n  /**\n   * @return {boolean} True if callbacks are enabled.\n   */\n  isEnabled: function () {\n    return !!(ReactDOMEventListener_1 && ReactDOMEventListener_1.isEnabled());\n  },\n\n  /**\n   * We listen for bubbled touch events on the document object.\n   *\n   * Firefox v8.01 (and possibly others) exhibited strange behavior when\n   * mounting `onmousemove` events at some node that was not the document\n   * element. The symptoms were that if your mouse is not moving over something\n   * contained within that mount point (for example on the background) the\n   * top-level listeners for `onmousemove` won't be called. However, if you\n   * register the `mousemove` on the document object, then it will of course\n   * catch all `mousemove`s. This along with iOS quirks, justifies restricting\n   * top-level listeners to the document object only, at least for these\n   * movement types of events and possibly all events.\n   *\n   * @see http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n   *\n   * Also, `keyup`/`keypress`/`keydown` do not bubble to the window on IE, but\n   * they bubble to document.\n   *\n   * @param {string} registrationName Name of listener (e.g. `onClick`).\n   * @param {object} contentDocumentHandle Document which owns the container\n   */\n  listenTo: function (registrationName, contentDocumentHandle) {\n    var mountAt = contentDocumentHandle;\n    var isListening = getListeningForDocument(mountAt);\n    var dependencies = EventPluginRegistry_1.registrationNameDependencies[registrationName];\n\n    for (var i = 0; i < dependencies.length; i++) {\n      var dependency = dependencies[i];\n      if (!(isListening.hasOwnProperty(dependency) && isListening[dependency])) {\n        if (dependency === 'topWheel') {\n          if (isEventSupported_1('wheel')) {\n            ReactDOMEventListener_1.trapBubbledEvent('topWheel', 'wheel', mountAt);\n          } else if (isEventSupported_1('mousewheel')) {\n            ReactDOMEventListener_1.trapBubbledEvent('topWheel', 'mousewheel', mountAt);\n          } else {\n            // Firefox needs to capture a different mouse scroll event.\n            // @see http://www.quirksmode.org/dom/events/tests/scroll.html\n            ReactDOMEventListener_1.trapBubbledEvent('topWheel', 'DOMMouseScroll', mountAt);\n          }\n        } else if (dependency === 'topScroll') {\n          ReactDOMEventListener_1.trapCapturedEvent('topScroll', 'scroll', mountAt);\n        } else if (dependency === 'topFocus' || dependency === 'topBlur') {\n          ReactDOMEventListener_1.trapCapturedEvent('topFocus', 'focus', mountAt);\n          ReactDOMEventListener_1.trapCapturedEvent('topBlur', 'blur', mountAt);\n\n          // to make sure blur and focus event listeners are only attached once\n          isListening.topBlur = true;\n          isListening.topFocus = true;\n        } else if (dependency === 'topCancel') {\n          if (isEventSupported_1('cancel', true)) {\n            ReactDOMEventListener_1.trapCapturedEvent('topCancel', 'cancel', mountAt);\n          }\n          isListening.topCancel = true;\n        } else if (dependency === 'topClose') {\n          if (isEventSupported_1('close', true)) {\n            ReactDOMEventListener_1.trapCapturedEvent('topClose', 'close', mountAt);\n          }\n          isListening.topClose = true;\n        } else if (topLevelTypes.hasOwnProperty(dependency)) {\n          ReactDOMEventListener_1.trapBubbledEvent(dependency, topLevelTypes[dependency], mountAt);\n        }\n\n        isListening[dependency] = true;\n      }\n    }\n  },\n\n  isListeningToAllDependencies: function (registrationName, mountAt) {\n    var isListening = getListeningForDocument(mountAt);\n    var dependencies = EventPluginRegistry_1.registrationNameDependencies[registrationName];\n    for (var i = 0; i < dependencies.length; i++) {\n      var dependency = dependencies[i];\n      if (!(isListening.hasOwnProperty(dependency) && isListening[dependency])) {\n        return false;\n      }\n    }\n    return true;\n  },\n\n  trapBubbledEvent: function (topLevelType, handlerBaseName, handle) {\n    return ReactDOMEventListener_1.trapBubbledEvent(topLevelType, handlerBaseName, handle);\n  },\n\n  trapCapturedEvent: function (topLevelType, handlerBaseName, handle) {\n    return ReactDOMEventListener_1.trapCapturedEvent(topLevelType, handlerBaseName, handle);\n  }\n});\n\nvar ReactBrowserEventEmitter_1 = ReactBrowserEventEmitter;\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 * @providesModule ReactDOMFeatureFlags\n */\n\nvar ReactDOMFeatureFlags = {\n  fiberAsyncScheduling: false,\n  useFiber: true\n};\n\nvar ReactDOMFeatureFlags_1 = ReactDOMFeatureFlags;\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 * @providesModule CSSProperty\n */\n\n/**\n * CSS properties which accept numbers but are not in units of \"px\".\n */\n\nvar isUnitlessNumber = {\n  animationIterationCount: true,\n  borderImageOutset: true,\n  borderImageSlice: true,\n  borderImageWidth: true,\n  boxFlex: true,\n  boxFlexGroup: true,\n  boxOrdinalGroup: true,\n  columnCount: true,\n  columns: true,\n  flex: true,\n  flexGrow: true,\n  flexPositive: true,\n  flexShrink: true,\n  flexNegative: true,\n  flexOrder: true,\n  gridRow: true,\n  gridRowEnd: true,\n  gridRowSpan: true,\n  gridRowStart: true,\n  gridColumn: true,\n  gridColumnEnd: true,\n  gridColumnSpan: true,\n  gridColumnStart: true,\n  fontWeight: true,\n  lineClamp: true,\n  lineHeight: true,\n  opacity: true,\n  order: true,\n  orphans: true,\n  tabSize: true,\n  widows: true,\n  zIndex: true,\n  zoom: true,\n\n  // SVG-related properties\n  fillOpacity: true,\n  floodOpacity: true,\n  stopOpacity: true,\n  strokeDasharray: true,\n  strokeDashoffset: true,\n  strokeMiterlimit: true,\n  strokeOpacity: true,\n  strokeWidth: true\n};\n\n/**\n * @param {string} prefix vendor-specific prefix, eg: Webkit\n * @param {string} key style name, eg: transitionDuration\n * @return {string} style name prefixed with `prefix`, properly camelCased, eg:\n * WebkitTransitionDuration\n */\nfunction prefixKey(prefix, key) {\n  return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n}\n\n/**\n * Support style names that may come passed in prefixed by adding permutations\n * of vendor prefixes.\n */\nvar prefixes = ['Webkit', 'ms', 'Moz', 'O'];\n\n// Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an\n// infinite loop, because it iterates over the newly added props too.\nObject.keys(isUnitlessNumber).forEach(function (prop) {\n  prefixes.forEach(function (prefix) {\n    isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];\n  });\n});\n\n/**\n * Most style properties can be unset by doing .style[prop] = '' but IE8\n * doesn't like doing that with shorthand properties so for the properties that\n * IE8 breaks on, which are listed here, we instead unset each of the\n * individual properties. See http://bugs.jquery.com/ticket/12385.\n * The 4-value 'clock' properties like margin, padding, border-width seem to\n * behave without any problems. Curiously, list-style works too without any\n * special prodding.\n */\nvar shorthandPropertyExpansions = {\n  background: {\n    backgroundAttachment: true,\n    backgroundColor: true,\n    backgroundImage: true,\n    backgroundPositionX: true,\n    backgroundPositionY: true,\n    backgroundRepeat: true\n  },\n  backgroundPosition: {\n    backgroundPositionX: true,\n    backgroundPositionY: true\n  },\n  border: {\n    borderWidth: true,\n    borderStyle: true,\n    borderColor: true\n  },\n  borderBottom: {\n    borderBottomWidth: true,\n    borderBottomStyle: true,\n    borderBottomColor: true\n  },\n  borderLeft: {\n    borderLeftWidth: true,\n    borderLeftStyle: true,\n    borderLeftColor: true\n  },\n  borderRight: {\n    borderRightWidth: true,\n    borderRightStyle: true,\n    borderRightColor: true\n  },\n  borderTop: {\n    borderTopWidth: true,\n    borderTopStyle: true,\n    borderTopColor: true\n  },\n  font: {\n    fontStyle: true,\n    fontVariant: true,\n    fontWeight: true,\n    fontSize: true,\n    lineHeight: true,\n    fontFamily: true\n  },\n  outline: {\n    outlineWidth: true,\n    outlineStyle: true,\n    outlineColor: true\n  }\n};\n\nvar CSSProperty = {\n  isUnitlessNumber: isUnitlessNumber,\n  shorthandPropertyExpansions: shorthandPropertyExpansions\n};\n\nvar CSSProperty_1 = CSSProperty;\n\nvar isUnitlessNumber$1 = CSSProperty_1.isUnitlessNumber;\n\n/**\n * Convert a value into the proper css writable value. The style name `name`\n * should be logical (no hyphens), as specified\n * in `CSSProperty.isUnitlessNumber`.\n *\n * @param {string} name CSS property name such as `topMargin`.\n * @param {*} value CSS property value such as `10px`.\n * @return {string} Normalized style value with dimensions applied.\n */\nfunction dangerousStyleValue(name, value, isCustomProperty) {\n  // Note that we've removed escapeTextForBrowser() calls here since the\n  // whole string will be escaped when the attribute is injected into\n  // the markup. If you provide unsafe user data here they can inject\n  // arbitrary CSS which may be problematic (I couldn't repro this):\n  // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet\n  // http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/\n  // This is not an XSS hole but instead a potential CSS injection issue\n  // which has lead to a greater discussion about how we're going to\n  // trust URLs moving forward. See #2115901\n\n  var isEmpty = value == null || typeof value === 'boolean' || value === '';\n  if (isEmpty) {\n    return '';\n  }\n\n  if (!isCustomProperty && typeof value === 'number' && value !== 0 && !(isUnitlessNumber$1.hasOwnProperty(name) && isUnitlessNumber$1[name])) {\n    return value + 'px'; // Presumes implicit 'px' suffix for unitless numbers\n  }\n\n  return ('' + value).trim();\n}\n\nvar dangerousStyleValue_1 = dangerousStyleValue;\n\n/**\n * Copyright (c) 2016-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 * @providesModule describeComponentFrame\n */\n\nvar describeComponentFrame = function (name, source, ownerName) {\n  return '\\n    in ' + (name || 'Unknown') + (source ? ' (at ' + source.fileName.replace(/^.*[\\\\\\/]/, '') + ':' + source.lineNumber + ')' : ownerName ? ' (created by ' + ownerName + ')' : '');\n};\n\nvar IndeterminateComponent = ReactTypeOfWork.IndeterminateComponent;\nvar FunctionalComponent = ReactTypeOfWork.FunctionalComponent;\nvar ClassComponent$1 = ReactTypeOfWork.ClassComponent;\nvar HostComponent$2 = ReactTypeOfWork.HostComponent;\n\n\n\n\nfunction describeFiber(fiber) {\n  switch (fiber.tag) {\n    case IndeterminateComponent:\n    case FunctionalComponent:\n    case ClassComponent$1:\n    case HostComponent$2:\n      var owner = fiber._debugOwner;\n      var source = fiber._debugSource;\n      var name = getComponentName_1(fiber);\n      var ownerName = null;\n      if (owner) {\n        ownerName = getComponentName_1(owner);\n      }\n      return describeComponentFrame(name, source, ownerName);\n    default:\n      return '';\n  }\n}\n\n// This function can only be called with a work-in-progress fiber and\n// only during begin or complete phase. Do not call it under any other\n// circumstances.\nfunction getStackAddendumByWorkInProgressFiber$1(workInProgress) {\n  var info = '';\n  var node = workInProgress;\n  do {\n    info += describeFiber(node);\n    // Otherwise this return pointer might point to the wrong tree:\n    node = node['return'];\n  } while (node);\n  return info;\n}\n\nvar ReactFiberComponentTreeHook = {\n  getStackAddendumByWorkInProgressFiber: getStackAddendumByWorkInProgressFiber$1\n};\n\nvar ReactDebugCurrentFrame = ReactGlobalSharedState_1.ReactDebugCurrentFrame;\n\n{\n  var getComponentName$3 = getComponentName_1;\n\n  var _require2$2 = ReactFiberComponentTreeHook,\n      getStackAddendumByWorkInProgressFiber = _require2$2.getStackAddendumByWorkInProgressFiber;\n}\n\nfunction getCurrentFiberOwnerName$2() {\n  {\n    var fiber = ReactDebugCurrentFiber.current;\n    if (fiber === null) {\n      return null;\n    }\n    if (fiber._debugOwner != null) {\n      return getComponentName$3(fiber._debugOwner);\n    }\n  }\n  return null;\n}\n\nfunction getCurrentFiberStackAddendum$1() {\n  {\n    var fiber = ReactDebugCurrentFiber.current;\n    if (fiber === null) {\n      return null;\n    }\n    // Safe because if current fiber exists, we are reconciling,\n    // and it is guaranteed to be the work-in-progress version.\n    return getStackAddendumByWorkInProgressFiber(fiber);\n  }\n  return null;\n}\n\nfunction resetCurrentFiber() {\n  ReactDebugCurrentFrame.getCurrentStack = null;\n  ReactDebugCurrentFiber.current = null;\n  ReactDebugCurrentFiber.phase = null;\n}\n\nfunction setCurrentFiber(fiber, phase) {\n  ReactDebugCurrentFrame.getCurrentStack = getCurrentFiberStackAddendum$1;\n  ReactDebugCurrentFiber.current = fiber;\n  ReactDebugCurrentFiber.phase = phase;\n}\n\nvar ReactDebugCurrentFiber = {\n  current: null,\n  phase: null,\n  resetCurrentFiber: resetCurrentFiber,\n  setCurrentFiber: setCurrentFiber,\n  getCurrentFiberOwnerName: getCurrentFiberOwnerName$2,\n  getCurrentFiberStackAddendum: getCurrentFiberStackAddendum$1\n};\n\nvar ReactDebugCurrentFiber_1 = ReactDebugCurrentFiber;\n\nvar warnValidStyle$1 = emptyFunction;\n\n{\n  var camelizeStyleName$1 = camelizeStyleName;\n  var getComponentName$2 = getComponentName_1;\n  var warning$4 = require$$0;\n\n  var _require$3 = ReactDebugCurrentFiber_1,\n      getCurrentFiberOwnerName$1 = _require$3.getCurrentFiberOwnerName;\n\n  // 'msTransform' is correct, but the other prefixes should be capitalized\n\n\n  var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/;\n\n  // style values shouldn't contain a semicolon\n  var badStyleValueWithSemicolonPattern = /;\\s*$/;\n\n  var warnedStyleNames = {};\n  var warnedStyleValues = {};\n  var warnedForNaNValue = false;\n  var warnedForInfinityValue = false;\n\n  var warnHyphenatedStyleName = function (name, owner) {\n    if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n      return;\n    }\n\n    warnedStyleNames[name] = true;\n    warning$4(false, 'Unsupported style property %s. Did you mean %s?%s', name, camelizeStyleName$1(name), checkRenderMessage(owner));\n  };\n\n  var warnBadVendoredStyleName = function (name, owner) {\n    if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n      return;\n    }\n\n    warnedStyleNames[name] = true;\n    warning$4(false, 'Unsupported vendor-prefixed style property %s. Did you mean %s?%s', name, name.charAt(0).toUpperCase() + name.slice(1), checkRenderMessage(owner));\n  };\n\n  var warnStyleValueWithSemicolon = function (name, value, owner) {\n    if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) {\n      return;\n    }\n\n    warnedStyleValues[value] = true;\n    warning$4(false, \"Style property values shouldn't contain a semicolon.%s \" + 'Try \"%s: %s\" instead.', checkRenderMessage(owner), name, value.replace(badStyleValueWithSemicolonPattern, ''));\n  };\n\n  var warnStyleValueIsNaN = function (name, value, owner) {\n    if (warnedForNaNValue) {\n      return;\n    }\n\n    warnedForNaNValue = true;\n    warning$4(false, '`NaN` is an invalid value for the `%s` css style property.%s', name, checkRenderMessage(owner));\n  };\n\n  var warnStyleValueIsInfinity = function (name, value, owner) {\n    if (warnedForInfinityValue) {\n      return;\n    }\n\n    warnedForInfinityValue = true;\n    warning$4(false, '`Infinity` is an invalid value for the `%s` css style property.%s', name, checkRenderMessage(owner));\n  };\n\n  var checkRenderMessage = function (owner) {\n    var ownerName;\n    if (owner != null) {\n      // Stack passes the owner manually all the way to CSSPropertyOperations.\n      ownerName = getComponentName$2(owner);\n    } else {\n      // Fiber doesn't pass it but uses ReactDebugCurrentFiber to track it.\n      // It is only enabled in development and tracks host components too.\n      ownerName = getCurrentFiberOwnerName$1();\n      // TODO: also report the stack.\n    }\n    if (ownerName) {\n      return '\\n\\nCheck the render method of `' + ownerName + '`.';\n    }\n    return '';\n  };\n\n  warnValidStyle$1 = function (name, value, component) {\n    var owner;\n    if (component) {\n      // TODO: this only works with Stack. Seems like we need to add unit tests?\n      owner = component._currentElement._owner;\n    }\n    if (name.indexOf('-') > -1) {\n      warnHyphenatedStyleName(name, owner);\n    } else if (badVendoredStyleNamePattern.test(name)) {\n      warnBadVendoredStyleName(name, owner);\n    } else if (badStyleValueWithSemicolonPattern.test(value)) {\n      warnStyleValueWithSemicolon(name, value, owner);\n    }\n\n    if (typeof value === 'number') {\n      if (isNaN(value)) {\n        warnStyleValueIsNaN(name, value, owner);\n      } else if (!isFinite(value)) {\n        warnStyleValueIsInfinity(name, value, owner);\n      }\n    }\n  };\n}\n\nvar warnValidStyle_1 = warnValidStyle$1;\n\n{\n  var hyphenateStyleName$1 = hyphenateStyleName;\n  var warnValidStyle = warnValidStyle_1;\n}\n\nvar hasShorthandPropertyBug = false;\nif (ExecutionEnvironment.canUseDOM) {\n  var tempStyle = document.createElement('div').style;\n  try {\n    // IE8 throws \"Invalid argument.\" if resetting shorthand style properties.\n    tempStyle.font = '';\n  } catch (e) {\n    hasShorthandPropertyBug = true;\n  }\n}\n\n/**\n * Operations for dealing with CSS properties.\n */\nvar CSSPropertyOperations = {\n  /**\n   * This creates a string that is expected to be equivalent to the style\n   * attribute generated by server-side rendering. It by-passes warnings and\n   * security checks so it's not safe to use this value for anything other than\n   * comparison. It is only used in DEV for SSR validation.\n   */\n  createDangerousStringForStyles: function (styles) {\n    {\n      var serialized = '';\n      var delimiter = '';\n      for (var styleName in styles) {\n        if (!styles.hasOwnProperty(styleName)) {\n          continue;\n        }\n        var styleValue = styles[styleName];\n        if (styleValue != null) {\n          var isCustomProperty = styleName.indexOf('--') === 0;\n          serialized += delimiter + hyphenateStyleName$1(styleName) + ':';\n          serialized += dangerousStyleValue_1(styleName, styleValue, isCustomProperty);\n\n          delimiter = ';';\n        }\n      }\n      return serialized || null;\n    }\n  },\n\n  /**\n   * Sets the value for multiple styles on a node.  If a value is specified as\n   * '' (empty string), the corresponding style property will be unset.\n   *\n   * @param {DOMElement} node\n   * @param {object} styles\n   * @param {ReactDOMComponent} component\n   */\n  setValueForStyles: function (node, styles, component) {\n    var style = node.style;\n    for (var styleName in styles) {\n      if (!styles.hasOwnProperty(styleName)) {\n        continue;\n      }\n      var isCustomProperty = styleName.indexOf('--') === 0;\n      {\n        if (!isCustomProperty) {\n          warnValidStyle(styleName, styles[styleName], component);\n        }\n      }\n      var styleValue = dangerousStyleValue_1(styleName, styles[styleName], isCustomProperty);\n      if (styleName === 'float') {\n        styleName = 'cssFloat';\n      }\n      if (isCustomProperty) {\n        style.setProperty(styleName, styleValue);\n      } else if (styleValue) {\n        style[styleName] = styleValue;\n      } else {\n        var expansion = hasShorthandPropertyBug && CSSProperty_1.shorthandPropertyExpansions[styleName];\n        if (expansion) {\n          // Shorthand property that IE8 won't like unsetting, so unset each\n          // component to placate it\n          for (var individualStyleName in expansion) {\n            style[individualStyleName] = '';\n          }\n        } else {\n          style[styleName] = '';\n        }\n      }\n    }\n  }\n};\n\nvar CSSPropertyOperations_1 = CSSPropertyOperations;\n\nvar ReactInvalidSetStateWarningHook = {};\n\n{\n  var warning$7 = require$$0;\n  var processingChildContext = false;\n\n  var warnInvalidSetState = function () {\n    warning$7(!processingChildContext, 'setState(...): Cannot call setState() inside getChildContext()');\n  };\n\n  ReactInvalidSetStateWarningHook = {\n    onBeginProcessingChildContext: function () {\n      processingChildContext = true;\n    },\n    onEndProcessingChildContext: function () {\n      processingChildContext = false;\n    },\n    onSetState: function () {\n      warnInvalidSetState();\n    }\n  };\n}\n\nvar ReactInvalidSetStateWarningHook_1 = ReactInvalidSetStateWarningHook;\n\n/**\n * Copyright (c) 2016-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 * @providesModule ReactHostOperationHistoryHook\n * \n */\n\n// Trust the developer to only use this with a true check\nvar ReactHostOperationHistoryHook = null;\n\n{\n  var history = [];\n\n  ReactHostOperationHistoryHook = {\n    onHostOperation: function (operation) {\n      history.push(operation);\n    },\n    clearHistory: function () {\n      if (ReactHostOperationHistoryHook._preventClearing) {\n        // Should only be used for tests.\n        return;\n      }\n\n      history = [];\n    },\n    getHistory: function () {\n      return history;\n    }\n  };\n}\n\nvar ReactHostOperationHistoryHook_1 = ReactHostOperationHistoryHook;\n\nvar ReactComponentTreeHook = ReactGlobalSharedState_1.ReactComponentTreeHook;\n\n\n\n{\n  var warning$6 = require$$0;\n}\n\n// Trust the developer to only use this with a true check\nvar ReactDebugTool$1 = null;\n\n{\n  var hooks = [];\n  var didHookThrowForEvent = {};\n\n  var callHook = function (event, fn, context, arg1, arg2, arg3, arg4, arg5) {\n    try {\n      fn.call(context, arg1, arg2, arg3, arg4, arg5);\n    } catch (e) {\n      warning$6(didHookThrowForEvent[event], 'Exception thrown by hook while handling %s: %s', event, e + '\\n' + e.stack);\n      didHookThrowForEvent[event] = true;\n    }\n  };\n\n  var emitEvent = function (event, arg1, arg2, arg3, arg4, arg5) {\n    for (var i = 0; i < hooks.length; i++) {\n      var hook = hooks[i];\n      var fn = hook[event];\n      if (fn) {\n        callHook(event, fn, hook, arg1, arg2, arg3, arg4, arg5);\n      }\n    }\n  };\n\n  var isProfiling = false;\n  var flushHistory = [];\n  var lifeCycleTimerStack = [];\n  var currentFlushNesting = 0;\n  var currentFlushMeasurements = [];\n  var currentFlushStartTime = 0;\n  var currentTimerDebugID = null;\n  var currentTimerStartTime = 0;\n  var currentTimerNestedFlushDuration = 0;\n  var currentTimerType = null;\n\n  var lifeCycleTimerHasWarned = false;\n\n  var clearHistory = function () {\n    ReactComponentTreeHook.purgeUnmountedComponents();\n    ReactHostOperationHistoryHook_1.clearHistory();\n  };\n\n  var getTreeSnapshot = function (registeredIDs) {\n    return registeredIDs.reduce(function (tree, id) {\n      var ownerID = ReactComponentTreeHook.getOwnerID(id);\n      var parentID = ReactComponentTreeHook.getParentID(id);\n      tree[id] = {\n        displayName: ReactComponentTreeHook.getDisplayName(id),\n        text: ReactComponentTreeHook.getText(id),\n        updateCount: ReactComponentTreeHook.getUpdateCount(id),\n        childIDs: ReactComponentTreeHook.getChildIDs(id),\n        // Text nodes don't have owners but this is close enough.\n        ownerID: ownerID || parentID && ReactComponentTreeHook.getOwnerID(parentID) || 0,\n        parentID: parentID\n      };\n      return tree;\n    }, {});\n  };\n\n  var resetMeasurements = function () {\n    var previousStartTime = currentFlushStartTime;\n    var previousMeasurements = currentFlushMeasurements;\n    var previousOperations = ReactHostOperationHistoryHook_1.getHistory();\n\n    if (currentFlushNesting === 0) {\n      currentFlushStartTime = 0;\n      currentFlushMeasurements = [];\n      clearHistory();\n      return;\n    }\n\n    if (previousMeasurements.length || previousOperations.length) {\n      var registeredIDs = ReactComponentTreeHook.getRegisteredIDs();\n      flushHistory.push({\n        duration: performanceNow() - previousStartTime,\n        measurements: previousMeasurements || [],\n        operations: previousOperations || [],\n        treeSnapshot: getTreeSnapshot(registeredIDs)\n      });\n    }\n\n    clearHistory();\n    currentFlushStartTime = performanceNow();\n    currentFlushMeasurements = [];\n  };\n\n  var checkDebugID = function (debugID) {\n    var allowRoot = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n    if (allowRoot && debugID === 0) {\n      return;\n    }\n    if (!debugID) {\n      warning$6(false, 'ReactDebugTool: debugID may not be empty.');\n    }\n  };\n\n  var beginLifeCycleTimer = function (debugID, timerType) {\n    if (currentFlushNesting === 0) {\n      return;\n    }\n    if (currentTimerType && !lifeCycleTimerHasWarned) {\n      warning$6(false, 'There is an internal error in the React performance measurement code.' + '\\n\\nDid not expect %s timer to start while %s timer is still in ' + 'progress for %s instance.', timerType, currentTimerType || 'no', debugID === currentTimerDebugID ? 'the same' : 'another');\n      lifeCycleTimerHasWarned = true;\n    }\n    currentTimerStartTime = performanceNow();\n    currentTimerNestedFlushDuration = 0;\n    currentTimerDebugID = debugID;\n    currentTimerType = timerType;\n  };\n\n  var endLifeCycleTimer = function (debugID, timerType) {\n    if (currentFlushNesting === 0) {\n      return;\n    }\n    if (currentTimerType !== timerType && !lifeCycleTimerHasWarned) {\n      warning$6(false, 'There is an internal error in the React performance measurement code. ' + 'We did not expect %s timer to stop while %s timer is still in ' + 'progress for %s instance. Please report this as a bug in React.', timerType, currentTimerType || 'no', debugID === currentTimerDebugID ? 'the same' : 'another');\n      lifeCycleTimerHasWarned = true;\n    }\n    if (isProfiling) {\n      currentFlushMeasurements.push({\n        timerType: timerType,\n        instanceID: debugID,\n        duration: performanceNow() - currentTimerStartTime - currentTimerNestedFlushDuration\n      });\n    }\n    currentTimerStartTime = 0;\n    currentTimerNestedFlushDuration = 0;\n    currentTimerDebugID = null;\n    currentTimerType = null;\n  };\n\n  var pauseCurrentLifeCycleTimer = function () {\n    var currentTimer = {\n      startTime: currentTimerStartTime,\n      nestedFlushStartTime: performanceNow(),\n      debugID: currentTimerDebugID,\n      timerType: currentTimerType\n    };\n    lifeCycleTimerStack.push(currentTimer);\n    currentTimerStartTime = 0;\n    currentTimerNestedFlushDuration = 0;\n    currentTimerDebugID = null;\n    currentTimerType = null;\n  };\n\n  var resumeCurrentLifeCycleTimer = function () {\n    var _lifeCycleTimerStack$ = lifeCycleTimerStack.pop(),\n        startTime = _lifeCycleTimerStack$.startTime,\n        nestedFlushStartTime = _lifeCycleTimerStack$.nestedFlushStartTime,\n        debugID = _lifeCycleTimerStack$.debugID,\n        timerType = _lifeCycleTimerStack$.timerType;\n\n    var nestedFlushDuration = performanceNow() - nestedFlushStartTime;\n    currentTimerStartTime = startTime;\n    currentTimerNestedFlushDuration += nestedFlushDuration;\n    currentTimerDebugID = debugID;\n    currentTimerType = timerType;\n  };\n\n  var lastMarkTimeStamp = 0;\n  var canUsePerformanceMeasure = typeof performance !== 'undefined' && typeof performance.mark === 'function' && typeof performance.clearMarks === 'function' && typeof performance.measure === 'function' && typeof performance.clearMeasures === 'function';\n\n  var shouldMark = function (debugID) {\n    if (!isProfiling || !canUsePerformanceMeasure) {\n      return false;\n    }\n    var element = ReactComponentTreeHook.getElement(debugID);\n    if (element == null || typeof element !== 'object') {\n      return false;\n    }\n    var isHostElement = typeof element.type === 'string';\n    if (isHostElement) {\n      return false;\n    }\n    return true;\n  };\n\n  var markBegin = function (debugID, markType) {\n    if (!shouldMark(debugID)) {\n      return;\n    }\n\n    var markName = debugID + '::' + markType;\n    lastMarkTimeStamp = performanceNow();\n    performance.mark(markName);\n  };\n\n  var markEnd = function (debugID, markType) {\n    if (!shouldMark(debugID)) {\n      return;\n    }\n\n    var markName = debugID + '::' + markType;\n    var displayName = ReactComponentTreeHook.getDisplayName(debugID) || 'Unknown';\n\n    // Chrome has an issue of dropping markers recorded too fast:\n    // https://bugs.chromium.org/p/chromium/issues/detail?id=640652\n    // To work around this, we will not report very small measurements.\n    // I determined the magic number by tweaking it back and forth.\n    // 0.05ms was enough to prevent the issue, but I set it to 0.1ms to be safe.\n    // When the bug is fixed, we can `measure()` unconditionally if we want to.\n    var timeStamp = performanceNow();\n    if (timeStamp - lastMarkTimeStamp > 0.1) {\n      var measurementName = displayName + ' [' + markType + ']';\n      performance.measure(measurementName, markName);\n    }\n\n    performance.clearMarks(markName);\n    if (measurementName) {\n      performance.clearMeasures(measurementName);\n    }\n  };\n\n  ReactDebugTool$1 = {\n    addHook: function (hook) {\n      hooks.push(hook);\n    },\n    removeHook: function (hook) {\n      for (var i = 0; i < hooks.length; i++) {\n        if (hooks[i] === hook) {\n          hooks.splice(i, 1);\n          i--;\n        }\n      }\n    },\n    isProfiling: function () {\n      return isProfiling;\n    },\n    beginProfiling: function () {\n      if (isProfiling) {\n        return;\n      }\n\n      isProfiling = true;\n      flushHistory.length = 0;\n      resetMeasurements();\n      ReactDebugTool$1.addHook(ReactHostOperationHistoryHook_1);\n    },\n    endProfiling: function () {\n      if (!isProfiling) {\n        return;\n      }\n\n      isProfiling = false;\n      resetMeasurements();\n      ReactDebugTool$1.removeHook(ReactHostOperationHistoryHook_1);\n    },\n    getFlushHistory: function () {\n      return flushHistory;\n    },\n    onBeginFlush: function () {\n      currentFlushNesting++;\n      resetMeasurements();\n      pauseCurrentLifeCycleTimer();\n      emitEvent('onBeginFlush');\n    },\n    onEndFlush: function () {\n      resetMeasurements();\n      currentFlushNesting--;\n      resumeCurrentLifeCycleTimer();\n      emitEvent('onEndFlush');\n    },\n    onBeginLifeCycleTimer: function (debugID, timerType) {\n      checkDebugID(debugID);\n      emitEvent('onBeginLifeCycleTimer', debugID, timerType);\n      markBegin(debugID, timerType);\n      beginLifeCycleTimer(debugID, timerType);\n    },\n    onEndLifeCycleTimer: function (debugID, timerType) {\n      checkDebugID(debugID);\n      endLifeCycleTimer(debugID, timerType);\n      markEnd(debugID, timerType);\n      emitEvent('onEndLifeCycleTimer', debugID, timerType);\n    },\n    onBeginProcessingChildContext: function () {\n      emitEvent('onBeginProcessingChildContext');\n    },\n    onEndProcessingChildContext: function () {\n      emitEvent('onEndProcessingChildContext');\n    },\n    onHostOperation: function (operation) {\n      checkDebugID(operation.instanceID);\n      emitEvent('onHostOperation', operation);\n    },\n    onSetState: function () {\n      emitEvent('onSetState');\n    },\n    onSetChildren: function (debugID, childDebugIDs) {\n      checkDebugID(debugID);\n      childDebugIDs.forEach(checkDebugID);\n      emitEvent('onSetChildren', debugID, childDebugIDs);\n    },\n    onBeforeMountComponent: function (debugID, element, parentDebugID) {\n      checkDebugID(debugID);\n      checkDebugID(parentDebugID, true);\n      emitEvent('onBeforeMountComponent', debugID, element, parentDebugID);\n      markBegin(debugID, 'mount');\n    },\n    onMountComponent: function (debugID) {\n      checkDebugID(debugID);\n      markEnd(debugID, 'mount');\n      emitEvent('onMountComponent', debugID);\n    },\n    onBeforeUpdateComponent: function (debugID, element) {\n      checkDebugID(debugID);\n      emitEvent('onBeforeUpdateComponent', debugID, element);\n      markBegin(debugID, 'update');\n    },\n    onUpdateComponent: function (debugID) {\n      checkDebugID(debugID);\n      markEnd(debugID, 'update');\n      emitEvent('onUpdateComponent', debugID);\n    },\n    onBeforeUnmountComponent: function (debugID) {\n      checkDebugID(debugID);\n      emitEvent('onBeforeUnmountComponent', debugID);\n      markBegin(debugID, 'unmount');\n    },\n    onUnmountComponent: function (debugID) {\n      checkDebugID(debugID);\n      markEnd(debugID, 'unmount');\n      emitEvent('onUnmountComponent', debugID);\n    },\n    onTestEvent: function () {\n      emitEvent('onTestEvent');\n    }\n  };\n\n  ReactDebugTool$1.addHook(ReactInvalidSetStateWarningHook_1);\n  ReactDebugTool$1.addHook(ReactComponentTreeHook);\n  var url = ExecutionEnvironment.canUseDOM && window.location.href || '';\n  if (/[?&]react_perf\\b/.test(url)) {\n    ReactDebugTool$1.beginProfiling();\n  }\n}\n\nvar ReactDebugTool_1 = ReactDebugTool$1;\n\n// Trust the developer to only use ReactInstrumentation with a true check\n\nvar debugTool = null;\n\n{\n  var ReactDebugTool = ReactDebugTool_1;\n  debugTool = ReactDebugTool;\n}\n\nvar ReactInstrumentation = { debugTool: debugTool };\n\n{\n  var warning$5 = require$$0;\n}\n\n// isAttributeNameSafe() is currently duplicated in DOMMarkupOperations.\n// TODO: Find a better place for this.\nvar VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + DOMProperty_1.ATTRIBUTE_NAME_START_CHAR + '][' + DOMProperty_1.ATTRIBUTE_NAME_CHAR + ']*$');\nvar illegalAttributeNameCache = {};\nvar validatedAttributeNameCache = {};\nfunction isAttributeNameSafe(attributeName) {\n  if (validatedAttributeNameCache.hasOwnProperty(attributeName)) {\n    return true;\n  }\n  if (illegalAttributeNameCache.hasOwnProperty(attributeName)) {\n    return false;\n  }\n  if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {\n    validatedAttributeNameCache[attributeName] = true;\n    return true;\n  }\n  illegalAttributeNameCache[attributeName] = true;\n  {\n    warning$5(false, 'Invalid attribute name: `%s`', attributeName);\n  }\n  return false;\n}\n\n// shouldIgnoreValue() is currently duplicated in DOMMarkupOperations.\n// TODO: Find a better place for this.\nfunction shouldIgnoreValue(propertyInfo, value) {\n  return value == null || propertyInfo.hasBooleanValue && !value || propertyInfo.hasNumericValue && isNaN(value) || propertyInfo.hasPositiveNumericValue && value < 1 || propertyInfo.hasOverloadedBooleanValue && value === false;\n}\n\n/**\n * Operations for dealing with DOM properties.\n */\nvar DOMPropertyOperations = {\n  setAttributeForID: function (node, id) {\n    node.setAttribute(DOMProperty_1.ID_ATTRIBUTE_NAME, id);\n  },\n\n  setAttributeForRoot: function (node) {\n    node.setAttribute(DOMProperty_1.ROOT_ATTRIBUTE_NAME, '');\n  },\n\n  /**\n   * Get the value for a property on a node. Only used in DEV for SSR validation.\n   * The \"expected\" argument is used as a hint of what the expected value is.\n   * Some properties have multiple equivalent values.\n   */\n  getValueForProperty: function (node, name, expected) {\n    {\n      var propertyInfo = DOMProperty_1.getPropertyInfo(name);\n      if (propertyInfo) {\n        var mutationMethod = propertyInfo.mutationMethod;\n        if (mutationMethod || propertyInfo.mustUseProperty) {\n          return node[propertyInfo.propertyName];\n        } else {\n          var attributeName = propertyInfo.attributeName;\n\n          var stringValue = null;\n\n          if (propertyInfo.hasOverloadedBooleanValue) {\n            if (node.hasAttribute(attributeName)) {\n              var value = node.getAttribute(attributeName);\n              if (value === '') {\n                return true;\n              }\n              if (shouldIgnoreValue(propertyInfo, expected)) {\n                return value;\n              }\n              if (value === '' + expected) {\n                return expected;\n              }\n              return value;\n            }\n          } else if (node.hasAttribute(attributeName)) {\n            if (shouldIgnoreValue(propertyInfo, expected)) {\n              // We had an attribute but shouldn't have had one, so read it\n              // for the error message.\n              return node.getAttribute(attributeName);\n            }\n            if (propertyInfo.hasBooleanValue) {\n              // If this was a boolean, it doesn't matter what the value is\n              // the fact that we have it is the same as the expected.\n              return expected;\n            }\n            // Even if this property uses a namespace we use getAttribute\n            // because we assume its namespaced name is the same as our config.\n            // To use getAttributeNS we need the local name which we don't have\n            // in our config atm.\n            stringValue = node.getAttribute(attributeName);\n          }\n\n          if (shouldIgnoreValue(propertyInfo, expected)) {\n            return stringValue === null ? expected : stringValue;\n          } else if (stringValue === '' + expected) {\n            return expected;\n          } else {\n            return stringValue;\n          }\n        }\n      }\n    }\n  },\n\n  /**\n   * Get the value for a attribute on a node. Only used in DEV for SSR validation.\n   * The third argument is used as a hint of what the expected value is. Some\n   * attributes have multiple equivalent values.\n   */\n  getValueForAttribute: function (node, name, expected) {\n    {\n      if (!isAttributeNameSafe(name)) {\n        return;\n      }\n      if (!node.hasAttribute(name)) {\n        return expected === undefined ? undefined : null;\n      }\n      var value = node.getAttribute(name);\n      if (value === '' + expected) {\n        return expected;\n      }\n      return value;\n    }\n  },\n\n  /**\n   * Sets the value for a property on a node.\n   *\n   * @param {DOMElement} node\n   * @param {string} name\n   * @param {*} value\n   */\n  setValueForProperty: function (node, name, value) {\n    var propertyInfo = DOMProperty_1.getPropertyInfo(name);\n\n    if (propertyInfo && DOMProperty_1.shouldSetAttribute(name, value)) {\n      var mutationMethod = propertyInfo.mutationMethod;\n      if (mutationMethod) {\n        mutationMethod(node, value);\n      } else if (shouldIgnoreValue(propertyInfo, value)) {\n        DOMPropertyOperations.deleteValueForProperty(node, name);\n        return;\n      } else if (propertyInfo.mustUseProperty) {\n        // Contrary to `setAttribute`, object properties are properly\n        // `toString`ed by IE8/9.\n        node[propertyInfo.propertyName] = value;\n      } else {\n        var attributeName = propertyInfo.attributeName;\n        var namespace = propertyInfo.attributeNamespace;\n        // `setAttribute` with objects becomes only `[object]` in IE8/9,\n        // ('' + value) makes it output the correct toString()-value.\n        if (namespace) {\n          node.setAttributeNS(namespace, attributeName, '' + value);\n        } else if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {\n          node.setAttribute(attributeName, '');\n        } else {\n          node.setAttribute(attributeName, '' + value);\n        }\n      }\n    } else {\n      DOMPropertyOperations.setValueForAttribute(node, name, DOMProperty_1.shouldSetAttribute(name, value) ? value : null);\n      return;\n    }\n\n    {\n      var payload = {};\n      payload[name] = value;\n      ReactInstrumentation.debugTool.onHostOperation({\n        instanceID: ReactDOMComponentTree_1.getInstanceFromNode(node)._debugID,\n        type: 'update attribute',\n        payload: payload\n      });\n    }\n  },\n\n  setValueForAttribute: function (node, name, value) {\n    if (!isAttributeNameSafe(name)) {\n      return;\n    }\n    if (value == null) {\n      node.removeAttribute(name);\n    } else {\n      node.setAttribute(name, '' + value);\n    }\n\n    {\n      var payload = {};\n      payload[name] = value;\n      ReactInstrumentation.debugTool.onHostOperation({\n        instanceID: ReactDOMComponentTree_1.getInstanceFromNode(node)._debugID,\n        type: 'update attribute',\n        payload: payload\n      });\n    }\n  },\n\n  /**\n   * Deletes an attributes from a node.\n   *\n   * @param {DOMElement} node\n   * @param {string} name\n   */\n  deleteValueForAttribute: function (node, name) {\n    node.removeAttribute(name);\n    {\n      ReactInstrumentation.debugTool.onHostOperation({\n        instanceID: ReactDOMComponentTree_1.getInstanceFromNode(node)._debugID,\n        type: 'remove attribute',\n        payload: name\n      });\n    }\n  },\n\n  /**\n   * Deletes the value for a property on a node.\n   *\n   * @param {DOMElement} node\n   * @param {string} name\n   */\n  deleteValueForProperty: function (node, name) {\n    var propertyInfo = DOMProperty_1.getPropertyInfo(name);\n    if (propertyInfo) {\n      var mutationMethod = propertyInfo.mutationMethod;\n      if (mutationMethod) {\n        mutationMethod(node, undefined);\n      } else if (propertyInfo.mustUseProperty) {\n        var propName = propertyInfo.propertyName;\n        if (propertyInfo.hasBooleanValue) {\n          node[propName] = false;\n        } else {\n          node[propName] = '';\n        }\n      } else {\n        node.removeAttribute(propertyInfo.attributeName);\n      }\n    } else {\n      node.removeAttribute(name);\n    }\n\n    {\n      ReactInstrumentation.debugTool.onHostOperation({\n        instanceID: ReactDOMComponentTree_1.getInstanceFromNode(node)._debugID,\n        type: 'remove attribute',\n        payload: name\n      });\n    }\n  }\n};\n\nvar DOMPropertyOperations_1 = DOMPropertyOperations;\n\nvar ReactControlledValuePropTypes = {\n  checkPropTypes: null\n};\n\n{\n  var warning$9 = require$$0;\n  var emptyFunction$2 = emptyFunction;\n  var PropTypes = propTypes;\n  var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\n  ReactControlledValuePropTypes.checkPropTypes = emptyFunction$2;\n  var hasReadOnlyValue = {\n    button: true,\n    checkbox: true,\n    image: true,\n    hidden: true,\n    radio: true,\n    reset: true,\n    submit: true\n  };\n\n  var propTypes$1 = {\n    value: function (props, propName, componentName) {\n      if (!props[propName] || hasReadOnlyValue[props.type] || props.onChange || props.readOnly || props.disabled) {\n        return null;\n      }\n      return new Error('You provided a `value` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultValue`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n    },\n    checked: function (props, propName, componentName) {\n      if (!props[propName] || props.onChange || props.readOnly || props.disabled) {\n        return null;\n      }\n      return new Error('You provided a `checked` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultChecked`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n    },\n    onChange: PropTypes.func\n  };\n\n  var loggedTypeFailures = {};\n\n  /**\n   * Provide a linked `value` attribute for controlled forms. You should not use\n   * this outside of the ReactDOM controlled form components.\n   */\n  ReactControlledValuePropTypes.checkPropTypes = function (tagName, props, getStack) {\n    for (var propName in propTypes$1) {\n      if (propTypes$1.hasOwnProperty(propName)) {\n        var error = propTypes$1[propName](props, propName, tagName, 'prop', null, ReactPropTypesSecret);\n      }\n      if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n        // Only monitor this failure once because there tends to be a lot of the\n        // same error.\n        loggedTypeFailures[error.message] = true;\n\n        warning$9(false, 'Failed form propType: %s%s', error.message, getStack());\n      }\n    }\n  };\n}\n\nvar ReactControlledValuePropTypes_1 = ReactControlledValuePropTypes;\n\nvar getCurrentFiberOwnerName$3 = ReactDebugCurrentFiber_1.getCurrentFiberOwnerName;\n\n{\n  var _require2$3 = ReactDebugCurrentFiber_1,\n      getCurrentFiberStackAddendum$2 = _require2$3.getCurrentFiberStackAddendum;\n\n  var warning$8 = require$$0;\n}\n\n\n\nvar didWarnValueDefaultValue = false;\nvar didWarnCheckedDefaultChecked = false;\nvar didWarnControlledToUncontrolled = false;\nvar didWarnUncontrolledToControlled = false;\n\nfunction isControlled(props) {\n  var usesChecked = props.type === 'checkbox' || props.type === 'radio';\n  return usesChecked ? props.checked != null : props.value != null;\n}\n\n/**\n * Implements an <input> host component that allows setting these optional\n * props: `checked`, `value`, `defaultChecked`, and `defaultValue`.\n *\n * If `checked` or `value` are not supplied (or null/undefined), user actions\n * that affect the checked state or value will trigger updates to the element.\n *\n * If they are supplied (and not null/undefined), the rendered element will not\n * trigger updates to the element. Instead, the props must change in order for\n * the rendered element to be updated.\n *\n * The rendered element will be initialized as unchecked (or `defaultChecked`)\n * with an empty value (or `defaultValue`).\n *\n * See http://www.w3.org/TR/2012/WD-html5-20121025/the-input-element.html\n */\nvar ReactDOMInput = {\n  getHostProps: function (element, props) {\n    var node = element;\n    var value = props.value;\n    var checked = props.checked;\n\n    var hostProps = _assign({\n      // Make sure we set .type before any other properties (setting .value\n      // before .type means .value is lost in IE11 and below)\n      type: undefined,\n      // Make sure we set .step before .value (setting .value before .step\n      // means .value is rounded on mount, based upon step precision)\n      step: undefined,\n      // Make sure we set .min & .max before .value (to ensure proper order\n      // in corner cases such as min or max deriving from value, e.g. Issue #7170)\n      min: undefined,\n      max: undefined\n    }, props, {\n      defaultChecked: undefined,\n      defaultValue: undefined,\n      value: value != null ? value : node._wrapperState.initialValue,\n      checked: checked != null ? checked : node._wrapperState.initialChecked\n    });\n\n    return hostProps;\n  },\n\n  initWrapperState: function (element, props) {\n    {\n      ReactControlledValuePropTypes_1.checkPropTypes('input', props, getCurrentFiberStackAddendum$2);\n\n      if (props.checked !== undefined && props.defaultChecked !== undefined && !didWarnCheckedDefaultChecked) {\n        warning$8(false, '%s contains an input of type %s with both checked and defaultChecked props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the checked prop, or the defaultChecked prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', getCurrentFiberOwnerName$3() || 'A component', props.type);\n        didWarnCheckedDefaultChecked = true;\n      }\n      if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {\n        warning$8(false, '%s contains an input of type %s with both value and defaultValue props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', getCurrentFiberOwnerName$3() || 'A component', props.type);\n        didWarnValueDefaultValue = true;\n      }\n    }\n\n    var defaultValue = props.defaultValue;\n    var node = element;\n    node._wrapperState = {\n      initialChecked: props.checked != null ? props.checked : props.defaultChecked,\n      initialValue: props.value != null ? props.value : defaultValue,\n      controlled: isControlled(props)\n    };\n  },\n\n  updateWrapper: function (element, props) {\n    var node = element;\n    {\n      var controlled = isControlled(props);\n\n      if (!node._wrapperState.controlled && controlled && !didWarnUncontrolledToControlled) {\n        warning$8(false, 'A component is changing an uncontrolled input of type %s to be controlled. ' + 'Input elements should not switch from uncontrolled to controlled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components%s', props.type, getCurrentFiberStackAddendum$2());\n        didWarnUncontrolledToControlled = true;\n      }\n      if (node._wrapperState.controlled && !controlled && !didWarnControlledToUncontrolled) {\n        warning$8(false, 'A component is changing a controlled input of type %s to be uncontrolled. ' + 'Input elements should not switch from controlled to uncontrolled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components%s', props.type, getCurrentFiberStackAddendum$2());\n        didWarnControlledToUncontrolled = true;\n      }\n    }\n\n    var checked = props.checked;\n    if (checked != null) {\n      DOMPropertyOperations_1.setValueForProperty(node, 'checked', checked || false);\n    }\n\n    var value = props.value;\n    if (value != null) {\n      if (value === 0 && node.value === '') {\n        node.value = '0';\n        // Note: IE9 reports a number inputs as 'text', so check props instead.\n      } else if (props.type === 'number') {\n        // Simulate `input.valueAsNumber`. IE9 does not support it\n        var valueAsNumber = parseFloat(node.value) || 0;\n\n        if (\n        // eslint-disable-next-line\n        value != valueAsNumber ||\n        // eslint-disable-next-line\n        value == valueAsNumber && node.value != value) {\n          // Cast `value` to a string to ensure the value is set correctly. While\n          // browsers typically do this as necessary, jsdom doesn't.\n          node.value = '' + value;\n        }\n      } else if (node.value !== '' + value) {\n        // Cast `value` to a string to ensure the value is set correctly. While\n        // browsers typically do this as necessary, jsdom doesn't.\n        node.value = '' + value;\n      }\n    } else {\n      if (props.value == null && props.defaultValue != null) {\n        // In Chrome, assigning defaultValue to certain input types triggers input validation.\n        // For number inputs, the display value loses trailing decimal points. For email inputs,\n        // Chrome raises \"The specified value <x> is not a valid email address\".\n        //\n        // Here we check to see if the defaultValue has actually changed, avoiding these problems\n        // when the user is inputting text\n        //\n        // https://github.com/facebook/react/issues/7253\n        if (node.defaultValue !== '' + props.defaultValue) {\n          node.defaultValue = '' + props.defaultValue;\n        }\n      }\n      if (props.checked == null && props.defaultChecked != null) {\n        node.defaultChecked = !!props.defaultChecked;\n      }\n    }\n  },\n\n  postMountWrapper: function (element, props) {\n    var node = element;\n\n    // Detach value from defaultValue. We won't do anything if we're working on\n    // submit or reset inputs as those values & defaultValues are linked. They\n    // are not resetable nodes so this operation doesn't matter and actually\n    // removes browser-default values (eg \"Submit Query\") when no value is\n    // provided.\n\n    switch (props.type) {\n      case 'submit':\n      case 'reset':\n        break;\n      case 'color':\n      case 'date':\n      case 'datetime':\n      case 'datetime-local':\n      case 'month':\n      case 'time':\n      case 'week':\n        // This fixes the no-show issue on iOS Safari and Android Chrome:\n        // https://github.com/facebook/react/issues/7233\n        node.value = '';\n        node.value = node.defaultValue;\n        break;\n      default:\n        node.value = node.value;\n        break;\n    }\n\n    // Normally, we'd just do `node.checked = node.checked` upon initial mount, less this bug\n    // this is needed to work around a chrome bug where setting defaultChecked\n    // will sometimes influence the value of checked (even after detachment).\n    // Reference: https://bugs.chromium.org/p/chromium/issues/detail?id=608416\n    // We need to temporarily unset name to avoid disrupting radio button groups.\n    var name = node.name;\n    if (name !== '') {\n      node.name = '';\n    }\n    node.defaultChecked = !node.defaultChecked;\n    node.defaultChecked = !node.defaultChecked;\n    if (name !== '') {\n      node.name = name;\n    }\n  },\n\n  restoreControlledState: function (element, props) {\n    var node = element;\n    ReactDOMInput.updateWrapper(node, props);\n    updateNamedCousins(node, props);\n  }\n};\n\nfunction updateNamedCousins(rootNode, props) {\n  var name = props.name;\n  if (props.type === 'radio' && name != null) {\n    var queryRoot = rootNode;\n\n    while (queryRoot.parentNode) {\n      queryRoot = queryRoot.parentNode;\n    }\n\n    // If `rootNode.form` was non-null, then we could try `form.elements`,\n    // but that sometimes behaves strangely in IE8. We could also try using\n    // `form.getElementsByName`, but that will only return direct children\n    // and won't include inputs that use the HTML5 `form=` attribute. Since\n    // the input might not even be in a form. It might not even be in the\n    // document. Let's just use the local `querySelectorAll` to ensure we don't\n    // miss anything.\n    var group = queryRoot.querySelectorAll('input[name=' + JSON.stringify('' + name) + '][type=\"radio\"]');\n\n    for (var i = 0; i < group.length; i++) {\n      var otherNode = group[i];\n      if (otherNode === rootNode || otherNode.form !== rootNode.form) {\n        continue;\n      }\n      // This will throw if radio buttons rendered by different copies of React\n      // and the same name are rendered into the same form (same as #1939).\n      // That's probably okay; we don't support it just as we don't support\n      // mixing React radio buttons with non-React ones.\n      var otherProps = ReactDOMComponentTree_1.getFiberCurrentPropsFromNode(otherNode);\n      !otherProps ? invariant(false, 'ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported.') : void 0;\n      // If this is a controlled radio button group, forcing the input that\n      // was previously checked to update will cause it to be come re-checked\n      // as appropriate.\n      ReactDOMInput.updateWrapper(otherNode, otherProps);\n    }\n  }\n}\n\nvar ReactDOMFiberInput = ReactDOMInput;\n\n{\n  var warning$10 = require$$0;\n}\n\nfunction flattenChildren(children) {\n  var content = '';\n\n  // Flatten children and warn if they aren't strings or numbers;\n  // invalid types are ignored.\n  // We can silently skip them because invalid DOM nesting warning\n  // catches these cases in Fiber.\n  react.Children.forEach(children, function (child) {\n    if (child == null) {\n      return;\n    }\n    if (typeof child === 'string' || typeof child === 'number') {\n      content += child;\n    }\n  });\n\n  return content;\n}\n\n/**\n * Implements an <option> host component that warns when `selected` is set.\n */\nvar ReactDOMOption = {\n  validateProps: function (element, props) {\n    // TODO (yungsters): Remove support for `selected` in <option>.\n    {\n      warning$10(props.selected == null, 'Use the `defaultValue` or `value` props on <select> instead of ' + 'setting `selected` on <option>.');\n    }\n  },\n\n  postMountWrapper: function (element, props) {\n    // value=\"\" should make a value attribute (#6219)\n    if (props.value != null) {\n      element.setAttribute('value', props.value);\n    }\n  },\n\n  getHostProps: function (element, props) {\n    var hostProps = _assign({ children: undefined }, props);\n\n    var content = flattenChildren(props.children);\n\n    if (content) {\n      hostProps.children = content;\n    }\n\n    return hostProps;\n  }\n};\n\nvar ReactDOMFiberOption = ReactDOMOption;\n\nvar getCurrentFiberOwnerName$4 = ReactDebugCurrentFiber_1.getCurrentFiberOwnerName;\n\n{\n  var didWarnValueDefaultValue$1 = false;\n  var warning$11 = require$$0;\n\n  var _require2$4 = ReactDebugCurrentFiber_1,\n      getCurrentFiberStackAddendum$3 = _require2$4.getCurrentFiberStackAddendum;\n}\n\nfunction getDeclarationErrorAddendum() {\n  var ownerName = getCurrentFiberOwnerName$4();\n  if (ownerName) {\n    return '\\n\\nCheck the render method of `' + ownerName + '`.';\n  }\n  return '';\n}\n\nvar valuePropNames = ['value', 'defaultValue'];\n\n/**\n * Validation function for `value` and `defaultValue`.\n */\nfunction checkSelectPropTypes(props) {\n  ReactControlledValuePropTypes_1.checkPropTypes('select', props, getCurrentFiberStackAddendum$3);\n\n  for (var i = 0; i < valuePropNames.length; i++) {\n    var propName = valuePropNames[i];\n    if (props[propName] == null) {\n      continue;\n    }\n    var isArray = Array.isArray(props[propName]);\n    if (props.multiple && !isArray) {\n      warning$11(false, 'The `%s` prop supplied to <select> must be an array if ' + '`multiple` is true.%s', propName, getDeclarationErrorAddendum());\n    } else if (!props.multiple && isArray) {\n      warning$11(false, 'The `%s` prop supplied to <select> must be a scalar ' + 'value if `multiple` is false.%s', propName, getDeclarationErrorAddendum());\n    }\n  }\n}\n\nfunction updateOptions(node, multiple, propValue) {\n  var options = node.options;\n\n  if (multiple) {\n    var selectedValues = propValue;\n    var selectedValue = {};\n    for (var i = 0; i < selectedValues.length; i++) {\n      // Prefix to avoid chaos with special keys.\n      selectedValue['$' + selectedValues[i]] = true;\n    }\n    for (var _i = 0; _i < options.length; _i++) {\n      var selected = selectedValue.hasOwnProperty('$' + options[_i].value);\n      if (options[_i].selected !== selected) {\n        options[_i].selected = selected;\n      }\n    }\n  } else {\n    // Do not set `select.value` as exact behavior isn't consistent across all\n    // browsers for all cases.\n    var _selectedValue = '' + propValue;\n    var defaultSelected = null;\n    for (var _i2 = 0; _i2 < options.length; _i2++) {\n      if (options[_i2].value === _selectedValue) {\n        options[_i2].selected = true;\n        return;\n      }\n      if (defaultSelected === null && !options[_i2].disabled) {\n        defaultSelected = options[_i2];\n      }\n    }\n    if (defaultSelected !== null) {\n      defaultSelected.selected = true;\n    }\n  }\n}\n\n/**\n * Implements a <select> host component that allows optionally setting the\n * props `value` and `defaultValue`. If `multiple` is false, the prop must be a\n * stringable. If `multiple` is true, the prop must be an array of stringables.\n *\n * If `value` is not supplied (or null/undefined), user actions that change the\n * selected option will trigger updates to the rendered options.\n *\n * If it is supplied (and not null/undefined), the rendered options will not\n * update in response to user actions. Instead, the `value` prop must change in\n * order for the rendered options to update.\n *\n * If `defaultValue` is provided, any options with the supplied values will be\n * selected.\n */\nvar ReactDOMSelect = {\n  getHostProps: function (element, props) {\n    return _assign({}, props, {\n      value: undefined\n    });\n  },\n\n  initWrapperState: function (element, props) {\n    var node = element;\n    {\n      checkSelectPropTypes(props);\n    }\n\n    var value = props.value;\n    node._wrapperState = {\n      initialValue: value != null ? value : props.defaultValue,\n      wasMultiple: !!props.multiple\n    };\n\n    {\n      if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue$1) {\n        warning$11(false, 'Select elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled select ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components');\n        didWarnValueDefaultValue$1 = true;\n      }\n    }\n  },\n\n  postMountWrapper: function (element, props) {\n    var node = element;\n    node.multiple = !!props.multiple;\n    var value = props.value;\n    if (value != null) {\n      updateOptions(node, !!props.multiple, value);\n    } else if (props.defaultValue != null) {\n      updateOptions(node, !!props.multiple, props.defaultValue);\n    }\n  },\n\n  postUpdateWrapper: function (element, props) {\n    var node = element;\n    // After the initial mount, we control selected-ness manually so don't pass\n    // this value down\n    node._wrapperState.initialValue = undefined;\n\n    var wasMultiple = node._wrapperState.wasMultiple;\n    node._wrapperState.wasMultiple = !!props.multiple;\n\n    var value = props.value;\n    if (value != null) {\n      updateOptions(node, !!props.multiple, value);\n    } else if (wasMultiple !== !!props.multiple) {\n      // For simplicity, reapply `defaultValue` if `multiple` is toggled.\n      if (props.defaultValue != null) {\n        updateOptions(node, !!props.multiple, props.defaultValue);\n      } else {\n        // Revert the select back to its default unselected state.\n        updateOptions(node, !!props.multiple, props.multiple ? [] : '');\n      }\n    }\n  },\n\n  restoreControlledState: function (element, props) {\n    var node = element;\n    var value = props.value;\n\n    if (value != null) {\n      updateOptions(node, !!props.multiple, value);\n    }\n  }\n};\n\nvar ReactDOMFiberSelect = ReactDOMSelect;\n\n{\n  var warning$12 = require$$0;\n\n  var _require$4 = ReactDebugCurrentFiber_1,\n      getCurrentFiberStackAddendum$4 = _require$4.getCurrentFiberStackAddendum;\n}\n\nvar didWarnValDefaultVal = false;\n\n/**\n * Implements a <textarea> host component that allows setting `value`, and\n * `defaultValue`. This differs from the traditional DOM API because value is\n * usually set as PCDATA children.\n *\n * If `value` is not supplied (or null/undefined), user actions that affect the\n * value will trigger updates to the element.\n *\n * If `value` is supplied (and not null/undefined), the rendered element will\n * not trigger updates to the element. Instead, the `value` prop must change in\n * order for the rendered element to be updated.\n *\n * The rendered element will be initialized with an empty value, the prop\n * `defaultValue` if specified, or the children content (deprecated).\n */\nvar ReactDOMTextarea = {\n  getHostProps: function (element, props) {\n    var node = element;\n    !(props.dangerouslySetInnerHTML == null) ? invariant(false, '`dangerouslySetInnerHTML` does not make sense on <textarea>.') : void 0;\n\n    // Always set children to the same thing. In IE9, the selection range will\n    // get reset if `textContent` is mutated.  We could add a check in setTextContent\n    // to only set the value if/when the value differs from the node value (which would\n    // completely solve this IE9 bug), but Sebastian+Sophie seemed to like this\n    // solution. The value can be a boolean or object so that's why it's forced\n    // to be a string.\n    var hostProps = _assign({}, props, {\n      value: undefined,\n      defaultValue: undefined,\n      children: '' + node._wrapperState.initialValue\n    });\n\n    return hostProps;\n  },\n\n  initWrapperState: function (element, props) {\n    var node = element;\n    {\n      ReactControlledValuePropTypes_1.checkPropTypes('textarea', props, getCurrentFiberStackAddendum$4);\n      if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValDefaultVal) {\n        warning$12(false, 'Textarea elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled textarea ' + 'and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components');\n        didWarnValDefaultVal = true;\n      }\n    }\n\n    var value = props.value;\n    var initialValue = value;\n\n    // Only bother fetching default value if we're going to use it\n    if (value == null) {\n      var defaultValue = props.defaultValue;\n      // TODO (yungsters): Remove support for children content in <textarea>.\n      var children = props.children;\n      if (children != null) {\n        {\n          warning$12(false, 'Use the `defaultValue` or `value` props instead of setting ' + 'children on <textarea>.');\n        }\n        !(defaultValue == null) ? invariant(false, 'If you supply `defaultValue` on a <textarea>, do not pass children.') : void 0;\n        if (Array.isArray(children)) {\n          !(children.length <= 1) ? invariant(false, '<textarea> can only have at most one child.') : void 0;\n          children = children[0];\n        }\n\n        defaultValue = '' + children;\n      }\n      if (defaultValue == null) {\n        defaultValue = '';\n      }\n      initialValue = defaultValue;\n    }\n\n    node._wrapperState = {\n      initialValue: '' + initialValue\n    };\n  },\n\n  updateWrapper: function (element, props) {\n    var node = element;\n    var value = props.value;\n    if (value != null) {\n      // Cast `value` to a string to ensure the value is set correctly. While\n      // browsers typically do this as necessary, jsdom doesn't.\n      var newValue = '' + value;\n\n      // To avoid side effects (such as losing text selection), only set value if changed\n      if (newValue !== node.value) {\n        node.value = newValue;\n      }\n      if (props.defaultValue == null) {\n        node.defaultValue = newValue;\n      }\n    }\n    if (props.defaultValue != null) {\n      node.defaultValue = props.defaultValue;\n    }\n  },\n\n  postMountWrapper: function (element, props) {\n    var node = element;\n    // This is in postMount because we need access to the DOM node, which is not\n    // available until after the component has mounted.\n    var textContent = node.textContent;\n\n    // Only set node.value if textContent is equal to the expected\n    // initial value. In IE10/IE11 there is a bug where the placeholder attribute\n    // will populate textContent as well.\n    // https://developer.microsoft.com/microsoft-edge/platform/issues/101525/\n    if (textContent === node._wrapperState.initialValue) {\n      node.value = textContent;\n    }\n  },\n\n  restoreControlledState: function (element, props) {\n    // DOM component is still mounted; update\n    ReactDOMTextarea.updateWrapper(element, props);\n  }\n};\n\nvar ReactDOMFiberTextarea = ReactDOMTextarea;\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 * @providesModule omittedCloseTags\n */\n\n// For HTML, certain tags should omit their close tag. We keep a whitelist for\n// those special-case tags.\n\nvar omittedCloseTags = {\n  area: true,\n  base: true,\n  br: true,\n  col: true,\n  embed: true,\n  hr: true,\n  img: true,\n  input: true,\n  keygen: true,\n  link: true,\n  meta: true,\n  param: true,\n  source: true,\n  track: true,\n  wbr: true\n};\n\nvar omittedCloseTags_1 = omittedCloseTags;\n\n// For HTML, certain tags cannot have children. This has the same purpose as\n// `omittedCloseTags` except that `menuitem` should still have its closing tag.\n\nvar voidElementTags = _assign({\n  menuitem: true\n}, omittedCloseTags_1);\n\nvar voidElementTags_1 = voidElementTags;\n\n{\n  var warning$13 = require$$0;\n}\n\nvar HTML$1 = '__html';\n\nfunction getDeclarationErrorAddendum$1(getCurrentOwnerName) {\n  {\n    var ownerName = getCurrentOwnerName();\n    if (ownerName) {\n      // TODO: also report the stack.\n      return '\\n\\nThis DOM node was rendered by `' + ownerName + '`.';\n    }\n  }\n  return '';\n}\n\nfunction assertValidProps(tag, props, getCurrentOwnerName) {\n  if (!props) {\n    return;\n  }\n  // Note the use of `==` which checks for null or undefined.\n  if (voidElementTags_1[tag]) {\n    !(props.children == null && props.dangerouslySetInnerHTML == null) ? invariant(false, '%s is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`.%s', tag, getDeclarationErrorAddendum$1(getCurrentOwnerName)) : void 0;\n  }\n  if (props.dangerouslySetInnerHTML != null) {\n    !(props.children == null) ? invariant(false, 'Can only set one of `children` or `props.dangerouslySetInnerHTML`.') : void 0;\n    !(typeof props.dangerouslySetInnerHTML === 'object' && HTML$1 in props.dangerouslySetInnerHTML) ? invariant(false, '`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://fb.me/react-invariant-dangerously-set-inner-html for more information.') : void 0;\n  }\n  {\n    warning$13(props.suppressContentEditableWarning || !props.contentEditable || props.children == null, 'A component is `contentEditable` and contains `children` managed by ' + 'React. It is now your responsibility to guarantee that none of ' + 'those nodes are unexpectedly modified or duplicated. This is ' + 'probably not intentional.');\n  }\n  !(props.style == null || typeof props.style === 'object') ? invariant(false, 'The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + \\'em\\'}} when using JSX.%s', getDeclarationErrorAddendum$1(getCurrentOwnerName)) : void 0;\n}\n\nvar assertValidProps_1 = assertValidProps;\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 * @providesModule inputValueTracking\n * \n */\n\nfunction isCheckable(elem) {\n  var type = elem.type;\n  var nodeName = elem.nodeName;\n  return nodeName && nodeName.toLowerCase() === 'input' && (type === 'checkbox' || type === 'radio');\n}\n\nfunction getTracker(node) {\n  return node._valueTracker;\n}\n\nfunction detachTracker(node) {\n  node._valueTracker = null;\n}\n\nfunction getValueFromNode(node) {\n  var value = '';\n  if (!node) {\n    return value;\n  }\n\n  if (isCheckable(node)) {\n    value = node.checked ? 'true' : 'false';\n  } else {\n    value = node.value;\n  }\n\n  return value;\n}\n\nfunction trackValueOnNode(node) {\n  var valueField = isCheckable(node) ? 'checked' : 'value';\n  var descriptor = Object.getOwnPropertyDescriptor(node.constructor.prototype, valueField);\n\n  var currentValue = '' + node[valueField];\n\n  // if someone has already defined a value or Safari, then bail\n  // and don't track value will cause over reporting of changes,\n  // but it's better then a hard failure\n  // (needed for certain tests that spyOn input values and Safari)\n  if (node.hasOwnProperty(valueField) || typeof descriptor.get !== 'function' || typeof descriptor.set !== 'function') {\n    return;\n  }\n\n  Object.defineProperty(node, valueField, {\n    enumerable: descriptor.enumerable,\n    configurable: true,\n    get: function () {\n      return descriptor.get.call(this);\n    },\n    set: function (value) {\n      currentValue = '' + value;\n      descriptor.set.call(this, value);\n    }\n  });\n\n  var tracker = {\n    getValue: function () {\n      return currentValue;\n    },\n    setValue: function (value) {\n      currentValue = '' + value;\n    },\n    stopTracking: function () {\n      detachTracker(node);\n      delete node[valueField];\n    }\n  };\n  return tracker;\n}\n\nvar inputValueTracking = {\n  // exposed for testing\n  _getTrackerFromNode: getTracker,\n\n  track: function (node) {\n    if (getTracker(node)) {\n      return;\n    }\n\n    // TODO: Once it's just Fiber we can move this to node._wrapperState\n    node._valueTracker = trackValueOnNode(node);\n  },\n  updateValueIfChanged: function (node) {\n    if (!node) {\n      return false;\n    }\n\n    var tracker = getTracker(node);\n    // if there is no tracker at this point it's unlikely\n    // that trying again will succeed\n    if (!tracker) {\n      return true;\n    }\n\n    var lastValue = tracker.getValue();\n    var nextValue = getValueFromNode(node);\n    if (nextValue !== lastValue) {\n      tracker.setValue(nextValue);\n      return true;\n    }\n    return false;\n  },\n  stopTracking: function (node) {\n    var tracker = getTracker(node);\n    if (tracker) {\n      tracker.stopTracking();\n    }\n  }\n};\n\nvar inputValueTracking_1 = inputValueTracking;\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 * @providesModule isCustomComponent\n * \n */\n\nfunction isCustomComponent(tagName, props) {\n  if (tagName.indexOf('-') === -1) {\n    return typeof props.is === 'string';\n  }\n  switch (tagName) {\n    // These are reserved SVG and MathML elements.\n    // We don't mind this whitelist too much because we expect it to never grow.\n    // The alternative is to track the namespace in a few places which is convoluted.\n    // https://w3c.github.io/webcomponents/spec/custom/#custom-elements-core-concepts\n    case 'annotation-xml':\n    case 'color-profile':\n    case 'font-face':\n    case 'font-face-src':\n    case 'font-face-uri':\n    case 'font-face-format':\n    case 'font-face-name':\n    case 'missing-glyph':\n      return false;\n    default:\n      return true;\n  }\n}\n\nvar isCustomComponent_1 = isCustomComponent;\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 * @providesModule createMicrosoftUnsafeLocalFunction\n */\n\n/* globals MSApp */\n\n/**\n * Create a function which has 'unsafe' privileges (required by windows8 apps)\n */\n\nvar createMicrosoftUnsafeLocalFunction = function (func) {\n  if (typeof MSApp !== 'undefined' && MSApp.execUnsafeLocalFunction) {\n    return function (arg0, arg1, arg2, arg3) {\n      MSApp.execUnsafeLocalFunction(function () {\n        return func(arg0, arg1, arg2, arg3);\n      });\n    };\n  } else {\n    return func;\n  }\n};\n\nvar createMicrosoftUnsafeLocalFunction_1 = createMicrosoftUnsafeLocalFunction;\n\nvar Namespaces$1 = DOMNamespaces.Namespaces;\n\n\n// SVG temp container for IE lacking innerHTML\nvar reusableSVGContainer;\n\n/**\n * Set the innerHTML property of a node\n *\n * @param {DOMElement} node\n * @param {string} html\n * @internal\n */\nvar setInnerHTML = createMicrosoftUnsafeLocalFunction_1(function (node, html) {\n  // IE does not have innerHTML for SVG nodes, so instead we inject the\n  // new markup in a temp node and then move the child nodes across into\n  // the target node\n  if (node.namespaceURI === Namespaces$1.svg && !('innerHTML' in node)) {\n    reusableSVGContainer = reusableSVGContainer || document.createElement('div');\n    reusableSVGContainer.innerHTML = '<svg>' + html + '</svg>';\n    var svgNode = reusableSVGContainer.firstChild;\n    while (svgNode.firstChild) {\n      node.appendChild(svgNode.firstChild);\n    }\n  } else {\n    node.innerHTML = html;\n  }\n});\n\nvar setInnerHTML_1 = setInnerHTML;\n\n/**\n * Copyright (c) 2016-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 * Based on the escape-html library, which is used under the MIT License below:\n *\n * Copyright (c) 2012-2013 TJ Holowaychuk\n * Copyright (c) 2015 Andreas Lubbe\n * Copyright (c) 2015 Tiancheng \"Timothy\" Gu\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * 'Software'), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * @providesModule escapeTextContentForBrowser\n */\n\n// code copied and modified from escape-html\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param  {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n  var str = '' + string;\n  var match = matchHtmlRegExp.exec(str);\n\n  if (!match) {\n    return str;\n  }\n\n  var escape;\n  var html = '';\n  var index = 0;\n  var lastIndex = 0;\n\n  for (index = match.index; index < str.length; index++) {\n    switch (str.charCodeAt(index)) {\n      case 34:\n        // \"\n        escape = '&quot;';\n        break;\n      case 38:\n        // &\n        escape = '&amp;';\n        break;\n      case 39:\n        // '\n        escape = '&#x27;'; // modified from escape-html; used to be '&#39'\n        break;\n      case 60:\n        // <\n        escape = '&lt;';\n        break;\n      case 62:\n        // >\n        escape = '&gt;';\n        break;\n      default:\n        continue;\n    }\n\n    if (lastIndex !== index) {\n      html += str.substring(lastIndex, index);\n    }\n\n    lastIndex = index + 1;\n    html += escape;\n  }\n\n  return lastIndex !== index ? html + str.substring(lastIndex, index) : html;\n}\n// end code copied and modified from escape-html\n\n/**\n * Escapes text to prevent scripting attacks.\n *\n * @param {*} text Text value to escape.\n * @return {string} An escaped string.\n */\nfunction escapeTextContentForBrowser(text) {\n  if (typeof text === 'boolean' || typeof text === 'number') {\n    // this shortcircuit helps perf for types that we know will never have\n    // special characters, especially given that this function is used often\n    // for numeric dom ids.\n    return '' + text;\n  }\n  return escapeHtml(text);\n}\n\nvar escapeTextContentForBrowser_1 = escapeTextContentForBrowser;\n\nvar TEXT_NODE$2 = HTMLNodeType_1.TEXT_NODE;\n\n/**\n * Set the textContent property of a node, ensuring that whitespace is preserved\n * even in IE8. innerText is a poor substitute for textContent and, among many\n * issues, inserts <br> instead of the literal newline chars. innerHTML behaves\n * as it should.\n *\n * @param {DOMElement} node\n * @param {string} text\n * @internal\n */\n\n\nvar setTextContent = function (node, text) {\n  if (text) {\n    var firstChild = node.firstChild;\n\n    if (firstChild && firstChild === node.lastChild && firstChild.nodeType === TEXT_NODE$2) {\n      firstChild.nodeValue = text;\n      return;\n    }\n  }\n  node.textContent = text;\n};\n\nif (ExecutionEnvironment.canUseDOM) {\n  if (!('textContent' in document.documentElement)) {\n    setTextContent = function (node, text) {\n      if (node.nodeType === TEXT_NODE$2) {\n        node.nodeValue = text;\n        return;\n      }\n      setInnerHTML_1(node, escapeTextContentForBrowser_1(text));\n    };\n  }\n}\n\nvar setTextContent_1 = setTextContent;\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 * @providesModule validAriaProperties\n */\n\nvar ariaProperties = {\n  'aria-current': 0, // state\n  'aria-details': 0,\n  'aria-disabled': 0, // state\n  'aria-hidden': 0, // state\n  'aria-invalid': 0, // state\n  'aria-keyshortcuts': 0,\n  'aria-label': 0,\n  'aria-roledescription': 0,\n  // Widget Attributes\n  'aria-autocomplete': 0,\n  'aria-checked': 0,\n  'aria-expanded': 0,\n  'aria-haspopup': 0,\n  'aria-level': 0,\n  'aria-modal': 0,\n  'aria-multiline': 0,\n  'aria-multiselectable': 0,\n  'aria-orientation': 0,\n  'aria-placeholder': 0,\n  'aria-pressed': 0,\n  'aria-readonly': 0,\n  'aria-required': 0,\n  'aria-selected': 0,\n  'aria-sort': 0,\n  'aria-valuemax': 0,\n  'aria-valuemin': 0,\n  'aria-valuenow': 0,\n  'aria-valuetext': 0,\n  // Live Region Attributes\n  'aria-atomic': 0,\n  'aria-busy': 0,\n  'aria-live': 0,\n  'aria-relevant': 0,\n  // Drag-and-Drop Attributes\n  'aria-dropeffect': 0,\n  'aria-grabbed': 0,\n  // Relationship Attributes\n  'aria-activedescendant': 0,\n  'aria-colcount': 0,\n  'aria-colindex': 0,\n  'aria-colspan': 0,\n  'aria-controls': 0,\n  'aria-describedby': 0,\n  'aria-errormessage': 0,\n  'aria-flowto': 0,\n  'aria-labelledby': 0,\n  'aria-owns': 0,\n  'aria-posinset': 0,\n  'aria-rowcount': 0,\n  'aria-rowindex': 0,\n  'aria-rowspan': 0,\n  'aria-setsize': 0\n};\n\nvar validAriaProperties$1 = ariaProperties;\n\nvar warnedProperties = {};\nvar rARIA = new RegExp('^(aria)-[' + DOMProperty_1.ATTRIBUTE_NAME_CHAR + ']*$');\nvar rARIACamel = new RegExp('^(aria)[A-Z][' + DOMProperty_1.ATTRIBUTE_NAME_CHAR + ']*$');\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n{\n  var warning$14 = require$$0;\n\n  var _require$5 = ReactGlobalSharedState_1,\n      ReactComponentTreeHook$1 = _require$5.ReactComponentTreeHook,\n      ReactDebugCurrentFrame$1 = _require$5.ReactDebugCurrentFrame;\n\n  var getStackAddendumByID = ReactComponentTreeHook$1.getStackAddendumByID;\n\n\n  var validAriaProperties = validAriaProperties$1;\n}\n\nfunction getStackAddendum(debugID) {\n  if (debugID != null) {\n    // This can only happen on Stack\n    return getStackAddendumByID(debugID);\n  } else {\n    // This can only happen on Fiber / Server\n    var stack = ReactDebugCurrentFrame$1.getStackAddendum();\n    return stack != null ? stack : '';\n  }\n}\n\nfunction validateProperty(tagName, name, debugID) {\n  if (hasOwnProperty.call(warnedProperties, name) && warnedProperties[name]) {\n    return true;\n  }\n\n  if (rARIACamel.test(name)) {\n    var ariaName = 'aria-' + name.slice(4).toLowerCase();\n    var correctName = validAriaProperties.hasOwnProperty(ariaName) ? ariaName : null;\n\n    // If this is an aria-* attribute, but is not listed in the known DOM\n    // DOM properties, then it is an invalid aria-* attribute.\n    if (correctName == null) {\n      warning$14(false, 'Invalid ARIA attribute `%s`. ARIA attributes follow the pattern aria-* and must be lowercase.%s', name, getStackAddendum(debugID));\n      warnedProperties[name] = true;\n      return true;\n    }\n    // aria-* attributes should be lowercase; suggest the lowercase version.\n    if (name !== correctName) {\n      warning$14(false, 'Invalid ARIA attribute `%s`. Did you mean `%s`?%s', name, correctName, getStackAddendum(debugID));\n      warnedProperties[name] = true;\n      return true;\n    }\n  }\n\n  if (rARIA.test(name)) {\n    var lowerCasedName = name.toLowerCase();\n    var standardName = validAriaProperties.hasOwnProperty(lowerCasedName) ? lowerCasedName : null;\n\n    // If this is an aria-* attribute, but is not listed in the known DOM\n    // DOM properties, then it is an invalid aria-* attribute.\n    if (standardName == null) {\n      warnedProperties[name] = true;\n      return false;\n    }\n    // aria-* attributes should be lowercase; suggest the lowercase version.\n    if (name !== standardName) {\n      warning$14(false, 'Unknown ARIA attribute `%s`. Did you mean `%s`?%s', name, standardName, getStackAddendum(debugID));\n      warnedProperties[name] = true;\n      return true;\n    }\n  }\n\n  return true;\n}\n\nfunction warnInvalidARIAProps(type, props, debugID) {\n  var invalidProps = [];\n\n  for (var key in props) {\n    var isValid = validateProperty(type, key, debugID);\n    if (!isValid) {\n      invalidProps.push(key);\n    }\n  }\n\n  var unknownPropString = invalidProps.map(function (prop) {\n    return '`' + prop + '`';\n  }).join(', ');\n\n  if (invalidProps.length === 1) {\n    warning$14(false, 'Invalid aria prop %s on <%s> tag. ' + 'For details, see https://fb.me/invalid-aria-prop%s', unknownPropString, type, getStackAddendum(debugID));\n  } else if (invalidProps.length > 1) {\n    warning$14(false, 'Invalid aria props %s on <%s> tag. ' + 'For details, see https://fb.me/invalid-aria-prop%s', unknownPropString, type, getStackAddendum(debugID));\n  }\n}\n\nfunction validateProperties(type, props, debugID /* Stack only */) {\n  if (isCustomComponent_1(type, props)) {\n    return;\n  }\n  warnInvalidARIAProps(type, props, debugID);\n}\n\nvar ReactDOMInvalidARIAHook$1 = {\n  // Fiber\n  validateProperties: validateProperties,\n  // Stack\n  onBeforeMountComponent: function (debugID, element) {\n    if (true && element != null && typeof element.type === 'string') {\n      validateProperties(element.type, element.props, debugID);\n    }\n  },\n  onBeforeUpdateComponent: function (debugID, element) {\n    if (true && element != null && typeof element.type === 'string') {\n      validateProperties(element.type, element.props, debugID);\n    }\n  }\n};\n\nvar ReactDOMInvalidARIAHook_1 = ReactDOMInvalidARIAHook$1;\n\n{\n  var warning$15 = require$$0;\n\n  var _require$6 = ReactGlobalSharedState_1,\n      ReactComponentTreeHook$2 = _require$6.ReactComponentTreeHook,\n      ReactDebugCurrentFrame$2 = _require$6.ReactDebugCurrentFrame;\n\n  var getStackAddendumByID$1 = ReactComponentTreeHook$2.getStackAddendumByID;\n}\n\nvar didWarnValueNull = false;\n\nfunction getStackAddendum$1(debugID) {\n  if (debugID != null) {\n    // This can only happen on Stack\n    return getStackAddendumByID$1(debugID);\n  } else {\n    // This can only happen on Fiber / Server\n    var stack = ReactDebugCurrentFrame$2.getStackAddendum();\n    return stack != null ? stack : '';\n  }\n}\n\nfunction validateProperties$1(type, props, debugID /* Stack only */) {\n  if (type !== 'input' && type !== 'textarea' && type !== 'select') {\n    return;\n  }\n  if (props != null && props.value === null && !didWarnValueNull) {\n    warning$15(false, '`value` prop on `%s` should not be null. ' + 'Consider using the empty string to clear the component or `undefined` ' + 'for uncontrolled components.%s', type, getStackAddendum$1(debugID));\n\n    didWarnValueNull = true;\n  }\n}\n\nvar ReactDOMNullInputValuePropHook$1 = {\n  // Fiber\n  validateProperties: validateProperties$1,\n  // Stack\n  onBeforeMountComponent: function (debugID, element) {\n    if (true && element != null && typeof element.type === 'string') {\n      validateProperties$1(element.type, element.props, debugID);\n    }\n  },\n  onBeforeUpdateComponent: function (debugID, element) {\n    if (true && element != null && typeof element.type === 'string') {\n      validateProperties$1(element.type, element.props, debugID);\n    }\n  }\n};\n\nvar ReactDOMNullInputValuePropHook_1 = ReactDOMNullInputValuePropHook$1;\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 * @providesModule possibleStandardNames\n */\n\n// When adding attributes to the HTML or SVG whitelist, be sure to\n// also add them to this module to ensure casing and incorrect name\n// warnings.\nvar possibleStandardNames$1 = {\n  // HTML\n  accept: 'accept',\n  acceptcharset: 'acceptCharset',\n  'accept-charset': 'acceptCharset',\n  accesskey: 'accessKey',\n  action: 'action',\n  allowfullscreen: 'allowFullScreen',\n  allowtransparency: 'allowTransparency',\n  alt: 'alt',\n  as: 'as',\n  async: 'async',\n  autocapitalize: 'autoCapitalize',\n  autocomplete: 'autoComplete',\n  autocorrect: 'autoCorrect',\n  autofocus: 'autoFocus',\n  autoplay: 'autoPlay',\n  autosave: 'autoSave',\n  capture: 'capture',\n  cellpadding: 'cellPadding',\n  cellspacing: 'cellSpacing',\n  challenge: 'challenge',\n  charset: 'charSet',\n  checked: 'checked',\n  children: 'children',\n  cite: 'cite',\n  'class': 'className',\n  classid: 'classID',\n  classname: 'className',\n  cols: 'cols',\n  colspan: 'colSpan',\n  content: 'content',\n  contenteditable: 'contentEditable',\n  contextmenu: 'contextMenu',\n  controls: 'controls',\n  controlslist: 'controlsList',\n  coords: 'coords',\n  crossorigin: 'crossOrigin',\n  dangerouslysetinnerhtml: 'dangerouslySetInnerHTML',\n  data: 'data',\n  datetime: 'dateTime',\n  'default': 'default',\n  defaultchecked: 'defaultChecked',\n  defaultvalue: 'defaultValue',\n  defer: 'defer',\n  dir: 'dir',\n  disabled: 'disabled',\n  download: 'download',\n  draggable: 'draggable',\n  enctype: 'encType',\n  'for': 'htmlFor',\n  form: 'form',\n  formmethod: 'formMethod',\n  formaction: 'formAction',\n  formenctype: 'formEncType',\n  formnovalidate: 'formNoValidate',\n  formtarget: 'formTarget',\n  frameborder: 'frameBorder',\n  headers: 'headers',\n  height: 'height',\n  hidden: 'hidden',\n  high: 'high',\n  href: 'href',\n  hreflang: 'hrefLang',\n  htmlfor: 'htmlFor',\n  httpequiv: 'httpEquiv',\n  'http-equiv': 'httpEquiv',\n  icon: 'icon',\n  id: 'id',\n  innerhtml: 'innerHTML',\n  inputmode: 'inputMode',\n  integrity: 'integrity',\n  is: 'is',\n  itemid: 'itemID',\n  itemprop: 'itemProp',\n  itemref: 'itemRef',\n  itemscope: 'itemScope',\n  itemtype: 'itemType',\n  keyparams: 'keyParams',\n  keytype: 'keyType',\n  kind: 'kind',\n  label: 'label',\n  lang: 'lang',\n  list: 'list',\n  loop: 'loop',\n  low: 'low',\n  manifest: 'manifest',\n  marginwidth: 'marginWidth',\n  marginheight: 'marginHeight',\n  max: 'max',\n  maxlength: 'maxLength',\n  media: 'media',\n  mediagroup: 'mediaGroup',\n  method: 'method',\n  min: 'min',\n  minlength: 'minLength',\n  multiple: 'multiple',\n  muted: 'muted',\n  name: 'name',\n  nonce: 'nonce',\n  novalidate: 'noValidate',\n  open: 'open',\n  optimum: 'optimum',\n  pattern: 'pattern',\n  placeholder: 'placeholder',\n  playsinline: 'playsInline',\n  poster: 'poster',\n  preload: 'preload',\n  profile: 'profile',\n  radiogroup: 'radioGroup',\n  readonly: 'readOnly',\n  referrerpolicy: 'referrerPolicy',\n  rel: 'rel',\n  required: 'required',\n  reversed: 'reversed',\n  role: 'role',\n  rows: 'rows',\n  rowspan: 'rowSpan',\n  sandbox: 'sandbox',\n  scope: 'scope',\n  scoped: 'scoped',\n  scrolling: 'scrolling',\n  seamless: 'seamless',\n  selected: 'selected',\n  shape: 'shape',\n  size: 'size',\n  sizes: 'sizes',\n  span: 'span',\n  spellcheck: 'spellCheck',\n  src: 'src',\n  srcdoc: 'srcDoc',\n  srclang: 'srcLang',\n  srcset: 'srcSet',\n  start: 'start',\n  step: 'step',\n  style: 'style',\n  summary: 'summary',\n  tabindex: 'tabIndex',\n  target: 'target',\n  title: 'title',\n  type: 'type',\n  usemap: 'useMap',\n  value: 'value',\n  width: 'width',\n  wmode: 'wmode',\n  wrap: 'wrap',\n\n  // SVG\n  about: 'about',\n  accentheight: 'accentHeight',\n  'accent-height': 'accentHeight',\n  accumulate: 'accumulate',\n  additive: 'additive',\n  alignmentbaseline: 'alignmentBaseline',\n  'alignment-baseline': 'alignmentBaseline',\n  allowreorder: 'allowReorder',\n  alphabetic: 'alphabetic',\n  amplitude: 'amplitude',\n  arabicform: 'arabicForm',\n  'arabic-form': 'arabicForm',\n  ascent: 'ascent',\n  attributename: 'attributeName',\n  attributetype: 'attributeType',\n  autoreverse: 'autoReverse',\n  azimuth: 'azimuth',\n  basefrequency: 'baseFrequency',\n  baselineshift: 'baselineShift',\n  'baseline-shift': 'baselineShift',\n  baseprofile: 'baseProfile',\n  bbox: 'bbox',\n  begin: 'begin',\n  bias: 'bias',\n  by: 'by',\n  calcmode: 'calcMode',\n  capheight: 'capHeight',\n  'cap-height': 'capHeight',\n  clip: 'clip',\n  clippath: 'clipPath',\n  'clip-path': 'clipPath',\n  clippathunits: 'clipPathUnits',\n  cliprule: 'clipRule',\n  'clip-rule': 'clipRule',\n  color: 'color',\n  colorinterpolation: 'colorInterpolation',\n  'color-interpolation': 'colorInterpolation',\n  colorinterpolationfilters: 'colorInterpolationFilters',\n  'color-interpolation-filters': 'colorInterpolationFilters',\n  colorprofile: 'colorProfile',\n  'color-profile': 'colorProfile',\n  colorrendering: 'colorRendering',\n  'color-rendering': 'colorRendering',\n  contentscripttype: 'contentScriptType',\n  contentstyletype: 'contentStyleType',\n  cursor: 'cursor',\n  cx: 'cx',\n  cy: 'cy',\n  d: 'd',\n  datatype: 'datatype',\n  decelerate: 'decelerate',\n  descent: 'descent',\n  diffuseconstant: 'diffuseConstant',\n  direction: 'direction',\n  display: 'display',\n  divisor: 'divisor',\n  dominantbaseline: 'dominantBaseline',\n  'dominant-baseline': 'dominantBaseline',\n  dur: 'dur',\n  dx: 'dx',\n  dy: 'dy',\n  edgemode: 'edgeMode',\n  elevation: 'elevation',\n  enablebackground: 'enableBackground',\n  'enable-background': 'enableBackground',\n  end: 'end',\n  exponent: 'exponent',\n  externalresourcesrequired: 'externalResourcesRequired',\n  fill: 'fill',\n  fillopacity: 'fillOpacity',\n  'fill-opacity': 'fillOpacity',\n  fillrule: 'fillRule',\n  'fill-rule': 'fillRule',\n  filter: 'filter',\n  filterres: 'filterRes',\n  filterunits: 'filterUnits',\n  floodopacity: 'floodOpacity',\n  'flood-opacity': 'floodOpacity',\n  floodcolor: 'floodColor',\n  'flood-color': 'floodColor',\n  focusable: 'focusable',\n  fontfamily: 'fontFamily',\n  'font-family': 'fontFamily',\n  fontsize: 'fontSize',\n  'font-size': 'fontSize',\n  fontsizeadjust: 'fontSizeAdjust',\n  'font-size-adjust': 'fontSizeAdjust',\n  fontstretch: 'fontStretch',\n  'font-stretch': 'fontStretch',\n  fontstyle: 'fontStyle',\n  'font-style': 'fontStyle',\n  fontvariant: 'fontVariant',\n  'font-variant': 'fontVariant',\n  fontweight: 'fontWeight',\n  'font-weight': 'fontWeight',\n  format: 'format',\n  from: 'from',\n  fx: 'fx',\n  fy: 'fy',\n  g1: 'g1',\n  g2: 'g2',\n  glyphname: 'glyphName',\n  'glyph-name': 'glyphName',\n  glyphorientationhorizontal: 'glyphOrientationHorizontal',\n  'glyph-orientation-horizontal': 'glyphOrientationHorizontal',\n  glyphorientationvertical: 'glyphOrientationVertical',\n  'glyph-orientation-vertical': 'glyphOrientationVertical',\n  glyphref: 'glyphRef',\n  gradienttransform: 'gradientTransform',\n  gradientunits: 'gradientUnits',\n  hanging: 'hanging',\n  horizadvx: 'horizAdvX',\n  'horiz-adv-x': 'horizAdvX',\n  horizoriginx: 'horizOriginX',\n  'horiz-origin-x': 'horizOriginX',\n  ideographic: 'ideographic',\n  imagerendering: 'imageRendering',\n  'image-rendering': 'imageRendering',\n  in2: 'in2',\n  'in': 'in',\n  inlist: 'inlist',\n  intercept: 'intercept',\n  k1: 'k1',\n  k2: 'k2',\n  k3: 'k3',\n  k4: 'k4',\n  k: 'k',\n  kernelmatrix: 'kernelMatrix',\n  kernelunitlength: 'kernelUnitLength',\n  kerning: 'kerning',\n  keypoints: 'keyPoints',\n  keysplines: 'keySplines',\n  keytimes: 'keyTimes',\n  lengthadjust: 'lengthAdjust',\n  letterspacing: 'letterSpacing',\n  'letter-spacing': 'letterSpacing',\n  lightingcolor: 'lightingColor',\n  'lighting-color': 'lightingColor',\n  limitingconeangle: 'limitingConeAngle',\n  local: 'local',\n  markerend: 'markerEnd',\n  'marker-end': 'markerEnd',\n  markerheight: 'markerHeight',\n  markermid: 'markerMid',\n  'marker-mid': 'markerMid',\n  markerstart: 'markerStart',\n  'marker-start': 'markerStart',\n  markerunits: 'markerUnits',\n  markerwidth: 'markerWidth',\n  mask: 'mask',\n  maskcontentunits: 'maskContentUnits',\n  maskunits: 'maskUnits',\n  mathematical: 'mathematical',\n  mode: 'mode',\n  numoctaves: 'numOctaves',\n  offset: 'offset',\n  opacity: 'opacity',\n  operator: 'operator',\n  order: 'order',\n  orient: 'orient',\n  orientation: 'orientation',\n  origin: 'origin',\n  overflow: 'overflow',\n  overlineposition: 'overlinePosition',\n  'overline-position': 'overlinePosition',\n  overlinethickness: 'overlineThickness',\n  'overline-thickness': 'overlineThickness',\n  paintorder: 'paintOrder',\n  'paint-order': 'paintOrder',\n  panose1: 'panose1',\n  'panose-1': 'panose1',\n  pathlength: 'pathLength',\n  patterncontentunits: 'patternContentUnits',\n  patterntransform: 'patternTransform',\n  patternunits: 'patternUnits',\n  pointerevents: 'pointerEvents',\n  'pointer-events': 'pointerEvents',\n  points: 'points',\n  pointsatx: 'pointsAtX',\n  pointsaty: 'pointsAtY',\n  pointsatz: 'pointsAtZ',\n  prefix: 'prefix',\n  preservealpha: 'preserveAlpha',\n  preserveaspectratio: 'preserveAspectRatio',\n  primitiveunits: 'primitiveUnits',\n  property: 'property',\n  r: 'r',\n  radius: 'radius',\n  refx: 'refX',\n  refy: 'refY',\n  renderingintent: 'renderingIntent',\n  'rendering-intent': 'renderingIntent',\n  repeatcount: 'repeatCount',\n  repeatdur: 'repeatDur',\n  requiredextensions: 'requiredExtensions',\n  requiredfeatures: 'requiredFeatures',\n  resource: 'resource',\n  restart: 'restart',\n  result: 'result',\n  results: 'results',\n  rotate: 'rotate',\n  rx: 'rx',\n  ry: 'ry',\n  scale: 'scale',\n  security: 'security',\n  seed: 'seed',\n  shaperendering: 'shapeRendering',\n  'shape-rendering': 'shapeRendering',\n  slope: 'slope',\n  spacing: 'spacing',\n  specularconstant: 'specularConstant',\n  specularexponent: 'specularExponent',\n  speed: 'speed',\n  spreadmethod: 'spreadMethod',\n  startoffset: 'startOffset',\n  stddeviation: 'stdDeviation',\n  stemh: 'stemh',\n  stemv: 'stemv',\n  stitchtiles: 'stitchTiles',\n  stopcolor: 'stopColor',\n  'stop-color': 'stopColor',\n  stopopacity: 'stopOpacity',\n  'stop-opacity': 'stopOpacity',\n  strikethroughposition: 'strikethroughPosition',\n  'strikethrough-position': 'strikethroughPosition',\n  strikethroughthickness: 'strikethroughThickness',\n  'strikethrough-thickness': 'strikethroughThickness',\n  string: 'string',\n  stroke: 'stroke',\n  strokedasharray: 'strokeDasharray',\n  'stroke-dasharray': 'strokeDasharray',\n  strokedashoffset: 'strokeDashoffset',\n  'stroke-dashoffset': 'strokeDashoffset',\n  strokelinecap: 'strokeLinecap',\n  'stroke-linecap': 'strokeLinecap',\n  strokelinejoin: 'strokeLinejoin',\n  'stroke-linejoin': 'strokeLinejoin',\n  strokemiterlimit: 'strokeMiterlimit',\n  'stroke-miterlimit': 'strokeMiterlimit',\n  strokewidth: 'strokeWidth',\n  'stroke-width': 'strokeWidth',\n  strokeopacity: 'strokeOpacity',\n  'stroke-opacity': 'strokeOpacity',\n  suppresscontenteditablewarning: 'suppressContentEditableWarning',\n  surfacescale: 'surfaceScale',\n  systemlanguage: 'systemLanguage',\n  tablevalues: 'tableValues',\n  targetx: 'targetX',\n  targety: 'targetY',\n  textanchor: 'textAnchor',\n  'text-anchor': 'textAnchor',\n  textdecoration: 'textDecoration',\n  'text-decoration': 'textDecoration',\n  textlength: 'textLength',\n  textrendering: 'textRendering',\n  'text-rendering': 'textRendering',\n  to: 'to',\n  transform: 'transform',\n  'typeof': 'typeof',\n  u1: 'u1',\n  u2: 'u2',\n  underlineposition: 'underlinePosition',\n  'underline-position': 'underlinePosition',\n  underlinethickness: 'underlineThickness',\n  'underline-thickness': 'underlineThickness',\n  unicode: 'unicode',\n  unicodebidi: 'unicodeBidi',\n  'unicode-bidi': 'unicodeBidi',\n  unicoderange: 'unicodeRange',\n  'unicode-range': 'unicodeRange',\n  unitsperem: 'unitsPerEm',\n  'units-per-em': 'unitsPerEm',\n  unselectable: 'unselectable',\n  valphabetic: 'vAlphabetic',\n  'v-alphabetic': 'vAlphabetic',\n  values: 'values',\n  vectoreffect: 'vectorEffect',\n  'vector-effect': 'vectorEffect',\n  version: 'version',\n  vertadvy: 'vertAdvY',\n  'vert-adv-y': 'vertAdvY',\n  vertoriginx: 'vertOriginX',\n  'vert-origin-x': 'vertOriginX',\n  vertoriginy: 'vertOriginY',\n  'vert-origin-y': 'vertOriginY',\n  vhanging: 'vHanging',\n  'v-hanging': 'vHanging',\n  videographic: 'vIdeographic',\n  'v-ideographic': 'vIdeographic',\n  viewbox: 'viewBox',\n  viewtarget: 'viewTarget',\n  visibility: 'visibility',\n  vmathematical: 'vMathematical',\n  'v-mathematical': 'vMathematical',\n  vocab: 'vocab',\n  widths: 'widths',\n  wordspacing: 'wordSpacing',\n  'word-spacing': 'wordSpacing',\n  writingmode: 'writingMode',\n  'writing-mode': 'writingMode',\n  x1: 'x1',\n  x2: 'x2',\n  x: 'x',\n  xchannelselector: 'xChannelSelector',\n  xheight: 'xHeight',\n  'x-height': 'xHeight',\n  xlinkactuate: 'xlinkActuate',\n  'xlink:actuate': 'xlinkActuate',\n  xlinkarcrole: 'xlinkArcrole',\n  'xlink:arcrole': 'xlinkArcrole',\n  xlinkhref: 'xlinkHref',\n  'xlink:href': 'xlinkHref',\n  xlinkrole: 'xlinkRole',\n  'xlink:role': 'xlinkRole',\n  xlinkshow: 'xlinkShow',\n  'xlink:show': 'xlinkShow',\n  xlinktitle: 'xlinkTitle',\n  'xlink:title': 'xlinkTitle',\n  xlinktype: 'xlinkType',\n  'xlink:type': 'xlinkType',\n  xmlbase: 'xmlBase',\n  'xml:base': 'xmlBase',\n  xmllang: 'xmlLang',\n  'xml:lang': 'xmlLang',\n  xmlns: 'xmlns',\n  'xml:space': 'xmlSpace',\n  xmlnsxlink: 'xmlnsXlink',\n  'xmlns:xlink': 'xmlnsXlink',\n  xmlspace: 'xmlSpace',\n  y1: 'y1',\n  y2: 'y2',\n  y: 'y',\n  ychannelselector: 'yChannelSelector',\n  z: 'z',\n  zoomandpan: 'zoomAndPan'\n};\n\nvar possibleStandardNames_1 = possibleStandardNames$1;\n\n{\n  var warning$16 = require$$0;\n\n  var _require$7 = ReactGlobalSharedState_1,\n      ReactComponentTreeHook$3 = _require$7.ReactComponentTreeHook,\n      ReactDebugCurrentFrame$3 = _require$7.ReactDebugCurrentFrame;\n\n  var getStackAddendumByID$2 = ReactComponentTreeHook$3.getStackAddendumByID;\n}\n\nfunction getStackAddendum$2(debugID) {\n  if (debugID != null) {\n    // This can only happen on Stack\n    return getStackAddendumByID$2(debugID);\n  } else {\n    // This can only happen on Fiber / Server\n    var stack = ReactDebugCurrentFrame$3.getStackAddendum();\n    return stack != null ? stack : '';\n  }\n}\n\n{\n  var warnedProperties$1 = {};\n  var hasOwnProperty$1 = Object.prototype.hasOwnProperty;\n  var EVENT_NAME_REGEX = /^on[A-Z]/;\n  var rARIA$1 = new RegExp('^(aria)-[' + DOMProperty_1.ATTRIBUTE_NAME_CHAR + ']*$');\n  var rARIACamel$1 = new RegExp('^(aria)[A-Z][' + DOMProperty_1.ATTRIBUTE_NAME_CHAR + ']*$');\n  var possibleStandardNames = possibleStandardNames_1;\n\n  var validateProperty$1 = function (tagName, name, value, debugID) {\n    if (hasOwnProperty$1.call(warnedProperties$1, name) && warnedProperties$1[name]) {\n      return true;\n    }\n\n    if (EventPluginRegistry_1.registrationNameModules.hasOwnProperty(name)) {\n      return true;\n    }\n\n    if (EventPluginRegistry_1.plugins.length === 0 && EVENT_NAME_REGEX.test(name)) {\n      // If no event plugins have been injected, we might be in a server environment.\n      // Don't check events in this case.\n      return true;\n    }\n\n    var lowerCasedName = name.toLowerCase();\n    var registrationName = EventPluginRegistry_1.possibleRegistrationNames.hasOwnProperty(lowerCasedName) ? EventPluginRegistry_1.possibleRegistrationNames[lowerCasedName] : null;\n\n    if (registrationName != null) {\n      warning$16(false, 'Invalid event handler property `%s`. Did you mean `%s`?%s', name, registrationName, getStackAddendum$2(debugID));\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    if (lowerCasedName.indexOf('on') === 0) {\n      warning$16(false, 'Unknown event handler property `%s`. It will be ignored.%s', name, getStackAddendum$2(debugID));\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    // Let the ARIA attribute hook validate ARIA attributes\n    if (rARIA$1.test(name) || rARIACamel$1.test(name)) {\n      return true;\n    }\n\n    if (lowerCasedName === 'onfocusin' || lowerCasedName === 'onfocusout') {\n      warning$16(false, 'React uses onFocus and onBlur instead of onFocusIn and onFocusOut. ' + 'All React events are normalized to bubble, so onFocusIn and onFocusOut ' + 'are not needed/supported by React.');\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    if (lowerCasedName === 'innerhtml') {\n      warning$16(false, 'Directly setting property `innerHTML` is not permitted. ' + 'For more information, lookup documentation on `dangerouslySetInnerHTML`.');\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    if (lowerCasedName === 'aria') {\n      warning$16(false, 'The `aria` attribute is reserved for future use in React. ' + 'Pass individual `aria-` attributes instead.');\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    if (lowerCasedName === 'is' && value !== null && value !== undefined && typeof value !== 'string') {\n      warning$16(false, 'Received a `%s` for string attribute `is`. If this is expected, cast ' + 'the value to a string.%s', typeof value, getStackAddendum$2(debugID));\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    if (typeof value === 'number' && isNaN(value)) {\n      warning$16(false, 'Received NaN for numeric attribute `%s`. If this is expected, cast ' + 'the value to a string.%s', name, getStackAddendum$2(debugID));\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    var isReserved = DOMProperty_1.isReservedProp(name);\n\n    // Known attributes should match the casing specified in the property config.\n    if (possibleStandardNames.hasOwnProperty(lowerCasedName)) {\n      var standardName = possibleStandardNames[lowerCasedName];\n      if (standardName !== name) {\n        warning$16(false, 'Invalid DOM property `%s`. Did you mean `%s`?%s', name, standardName, getStackAddendum$2(debugID));\n        warnedProperties$1[name] = true;\n        return true;\n      }\n    } else if (!isReserved && name !== lowerCasedName) {\n      // Unknown attributes should have lowercase casing since that's how they\n      // will be cased anyway with server rendering.\n      warning$16(false, 'React does not recognize the `%s` prop on a DOM element. If you ' + 'intentionally want it to appear in the DOM as a custom ' + 'attribute, spell it as lowercase `%s` instead. ' + 'If you accidentally passed it from a parent component, remove ' + 'it from the DOM element.%s', name, lowerCasedName, getStackAddendum$2(debugID));\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    if (typeof value === 'boolean') {\n      warning$16(DOMProperty_1.shouldAttributeAcceptBooleanValue(name), 'Received `%s` for non-boolean attribute `%s`. If this is expected, cast ' + 'the value to a string.%s', value, name, getStackAddendum$2(debugID));\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    // Now that we've validated casing, do not validate\n    // data types for reserved props\n    if (isReserved) {\n      return true;\n    }\n\n    // Warn when a known attribute is a bad type\n    if (!DOMProperty_1.shouldSetAttribute(name, value)) {\n      warnedProperties$1[name] = true;\n      return false;\n    }\n\n    return true;\n  };\n}\n\nvar warnUnknownProperties = function (type, props, debugID) {\n  var unknownProps = [];\n  for (var key in props) {\n    var isValid = validateProperty$1(type, key, props[key], debugID);\n    if (!isValid) {\n      unknownProps.push(key);\n    }\n  }\n\n  var unknownPropString = unknownProps.map(function (prop) {\n    return '`' + prop + '`';\n  }).join(', ');\n  if (unknownProps.length === 1) {\n    warning$16(false, 'Invalid value for prop %s on <%s> tag. Either remove it from the element, ' + 'or pass a string or number value to keep it in the DOM. ' + 'For details, see https://fb.me/react-attribute-behavior%s', unknownPropString, type, getStackAddendum$2(debugID));\n  } else if (unknownProps.length > 1) {\n    warning$16(false, 'Invalid values for props %s on <%s> tag. Either remove them from the element, ' + 'or pass a string or number value to keep them in the DOM. ' + 'For details, see https://fb.me/react-attribute-behavior%s', unknownPropString, type, getStackAddendum$2(debugID));\n  }\n};\n\nfunction validateProperties$2(type, props, debugID /* Stack only */) {\n  if (isCustomComponent_1(type, props)) {\n    return;\n  }\n  warnUnknownProperties(type, props, debugID);\n}\n\nvar ReactDOMUnknownPropertyHook$1 = {\n  // Fiber\n  validateProperties: validateProperties$2,\n  // Stack\n  onBeforeMountComponent: function (debugID, element) {\n    if (true && element != null && typeof element.type === 'string') {\n      validateProperties$2(element.type, element.props, debugID);\n    }\n  },\n  onBeforeUpdateComponent: function (debugID, element) {\n    if (true && element != null && typeof element.type === 'string') {\n      validateProperties$2(element.type, element.props, debugID);\n    }\n  }\n};\n\nvar ReactDOMUnknownPropertyHook_1 = ReactDOMUnknownPropertyHook$1;\n\nvar getCurrentFiberOwnerName = ReactDebugCurrentFiber_1.getCurrentFiberOwnerName;\n\nvar DOCUMENT_NODE$1 = HTMLNodeType_1.DOCUMENT_NODE;\nvar DOCUMENT_FRAGMENT_NODE$1 = HTMLNodeType_1.DOCUMENT_FRAGMENT_NODE;\n\n\n\n\n\n\n\n\n{\n  var warning$3 = require$$0;\n\n  var _require3$1 = ReactDebugCurrentFiber_1,\n      getCurrentFiberStackAddendum = _require3$1.getCurrentFiberStackAddendum;\n\n  var ReactDOMInvalidARIAHook = ReactDOMInvalidARIAHook_1;\n  var ReactDOMNullInputValuePropHook = ReactDOMNullInputValuePropHook_1;\n  var ReactDOMUnknownPropertyHook = ReactDOMUnknownPropertyHook_1;\n  var validateARIAProperties = ReactDOMInvalidARIAHook.validateProperties;\n  var validateInputProperties = ReactDOMNullInputValuePropHook.validateProperties;\n  var validateUnknownProperties = ReactDOMUnknownPropertyHook.validateProperties;\n}\n\nvar didWarnInvalidHydration = false;\nvar didWarnShadyDOM = false;\n\nvar listenTo = ReactBrowserEventEmitter_1.listenTo;\nvar registrationNameModules = EventPluginRegistry_1.registrationNameModules;\n\nvar DANGEROUSLY_SET_INNER_HTML = 'dangerouslySetInnerHTML';\nvar SUPPRESS_CONTENT_EDITABLE_WARNING = 'suppressContentEditableWarning';\nvar CHILDREN = 'children';\nvar STYLE = 'style';\nvar HTML = '__html';\n\nvar HTML_NAMESPACE$1 = DOMNamespaces.Namespaces.html;\nvar getIntrinsicNamespace$1 = DOMNamespaces.getIntrinsicNamespace;\n\n\n{\n  var warnedUnknownTags = {\n    // Chrome is the only major browser not shipping <time>. But as of July\n    // 2017 it intends to ship it due to widespread usage. We intentionally\n    // *don't* warn for <time> even if it's unrecognized by Chrome because\n    // it soon will be, and many apps have been using it anyway.\n    time: true\n  };\n\n  var validatePropertiesInDevelopment = function (type, props) {\n    validateARIAProperties(type, props);\n    validateInputProperties(type, props);\n    validateUnknownProperties(type, props);\n  };\n\n  var warnForTextDifference = function (serverText, clientText) {\n    if (didWarnInvalidHydration) {\n      return;\n    }\n    didWarnInvalidHydration = true;\n    warning$3(false, 'Text content did not match. Server: \"%s\" Client: \"%s\"', serverText, clientText);\n  };\n\n  var warnForPropDifference = function (propName, serverValue, clientValue) {\n    if (didWarnInvalidHydration) {\n      return;\n    }\n    didWarnInvalidHydration = true;\n    warning$3(false, 'Prop `%s` did not match. Server: %s Client: %s', propName, JSON.stringify(serverValue), JSON.stringify(clientValue));\n  };\n\n  var warnForExtraAttributes = function (attributeNames) {\n    if (didWarnInvalidHydration) {\n      return;\n    }\n    didWarnInvalidHydration = true;\n    var names = [];\n    attributeNames.forEach(function (name) {\n      names.push(name);\n    });\n    warning$3(false, 'Extra attributes from the server: %s', names);\n  };\n\n  var warnForInvalidEventListener = function (registrationName, listener) {\n    warning$3(false, 'Expected `%s` listener to be a function, instead got a value of `%s` type.%s', registrationName, typeof listener, getCurrentFiberStackAddendum());\n  };\n\n  var testDocument;\n  // Parse the HTML and read it back to normalize the HTML string so that it\n  // can be used for comparison.\n  var normalizeHTML = function (parent, html) {\n    if (!testDocument) {\n      testDocument = document.implementation.createHTMLDocument();\n    }\n    var testElement = parent.namespaceURI === HTML_NAMESPACE$1 ? testDocument.createElement(parent.tagName) : testDocument.createElementNS(parent.namespaceURI, parent.tagName);\n    testElement.innerHTML = html;\n    return testElement.innerHTML;\n  };\n}\n\nfunction ensureListeningTo(rootContainerElement, registrationName) {\n  var isDocumentOrFragment = rootContainerElement.nodeType === DOCUMENT_NODE$1 || rootContainerElement.nodeType === DOCUMENT_FRAGMENT_NODE$1;\n  var doc = isDocumentOrFragment ? rootContainerElement : rootContainerElement.ownerDocument;\n  listenTo(registrationName, doc);\n}\n\nfunction getOwnerDocumentFromRootContainer(rootContainerElement) {\n  return rootContainerElement.nodeType === DOCUMENT_NODE$1 ? rootContainerElement : rootContainerElement.ownerDocument;\n}\n\n// There are so many media events, it makes sense to just\n// maintain a list rather than create a `trapBubbledEvent` for each\nvar mediaEvents = {\n  topAbort: 'abort',\n  topCanPlay: 'canplay',\n  topCanPlayThrough: 'canplaythrough',\n  topDurationChange: 'durationchange',\n  topEmptied: 'emptied',\n  topEncrypted: 'encrypted',\n  topEnded: 'ended',\n  topError: 'error',\n  topLoadedData: 'loadeddata',\n  topLoadedMetadata: 'loadedmetadata',\n  topLoadStart: 'loadstart',\n  topPause: 'pause',\n  topPlay: 'play',\n  topPlaying: 'playing',\n  topProgress: 'progress',\n  topRateChange: 'ratechange',\n  topSeeked: 'seeked',\n  topSeeking: 'seeking',\n  topStalled: 'stalled',\n  topSuspend: 'suspend',\n  topTimeUpdate: 'timeupdate',\n  topVolumeChange: 'volumechange',\n  topWaiting: 'waiting'\n};\n\nfunction trapClickOnNonInteractiveElement(node) {\n  // Mobile Safari does not fire properly bubble click events on\n  // non-interactive elements, which means delegated click listeners do not\n  // fire. The workaround for this bug involves attaching an empty click\n  // listener on the target node.\n  // http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n  // Just set it using the onclick property so that we don't have to manage any\n  // bookkeeping for it. Not sure if we need to clear it when the listener is\n  // removed.\n  // TODO: Only do this for the relevant Safaris maybe?\n  node.onclick = emptyFunction;\n}\n\nfunction setInitialDOMProperties(domElement, rootContainerElement, nextProps, isCustomComponentTag) {\n  for (var propKey in nextProps) {\n    if (!nextProps.hasOwnProperty(propKey)) {\n      continue;\n    }\n    var nextProp = nextProps[propKey];\n    if (propKey === STYLE) {\n      {\n        if (nextProp) {\n          // Freeze the next style object so that we can assume it won't be\n          // mutated. We have already warned for this in the past.\n          Object.freeze(nextProp);\n        }\n      }\n      // Relies on `updateStylesByID` not mutating `styleUpdates`.\n      CSSPropertyOperations_1.setValueForStyles(domElement, nextProp);\n    } else if (propKey === DANGEROUSLY_SET_INNER_HTML) {\n      var nextHtml = nextProp ? nextProp[HTML] : undefined;\n      if (nextHtml != null) {\n        setInnerHTML_1(domElement, nextHtml);\n      }\n    } else if (propKey === CHILDREN) {\n      if (typeof nextProp === 'string') {\n        setTextContent_1(domElement, nextProp);\n      } else if (typeof nextProp === 'number') {\n        setTextContent_1(domElement, '' + nextProp);\n      }\n    } else if (propKey === SUPPRESS_CONTENT_EDITABLE_WARNING) {\n      // Noop\n    } else if (registrationNameModules.hasOwnProperty(propKey)) {\n      if (nextProp != null) {\n        if (true && typeof nextProp !== 'function') {\n          warnForInvalidEventListener(propKey, nextProp);\n        }\n        ensureListeningTo(rootContainerElement, propKey);\n      }\n    } else if (isCustomComponentTag) {\n      DOMPropertyOperations_1.setValueForAttribute(domElement, propKey, nextProp);\n    } else if (nextProp != null) {\n      // If we're updating to null or undefined, we should remove the property\n      // from the DOM node instead of inadvertently setting to a string. This\n      // brings us in line with the same behavior we have on initial render.\n      DOMPropertyOperations_1.setValueForProperty(domElement, propKey, nextProp);\n    }\n  }\n}\n\nfunction updateDOMProperties(domElement, updatePayload, wasCustomComponentTag, isCustomComponentTag) {\n  // TODO: Handle wasCustomComponentTag\n  for (var i = 0; i < updatePayload.length; i += 2) {\n    var propKey = updatePayload[i];\n    var propValue = updatePayload[i + 1];\n    if (propKey === STYLE) {\n      CSSPropertyOperations_1.setValueForStyles(domElement, propValue);\n    } else if (propKey === DANGEROUSLY_SET_INNER_HTML) {\n      setInnerHTML_1(domElement, propValue);\n    } else if (propKey === CHILDREN) {\n      setTextContent_1(domElement, propValue);\n    } else if (isCustomComponentTag) {\n      if (propValue != null) {\n        DOMPropertyOperations_1.setValueForAttribute(domElement, propKey, propValue);\n      } else {\n        DOMPropertyOperations_1.deleteValueForAttribute(domElement, propKey);\n      }\n    } else if (propValue != null) {\n      DOMPropertyOperations_1.setValueForProperty(domElement, propKey, propValue);\n    } else {\n      // If we're updating to null or undefined, we should remove the property\n      // from the DOM node instead of inadvertently setting to a string. This\n      // brings us in line with the same behavior we have on initial render.\n      DOMPropertyOperations_1.deleteValueForProperty(domElement, propKey);\n    }\n  }\n}\n\nvar ReactDOMFiberComponent = {\n  createElement: function (type, props, rootContainerElement, parentNamespace) {\n    // We create tags in the namespace of their parent container, except HTML\n    var ownerDocument = getOwnerDocumentFromRootContainer(rootContainerElement);\n    var domElement;\n    var namespaceURI = parentNamespace;\n    if (namespaceURI === HTML_NAMESPACE$1) {\n      namespaceURI = getIntrinsicNamespace$1(type);\n    }\n    if (namespaceURI === HTML_NAMESPACE$1) {\n      {\n        var isCustomComponentTag = isCustomComponent_1(type, props);\n        // Should this check be gated by parent namespace? Not sure we want to\n        // allow <SVG> or <mATH>.\n        warning$3(isCustomComponentTag || type === type.toLowerCase(), '<%s /> is using uppercase HTML. Always use lowercase HTML tags ' + 'in React.', type);\n      }\n\n      if (type === 'script') {\n        // Create the script via .innerHTML so its \"parser-inserted\" flag is\n        // set to true and it does not execute\n        var div = ownerDocument.createElement('div');\n        div.innerHTML = '<script><' + '/script>'; // eslint-disable-line\n        // This is guaranteed to yield a script element.\n        var firstChild = div.firstChild;\n        domElement = div.removeChild(firstChild);\n      } else if (typeof props.is === 'string') {\n        // $FlowIssue `createElement` should be updated for Web Components\n        domElement = ownerDocument.createElement(type, { is: props.is });\n      } else {\n        // Separate else branch instead of using `props.is || undefined` above because of a Firefox bug.\n        // See discussion in https://github.com/facebook/react/pull/6896\n        // and discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1276240\n        domElement = ownerDocument.createElement(type);\n      }\n    } else {\n      domElement = ownerDocument.createElementNS(namespaceURI, type);\n    }\n\n    {\n      if (namespaceURI === HTML_NAMESPACE$1) {\n        if (!isCustomComponentTag && Object.prototype.toString.call(domElement) === '[object HTMLUnknownElement]' && !Object.prototype.hasOwnProperty.call(warnedUnknownTags, type)) {\n          warnedUnknownTags[type] = true;\n          warning$3(false, 'The tag <%s> is unrecognized in this browser. ' + 'If you meant to render a React component, start its name with ' + 'an uppercase letter.', type);\n        }\n      }\n    }\n\n    return domElement;\n  },\n  createTextNode: function (text, rootContainerElement) {\n    return getOwnerDocumentFromRootContainer(rootContainerElement).createTextNode(text);\n  },\n  setInitialProperties: function (domElement, tag, rawProps, rootContainerElement) {\n    var isCustomComponentTag = isCustomComponent_1(tag, rawProps);\n    {\n      validatePropertiesInDevelopment(tag, rawProps);\n      if (isCustomComponentTag && !didWarnShadyDOM && domElement.shadyRoot) {\n        warning$3(false, '%s is using shady DOM. Using shady DOM with React can ' + 'cause things to break subtly.', getCurrentFiberOwnerName() || 'A component');\n        didWarnShadyDOM = true;\n      }\n    }\n\n    // TODO: Make sure that we check isMounted before firing any of these events.\n    var props;\n    switch (tag) {\n      case 'iframe':\n      case 'object':\n        ReactBrowserEventEmitter_1.trapBubbledEvent('topLoad', 'load', domElement);\n        props = rawProps;\n        break;\n      case 'video':\n      case 'audio':\n        // Create listener for each media event\n        for (var event in mediaEvents) {\n          if (mediaEvents.hasOwnProperty(event)) {\n            ReactBrowserEventEmitter_1.trapBubbledEvent(event, mediaEvents[event], domElement);\n          }\n        }\n        props = rawProps;\n        break;\n      case 'source':\n        ReactBrowserEventEmitter_1.trapBubbledEvent('topError', 'error', domElement);\n        props = rawProps;\n        break;\n      case 'img':\n      case 'image':\n        ReactBrowserEventEmitter_1.trapBubbledEvent('topError', 'error', domElement);\n        ReactBrowserEventEmitter_1.trapBubbledEvent('topLoad', 'load', domElement);\n        props = rawProps;\n        break;\n      case 'form':\n        ReactBrowserEventEmitter_1.trapBubbledEvent('topReset', 'reset', domElement);\n        ReactBrowserEventEmitter_1.trapBubbledEvent('topSubmit', 'submit', domElement);\n        props = rawProps;\n        break;\n      case 'details':\n        ReactBrowserEventEmitter_1.trapBubbledEvent('topToggle', 'toggle', domElement);\n        props = rawProps;\n        break;\n      case 'input':\n        ReactDOMFiberInput.initWrapperState(domElement, rawProps);\n        props = ReactDOMFiberInput.getHostProps(domElement, rawProps);\n        ReactBrowserEventEmitter_1.trapBubbledEvent('topInvalid', 'invalid', domElement);\n        // For controlled components we always need to ensure we're listening\n        // to onChange. Even if there is no listener.\n        ensureListeningTo(rootContainerElement, 'onChange');\n        break;\n      case 'option':\n        ReactDOMFiberOption.validateProps(domElement, rawProps);\n        props = ReactDOMFiberOption.getHostProps(domElement, rawProps);\n        break;\n      case 'select':\n        ReactDOMFiberSelect.initWrapperState(domElement, rawProps);\n        props = ReactDOMFiberSelect.getHostProps(domElement, rawProps);\n        ReactBrowserEventEmitter_1.trapBubbledEvent('topInvalid', 'invalid', domElement);\n        // For controlled components we always need to ensure we're listening\n        // to onChange. Even if there is no listener.\n        ensureListeningTo(rootContainerElement, 'onChange');\n        break;\n      case 'textarea':\n        ReactDOMFiberTextarea.initWrapperState(domElement, rawProps);\n        props = ReactDOMFiberTextarea.getHostProps(domElement, rawProps);\n        ReactBrowserEventEmitter_1.trapBubbledEvent('topInvalid', 'invalid', domElement);\n        // For controlled components we always need to ensure we're listening\n        // to onChange. Even if there is no listener.\n        ensureListeningTo(rootContainerElement, 'onChange');\n        break;\n      default:\n        props = rawProps;\n    }\n\n    assertValidProps_1(tag, props, getCurrentFiberOwnerName);\n\n    setInitialDOMProperties(domElement, rootContainerElement, props, isCustomComponentTag);\n\n    switch (tag) {\n      case 'input':\n        // TODO: Make sure we check if this is still unmounted or do any clean\n        // up necessary since we never stop tracking anymore.\n        inputValueTracking_1.track(domElement);\n        ReactDOMFiberInput.postMountWrapper(domElement, rawProps);\n        break;\n      case 'textarea':\n        // TODO: Make sure we check if this is still unmounted or do any clean\n        // up necessary since we never stop tracking anymore.\n        inputValueTracking_1.track(domElement);\n        ReactDOMFiberTextarea.postMountWrapper(domElement, rawProps);\n        break;\n      case 'option':\n        ReactDOMFiberOption.postMountWrapper(domElement, rawProps);\n        break;\n      case 'select':\n        ReactDOMFiberSelect.postMountWrapper(domElement, rawProps);\n        break;\n      default:\n        if (typeof props.onClick === 'function') {\n          // TODO: This cast may not be sound for SVG, MathML or custom elements.\n          trapClickOnNonInteractiveElement(domElement);\n        }\n        break;\n    }\n  },\n\n\n  // Calculate the diff between the two objects.\n  diffProperties: function (domElement, tag, lastRawProps, nextRawProps, rootContainerElement) {\n    {\n      validatePropertiesInDevelopment(tag, nextRawProps);\n    }\n\n    var updatePayload = null;\n\n    var lastProps;\n    var nextProps;\n    switch (tag) {\n      case 'input':\n        lastProps = ReactDOMFiberInput.getHostProps(domElement, lastRawProps);\n        nextProps = ReactDOMFiberInput.getHostProps(domElement, nextRawProps);\n        updatePayload = [];\n        break;\n      case 'option':\n        lastProps = ReactDOMFiberOption.getHostProps(domElement, lastRawProps);\n        nextProps = ReactDOMFiberOption.getHostProps(domElement, nextRawProps);\n        updatePayload = [];\n        break;\n      case 'select':\n        lastProps = ReactDOMFiberSelect.getHostProps(domElement, lastRawProps);\n        nextProps = ReactDOMFiberSelect.getHostProps(domElement, nextRawProps);\n        updatePayload = [];\n        break;\n      case 'textarea':\n        lastProps = ReactDOMFiberTextarea.getHostProps(domElement, lastRawProps);\n        nextProps = ReactDOMFiberTextarea.getHostProps(domElement, nextRawProps);\n        updatePayload = [];\n        break;\n      default:\n        lastProps = lastRawProps;\n        nextProps = nextRawProps;\n        if (typeof lastProps.onClick !== 'function' && typeof nextProps.onClick === 'function') {\n          // TODO: This cast may not be sound for SVG, MathML or custom elements.\n          trapClickOnNonInteractiveElement(domElement);\n        }\n        break;\n    }\n\n    assertValidProps_1(tag, nextProps, getCurrentFiberOwnerName);\n\n    var propKey;\n    var styleName;\n    var styleUpdates = null;\n    for (propKey in lastProps) {\n      if (nextProps.hasOwnProperty(propKey) || !lastProps.hasOwnProperty(propKey) || lastProps[propKey] == null) {\n        continue;\n      }\n      if (propKey === STYLE) {\n        var lastStyle = lastProps[propKey];\n        for (styleName in lastStyle) {\n          if (lastStyle.hasOwnProperty(styleName)) {\n            if (!styleUpdates) {\n              styleUpdates = {};\n            }\n            styleUpdates[styleName] = '';\n          }\n        }\n      } else if (propKey === DANGEROUSLY_SET_INNER_HTML || propKey === CHILDREN) {\n        // Noop. This is handled by the clear text mechanism.\n      } else if (propKey === SUPPRESS_CONTENT_EDITABLE_WARNING) {\n        // Noop\n      } else if (registrationNameModules.hasOwnProperty(propKey)) {\n        // This is a special case. If any listener updates we need to ensure\n        // that the \"current\" fiber pointer gets updated so we need a commit\n        // to update this element.\n        if (!updatePayload) {\n          updatePayload = [];\n        }\n      } else {\n        // For all other deleted properties we add it to the queue. We use\n        // the whitelist in the commit phase instead.\n        (updatePayload = updatePayload || []).push(propKey, null);\n      }\n    }\n    for (propKey in nextProps) {\n      var nextProp = nextProps[propKey];\n      var lastProp = lastProps != null ? lastProps[propKey] : undefined;\n      if (!nextProps.hasOwnProperty(propKey) || nextProp === lastProp || nextProp == null && lastProp == null) {\n        continue;\n      }\n      if (propKey === STYLE) {\n        {\n          if (nextProp) {\n            // Freeze the next style object so that we can assume it won't be\n            // mutated. We have already warned for this in the past.\n            Object.freeze(nextProp);\n          }\n        }\n        if (lastProp) {\n          // Unset styles on `lastProp` but not on `nextProp`.\n          for (styleName in lastProp) {\n            if (lastProp.hasOwnProperty(styleName) && (!nextProp || !nextProp.hasOwnProperty(styleName))) {\n              if (!styleUpdates) {\n                styleUpdates = {};\n              }\n              styleUpdates[styleName] = '';\n            }\n          }\n          // Update styles that changed since `lastProp`.\n          for (styleName in nextProp) {\n            if (nextProp.hasOwnProperty(styleName) && lastProp[styleName] !== nextProp[styleName]) {\n              if (!styleUpdates) {\n                styleUpdates = {};\n              }\n              styleUpdates[styleName] = nextProp[styleName];\n            }\n          }\n        } else {\n          // Relies on `updateStylesByID` not mutating `styleUpdates`.\n          if (!styleUpdates) {\n            if (!updatePayload) {\n              updatePayload = [];\n            }\n            updatePayload.push(propKey, styleUpdates);\n          }\n          styleUpdates = nextProp;\n        }\n      } else if (propKey === DANGEROUSLY_SET_INNER_HTML) {\n        var nextHtml = nextProp ? nextProp[HTML] : undefined;\n        var lastHtml = lastProp ? lastProp[HTML] : undefined;\n        if (nextHtml != null) {\n          if (lastHtml !== nextHtml) {\n            (updatePayload = updatePayload || []).push(propKey, '' + nextHtml);\n          }\n        } else {\n          // TODO: It might be too late to clear this if we have children\n          // inserted already.\n        }\n      } else if (propKey === CHILDREN) {\n        if (lastProp !== nextProp && (typeof nextProp === 'string' || typeof nextProp === 'number')) {\n          (updatePayload = updatePayload || []).push(propKey, '' + nextProp);\n        }\n      } else if (propKey === SUPPRESS_CONTENT_EDITABLE_WARNING) {\n        // Noop\n      } else if (registrationNameModules.hasOwnProperty(propKey)) {\n        if (nextProp != null) {\n          // We eagerly listen to this even though we haven't committed yet.\n          if (true && typeof nextProp !== 'function') {\n            warnForInvalidEventListener(propKey, nextProp);\n          }\n          ensureListeningTo(rootContainerElement, propKey);\n        }\n        if (!updatePayload && lastProp !== nextProp) {\n          // This is a special case. If any listener updates we need to ensure\n          // that the \"current\" props pointer gets updated so we need a commit\n          // to update this element.\n          updatePayload = [];\n        }\n      } else {\n        // For any other property we always add it to the queue and then we\n        // filter it out using the whitelist during the commit.\n        (updatePayload = updatePayload || []).push(propKey, nextProp);\n      }\n    }\n    if (styleUpdates) {\n      (updatePayload = updatePayload || []).push(STYLE, styleUpdates);\n    }\n    return updatePayload;\n  },\n\n\n  // Apply the diff.\n  updateProperties: function (domElement, updatePayload, tag, lastRawProps, nextRawProps) {\n    var wasCustomComponentTag = isCustomComponent_1(tag, lastRawProps);\n    var isCustomComponentTag = isCustomComponent_1(tag, nextRawProps);\n    // Apply the diff.\n    updateDOMProperties(domElement, updatePayload, wasCustomComponentTag, isCustomComponentTag);\n\n    // TODO: Ensure that an update gets scheduled if any of the special props\n    // changed.\n    switch (tag) {\n      case 'input':\n        // Update the wrapper around inputs *after* updating props. This has to\n        // happen after `updateDOMProperties`. Otherwise HTML5 input validations\n        // raise warnings and prevent the new value from being assigned.\n        ReactDOMFiberInput.updateWrapper(domElement, nextRawProps);\n\n        // We also check that we haven't missed a value update, such as a\n        // Radio group shifting the checked value to another named radio input.\n        inputValueTracking_1.updateValueIfChanged(domElement);\n        break;\n      case 'textarea':\n        ReactDOMFiberTextarea.updateWrapper(domElement, nextRawProps);\n        break;\n      case 'select':\n        // <select> value update needs to occur after <option> children\n        // reconciliation\n        ReactDOMFiberSelect.postUpdateWrapper(domElement, nextRawProps);\n        break;\n    }\n  },\n  diffHydratedProperties: function (domElement, tag, rawProps, parentNamespace, rootContainerElement) {\n    {\n      var isCustomComponentTag = isCustomComponent_1(tag, rawProps);\n      validatePropertiesInDevelopment(tag, rawProps);\n      if (isCustomComponentTag && !didWarnShadyDOM && domElement.shadyRoot) {\n        warning$3(false, '%s is using shady DOM. Using shady DOM with React can ' + 'cause things to break subtly.', getCurrentFiberOwnerName() || 'A component');\n        didWarnShadyDOM = true;\n      }\n    }\n\n    // TODO: Make sure that we check isMounted before firing any of these events.\n    switch (tag) {\n      case 'iframe':\n      case 'object':\n        ReactBrowserEventEmitter_1.trapBubbledEvent('topLoad', 'load', domElement);\n        break;\n      case 'video':\n      case 'audio':\n        // Create listener for each media event\n        for (var event in mediaEvents) {\n          if (mediaEvents.hasOwnProperty(event)) {\n            ReactBrowserEventEmitter_1.trapBubbledEvent(event, mediaEvents[event], domElement);\n          }\n        }\n        break;\n      case 'source':\n        ReactBrowserEventEmitter_1.trapBubbledEvent('topError', 'error', domElement);\n        break;\n      case 'img':\n      case 'image':\n        ReactBrowserEventEmitter_1.trapBubbledEvent('topError', 'error', domElement);\n        ReactBrowserEventEmitter_1.trapBubbledEvent('topLoad', 'load', domElement);\n        break;\n      case 'form':\n        ReactBrowserEventEmitter_1.trapBubbledEvent('topReset', 'reset', domElement);\n        ReactBrowserEventEmitter_1.trapBubbledEvent('topSubmit', 'submit', domElement);\n        break;\n      case 'details':\n        ReactBrowserEventEmitter_1.trapBubbledEvent('topToggle', 'toggle', domElement);\n        break;\n      case 'input':\n        ReactDOMFiberInput.initWrapperState(domElement, rawProps);\n        ReactBrowserEventEmitter_1.trapBubbledEvent('topInvalid', 'invalid', domElement);\n        // For controlled components we always need to ensure we're listening\n        // to onChange. Even if there is no listener.\n        ensureListeningTo(rootContainerElement, 'onChange');\n        break;\n      case 'option':\n        ReactDOMFiberOption.validateProps(domElement, rawProps);\n        break;\n      case 'select':\n        ReactDOMFiberSelect.initWrapperState(domElement, rawProps);\n        ReactBrowserEventEmitter_1.trapBubbledEvent('topInvalid', 'invalid', domElement);\n        // For controlled components we always need to ensure we're listening\n        // to onChange. Even if there is no listener.\n        ensureListeningTo(rootContainerElement, 'onChange');\n        break;\n      case 'textarea':\n        ReactDOMFiberTextarea.initWrapperState(domElement, rawProps);\n        ReactBrowserEventEmitter_1.trapBubbledEvent('topInvalid', 'invalid', domElement);\n        // For controlled components we always need to ensure we're listening\n        // to onChange. Even if there is no listener.\n        ensureListeningTo(rootContainerElement, 'onChange');\n        break;\n    }\n\n    assertValidProps_1(tag, rawProps, getCurrentFiberOwnerName);\n\n    {\n      var extraAttributeNames = new Set();\n      var attributes = domElement.attributes;\n      for (var i = 0; i < attributes.length; i++) {\n        var name = attributes[i].name.toLowerCase();\n        switch (name) {\n          // Built-in SSR attribute is whitelisted\n          case 'data-reactroot':\n            break;\n          // Controlled attributes are not validated\n          // TODO: Only ignore them on controlled tags.\n          case 'value':\n            break;\n          case 'checked':\n            break;\n          case 'selected':\n            break;\n          default:\n            // Intentionally use the original name.\n            // See discussion in https://github.com/facebook/react/pull/10676.\n            extraAttributeNames.add(attributes[i].name);\n        }\n      }\n    }\n\n    var updatePayload = null;\n    for (var propKey in rawProps) {\n      if (!rawProps.hasOwnProperty(propKey)) {\n        continue;\n      }\n      var nextProp = rawProps[propKey];\n      if (propKey === CHILDREN) {\n        // For text content children we compare against textContent. This\n        // might match additional HTML that is hidden when we read it using\n        // textContent. E.g. \"foo\" will match \"f<span>oo</span>\" but that still\n        // satisfies our requirement. Our requirement is not to produce perfect\n        // HTML and attributes. Ideally we should preserve structure but it's\n        // ok not to if the visible content is still enough to indicate what\n        // even listeners these nodes might be wired up to.\n        // TODO: Warn if there is more than a single textNode as a child.\n        // TODO: Should we use domElement.firstChild.nodeValue to compare?\n        if (typeof nextProp === 'string') {\n          if (domElement.textContent !== nextProp) {\n            {\n              warnForTextDifference(domElement.textContent, nextProp);\n            }\n            updatePayload = [CHILDREN, nextProp];\n          }\n        } else if (typeof nextProp === 'number') {\n          if (domElement.textContent !== '' + nextProp) {\n            {\n              warnForTextDifference(domElement.textContent, nextProp);\n            }\n            updatePayload = [CHILDREN, '' + nextProp];\n          }\n        }\n      } else if (registrationNameModules.hasOwnProperty(propKey)) {\n        if (nextProp != null) {\n          if (true && typeof nextProp !== 'function') {\n            warnForInvalidEventListener(propKey, nextProp);\n          }\n          ensureListeningTo(rootContainerElement, propKey);\n        }\n      } else {\n        // Validate that the properties correspond to their expected values.\n        var serverValue;\n        var propertyInfo;\n        if (propKey === SUPPRESS_CONTENT_EDITABLE_WARNING ||\n        // Controlled attributes are not validated\n        // TODO: Only ignore them on controlled tags.\n        propKey === 'value' || propKey === 'checked' || propKey === 'selected') {\n          // Noop\n        } else if (propKey === DANGEROUSLY_SET_INNER_HTML) {\n          var rawHtml = nextProp ? nextProp[HTML] || '' : '';\n          var serverHTML = domElement.innerHTML;\n          var expectedHTML = normalizeHTML(domElement, rawHtml);\n          if (expectedHTML !== serverHTML) {\n            warnForPropDifference(propKey, serverHTML, expectedHTML);\n          }\n        } else if (propKey === STYLE) {\n          // $FlowFixMe - Should be inferred as not undefined.\n          extraAttributeNames['delete'](propKey);\n          var expectedStyle = CSSPropertyOperations_1.createDangerousStringForStyles(nextProp);\n          serverValue = domElement.getAttribute('style');\n          if (expectedStyle !== serverValue) {\n            warnForPropDifference(propKey, serverValue, expectedStyle);\n          }\n        } else if (isCustomComponentTag) {\n          // $FlowFixMe - Should be inferred as not undefined.\n          extraAttributeNames['delete'](propKey.toLowerCase());\n          serverValue = DOMPropertyOperations_1.getValueForAttribute(domElement, propKey, nextProp);\n\n          if (nextProp !== serverValue) {\n            warnForPropDifference(propKey, serverValue, nextProp);\n          }\n        } else if (DOMProperty_1.shouldSetAttribute(propKey, nextProp)) {\n          if (propertyInfo = DOMProperty_1.getPropertyInfo(propKey)) {\n            // $FlowFixMe - Should be inferred as not undefined.\n            extraAttributeNames['delete'](propertyInfo.attributeName);\n            serverValue = DOMPropertyOperations_1.getValueForProperty(domElement, propKey, nextProp);\n          } else {\n            var ownNamespace = parentNamespace;\n            if (ownNamespace === HTML_NAMESPACE$1) {\n              ownNamespace = getIntrinsicNamespace$1(tag);\n            }\n            if (ownNamespace === HTML_NAMESPACE$1) {\n              // $FlowFixMe - Should be inferred as not undefined.\n              extraAttributeNames['delete'](propKey.toLowerCase());\n            } else {\n              // $FlowFixMe - Should be inferred as not undefined.\n              extraAttributeNames['delete'](propKey);\n            }\n            serverValue = DOMPropertyOperations_1.getValueForAttribute(domElement, propKey, nextProp);\n          }\n\n          if (nextProp !== serverValue) {\n            warnForPropDifference(propKey, serverValue, nextProp);\n          }\n        }\n      }\n    }\n\n    {\n      // $FlowFixMe - Should be inferred as not undefined.\n      if (extraAttributeNames.size > 0) {\n        // $FlowFixMe - Should be inferred as not undefined.\n        warnForExtraAttributes(extraAttributeNames);\n      }\n    }\n\n    switch (tag) {\n      case 'input':\n        // TODO: Make sure we check if this is still unmounted or do any clean\n        // up necessary since we never stop tracking anymore.\n        inputValueTracking_1.track(domElement);\n        ReactDOMFiberInput.postMountWrapper(domElement, rawProps);\n        break;\n      case 'textarea':\n        // TODO: Make sure we check if this is still unmounted or do any clean\n        // up necessary since we never stop tracking anymore.\n        inputValueTracking_1.track(domElement);\n        ReactDOMFiberTextarea.postMountWrapper(domElement, rawProps);\n        break;\n      case 'select':\n      case 'option':\n        // For input and textarea we current always set the value property at\n        // post mount to force it to diverge from attributes. However, for\n        // option and select we don't quite do the same thing and select\n        // is not resilient to the DOM state changing so we don't do that here.\n        // TODO: Consider not doing this for input and textarea.\n        break;\n      default:\n        if (typeof rawProps.onClick === 'function') {\n          // TODO: This cast may not be sound for SVG, MathML or custom elements.\n          trapClickOnNonInteractiveElement(domElement);\n        }\n        break;\n    }\n\n    return updatePayload;\n  },\n  diffHydratedText: function (textNode, text) {\n    var isDifferent = textNode.nodeValue !== text;\n    {\n      if (isDifferent) {\n        warnForTextDifference(textNode.nodeValue, text);\n      }\n    }\n    return isDifferent;\n  },\n  warnForDeletedHydratableElement: function (parentNode, child) {\n    {\n      if (didWarnInvalidHydration) {\n        return;\n      }\n      didWarnInvalidHydration = true;\n      warning$3(false, 'Did not expect server HTML to contain a <%s> in <%s>.', child.nodeName.toLowerCase(), parentNode.nodeName.toLowerCase());\n    }\n  },\n  warnForDeletedHydratableText: function (parentNode, child) {\n    {\n      if (didWarnInvalidHydration) {\n        return;\n      }\n      didWarnInvalidHydration = true;\n      warning$3(false, 'Did not expect server HTML to contain the text node \"%s\" in <%s>.', child.nodeValue, parentNode.nodeName.toLowerCase());\n    }\n  },\n  warnForInsertedHydratedElement: function (parentNode, tag, props) {\n    {\n      if (didWarnInvalidHydration) {\n        return;\n      }\n      didWarnInvalidHydration = true;\n      warning$3(false, 'Expected server HTML to contain a matching <%s> in <%s>.', tag, parentNode.nodeName.toLowerCase());\n    }\n  },\n  warnForInsertedHydratedText: function (parentNode, text) {\n    {\n      if (text === '') {\n        // We expect to insert empty text nodes since they're not represented in\n        // the HTML.\n        // TODO: Remove this special case if we can just avoid inserting empty\n        // text nodes.\n        return;\n      }\n      if (didWarnInvalidHydration) {\n        return;\n      }\n      didWarnInvalidHydration = true;\n      warning$3(false, 'Expected server HTML to contain a matching text node for \"%s\" in <%s>.', text, parentNode.nodeName.toLowerCase());\n    }\n  },\n  restoreControlledState: function (domElement, tag, props) {\n    switch (tag) {\n      case 'input':\n        ReactDOMFiberInput.restoreControlledState(domElement, props);\n        return;\n      case 'textarea':\n        ReactDOMFiberTextarea.restoreControlledState(domElement, props);\n        return;\n      case 'select':\n        ReactDOMFiberSelect.restoreControlledState(domElement, props);\n        return;\n    }\n  }\n};\n\nvar ReactDOMFiberComponent_1 = ReactDOMFiberComponent;\n\n// This is a built-in polyfill for requestIdleCallback. It works by scheduling\n// a requestAnimationFrame, storing the time for the start of the frame, then\n// scheduling a postMessage which gets scheduled after paint. Within the\n// postMessage handler do as much work as possible until time + frame rate.\n// By separating the idle call into a separate event tick we ensure that\n// layout, paint and other browser work is counted against the available time.\n// The frame rate is dynamically adjusted.\n\n\n\n{\n  var warning$17 = require$$0;\n\n  if (ExecutionEnvironment.canUseDOM && typeof requestAnimationFrame !== 'function') {\n    warning$17(false, 'React depends on requestAnimationFrame. Make sure that you load a ' + 'polyfill in older browsers. http://fb.me/react-polyfills');\n  }\n}\n\n// TODO: There's no way to cancel, because Fiber doesn't atm.\nvar rIC = void 0;\n\nif (!ExecutionEnvironment.canUseDOM) {\n  rIC = function (frameCallback) {\n    setTimeout(function () {\n      frameCallback({\n        timeRemaining: function () {\n          return Infinity;\n        }\n      });\n    });\n    return 0;\n  };\n} else if (typeof requestIdleCallback !== 'function') {\n  // Polyfill requestIdleCallback.\n\n  var scheduledRAFCallback = null;\n  var scheduledRICCallback = null;\n\n  var isIdleScheduled = false;\n  var isAnimationFrameScheduled = false;\n\n  var frameDeadline = 0;\n  // We start out assuming that we run at 30fps but then the heuristic tracking\n  // will adjust this value to a faster fps if we get more frequent animation\n  // frames.\n  var previousFrameTime = 33;\n  var activeFrameTime = 33;\n\n  var frameDeadlineObject = {\n    timeRemaining: typeof performance === 'object' && typeof performance.now === 'function' ? function () {\n      // We assume that if we have a performance timer that the rAF callback\n      // gets a performance timer value. Not sure if this is always true.\n      return frameDeadline - performance.now();\n    } : function () {\n      // As a fallback we use Date.now.\n      return frameDeadline - Date.now();\n    }\n  };\n\n  // We use the postMessage trick to defer idle work until after the repaint.\n  var messageKey = '__reactIdleCallback$' + Math.random().toString(36).slice(2);\n  var idleTick = function (event) {\n    if (event.source !== window || event.data !== messageKey) {\n      return;\n    }\n    isIdleScheduled = false;\n    var callback = scheduledRICCallback;\n    scheduledRICCallback = null;\n    if (callback !== null) {\n      callback(frameDeadlineObject);\n    }\n  };\n  // Assumes that we have addEventListener in this environment. Might need\n  // something better for old IE.\n  window.addEventListener('message', idleTick, false);\n\n  var animationTick = function (rafTime) {\n    isAnimationFrameScheduled = false;\n    var nextFrameTime = rafTime - frameDeadline + activeFrameTime;\n    if (nextFrameTime < activeFrameTime && previousFrameTime < activeFrameTime) {\n      if (nextFrameTime < 8) {\n        // Defensive coding. We don't support higher frame rates than 120hz.\n        // If we get lower than that, it is probably a bug.\n        nextFrameTime = 8;\n      }\n      // If one frame goes long, then the next one can be short to catch up.\n      // If two frames are short in a row, then that's an indication that we\n      // actually have a higher frame rate than what we're currently optimizing.\n      // We adjust our heuristic dynamically accordingly. For example, if we're\n      // running on 120hz display or 90hz VR display.\n      // Take the max of the two in case one of them was an anomaly due to\n      // missed frame deadlines.\n      activeFrameTime = nextFrameTime < previousFrameTime ? previousFrameTime : nextFrameTime;\n    } else {\n      previousFrameTime = nextFrameTime;\n    }\n    frameDeadline = rafTime + activeFrameTime;\n    if (!isIdleScheduled) {\n      isIdleScheduled = true;\n      window.postMessage(messageKey, '*');\n    }\n    var callback = scheduledRAFCallback;\n    scheduledRAFCallback = null;\n    if (callback !== null) {\n      callback(rafTime);\n    }\n  };\n\n  rIC = function (callback) {\n    // This assumes that we only schedule one callback at a time because that's\n    // how Fiber uses it.\n    scheduledRICCallback = callback;\n    if (!isAnimationFrameScheduled) {\n      // If rAF didn't already schedule one, we need to schedule a frame.\n      // TODO: If this rAF doesn't materialize because the browser throttles, we\n      // might want to still have setTimeout trigger rIC as a backup to ensure\n      // that we keep performing work.\n      isAnimationFrameScheduled = true;\n      requestAnimationFrame(animationTick);\n    }\n    return 0;\n  };\n} else {\n  rIC = requestIdleCallback;\n}\n\nvar rIC_1 = rIC;\n\nvar ReactDOMFrameScheduling = {\n\trIC: rIC_1\n};\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 * @providesModule ReactFeatureFlags\n * \n */\n\nvar ReactFeatureFlags = {\n  enableAsyncSubtreeAPI: true\n};\n\nvar ReactFeatureFlags_1 = ReactFeatureFlags;\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 * @providesModule ReactPriorityLevel\n * \n */\n\nvar ReactPriorityLevel = {\n  NoWork: 0, // No work is pending.\n  SynchronousPriority: 1, // For controlled text inputs. Synchronous side-effects.\n  TaskPriority: 2, // Completes at the end of the current tick.\n  HighPriority: 3, // Interaction that needs to complete pretty soon to feel responsive.\n  LowPriority: 4, // Data fetching, or result from updating stores.\n  OffscreenPriority: 5 };\n\nvar CallbackEffect = ReactTypeOfSideEffect.Callback;\n\nvar NoWork = ReactPriorityLevel.NoWork;\nvar SynchronousPriority = ReactPriorityLevel.SynchronousPriority;\nvar TaskPriority = ReactPriorityLevel.TaskPriority;\n\nvar ClassComponent$2 = ReactTypeOfWork.ClassComponent;\nvar HostRoot$2 = ReactTypeOfWork.HostRoot;\n\n\n{\n  var warning$19 = require$$0;\n}\n\n// Callbacks are not validated until invocation\n\n\n// Singly linked-list of updates. When an update is scheduled, it is added to\n// the queue of the current fiber and the work-in-progress fiber. The two queues\n// are separate but they share a persistent structure.\n//\n// During reconciliation, updates are removed from the work-in-progress fiber,\n// but they remain on the current fiber. That ensures that if a work-in-progress\n// is aborted, the aborted updates are recovered by cloning from current.\n//\n// The work-in-progress queue is always a subset of the current queue.\n//\n// When the tree is committed, the work-in-progress becomes the current.\n\n\nvar _queue1 = void 0;\nvar _queue2 = void 0;\n\nfunction comparePriority(a, b) {\n  // When comparing update priorities, treat sync and Task work as equal.\n  // TODO: Could we avoid the need for this by always coercing sync priority\n  // to Task when scheduling an update?\n  if ((a === TaskPriority || a === SynchronousPriority) && (b === TaskPriority || b === SynchronousPriority)) {\n    return 0;\n  }\n  if (a === NoWork && b !== NoWork) {\n    return -255;\n  }\n  if (a !== NoWork && b === NoWork) {\n    return 255;\n  }\n  return a - b;\n}\n\nfunction createUpdateQueue() {\n  var queue = {\n    first: null,\n    last: null,\n    hasForceUpdate: false,\n    callbackList: null\n  };\n  {\n    queue.isProcessing = false;\n  }\n  return queue;\n}\n\nfunction cloneUpdate(update) {\n  return {\n    priorityLevel: update.priorityLevel,\n    partialState: update.partialState,\n    callback: update.callback,\n    isReplace: update.isReplace,\n    isForced: update.isForced,\n    isTopLevelUnmount: update.isTopLevelUnmount,\n    next: null\n  };\n}\n\nfunction insertUpdateIntoQueue(queue, update, insertAfter, insertBefore) {\n  if (insertAfter !== null) {\n    insertAfter.next = update;\n  } else {\n    // This is the first item in the queue.\n    update.next = queue.first;\n    queue.first = update;\n  }\n\n  if (insertBefore !== null) {\n    update.next = insertBefore;\n  } else {\n    // This is the last item in the queue.\n    queue.last = update;\n  }\n}\n\n// Returns the update after which the incoming update should be inserted into\n// the queue, or null if it should be inserted at beginning.\nfunction findInsertionPosition(queue, update) {\n  var priorityLevel = update.priorityLevel;\n  var insertAfter = null;\n  var insertBefore = null;\n  if (queue.last !== null && comparePriority(queue.last.priorityLevel, priorityLevel) <= 0) {\n    // Fast path for the common case where the update should be inserted at\n    // the end of the queue.\n    insertAfter = queue.last;\n  } else {\n    insertBefore = queue.first;\n    while (insertBefore !== null && comparePriority(insertBefore.priorityLevel, priorityLevel) <= 0) {\n      insertAfter = insertBefore;\n      insertBefore = insertBefore.next;\n    }\n  }\n  return insertAfter;\n}\n\nfunction ensureUpdateQueues(fiber) {\n  var alternateFiber = fiber.alternate;\n\n  var queue1 = fiber.updateQueue;\n  if (queue1 === null) {\n    queue1 = fiber.updateQueue = createUpdateQueue();\n  }\n\n  var queue2 = void 0;\n  if (alternateFiber !== null) {\n    queue2 = alternateFiber.updateQueue;\n    if (queue2 === null) {\n      queue2 = alternateFiber.updateQueue = createUpdateQueue();\n    }\n  } else {\n    queue2 = null;\n  }\n\n  _queue1 = queue1;\n  // Return null if there is no alternate queue, or if its queue is the same.\n  _queue2 = queue2 !== queue1 ? queue2 : null;\n}\n\n// The work-in-progress queue is a subset of the current queue (if it exists).\n// We need to insert the incoming update into both lists. However, it's possible\n// that the correct position in one list will be different from the position in\n// the other. Consider the following case:\n//\n//     Current:             3-5-6\n//     Work-in-progress:        6\n//\n// Then we receive an update with priority 4 and insert it into each list:\n//\n//     Current:             3-4-5-6\n//     Work-in-progress:        4-6\n//\n// In the current queue, the new update's `next` pointer points to the update\n// with priority 5. But in the work-in-progress queue, the pointer points to the\n// update with priority 6. Because these two queues share the same persistent\n// data structure, this won't do. (This can only happen when the incoming update\n// has higher priority than all the updates in the work-in-progress queue.)\n//\n// To solve this, in the case where the incoming update needs to be inserted\n// into two different positions, we'll make a clone of the update and insert\n// each copy into a separate queue. This forks the list while maintaining a\n// persistent structure, because the update that is added to the work-in-progress\n// is always added to the front of the list.\n//\n// However, if incoming update is inserted into the same position of both lists,\n// we shouldn't make a copy.\n//\n// If the update is cloned, it returns the cloned update.\nfunction insertUpdate(fiber, update) {\n  // We'll have at least one and at most two distinct update queues.\n  ensureUpdateQueues(fiber);\n  var queue1 = _queue1;\n  var queue2 = _queue2;\n\n  // Warn if an update is scheduled from inside an updater function.\n  {\n    if (queue1.isProcessing || queue2 !== null && queue2.isProcessing) {\n      warning$19(false, 'An update (setState, replaceState, or forceUpdate) was scheduled ' + 'from inside an update function. Update functions should be pure, ' + 'with zero side-effects. Consider using componentDidUpdate or a ' + 'callback.');\n    }\n  }\n\n  // Find the insertion position in the first queue.\n  var insertAfter1 = findInsertionPosition(queue1, update);\n  var insertBefore1 = insertAfter1 !== null ? insertAfter1.next : queue1.first;\n\n  if (queue2 === null) {\n    // If there's no alternate queue, there's nothing else to do but insert.\n    insertUpdateIntoQueue(queue1, update, insertAfter1, insertBefore1);\n    return null;\n  }\n\n  // If there is an alternate queue, find the insertion position.\n  var insertAfter2 = findInsertionPosition(queue2, update);\n  var insertBefore2 = insertAfter2 !== null ? insertAfter2.next : queue2.first;\n\n  // Now we can insert into the first queue. This must come after finding both\n  // insertion positions because it mutates the list.\n  insertUpdateIntoQueue(queue1, update, insertAfter1, insertBefore1);\n\n  // See if the insertion positions are equal. Be careful to only compare\n  // non-null values.\n  if (insertBefore1 === insertBefore2 && insertBefore1 !== null || insertAfter1 === insertAfter2 && insertAfter1 !== null) {\n    // The insertion positions are the same, so when we inserted into the first\n    // queue, it also inserted into the alternate. All we need to do is update\n    // the alternate queue's `first` and `last` pointers, in case they\n    // have changed.\n    if (insertAfter2 === null) {\n      queue2.first = update;\n    }\n    if (insertBefore2 === null) {\n      queue2.last = null;\n    }\n    return null;\n  } else {\n    // The insertion positions are different, so we need to clone the update and\n    // insert the clone into the alternate queue.\n    var update2 = cloneUpdate(update);\n    insertUpdateIntoQueue(queue2, update2, insertAfter2, insertBefore2);\n    return update2;\n  }\n}\n\nfunction addUpdate(fiber, partialState, callback, priorityLevel) {\n  var update = {\n    priorityLevel: priorityLevel,\n    partialState: partialState,\n    callback: callback,\n    isReplace: false,\n    isForced: false,\n    isTopLevelUnmount: false,\n    next: null\n  };\n  insertUpdate(fiber, update);\n}\nvar addUpdate_1 = addUpdate;\n\nfunction addReplaceUpdate(fiber, state, callback, priorityLevel) {\n  var update = {\n    priorityLevel: priorityLevel,\n    partialState: state,\n    callback: callback,\n    isReplace: true,\n    isForced: false,\n    isTopLevelUnmount: false,\n    next: null\n  };\n  insertUpdate(fiber, update);\n}\nvar addReplaceUpdate_1 = addReplaceUpdate;\n\nfunction addForceUpdate(fiber, callback, priorityLevel) {\n  var update = {\n    priorityLevel: priorityLevel,\n    partialState: null,\n    callback: callback,\n    isReplace: false,\n    isForced: true,\n    isTopLevelUnmount: false,\n    next: null\n  };\n  insertUpdate(fiber, update);\n}\nvar addForceUpdate_1 = addForceUpdate;\n\nfunction getUpdatePriority(fiber) {\n  var updateQueue = fiber.updateQueue;\n  if (updateQueue === null) {\n    return NoWork;\n  }\n  if (fiber.tag !== ClassComponent$2 && fiber.tag !== HostRoot$2) {\n    return NoWork;\n  }\n  return updateQueue.first !== null ? updateQueue.first.priorityLevel : NoWork;\n}\nvar getUpdatePriority_1 = getUpdatePriority;\n\nfunction addTopLevelUpdate$1(fiber, partialState, callback, priorityLevel) {\n  var isTopLevelUnmount = partialState.element === null;\n\n  var update = {\n    priorityLevel: priorityLevel,\n    partialState: partialState,\n    callback: callback,\n    isReplace: false,\n    isForced: false,\n    isTopLevelUnmount: isTopLevelUnmount,\n    next: null\n  };\n  var update2 = insertUpdate(fiber, update);\n\n  if (isTopLevelUnmount) {\n    // TODO: Redesign the top-level mount/update/unmount API to avoid this\n    // special case.\n    var queue1 = _queue1;\n    var queue2 = _queue2;\n\n    // Drop all updates that are lower-priority, so that the tree is not\n    // remounted. We need to do this for both queues.\n    if (queue1 !== null && update.next !== null) {\n      update.next = null;\n      queue1.last = update;\n    }\n    if (queue2 !== null && update2 !== null && update2.next !== null) {\n      update2.next = null;\n      queue2.last = update;\n    }\n  }\n}\nvar addTopLevelUpdate_1 = addTopLevelUpdate$1;\n\nfunction getStateFromUpdate(update, instance, prevState, props) {\n  var partialState = update.partialState;\n  if (typeof partialState === 'function') {\n    var updateFn = partialState;\n    return updateFn.call(instance, prevState, props);\n  } else {\n    return partialState;\n  }\n}\n\nfunction beginUpdateQueue(current, workInProgress, queue, instance, prevState, props, priorityLevel) {\n  if (current !== null && current.updateQueue === queue) {\n    // We need to create a work-in-progress queue, by cloning the current queue.\n    var currentQueue = queue;\n    queue = workInProgress.updateQueue = {\n      first: currentQueue.first,\n      last: currentQueue.last,\n      // These fields are no longer valid because they were already committed.\n      // Reset them.\n      callbackList: null,\n      hasForceUpdate: false\n    };\n  }\n\n  {\n    // Set this flag so we can warn if setState is called inside the update\n    // function of another setState.\n    queue.isProcessing = true;\n  }\n\n  // Calculate these using the the existing values as a base.\n  var callbackList = queue.callbackList;\n  var hasForceUpdate = queue.hasForceUpdate;\n\n  // Applies updates with matching priority to the previous state to create\n  // a new state object.\n  var state = prevState;\n  var dontMutatePrevState = true;\n  var update = queue.first;\n  while (update !== null && comparePriority(update.priorityLevel, priorityLevel) <= 0) {\n    // Remove each update from the queue right before it is processed. That way\n    // if setState is called from inside an updater function, the new update\n    // will be inserted in the correct position.\n    queue.first = update.next;\n    if (queue.first === null) {\n      queue.last = null;\n    }\n\n    var _partialState = void 0;\n    if (update.isReplace) {\n      state = getStateFromUpdate(update, instance, state, props);\n      dontMutatePrevState = true;\n    } else {\n      _partialState = getStateFromUpdate(update, instance, state, props);\n      if (_partialState) {\n        if (dontMutatePrevState) {\n          state = _assign({}, state, _partialState);\n        } else {\n          state = _assign(state, _partialState);\n        }\n        dontMutatePrevState = false;\n      }\n    }\n    if (update.isForced) {\n      hasForceUpdate = true;\n    }\n    // Second condition ignores top-level unmount callbacks if they are not the\n    // last update in the queue, since a subsequent update will cause a remount.\n    if (update.callback !== null && !(update.isTopLevelUnmount && update.next !== null)) {\n      callbackList = callbackList !== null ? callbackList : [];\n      callbackList.push(update.callback);\n      workInProgress.effectTag |= CallbackEffect;\n    }\n    update = update.next;\n  }\n\n  queue.callbackList = callbackList;\n  queue.hasForceUpdate = hasForceUpdate;\n\n  if (queue.first === null && callbackList === null && !hasForceUpdate) {\n    // The queue is empty and there are no callbacks. We can reset it.\n    workInProgress.updateQueue = null;\n  }\n\n  {\n    // No longer processing.\n    queue.isProcessing = false;\n  }\n\n  return state;\n}\nvar beginUpdateQueue_1 = beginUpdateQueue;\n\nfunction commitCallbacks(finishedWork, queue, context) {\n  var callbackList = queue.callbackList;\n  if (callbackList === null) {\n    return;\n  }\n\n  // Set the list to null to make sure they don't get called more than once.\n  queue.callbackList = null;\n\n  for (var i = 0; i < callbackList.length; i++) {\n    var _callback = callbackList[i];\n    !(typeof _callback === 'function') ? invariant(false, 'Invalid argument passed as callback. Expected a function. Instead received: %s', _callback) : void 0;\n    _callback.call(context);\n  }\n}\nvar commitCallbacks_1 = commitCallbacks;\n\nvar ReactFiberUpdateQueue = {\n\taddUpdate: addUpdate_1,\n\taddReplaceUpdate: addReplaceUpdate_1,\n\taddForceUpdate: addForceUpdate_1,\n\tgetUpdatePriority: getUpdatePriority_1,\n\taddTopLevelUpdate: addTopLevelUpdate_1,\n\tbeginUpdateQueue: beginUpdateQueue_1,\n\tcommitCallbacks: commitCallbacks_1\n};\n\n{\n  var warning$21 = require$$0;\n}\n\nvar valueStack = [];\n\n{\n  var fiberStack = [];\n}\n\nvar index = -1;\n\nvar createCursor$1 = function (defaultValue) {\n  return {\n    current: defaultValue\n  };\n};\n\nvar isEmpty = function () {\n  return index === -1;\n};\n\nvar pop$1 = function (cursor, fiber) {\n  if (index < 0) {\n    {\n      warning$21(false, 'Unexpected pop.');\n    }\n    return;\n  }\n\n  {\n    if (fiber !== fiberStack[index]) {\n      warning$21(false, 'Unexpected Fiber popped.');\n    }\n  }\n\n  cursor.current = valueStack[index];\n\n  valueStack[index] = null;\n\n  {\n    fiberStack[index] = null;\n  }\n\n  index--;\n};\n\nvar push$1 = function (cursor, value, fiber) {\n  index++;\n\n  valueStack[index] = cursor.current;\n\n  {\n    fiberStack[index] = fiber;\n  }\n\n  cursor.current = value;\n};\n\nvar reset = function () {\n  while (index > -1) {\n    valueStack[index] = null;\n\n    {\n      fiberStack[index] = null;\n    }\n\n    index--;\n  }\n};\n\nvar ReactFiberStack = {\n\tcreateCursor: createCursor$1,\n\tisEmpty: isEmpty,\n\tpop: pop$1,\n\tpush: push$1,\n\treset: reset\n};\n\n// Trust the developer to only use this with a true check\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 * @providesModule ReactDebugFiberPerf\n * \n */\n\nvar ReactDebugFiberPerf = null;\n\n{\n  var _require$8 = ReactTypeOfWork,\n      HostRoot$4 = _require$8.HostRoot,\n      HostComponent$4 = _require$8.HostComponent,\n      HostText$2 = _require$8.HostText,\n      HostPortal$1 = _require$8.HostPortal,\n      YieldComponent = _require$8.YieldComponent,\n      Fragment = _require$8.Fragment;\n\n  var getComponentName$5 = getComponentName_1;\n\n  // Prefix measurements so that it's possible to filter them.\n  // Longer prefixes are hard to read in DevTools.\n  var reactEmoji = '\\u269B';\n  var warningEmoji = '\\u26D4';\n  var supportsUserTiming = typeof performance !== 'undefined' && typeof performance.mark === 'function' && typeof performance.clearMarks === 'function' && typeof performance.measure === 'function' && typeof performance.clearMeasures === 'function';\n\n  // Keep track of current fiber so that we know the path to unwind on pause.\n  // TODO: this looks the same as nextUnitOfWork in scheduler. Can we unify them?\n  var currentFiber = null;\n  // If we're in the middle of user code, which fiber and method is it?\n  // Reusing `currentFiber` would be confusing for this because user code fiber\n  // can change during commit phase too, but we don't need to unwind it (since\n  // lifecycles in the commit phase don't resemble a tree).\n  var currentPhase = null;\n  var currentPhaseFiber = null;\n  // Did lifecycle hook schedule an update? This is often a performance problem,\n  // so we will keep track of it, and include it in the report.\n  // Track commits caused by cascading updates.\n  var isCommitting = false;\n  var hasScheduledUpdateInCurrentCommit = false;\n  var hasScheduledUpdateInCurrentPhase = false;\n  var commitCountInCurrentWorkLoop = 0;\n  var effectCountInCurrentCommit = 0;\n  // During commits, we only show a measurement once per method name\n  // to avoid stretch the commit phase with measurement overhead.\n  var labelsInCurrentCommit = new Set();\n\n  var formatMarkName = function (markName) {\n    return reactEmoji + ' ' + markName;\n  };\n\n  var formatLabel = function (label, warning) {\n    var prefix = warning ? warningEmoji + ' ' : reactEmoji + ' ';\n    var suffix = warning ? ' Warning: ' + warning : '';\n    return '' + prefix + label + suffix;\n  };\n\n  var beginMark = function (markName) {\n    performance.mark(formatMarkName(markName));\n  };\n\n  var clearMark = function (markName) {\n    performance.clearMarks(formatMarkName(markName));\n  };\n\n  var endMark = function (label, markName, warning) {\n    var formattedMarkName = formatMarkName(markName);\n    var formattedLabel = formatLabel(label, warning);\n    try {\n      performance.measure(formattedLabel, formattedMarkName);\n    } catch (err) {}\n    // If previous mark was missing for some reason, this will throw.\n    // This could only happen if React crashed in an unexpected place earlier.\n    // Don't pile on with more errors.\n\n    // Clear marks immediately to avoid growing buffer.\n    performance.clearMarks(formattedMarkName);\n    performance.clearMeasures(formattedLabel);\n  };\n\n  var getFiberMarkName = function (label, debugID) {\n    return label + ' (#' + debugID + ')';\n  };\n\n  var getFiberLabel = function (componentName, isMounted, phase) {\n    if (phase === null) {\n      // These are composite component total time measurements.\n      return componentName + ' [' + (isMounted ? 'update' : 'mount') + ']';\n    } else {\n      // Composite component methods.\n      return componentName + '.' + phase;\n    }\n  };\n\n  var beginFiberMark = function (fiber, phase) {\n    var componentName = getComponentName$5(fiber) || 'Unknown';\n    var debugID = fiber._debugID;\n    var isMounted = fiber.alternate !== null;\n    var label = getFiberLabel(componentName, isMounted, phase);\n\n    if (isCommitting && labelsInCurrentCommit.has(label)) {\n      // During the commit phase, we don't show duplicate labels because\n      // there is a fixed overhead for every measurement, and we don't\n      // want to stretch the commit phase beyond necessary.\n      return false;\n    }\n    labelsInCurrentCommit.add(label);\n\n    var markName = getFiberMarkName(label, debugID);\n    beginMark(markName);\n    return true;\n  };\n\n  var clearFiberMark = function (fiber, phase) {\n    var componentName = getComponentName$5(fiber) || 'Unknown';\n    var debugID = fiber._debugID;\n    var isMounted = fiber.alternate !== null;\n    var label = getFiberLabel(componentName, isMounted, phase);\n    var markName = getFiberMarkName(label, debugID);\n    clearMark(markName);\n  };\n\n  var endFiberMark = function (fiber, phase, warning) {\n    var componentName = getComponentName$5(fiber) || 'Unknown';\n    var debugID = fiber._debugID;\n    var isMounted = fiber.alternate !== null;\n    var label = getFiberLabel(componentName, isMounted, phase);\n    var markName = getFiberMarkName(label, debugID);\n    endMark(label, markName, warning);\n  };\n\n  var shouldIgnoreFiber = function (fiber) {\n    // Host components should be skipped in the timeline.\n    // We could check typeof fiber.type, but does this work with RN?\n    switch (fiber.tag) {\n      case HostRoot$4:\n      case HostComponent$4:\n      case HostText$2:\n      case HostPortal$1:\n      case YieldComponent:\n      case Fragment:\n        return true;\n      default:\n        return false;\n    }\n  };\n\n  var clearPendingPhaseMeasurement = function () {\n    if (currentPhase !== null && currentPhaseFiber !== null) {\n      clearFiberMark(currentPhaseFiber, currentPhase);\n    }\n    currentPhaseFiber = null;\n    currentPhase = null;\n    hasScheduledUpdateInCurrentPhase = false;\n  };\n\n  var pauseTimers = function () {\n    // Stops all currently active measurements so that they can be resumed\n    // if we continue in a later deferred loop from the same unit of work.\n    var fiber = currentFiber;\n    while (fiber) {\n      if (fiber._debugIsCurrentlyTiming) {\n        endFiberMark(fiber, null, null);\n      }\n      fiber = fiber['return'];\n    }\n  };\n\n  var resumeTimersRecursively = function (fiber) {\n    if (fiber['return'] !== null) {\n      resumeTimersRecursively(fiber['return']);\n    }\n    if (fiber._debugIsCurrentlyTiming) {\n      beginFiberMark(fiber, null);\n    }\n  };\n\n  var resumeTimers = function () {\n    // Resumes all measurements that were active during the last deferred loop.\n    if (currentFiber !== null) {\n      resumeTimersRecursively(currentFiber);\n    }\n  };\n\n  ReactDebugFiberPerf = {\n    recordEffect: function () {\n      effectCountInCurrentCommit++;\n    },\n    recordScheduleUpdate: function () {\n      if (isCommitting) {\n        hasScheduledUpdateInCurrentCommit = true;\n      }\n      if (currentPhase !== null && currentPhase !== 'componentWillMount' && currentPhase !== 'componentWillReceiveProps') {\n        hasScheduledUpdateInCurrentPhase = true;\n      }\n    },\n    startWorkTimer: function (fiber) {\n      if (!supportsUserTiming || shouldIgnoreFiber(fiber)) {\n        return;\n      }\n      // If we pause, this is the fiber to unwind from.\n      currentFiber = fiber;\n      if (!beginFiberMark(fiber, null)) {\n        return;\n      }\n      fiber._debugIsCurrentlyTiming = true;\n    },\n    cancelWorkTimer: function (fiber) {\n      if (!supportsUserTiming || shouldIgnoreFiber(fiber)) {\n        return;\n      }\n      // Remember we shouldn't complete measurement for this fiber.\n      // Otherwise flamechart will be deep even for small updates.\n      fiber._debugIsCurrentlyTiming = false;\n      clearFiberMark(fiber, null);\n    },\n    stopWorkTimer: function (fiber) {\n      if (!supportsUserTiming || shouldIgnoreFiber(fiber)) {\n        return;\n      }\n      // If we pause, its parent is the fiber to unwind from.\n      currentFiber = fiber['return'];\n      if (!fiber._debugIsCurrentlyTiming) {\n        return;\n      }\n      fiber._debugIsCurrentlyTiming = false;\n      endFiberMark(fiber, null, null);\n    },\n    stopFailedWorkTimer: function (fiber) {\n      if (!supportsUserTiming || shouldIgnoreFiber(fiber)) {\n        return;\n      }\n      // If we pause, its parent is the fiber to unwind from.\n      currentFiber = fiber['return'];\n      if (!fiber._debugIsCurrentlyTiming) {\n        return;\n      }\n      fiber._debugIsCurrentlyTiming = false;\n      var warning = 'An error was thrown inside this error boundary';\n      endFiberMark(fiber, null, warning);\n    },\n    startPhaseTimer: function (fiber, phase) {\n      if (!supportsUserTiming) {\n        return;\n      }\n      clearPendingPhaseMeasurement();\n      if (!beginFiberMark(fiber, phase)) {\n        return;\n      }\n      currentPhaseFiber = fiber;\n      currentPhase = phase;\n    },\n    stopPhaseTimer: function () {\n      if (!supportsUserTiming) {\n        return;\n      }\n      if (currentPhase !== null && currentPhaseFiber !== null) {\n        var warning = hasScheduledUpdateInCurrentPhase ? 'Scheduled a cascading update' : null;\n        endFiberMark(currentPhaseFiber, currentPhase, warning);\n      }\n      currentPhase = null;\n      currentPhaseFiber = null;\n    },\n    startWorkLoopTimer: function () {\n      if (!supportsUserTiming) {\n        return;\n      }\n      commitCountInCurrentWorkLoop = 0;\n      // This is top level call.\n      // Any other measurements are performed within.\n      beginMark('(React Tree Reconciliation)');\n      // Resume any measurements that were in progress during the last loop.\n      resumeTimers();\n    },\n    stopWorkLoopTimer: function () {\n      if (!supportsUserTiming) {\n        return;\n      }\n      var warning = commitCountInCurrentWorkLoop > 1 ? 'There were cascading updates' : null;\n      commitCountInCurrentWorkLoop = 0;\n      // Pause any measurements until the next loop.\n      pauseTimers();\n      endMark('(React Tree Reconciliation)', '(React Tree Reconciliation)', warning);\n    },\n    startCommitTimer: function () {\n      if (!supportsUserTiming) {\n        return;\n      }\n      isCommitting = true;\n      hasScheduledUpdateInCurrentCommit = false;\n      labelsInCurrentCommit.clear();\n      beginMark('(Committing Changes)');\n    },\n    stopCommitTimer: function () {\n      if (!supportsUserTiming) {\n        return;\n      }\n\n      var warning = null;\n      if (hasScheduledUpdateInCurrentCommit) {\n        warning = 'Lifecycle hook scheduled a cascading update';\n      } else if (commitCountInCurrentWorkLoop > 0) {\n        warning = 'Caused by a cascading update in earlier commit';\n      }\n      hasScheduledUpdateInCurrentCommit = false;\n      commitCountInCurrentWorkLoop++;\n      isCommitting = false;\n      labelsInCurrentCommit.clear();\n\n      endMark('(Committing Changes)', '(Committing Changes)', warning);\n    },\n    startCommitHostEffectsTimer: function () {\n      if (!supportsUserTiming) {\n        return;\n      }\n      effectCountInCurrentCommit = 0;\n      beginMark('(Committing Host Effects)');\n    },\n    stopCommitHostEffectsTimer: function () {\n      if (!supportsUserTiming) {\n        return;\n      }\n      var count = effectCountInCurrentCommit;\n      effectCountInCurrentCommit = 0;\n      endMark('(Committing Host Effects: ' + count + ' Total)', '(Committing Host Effects)', null);\n    },\n    startCommitLifeCyclesTimer: function () {\n      if (!supportsUserTiming) {\n        return;\n      }\n      effectCountInCurrentCommit = 0;\n      beginMark('(Calling Lifecycle Methods)');\n    },\n    stopCommitLifeCyclesTimer: function () {\n      if (!supportsUserTiming) {\n        return;\n      }\n      var count = effectCountInCurrentCommit;\n      effectCountInCurrentCommit = 0;\n      endMark('(Calling Lifecycle Methods: ' + count + ' Total)', '(Calling Lifecycle Methods)', null);\n    }\n  };\n}\n\nvar ReactDebugFiberPerf_1 = ReactDebugFiberPerf;\n\nvar isFiberMounted$1 = ReactFiberTreeReflection.isFiberMounted;\n\nvar ClassComponent$3 = ReactTypeOfWork.ClassComponent;\nvar HostRoot$3 = ReactTypeOfWork.HostRoot;\n\nvar createCursor = ReactFiberStack.createCursor;\nvar pop = ReactFiberStack.pop;\nvar push = ReactFiberStack.push;\n\n{\n  var warning$20 = require$$0;\n  var checkPropTypes$1 = checkPropTypes;\n  var ReactDebugCurrentFiber$2 = ReactDebugCurrentFiber_1;\n\n  var _require4 = ReactDebugFiberPerf_1,\n      startPhaseTimer = _require4.startPhaseTimer,\n      stopPhaseTimer = _require4.stopPhaseTimer;\n\n  var warnedAboutMissingGetChildContext = {};\n}\n\n// A cursor to the current merged context object on the stack.\nvar contextStackCursor = createCursor(emptyObject);\n// A cursor to a boolean indicating whether the context has changed.\nvar didPerformWorkStackCursor = createCursor(false);\n// Keep track of the previous context object that was on the stack.\n// We use this to get access to the parent context after we have already\n// pushed the next context provider, and now need to merge their contexts.\nvar previousContext = emptyObject;\n\nfunction getUnmaskedContext(workInProgress) {\n  var hasOwnContext = isContextProvider$1(workInProgress);\n  if (hasOwnContext) {\n    // If the fiber is a context provider itself, when we read its context\n    // we have already pushed its own child context on the stack. A context\n    // provider should not \"see\" its own child context. Therefore we read the\n    // previous (parent) context instead for a context provider.\n    return previousContext;\n  }\n  return contextStackCursor.current;\n}\nvar getUnmaskedContext_1 = getUnmaskedContext;\n\nfunction cacheContext(workInProgress, unmaskedContext, maskedContext) {\n  var instance = workInProgress.stateNode;\n  instance.__reactInternalMemoizedUnmaskedChildContext = unmaskedContext;\n  instance.__reactInternalMemoizedMaskedChildContext = maskedContext;\n}\nvar cacheContext_1 = cacheContext;\n\nvar getMaskedContext = function (workInProgress, unmaskedContext) {\n  var type = workInProgress.type;\n  var contextTypes = type.contextTypes;\n  if (!contextTypes) {\n    return emptyObject;\n  }\n\n  // Avoid recreating masked context unless unmasked context has changed.\n  // Failing to do this will result in unnecessary calls to componentWillReceiveProps.\n  // This may trigger infinite loops if componentWillReceiveProps calls setState.\n  var instance = workInProgress.stateNode;\n  if (instance && instance.__reactInternalMemoizedUnmaskedChildContext === unmaskedContext) {\n    return instance.__reactInternalMemoizedMaskedChildContext;\n  }\n\n  var context = {};\n  for (var key in contextTypes) {\n    context[key] = unmaskedContext[key];\n  }\n\n  {\n    var name = getComponentName_1(workInProgress) || 'Unknown';\n    ReactDebugCurrentFiber$2.setCurrentFiber(workInProgress, null);\n    checkPropTypes$1(contextTypes, context, 'context', name, ReactDebugCurrentFiber$2.getCurrentFiberStackAddendum);\n    ReactDebugCurrentFiber$2.resetCurrentFiber();\n  }\n\n  // Cache unmasked context so we can avoid recreating masked context unless necessary.\n  // Context is created before the class component is instantiated so check for instance.\n  if (instance) {\n    cacheContext(workInProgress, unmaskedContext, context);\n  }\n\n  return context;\n};\n\nvar hasContextChanged = function () {\n  return didPerformWorkStackCursor.current;\n};\n\nfunction isContextConsumer(fiber) {\n  return fiber.tag === ClassComponent$3 && fiber.type.contextTypes != null;\n}\nvar isContextConsumer_1 = isContextConsumer;\n\nfunction isContextProvider$1(fiber) {\n  return fiber.tag === ClassComponent$3 && fiber.type.childContextTypes != null;\n}\nvar isContextProvider_1 = isContextProvider$1;\n\nfunction popContextProvider(fiber) {\n  if (!isContextProvider$1(fiber)) {\n    return;\n  }\n\n  pop(didPerformWorkStackCursor, fiber);\n  pop(contextStackCursor, fiber);\n}\nvar popContextProvider_1 = popContextProvider;\n\nvar popTopLevelContextObject = function (fiber) {\n  pop(didPerformWorkStackCursor, fiber);\n  pop(contextStackCursor, fiber);\n};\n\nvar pushTopLevelContextObject = function (fiber, context, didChange) {\n  !(contextStackCursor.cursor == null) ? invariant(false, 'Unexpected context found on stack. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n\n  push(contextStackCursor, context, fiber);\n  push(didPerformWorkStackCursor, didChange, fiber);\n};\n\nfunction processChildContext$1(fiber, parentContext, isReconciling) {\n  var instance = fiber.stateNode;\n  var childContextTypes = fiber.type.childContextTypes;\n\n  // TODO (bvaughn) Replace this behavior with an invariant() in the future.\n  // It has only been added in Fiber to match the (unintentional) behavior in Stack.\n  if (typeof instance.getChildContext !== 'function') {\n    {\n      var componentName = getComponentName_1(fiber) || 'Unknown';\n\n      if (!warnedAboutMissingGetChildContext[componentName]) {\n        warnedAboutMissingGetChildContext[componentName] = true;\n        warning$20(false, '%s.childContextTypes is specified but there is no getChildContext() method ' + 'on the instance. You can either define getChildContext() on %s or remove ' + 'childContextTypes from it.', componentName, componentName);\n      }\n    }\n    return parentContext;\n  }\n\n  var childContext = void 0;\n  {\n    ReactDebugCurrentFiber$2.setCurrentFiber(fiber, 'getChildContext');\n    startPhaseTimer(fiber, 'getChildContext');\n    childContext = instance.getChildContext();\n    stopPhaseTimer();\n    ReactDebugCurrentFiber$2.resetCurrentFiber();\n  }\n  for (var contextKey in childContext) {\n    !(contextKey in childContextTypes) ? invariant(false, '%s.getChildContext(): key \"%s\" is not defined in childContextTypes.', getComponentName_1(fiber) || 'Unknown', contextKey) : void 0;\n  }\n  {\n    var name = getComponentName_1(fiber) || 'Unknown';\n    // We can only provide accurate element stacks if we pass work-in-progress tree\n    // during the begin or complete phase. However currently this function is also\n    // called from unstable_renderSubtree legacy implementation. In this case it unsafe to\n    // assume anything about the given fiber. We won't pass it down if we aren't sure.\n    // TODO: remove this hack when we delete unstable_renderSubtree in Fiber.\n    var workInProgress = isReconciling ? fiber : null;\n    ReactDebugCurrentFiber$2.setCurrentFiber(workInProgress, null);\n    checkPropTypes$1(childContextTypes, childContext, 'child context', name, ReactDebugCurrentFiber$2.getCurrentFiberStackAddendum);\n    ReactDebugCurrentFiber$2.resetCurrentFiber();\n  }\n\n  return _assign({}, parentContext, childContext);\n}\nvar processChildContext_1 = processChildContext$1;\n\nvar pushContextProvider = function (workInProgress) {\n  if (!isContextProvider$1(workInProgress)) {\n    return false;\n  }\n\n  var instance = workInProgress.stateNode;\n  // We push the context as early as possible to ensure stack integrity.\n  // If the instance does not exist yet, we will push null at first,\n  // and replace it on the stack later when invalidating the context.\n  var memoizedMergedChildContext = instance && instance.__reactInternalMemoizedMergedChildContext || emptyObject;\n\n  // Remember the parent context so we can merge with it later.\n  // Inherit the parent's did-perform-work value to avoid inadvertantly blocking updates.\n  previousContext = contextStackCursor.current;\n  push(contextStackCursor, memoizedMergedChildContext, workInProgress);\n  push(didPerformWorkStackCursor, didPerformWorkStackCursor.current, workInProgress);\n\n  return true;\n};\n\nvar invalidateContextProvider = function (workInProgress, didChange) {\n  var instance = workInProgress.stateNode;\n  !instance ? invariant(false, 'Expected to have an instance by this point. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n\n  if (didChange) {\n    // Merge parent and own context.\n    // Skip this if we're not updating due to sCU.\n    // This avoids unnecessarily recomputing memoized values.\n    var mergedContext = processChildContext$1(workInProgress, previousContext, true);\n    instance.__reactInternalMemoizedMergedChildContext = mergedContext;\n\n    // Replace the old (or empty) context with the new one.\n    // It is important to unwind the context in the reverse order.\n    pop(didPerformWorkStackCursor, workInProgress);\n    pop(contextStackCursor, workInProgress);\n    // Now push the new context and mark that it has changed.\n    push(contextStackCursor, mergedContext, workInProgress);\n    push(didPerformWorkStackCursor, didChange, workInProgress);\n  } else {\n    pop(didPerformWorkStackCursor, workInProgress);\n    push(didPerformWorkStackCursor, didChange, workInProgress);\n  }\n};\n\nvar resetContext = function () {\n  previousContext = emptyObject;\n  contextStackCursor.current = emptyObject;\n  didPerformWorkStackCursor.current = false;\n};\n\nvar findCurrentUnmaskedContext$1 = function (fiber) {\n  // Currently this is only used with renderSubtreeIntoContainer; not sure if it\n  // makes sense elsewhere\n  !(isFiberMounted$1(fiber) && fiber.tag === ClassComponent$3) ? invariant(false, 'Expected subtree parent to be a mounted class component. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n\n  var node = fiber;\n  while (node.tag !== HostRoot$3) {\n    if (isContextProvider$1(node)) {\n      return node.stateNode.__reactInternalMemoizedMergedChildContext;\n    }\n    var parent = node['return'];\n    !parent ? invariant(false, 'Found unexpected detached subtree parent. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n    node = parent;\n  }\n  return node.stateNode.context;\n};\n\nvar ReactFiberContext = {\n\tgetUnmaskedContext: getUnmaskedContext_1,\n\tcacheContext: cacheContext_1,\n\tgetMaskedContext: getMaskedContext,\n\thasContextChanged: hasContextChanged,\n\tisContextConsumer: isContextConsumer_1,\n\tisContextProvider: isContextProvider_1,\n\tpopContextProvider: popContextProvider_1,\n\tpopTopLevelContextObject: popTopLevelContextObject,\n\tpushTopLevelContextObject: pushTopLevelContextObject,\n\tprocessChildContext: processChildContext_1,\n\tpushContextProvider: pushContextProvider,\n\tinvalidateContextProvider: invalidateContextProvider,\n\tresetContext: resetContext,\n\tfindCurrentUnmaskedContext: findCurrentUnmaskedContext$1\n};\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 * @providesModule ReactTypeOfInternalContext\n * \n */\n\nvar ReactTypeOfInternalContext = {\n  NoContext: 0,\n  AsyncUpdates: 1\n};\n\nvar IndeterminateComponent$1 = ReactTypeOfWork.IndeterminateComponent;\nvar ClassComponent$4 = ReactTypeOfWork.ClassComponent;\nvar HostRoot$5 = ReactTypeOfWork.HostRoot;\nvar HostComponent$5 = ReactTypeOfWork.HostComponent;\nvar HostText$3 = ReactTypeOfWork.HostText;\nvar HostPortal$2 = ReactTypeOfWork.HostPortal;\nvar CoroutineComponent = ReactTypeOfWork.CoroutineComponent;\nvar YieldComponent$1 = ReactTypeOfWork.YieldComponent;\nvar Fragment$1 = ReactTypeOfWork.Fragment;\n\nvar NoWork$1 = ReactPriorityLevel.NoWork;\n\nvar NoContext = ReactTypeOfInternalContext.NoContext;\n\nvar NoEffect$1 = ReactTypeOfSideEffect.NoEffect;\n\n\n\n{\n  var getComponentName$6 = getComponentName_1;\n  var hasBadMapPolyfill = false;\n  try {\n    var nonExtensibleObject = Object.preventExtensions({});\n    /* eslint-disable no-new */\n    new Map([[nonExtensibleObject, null]]);\n    new Set([nonExtensibleObject]);\n    /* eslint-enable no-new */\n  } catch (e) {\n    // TODO: Consider warning about bad polyfills\n    hasBadMapPolyfill = true;\n  }\n}\n\n// A Fiber is work on a Component that needs to be done or was done. There can\n// be more than one per component.\n\n\n{\n  var debugCounter = 1;\n}\n\nfunction FiberNode(tag, key, internalContextTag) {\n  // Instance\n  this.tag = tag;\n  this.key = key;\n  this.type = null;\n  this.stateNode = null;\n\n  // Fiber\n  this['return'] = null;\n  this.child = null;\n  this.sibling = null;\n  this.index = 0;\n\n  this.ref = null;\n\n  this.pendingProps = null;\n  this.memoizedProps = null;\n  this.updateQueue = null;\n  this.memoizedState = null;\n\n  this.internalContextTag = internalContextTag;\n\n  // Effects\n  this.effectTag = NoEffect$1;\n  this.nextEffect = null;\n\n  this.firstEffect = null;\n  this.lastEffect = null;\n\n  this.pendingWorkPriority = NoWork$1;\n\n  this.alternate = null;\n\n  {\n    this._debugID = debugCounter++;\n    this._debugSource = null;\n    this._debugOwner = null;\n    this._debugIsCurrentlyTiming = false;\n    if (!hasBadMapPolyfill && typeof Object.preventExtensions === 'function') {\n      Object.preventExtensions(this);\n    }\n  }\n}\n\n// This is a constructor function, rather than a POJO constructor, still\n// please ensure we do the following:\n// 1) Nobody should add any instance methods on this. Instance methods can be\n//    more difficult to predict when they get optimized and they are almost\n//    never inlined properly in static compilers.\n// 2) Nobody should rely on `instanceof Fiber` for type testing. We should\n//    always know when it is a fiber.\n// 3) We might want to experiment with using numeric keys since they are easier\n//    to optimize in a non-JIT environment.\n// 4) We can easily go from a constructor to a createFiber object literal if that\n//    is faster.\n// 5) It should be easy to port this to a C struct and keep a C implementation\n//    compatible.\nvar createFiber = function (tag, key, internalContextTag) {\n  // $FlowFixMe: the shapes are exact here but Flow doesn't like constructors\n  return new FiberNode(tag, key, internalContextTag);\n};\n\nfunction shouldConstruct(Component) {\n  return !!(Component.prototype && Component.prototype.isReactComponent);\n}\n\n// This is used to create an alternate fiber to do work on.\nvar createWorkInProgress = function (current, renderPriority) {\n  var workInProgress = current.alternate;\n  if (workInProgress === null) {\n    // We use a double buffering pooling technique because we know that we'll\n    // only ever need at most two versions of a tree. We pool the \"other\" unused\n    // node that we're free to reuse. This is lazily created to avoid allocating\n    // extra objects for things that are never updated. It also allow us to\n    // reclaim the extra memory if needed.\n    workInProgress = createFiber(current.tag, current.key, current.internalContextTag);\n    workInProgress.type = current.type;\n    workInProgress.stateNode = current.stateNode;\n\n    {\n      // DEV-only fields\n      workInProgress._debugID = current._debugID;\n      workInProgress._debugSource = current._debugSource;\n      workInProgress._debugOwner = current._debugOwner;\n    }\n\n    workInProgress.alternate = current;\n    current.alternate = workInProgress;\n  } else {\n    // We already have an alternate.\n    // Reset the effect tag.\n    workInProgress.effectTag = NoEffect$1;\n\n    // The effect list is no longer valid.\n    workInProgress.nextEffect = null;\n    workInProgress.firstEffect = null;\n    workInProgress.lastEffect = null;\n  }\n\n  workInProgress.pendingWorkPriority = renderPriority;\n\n  workInProgress.child = current.child;\n  workInProgress.memoizedProps = current.memoizedProps;\n  workInProgress.memoizedState = current.memoizedState;\n  workInProgress.updateQueue = current.updateQueue;\n\n  // pendingProps is set by the parent during reconciliation.\n  // TODO: Pass this as an argument.\n\n  // These will be overridden during the parent's reconciliation\n  workInProgress.sibling = current.sibling;\n  workInProgress.index = current.index;\n  workInProgress.ref = current.ref;\n\n  return workInProgress;\n};\n\nvar createHostRootFiber$1 = function () {\n  var fiber = createFiber(HostRoot$5, null, NoContext);\n  return fiber;\n};\n\nvar createFiberFromElement = function (element, internalContextTag, priorityLevel) {\n  var owner = null;\n  {\n    owner = element._owner;\n  }\n\n  var fiber = createFiberFromElementType(element.type, element.key, internalContextTag, owner);\n  fiber.pendingProps = element.props;\n  fiber.pendingWorkPriority = priorityLevel;\n\n  {\n    fiber._debugSource = element._source;\n    fiber._debugOwner = element._owner;\n  }\n\n  return fiber;\n};\n\nvar createFiberFromFragment = function (elements, internalContextTag, priorityLevel) {\n  // TODO: Consider supporting keyed fragments. Technically, we accidentally\n  // support that in the existing React.\n  var fiber = createFiber(Fragment$1, null, internalContextTag);\n  fiber.pendingProps = elements;\n  fiber.pendingWorkPriority = priorityLevel;\n  return fiber;\n};\n\nvar createFiberFromText = function (content, internalContextTag, priorityLevel) {\n  var fiber = createFiber(HostText$3, null, internalContextTag);\n  fiber.pendingProps = content;\n  fiber.pendingWorkPriority = priorityLevel;\n  return fiber;\n};\n\nfunction createFiberFromElementType(type, key, internalContextTag, debugOwner) {\n  var fiber = void 0;\n  if (typeof type === 'function') {\n    fiber = shouldConstruct(type) ? createFiber(ClassComponent$4, key, internalContextTag) : createFiber(IndeterminateComponent$1, key, internalContextTag);\n    fiber.type = type;\n  } else if (typeof type === 'string') {\n    fiber = createFiber(HostComponent$5, key, internalContextTag);\n    fiber.type = type;\n  } else if (typeof type === 'object' && type !== null && typeof type.tag === 'number') {\n    // Currently assumed to be a continuation and therefore is a fiber already.\n    // TODO: The yield system is currently broken for updates in some cases.\n    // The reified yield stores a fiber, but we don't know which fiber that is;\n    // the current or a workInProgress? When the continuation gets rendered here\n    // we don't know if we can reuse that fiber or if we need to clone it.\n    // There is probably a clever way to restructure this.\n    fiber = type;\n  } else {\n    var info = '';\n    {\n      if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n        info += ' You likely forgot to export your component from the file ' + \"it's defined in.\";\n      }\n      var ownerName = debugOwner ? getComponentName$6(debugOwner) : null;\n      if (ownerName) {\n        info += '\\n\\nCheck the render method of `' + ownerName + '`.';\n      }\n    }\n    invariant(false, 'Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s', type == null ? type : typeof type, info);\n  }\n  return fiber;\n}\n\nvar createFiberFromElementType_1 = createFiberFromElementType;\n\nvar createFiberFromHostInstanceForDeletion = function () {\n  var fiber = createFiber(HostComponent$5, null, NoContext);\n  fiber.type = 'DELETED';\n  return fiber;\n};\n\nvar createFiberFromCoroutine = function (coroutine, internalContextTag, priorityLevel) {\n  var fiber = createFiber(CoroutineComponent, coroutine.key, internalContextTag);\n  fiber.type = coroutine.handler;\n  fiber.pendingProps = coroutine;\n  fiber.pendingWorkPriority = priorityLevel;\n  return fiber;\n};\n\nvar createFiberFromYield = function (yieldNode, internalContextTag, priorityLevel) {\n  var fiber = createFiber(YieldComponent$1, null, internalContextTag);\n  return fiber;\n};\n\nvar createFiberFromPortal = function (portal, internalContextTag, priorityLevel) {\n  var fiber = createFiber(HostPortal$2, portal.key, internalContextTag);\n  fiber.pendingProps = portal.children || [];\n  fiber.pendingWorkPriority = priorityLevel;\n  fiber.stateNode = {\n    containerInfo: portal.containerInfo,\n    implementation: portal.implementation\n  };\n  return fiber;\n};\n\nvar largerPriority = function (p1, p2) {\n  return p1 !== NoWork$1 && (p2 === NoWork$1 || p2 > p1) ? p1 : p2;\n};\n\nvar ReactFiber = {\n\tcreateWorkInProgress: createWorkInProgress,\n\tcreateHostRootFiber: createHostRootFiber$1,\n\tcreateFiberFromElement: createFiberFromElement,\n\tcreateFiberFromFragment: createFiberFromFragment,\n\tcreateFiberFromText: createFiberFromText,\n\tcreateFiberFromElementType: createFiberFromElementType_1,\n\tcreateFiberFromHostInstanceForDeletion: createFiberFromHostInstanceForDeletion,\n\tcreateFiberFromCoroutine: createFiberFromCoroutine,\n\tcreateFiberFromYield: createFiberFromYield,\n\tcreateFiberFromPortal: createFiberFromPortal,\n\tlargerPriority: largerPriority\n};\n\nvar createHostRootFiber = ReactFiber.createHostRootFiber;\n\nvar createFiberRoot$1 = function (containerInfo) {\n  // Cyclic construction. This cheats the type system right now because\n  // stateNode is any.\n  var uninitializedFiber = createHostRootFiber();\n  var root = {\n    current: uninitializedFiber,\n    containerInfo: containerInfo,\n    isScheduled: false,\n    nextScheduledRoot: null,\n    context: null,\n    pendingContext: null\n  };\n  uninitializedFiber.stateNode = root;\n  return root;\n};\n\nvar ReactFiberRoot = {\n\tcreateFiberRoot: createFiberRoot$1\n};\n\nvar defaultShowDialog = function (capturedError) {\n  return true;\n};\n\nvar showDialog = defaultShowDialog;\n\nfunction logCapturedError$1(capturedError) {\n  var logError = showDialog(capturedError);\n\n  // Allow injected showDialog() to prevent default console.error logging.\n  // This enables renderers like ReactNative to better manage redbox behavior.\n  if (logError === false) {\n    return;\n  }\n\n  var error = capturedError.error;\n  {\n    var componentName = capturedError.componentName,\n        componentStack = capturedError.componentStack,\n        errorBoundaryName = capturedError.errorBoundaryName,\n        errorBoundaryFound = capturedError.errorBoundaryFound,\n        willRetry = capturedError.willRetry;\n\n\n    var componentNameMessage = componentName ? 'The above error occurred in the <' + componentName + '> component:' : 'The above error occurred in one of your React components:';\n\n    var errorBoundaryMessage = void 0;\n    // errorBoundaryFound check is sufficient; errorBoundaryName check is to satisfy Flow.\n    if (errorBoundaryFound && errorBoundaryName) {\n      if (willRetry) {\n        errorBoundaryMessage = 'React will try to recreate this component tree from scratch ' + ('using the error boundary you provided, ' + errorBoundaryName + '.');\n      } else {\n        errorBoundaryMessage = 'This error was initially handled by the error boundary ' + errorBoundaryName + '.\\n' + 'Recreating the tree from scratch failed so React will unmount the tree.';\n      }\n    } else {\n      errorBoundaryMessage = 'Consider adding an error boundary to your tree to customize error handling behavior.\\n' + 'You can learn more about error boundaries at https://fb.me/react-error-boundaries.';\n    }\n    var combinedMessage = '' + componentNameMessage + componentStack + '\\n\\n' + ('' + errorBoundaryMessage);\n\n    // In development, we provide our own message with just the component stack.\n    // We don't include the original error message and JS stack because the browser\n    // has already printed it. Even if the application swallows the error, it is still\n    // displayed by the browser thanks to the DEV-only fake event trick in ReactErrorUtils.\n    console.error(combinedMessage);\n  }\n}\n\nvar injection$1 = {\n  /**\n   * Display custom dialog for lifecycle errors.\n   * Return false to prevent default behavior of logging to console.error.\n   */\n  injectDialog: function (fn) {\n    !(showDialog === defaultShowDialog) ? invariant(false, 'The custom dialog was already injected.') : void 0;\n    !(typeof fn === 'function') ? invariant(false, 'Injected showDialog() must be a function.') : void 0;\n    showDialog = fn;\n  }\n};\n\nvar logCapturedError_1 = logCapturedError$1;\n\nvar ReactFiberErrorLogger = {\n\tinjection: injection$1,\n\tlogCapturedError: logCapturedError_1\n};\n\n/**\n * Copyright (c) 2014-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 * @providesModule ReactCoroutine\n * \n */\n\n// The Symbol used to tag the special React types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar REACT_COROUTINE_TYPE$1;\nvar REACT_YIELD_TYPE$1;\nif (typeof Symbol === 'function' && Symbol['for']) {\n  REACT_COROUTINE_TYPE$1 = Symbol['for']('react.coroutine');\n  REACT_YIELD_TYPE$1 = Symbol['for']('react.yield');\n} else {\n  REACT_COROUTINE_TYPE$1 = 0xeac8;\n  REACT_YIELD_TYPE$1 = 0xeac9;\n}\n\nvar createCoroutine = function (children, handler, props) {\n  var key = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n  var coroutine = {\n    // This tag allow us to uniquely identify this as a React Coroutine\n    $$typeof: REACT_COROUTINE_TYPE$1,\n    key: key == null ? null : '' + key,\n    children: children,\n    handler: handler,\n    props: props\n  };\n\n  {\n    // TODO: Add _store property for marking this as validated.\n    if (Object.freeze) {\n      Object.freeze(coroutine.props);\n      Object.freeze(coroutine);\n    }\n  }\n\n  return coroutine;\n};\n\nvar createYield = function (value) {\n  var yieldNode = {\n    // This tag allow us to uniquely identify this as a React Yield\n    $$typeof: REACT_YIELD_TYPE$1,\n    value: value\n  };\n\n  {\n    // TODO: Add _store property for marking this as validated.\n    if (Object.freeze) {\n      Object.freeze(yieldNode);\n    }\n  }\n\n  return yieldNode;\n};\n\n/**\n * Verifies the object is a coroutine object.\n */\nvar isCoroutine = function (object) {\n  return typeof object === 'object' && object !== null && object.$$typeof === REACT_COROUTINE_TYPE$1;\n};\n\n/**\n * Verifies the object is a yield object.\n */\nvar isYield = function (object) {\n  return typeof object === 'object' && object !== null && object.$$typeof === REACT_YIELD_TYPE$1;\n};\n\nvar REACT_YIELD_TYPE_1 = REACT_YIELD_TYPE$1;\nvar REACT_COROUTINE_TYPE_1 = REACT_COROUTINE_TYPE$1;\n\nvar ReactCoroutine = {\n\tcreateCoroutine: createCoroutine,\n\tcreateYield: createYield,\n\tisCoroutine: isCoroutine,\n\tisYield: isYield,\n\tREACT_YIELD_TYPE: REACT_YIELD_TYPE_1,\n\tREACT_COROUTINE_TYPE: REACT_COROUTINE_TYPE_1\n};\n\n/**\n * Copyright (c) 2014-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 * @providesModule ReactPortal\n * \n */\n\n// The Symbol used to tag the special React types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar REACT_PORTAL_TYPE$1 = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.portal') || 0xeaca;\n\nvar createPortal$1 = function (children, containerInfo,\n// TODO: figure out the API for cross-renderer implementation.\nimplementation) {\n  var key = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n  return {\n    // This tag allow us to uniquely identify this as a React Portal\n    $$typeof: REACT_PORTAL_TYPE$1,\n    key: key == null ? null : '' + key,\n    children: children,\n    containerInfo: containerInfo,\n    implementation: implementation\n  };\n};\n\n/**\n * Verifies the object is a portal object.\n */\nvar isPortal = function (object) {\n  return typeof object === 'object' && object !== null && object.$$typeof === REACT_PORTAL_TYPE$1;\n};\n\nvar REACT_PORTAL_TYPE_1 = REACT_PORTAL_TYPE$1;\n\nvar ReactPortal = {\n\tcreatePortal: createPortal$1,\n\tisPortal: isPortal,\n\tREACT_PORTAL_TYPE: REACT_PORTAL_TYPE_1\n};\n\nvar REACT_COROUTINE_TYPE = ReactCoroutine.REACT_COROUTINE_TYPE;\nvar REACT_YIELD_TYPE = ReactCoroutine.REACT_YIELD_TYPE;\n\nvar REACT_PORTAL_TYPE = ReactPortal.REACT_PORTAL_TYPE;\n\n\n\n\n\n\n\n\n{\n  var _require3$4 = ReactDebugCurrentFiber_1,\n      getCurrentFiberStackAddendum$5 = _require3$4.getCurrentFiberStackAddendum;\n\n  var warning$24 = require$$0;\n  var didWarnAboutMaps = false;\n  /**\n   * Warn if there's no key explicitly set on dynamic arrays of children or\n   * object keys are not valid. This allows us to keep track of children between\n   * updates.\n   */\n  var ownerHasKeyUseWarning = {};\n\n  var warnForMissingKey = function (child) {\n    if (child === null || typeof child !== 'object') {\n      return;\n    }\n    if (!child._store || child._store.validated || child.key != null) {\n      return;\n    }\n    !(typeof child._store === 'object') ? invariant(false, 'React Component in warnForMissingKey should have a _store. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n    child._store.validated = true;\n\n    var currentComponentErrorInfo = 'Each child in an array or iterator should have a unique ' + '\"key\" prop. See https://fb.me/react-warning-keys for ' + 'more information.' + (getCurrentFiberStackAddendum$5() || '');\n    if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n      return;\n    }\n    ownerHasKeyUseWarning[currentComponentErrorInfo] = true;\n\n    warning$24(false, 'Each child in an array or iterator should have a unique ' + '\"key\" prop. See https://fb.me/react-warning-keys for ' + 'more information.%s', getCurrentFiberStackAddendum$5());\n  };\n}\n\nvar createWorkInProgress$2 = ReactFiber.createWorkInProgress;\nvar createFiberFromElement$1 = ReactFiber.createFiberFromElement;\nvar createFiberFromFragment$1 = ReactFiber.createFiberFromFragment;\nvar createFiberFromText$1 = ReactFiber.createFiberFromText;\nvar createFiberFromCoroutine$1 = ReactFiber.createFiberFromCoroutine;\nvar createFiberFromYield$1 = ReactFiber.createFiberFromYield;\nvar createFiberFromPortal$1 = ReactFiber.createFiberFromPortal;\n\n\nvar isArray = Array.isArray;\n\nvar FunctionalComponent$2 = ReactTypeOfWork.FunctionalComponent;\nvar ClassComponent$7 = ReactTypeOfWork.ClassComponent;\nvar HostText$5 = ReactTypeOfWork.HostText;\nvar HostPortal$5 = ReactTypeOfWork.HostPortal;\nvar CoroutineComponent$2 = ReactTypeOfWork.CoroutineComponent;\nvar YieldComponent$3 = ReactTypeOfWork.YieldComponent;\nvar Fragment$3 = ReactTypeOfWork.Fragment;\nvar NoEffect$2 = ReactTypeOfSideEffect.NoEffect;\nvar Placement$3 = ReactTypeOfSideEffect.Placement;\nvar Deletion$1 = ReactTypeOfSideEffect.Deletion;\n\n\nvar ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n// The Symbol used to tag the ReactElement type. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;\n\nfunction getIteratorFn(maybeIterable) {\n  if (maybeIterable === null || typeof maybeIterable === 'undefined') {\n    return null;\n  }\n  var iteratorFn = ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n  if (typeof iteratorFn === 'function') {\n    return iteratorFn;\n  }\n  return null;\n}\n\nfunction coerceRef(current, element) {\n  var mixedRef = element.ref;\n  if (mixedRef !== null && typeof mixedRef !== 'function') {\n    if (element._owner) {\n      var owner = element._owner;\n      var inst = void 0;\n      if (owner) {\n        if (typeof owner.tag === 'number') {\n          var ownerFiber = owner;\n          !(ownerFiber.tag === ClassComponent$7) ? invariant(false, 'Stateless function components cannot have refs.') : void 0;\n          inst = ownerFiber.stateNode;\n        } else {\n          // Stack\n          inst = owner.getPublicInstance();\n        }\n      }\n      !inst ? invariant(false, 'Missing owner for string ref %s. This error is likely caused by a bug in React. Please file an issue.', mixedRef) : void 0;\n      var stringRef = '' + mixedRef;\n      // Check if previous string ref matches new string ref\n      if (current !== null && current.ref !== null && current.ref._stringRef === stringRef) {\n        return current.ref;\n      }\n      var ref = function (value) {\n        var refs = inst.refs === emptyObject ? inst.refs = {} : inst.refs;\n        if (value === null) {\n          delete refs[stringRef];\n        } else {\n          refs[stringRef] = value;\n        }\n      };\n      ref._stringRef = stringRef;\n      return ref;\n    } else {\n      !(typeof mixedRef === 'string') ? invariant(false, 'Expected ref to be a function or a string.') : void 0;\n      !element._owner ? invariant(false, 'Element ref was specified as a string (%s) but no owner was set. You may have multiple copies of React loaded. (details: https://fb.me/react-refs-must-have-owner).', mixedRef) : void 0;\n    }\n  }\n  return mixedRef;\n}\n\nfunction throwOnInvalidObjectType(returnFiber, newChild) {\n  if (returnFiber.type !== 'textarea') {\n    var addendum = '';\n    {\n      addendum = ' If you meant to render a collection of children, use an array ' + 'instead.' + (getCurrentFiberStackAddendum$5() || '');\n    }\n    invariant(false, 'Objects are not valid as a React child (found: %s).%s', Object.prototype.toString.call(newChild) === '[object Object]' ? 'object with keys {' + Object.keys(newChild).join(', ') + '}' : newChild, addendum);\n  }\n}\n\nfunction warnOnFunctionType() {\n  warning$24(false, 'Functions are not valid as a React child. This may happen if ' + 'you return a Component instead of <Component /> from render. ' + 'Or maybe you meant to call this function rather than return it.%s', getCurrentFiberStackAddendum$5() || '');\n}\n\n// This wrapper function exists because I expect to clone the code in each path\n// to be able to optimize each path individually by branching early. This needs\n// a compiler or we can do it manually. Helpers that don't need this branching\n// live outside of this function.\nfunction ChildReconciler(shouldClone, shouldTrackSideEffects) {\n  function deleteChild(returnFiber, childToDelete) {\n    if (!shouldTrackSideEffects) {\n      // Noop.\n      return;\n    }\n    if (!shouldClone) {\n      // When we're reconciling in place we have a work in progress copy. We\n      // actually want the current copy. If there is no current copy, then we\n      // don't need to track deletion side-effects.\n      if (childToDelete.alternate === null) {\n        return;\n      }\n      childToDelete = childToDelete.alternate;\n    }\n    // Deletions are added in reversed order so we add it to the front.\n    // At this point, the return fiber's effect list is empty except for\n    // deletions, so we can just append the deletion to the list. The remaining\n    // effects aren't added until the complete phase. Once we implement\n    // resuming, this may not be true.\n    var last = returnFiber.lastEffect;\n    if (last !== null) {\n      last.nextEffect = childToDelete;\n      returnFiber.lastEffect = childToDelete;\n    } else {\n      returnFiber.firstEffect = returnFiber.lastEffect = childToDelete;\n    }\n    childToDelete.nextEffect = null;\n    childToDelete.effectTag = Deletion$1;\n  }\n\n  function deleteRemainingChildren(returnFiber, currentFirstChild) {\n    if (!shouldTrackSideEffects) {\n      // Noop.\n      return null;\n    }\n\n    // TODO: For the shouldClone case, this could be micro-optimized a bit by\n    // assuming that after the first child we've already added everything.\n    var childToDelete = currentFirstChild;\n    while (childToDelete !== null) {\n      deleteChild(returnFiber, childToDelete);\n      childToDelete = childToDelete.sibling;\n    }\n    return null;\n  }\n\n  function mapRemainingChildren(returnFiber, currentFirstChild) {\n    // Add the remaining children to a temporary map so that we can find them by\n    // keys quickly. Implicit (null) keys get added to this set with their index\n    var existingChildren = new Map();\n\n    var existingChild = currentFirstChild;\n    while (existingChild !== null) {\n      if (existingChild.key !== null) {\n        existingChildren.set(existingChild.key, existingChild);\n      } else {\n        existingChildren.set(existingChild.index, existingChild);\n      }\n      existingChild = existingChild.sibling;\n    }\n    return existingChildren;\n  }\n\n  function useFiber(fiber, priority) {\n    // We currently set sibling to null and index to 0 here because it is easy\n    // to forget to do before returning it. E.g. for the single child case.\n    if (shouldClone) {\n      var clone = createWorkInProgress$2(fiber, priority);\n      clone.index = 0;\n      clone.sibling = null;\n      return clone;\n    } else {\n      // We override the pending priority even if it is higher, because if\n      // we're reconciling at a lower priority that means that this was\n      // down-prioritized.\n      fiber.pendingWorkPriority = priority;\n      fiber.effectTag = NoEffect$2;\n      fiber.index = 0;\n      fiber.sibling = null;\n      return fiber;\n    }\n  }\n\n  function placeChild(newFiber, lastPlacedIndex, newIndex) {\n    newFiber.index = newIndex;\n    if (!shouldTrackSideEffects) {\n      // Noop.\n      return lastPlacedIndex;\n    }\n    var current = newFiber.alternate;\n    if (current !== null) {\n      var oldIndex = current.index;\n      if (oldIndex < lastPlacedIndex) {\n        // This is a move.\n        newFiber.effectTag = Placement$3;\n        return lastPlacedIndex;\n      } else {\n        // This item can stay in place.\n        return oldIndex;\n      }\n    } else {\n      // This is an insertion.\n      newFiber.effectTag = Placement$3;\n      return lastPlacedIndex;\n    }\n  }\n\n  function placeSingleChild(newFiber) {\n    // This is simpler for the single child case. We only need to do a\n    // placement for inserting new children.\n    if (shouldTrackSideEffects && newFiber.alternate === null) {\n      newFiber.effectTag = Placement$3;\n    }\n    return newFiber;\n  }\n\n  function updateTextNode(returnFiber, current, textContent, priority) {\n    if (current === null || current.tag !== HostText$5) {\n      // Insert\n      var created = createFiberFromText$1(textContent, returnFiber.internalContextTag, priority);\n      created['return'] = returnFiber;\n      return created;\n    } else {\n      // Update\n      var existing = useFiber(current, priority);\n      existing.pendingProps = textContent;\n      existing['return'] = returnFiber;\n      return existing;\n    }\n  }\n\n  function updateElement(returnFiber, current, element, priority) {\n    if (current === null || current.type !== element.type) {\n      // Insert\n      var created = createFiberFromElement$1(element, returnFiber.internalContextTag, priority);\n      created.ref = coerceRef(current, element);\n      created['return'] = returnFiber;\n      return created;\n    } else {\n      // Move based on index\n      var existing = useFiber(current, priority);\n      existing.ref = coerceRef(current, element);\n      existing.pendingProps = element.props;\n      existing['return'] = returnFiber;\n      {\n        existing._debugSource = element._source;\n        existing._debugOwner = element._owner;\n      }\n      return existing;\n    }\n  }\n\n  function updateCoroutine(returnFiber, current, coroutine, priority) {\n    // TODO: Should this also compare handler to determine whether to reuse?\n    if (current === null || current.tag !== CoroutineComponent$2) {\n      // Insert\n      var created = createFiberFromCoroutine$1(coroutine, returnFiber.internalContextTag, priority);\n      created['return'] = returnFiber;\n      return created;\n    } else {\n      // Move based on index\n      var existing = useFiber(current, priority);\n      existing.pendingProps = coroutine;\n      existing['return'] = returnFiber;\n      return existing;\n    }\n  }\n\n  function updateYield(returnFiber, current, yieldNode, priority) {\n    if (current === null || current.tag !== YieldComponent$3) {\n      // Insert\n      var created = createFiberFromYield$1(yieldNode, returnFiber.internalContextTag, priority);\n      created.type = yieldNode.value;\n      created['return'] = returnFiber;\n      return created;\n    } else {\n      // Move based on index\n      var existing = useFiber(current, priority);\n      existing.type = yieldNode.value;\n      existing['return'] = returnFiber;\n      return existing;\n    }\n  }\n\n  function updatePortal(returnFiber, current, portal, priority) {\n    if (current === null || current.tag !== HostPortal$5 || current.stateNode.containerInfo !== portal.containerInfo || current.stateNode.implementation !== portal.implementation) {\n      // Insert\n      var created = createFiberFromPortal$1(portal, returnFiber.internalContextTag, priority);\n      created['return'] = returnFiber;\n      return created;\n    } else {\n      // Update\n      var existing = useFiber(current, priority);\n      existing.pendingProps = portal.children || [];\n      existing['return'] = returnFiber;\n      return existing;\n    }\n  }\n\n  function updateFragment(returnFiber, current, fragment, priority) {\n    if (current === null || current.tag !== Fragment$3) {\n      // Insert\n      var created = createFiberFromFragment$1(fragment, returnFiber.internalContextTag, priority);\n      created['return'] = returnFiber;\n      return created;\n    } else {\n      // Update\n      var existing = useFiber(current, priority);\n      existing.pendingProps = fragment;\n      existing['return'] = returnFiber;\n      return existing;\n    }\n  }\n\n  function createChild(returnFiber, newChild, priority) {\n    if (typeof newChild === 'string' || typeof newChild === 'number') {\n      // Text nodes doesn't have keys. If the previous node is implicitly keyed\n      // we can continue to replace it without aborting even if it is not a text\n      // node.\n      var created = createFiberFromText$1('' + newChild, returnFiber.internalContextTag, priority);\n      created['return'] = returnFiber;\n      return created;\n    }\n\n    if (typeof newChild === 'object' && newChild !== null) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          {\n            var _created = createFiberFromElement$1(newChild, returnFiber.internalContextTag, priority);\n            _created.ref = coerceRef(null, newChild);\n            _created['return'] = returnFiber;\n            return _created;\n          }\n\n        case REACT_COROUTINE_TYPE:\n          {\n            var _created2 = createFiberFromCoroutine$1(newChild, returnFiber.internalContextTag, priority);\n            _created2['return'] = returnFiber;\n            return _created2;\n          }\n\n        case REACT_YIELD_TYPE:\n          {\n            var _created3 = createFiberFromYield$1(newChild, returnFiber.internalContextTag, priority);\n            _created3.type = newChild.value;\n            _created3['return'] = returnFiber;\n            return _created3;\n          }\n\n        case REACT_PORTAL_TYPE:\n          {\n            var _created4 = createFiberFromPortal$1(newChild, returnFiber.internalContextTag, priority);\n            _created4['return'] = returnFiber;\n            return _created4;\n          }\n      }\n\n      if (isArray(newChild) || getIteratorFn(newChild)) {\n        var _created5 = createFiberFromFragment$1(newChild, returnFiber.internalContextTag, priority);\n        _created5['return'] = returnFiber;\n        return _created5;\n      }\n\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n\n    {\n      if (typeof newChild === 'function') {\n        warnOnFunctionType();\n      }\n    }\n\n    return null;\n  }\n\n  function updateSlot(returnFiber, oldFiber, newChild, priority) {\n    // Update the fiber if the keys match, otherwise return null.\n\n    var key = oldFiber !== null ? oldFiber.key : null;\n\n    if (typeof newChild === 'string' || typeof newChild === 'number') {\n      // Text nodes doesn't have keys. If the previous node is implicitly keyed\n      // we can continue to replace it without aborting even if it is not a text\n      // node.\n      if (key !== null) {\n        return null;\n      }\n      return updateTextNode(returnFiber, oldFiber, '' + newChild, priority);\n    }\n\n    if (typeof newChild === 'object' && newChild !== null) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          {\n            if (newChild.key === key) {\n              return updateElement(returnFiber, oldFiber, newChild, priority);\n            } else {\n              return null;\n            }\n          }\n\n        case REACT_COROUTINE_TYPE:\n          {\n            if (newChild.key === key) {\n              return updateCoroutine(returnFiber, oldFiber, newChild, priority);\n            } else {\n              return null;\n            }\n          }\n\n        case REACT_YIELD_TYPE:\n          {\n            // Yields doesn't have keys. If the previous node is implicitly keyed\n            // we can continue to replace it without aborting even if it is not a\n            // yield.\n            if (key === null) {\n              return updateYield(returnFiber, oldFiber, newChild, priority);\n            } else {\n              return null;\n            }\n          }\n\n        case REACT_PORTAL_TYPE:\n          {\n            if (newChild.key === key) {\n              return updatePortal(returnFiber, oldFiber, newChild, priority);\n            } else {\n              return null;\n            }\n          }\n      }\n\n      if (isArray(newChild) || getIteratorFn(newChild)) {\n        // Fragments doesn't have keys so if the previous key is implicit we can\n        // update it.\n        if (key !== null) {\n          return null;\n        }\n        return updateFragment(returnFiber, oldFiber, newChild, priority);\n      }\n\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n\n    {\n      if (typeof newChild === 'function') {\n        warnOnFunctionType();\n      }\n    }\n\n    return null;\n  }\n\n  function updateFromMap(existingChildren, returnFiber, newIdx, newChild, priority) {\n    if (typeof newChild === 'string' || typeof newChild === 'number') {\n      // Text nodes doesn't have keys, so we neither have to check the old nor\n      // new node for the key. If both are text nodes, they match.\n      var matchedFiber = existingChildren.get(newIdx) || null;\n      return updateTextNode(returnFiber, matchedFiber, '' + newChild, priority);\n    }\n\n    if (typeof newChild === 'object' && newChild !== null) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          {\n            var _matchedFiber = existingChildren.get(newChild.key === null ? newIdx : newChild.key) || null;\n            return updateElement(returnFiber, _matchedFiber, newChild, priority);\n          }\n\n        case REACT_COROUTINE_TYPE:\n          {\n            var _matchedFiber2 = existingChildren.get(newChild.key === null ? newIdx : newChild.key) || null;\n            return updateCoroutine(returnFiber, _matchedFiber2, newChild, priority);\n          }\n\n        case REACT_YIELD_TYPE:\n          {\n            // Yields doesn't have keys, so we neither have to check the old nor\n            // new node for the key. If both are yields, they match.\n            var _matchedFiber3 = existingChildren.get(newIdx) || null;\n            return updateYield(returnFiber, _matchedFiber3, newChild, priority);\n          }\n\n        case REACT_PORTAL_TYPE:\n          {\n            var _matchedFiber4 = existingChildren.get(newChild.key === null ? newIdx : newChild.key) || null;\n            return updatePortal(returnFiber, _matchedFiber4, newChild, priority);\n          }\n      }\n\n      if (isArray(newChild) || getIteratorFn(newChild)) {\n        var _matchedFiber5 = existingChildren.get(newIdx) || null;\n        return updateFragment(returnFiber, _matchedFiber5, newChild, priority);\n      }\n\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n\n    {\n      if (typeof newChild === 'function') {\n        warnOnFunctionType();\n      }\n    }\n\n    return null;\n  }\n\n  /**\n   * Warns if there is a duplicate or missing key\n   */\n  function warnOnInvalidKey(child, knownKeys) {\n    {\n      if (typeof child !== 'object' || child === null) {\n        return knownKeys;\n      }\n      switch (child.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n        case REACT_COROUTINE_TYPE:\n        case REACT_PORTAL_TYPE:\n          warnForMissingKey(child);\n          var key = child.key;\n          if (typeof key !== 'string') {\n            break;\n          }\n          if (knownKeys === null) {\n            knownKeys = new Set();\n            knownKeys.add(key);\n            break;\n          }\n          if (!knownKeys.has(key)) {\n            knownKeys.add(key);\n            break;\n          }\n          warning$24(false, 'Encountered two children with the same key, `%s`. ' + 'Keys should be unique so that components maintain their identity ' + 'across updates. Non-unique keys may cause children to be ' + 'duplicated and/or omitted — the behavior is unsupported and ' + 'could change in a future version.%s', key, getCurrentFiberStackAddendum$5());\n          break;\n        default:\n          break;\n      }\n    }\n    return knownKeys;\n  }\n\n  function reconcileChildrenArray(returnFiber, currentFirstChild, newChildren, priority) {\n    // This algorithm can't optimize by searching from boths ends since we\n    // don't have backpointers on fibers. I'm trying to see how far we can get\n    // with that model. If it ends up not being worth the tradeoffs, we can\n    // add it later.\n\n    // Even with a two ended optimization, we'd want to optimize for the case\n    // where there are few changes and brute force the comparison instead of\n    // going for the Map. It'd like to explore hitting that path first in\n    // forward-only mode and only go for the Map once we notice that we need\n    // lots of look ahead. This doesn't handle reversal as well as two ended\n    // search but that's unusual. Besides, for the two ended optimization to\n    // work on Iterables, we'd need to copy the whole set.\n\n    // In this first iteration, we'll just live with hitting the bad case\n    // (adding everything to a Map) in for every insert/move.\n\n    // If you change this code, also update reconcileChildrenIterator() which\n    // uses the same algorithm.\n\n    {\n      // First, validate keys.\n      var knownKeys = null;\n      for (var i = 0; i < newChildren.length; i++) {\n        var child = newChildren[i];\n        knownKeys = warnOnInvalidKey(child, knownKeys);\n      }\n    }\n\n    var resultingFirstChild = null;\n    var previousNewFiber = null;\n\n    var oldFiber = currentFirstChild;\n    var lastPlacedIndex = 0;\n    var newIdx = 0;\n    var nextOldFiber = null;\n    for (; oldFiber !== null && newIdx < newChildren.length; newIdx++) {\n      if (oldFiber.index > newIdx) {\n        nextOldFiber = oldFiber;\n        oldFiber = null;\n      } else {\n        nextOldFiber = oldFiber.sibling;\n      }\n      var newFiber = updateSlot(returnFiber, oldFiber, newChildren[newIdx], priority);\n      if (newFiber === null) {\n        // TODO: This breaks on empty slots like null children. That's\n        // unfortunate because it triggers the slow path all the time. We need\n        // a better way to communicate whether this was a miss or null,\n        // boolean, undefined, etc.\n        if (oldFiber === null) {\n          oldFiber = nextOldFiber;\n        }\n        break;\n      }\n      if (shouldTrackSideEffects) {\n        if (oldFiber && newFiber.alternate === null) {\n          // We matched the slot, but we didn't reuse the existing fiber, so we\n          // need to delete the existing child.\n          deleteChild(returnFiber, oldFiber);\n        }\n      }\n      lastPlacedIndex = placeChild(newFiber, lastPlacedIndex, newIdx);\n      if (previousNewFiber === null) {\n        // TODO: Move out of the loop. This only happens for the first run.\n        resultingFirstChild = newFiber;\n      } else {\n        // TODO: Defer siblings if we're not at the right index for this slot.\n        // I.e. if we had null values before, then we want to defer this\n        // for each null value. However, we also don't want to call updateSlot\n        // with the previous one.\n        previousNewFiber.sibling = newFiber;\n      }\n      previousNewFiber = newFiber;\n      oldFiber = nextOldFiber;\n    }\n\n    if (newIdx === newChildren.length) {\n      // We've reached the end of the new children. We can delete the rest.\n      deleteRemainingChildren(returnFiber, oldFiber);\n      return resultingFirstChild;\n    }\n\n    if (oldFiber === null) {\n      // If we don't have any more existing children we can choose a fast path\n      // since the rest will all be insertions.\n      for (; newIdx < newChildren.length; newIdx++) {\n        var _newFiber = createChild(returnFiber, newChildren[newIdx], priority);\n        if (!_newFiber) {\n          continue;\n        }\n        lastPlacedIndex = placeChild(_newFiber, lastPlacedIndex, newIdx);\n        if (previousNewFiber === null) {\n          // TODO: Move out of the loop. This only happens for the first run.\n          resultingFirstChild = _newFiber;\n        } else {\n          previousNewFiber.sibling = _newFiber;\n        }\n        previousNewFiber = _newFiber;\n      }\n      return resultingFirstChild;\n    }\n\n    // Add all children to a key map for quick lookups.\n    var existingChildren = mapRemainingChildren(returnFiber, oldFiber);\n\n    // Keep scanning and use the map to restore deleted items as moves.\n    for (; newIdx < newChildren.length; newIdx++) {\n      var _newFiber2 = updateFromMap(existingChildren, returnFiber, newIdx, newChildren[newIdx], priority);\n      if (_newFiber2) {\n        if (shouldTrackSideEffects) {\n          if (_newFiber2.alternate !== null) {\n            // The new fiber is a work in progress, but if there exists a\n            // current, that means that we reused the fiber. We need to delete\n            // it from the child list so that we don't add it to the deletion\n            // list.\n            existingChildren['delete'](_newFiber2.key === null ? newIdx : _newFiber2.key);\n          }\n        }\n        lastPlacedIndex = placeChild(_newFiber2, lastPlacedIndex, newIdx);\n        if (previousNewFiber === null) {\n          resultingFirstChild = _newFiber2;\n        } else {\n          previousNewFiber.sibling = _newFiber2;\n        }\n        previousNewFiber = _newFiber2;\n      }\n    }\n\n    if (shouldTrackSideEffects) {\n      // Any existing children that weren't consumed above were deleted. We need\n      // to add them to the deletion list.\n      existingChildren.forEach(function (child) {\n        return deleteChild(returnFiber, child);\n      });\n    }\n\n    return resultingFirstChild;\n  }\n\n  function reconcileChildrenIterator(returnFiber, currentFirstChild, newChildrenIterable, priority) {\n    // This is the same implementation as reconcileChildrenArray(),\n    // but using the iterator instead.\n\n    var iteratorFn = getIteratorFn(newChildrenIterable);\n    !(typeof iteratorFn === 'function') ? invariant(false, 'An object is not an iterable. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n\n    {\n      // Warn about using Maps as children\n      if (typeof newChildrenIterable.entries === 'function') {\n        var possibleMap = newChildrenIterable;\n        if (possibleMap.entries === iteratorFn) {\n          warning$24(didWarnAboutMaps, 'Using Maps as children is unsupported and will likely yield ' + 'unexpected results. Convert it to a sequence/iterable of keyed ' + 'ReactElements instead.%s', getCurrentFiberStackAddendum$5());\n          didWarnAboutMaps = true;\n        }\n      }\n\n      // First, validate keys.\n      // We'll get a different iterator later for the main pass.\n      var _newChildren = iteratorFn.call(newChildrenIterable);\n      if (_newChildren) {\n        var knownKeys = null;\n        var _step = _newChildren.next();\n        for (; !_step.done; _step = _newChildren.next()) {\n          var child = _step.value;\n          knownKeys = warnOnInvalidKey(child, knownKeys);\n        }\n      }\n    }\n\n    var newChildren = iteratorFn.call(newChildrenIterable);\n    !(newChildren != null) ? invariant(false, 'An iterable object provided no iterator.') : void 0;\n\n    var resultingFirstChild = null;\n    var previousNewFiber = null;\n\n    var oldFiber = currentFirstChild;\n    var lastPlacedIndex = 0;\n    var newIdx = 0;\n    var nextOldFiber = null;\n\n    var step = newChildren.next();\n    for (; oldFiber !== null && !step.done; newIdx++, step = newChildren.next()) {\n      if (oldFiber.index > newIdx) {\n        nextOldFiber = oldFiber;\n        oldFiber = null;\n      } else {\n        nextOldFiber = oldFiber.sibling;\n      }\n      var newFiber = updateSlot(returnFiber, oldFiber, step.value, priority);\n      if (newFiber === null) {\n        // TODO: This breaks on empty slots like null children. That's\n        // unfortunate because it triggers the slow path all the time. We need\n        // a better way to communicate whether this was a miss or null,\n        // boolean, undefined, etc.\n        if (!oldFiber) {\n          oldFiber = nextOldFiber;\n        }\n        break;\n      }\n      if (shouldTrackSideEffects) {\n        if (oldFiber && newFiber.alternate === null) {\n          // We matched the slot, but we didn't reuse the existing fiber, so we\n          // need to delete the existing child.\n          deleteChild(returnFiber, oldFiber);\n        }\n      }\n      lastPlacedIndex = placeChild(newFiber, lastPlacedIndex, newIdx);\n      if (previousNewFiber === null) {\n        // TODO: Move out of the loop. This only happens for the first run.\n        resultingFirstChild = newFiber;\n      } else {\n        // TODO: Defer siblings if we're not at the right index for this slot.\n        // I.e. if we had null values before, then we want to defer this\n        // for each null value. However, we also don't want to call updateSlot\n        // with the previous one.\n        previousNewFiber.sibling = newFiber;\n      }\n      previousNewFiber = newFiber;\n      oldFiber = nextOldFiber;\n    }\n\n    if (step.done) {\n      // We've reached the end of the new children. We can delete the rest.\n      deleteRemainingChildren(returnFiber, oldFiber);\n      return resultingFirstChild;\n    }\n\n    if (oldFiber === null) {\n      // If we don't have any more existing children we can choose a fast path\n      // since the rest will all be insertions.\n      for (; !step.done; newIdx++, step = newChildren.next()) {\n        var _newFiber3 = createChild(returnFiber, step.value, priority);\n        if (_newFiber3 === null) {\n          continue;\n        }\n        lastPlacedIndex = placeChild(_newFiber3, lastPlacedIndex, newIdx);\n        if (previousNewFiber === null) {\n          // TODO: Move out of the loop. This only happens for the first run.\n          resultingFirstChild = _newFiber3;\n        } else {\n          previousNewFiber.sibling = _newFiber3;\n        }\n        previousNewFiber = _newFiber3;\n      }\n      return resultingFirstChild;\n    }\n\n    // Add all children to a key map for quick lookups.\n    var existingChildren = mapRemainingChildren(returnFiber, oldFiber);\n\n    // Keep scanning and use the map to restore deleted items as moves.\n    for (; !step.done; newIdx++, step = newChildren.next()) {\n      var _newFiber4 = updateFromMap(existingChildren, returnFiber, newIdx, step.value, priority);\n      if (_newFiber4 !== null) {\n        if (shouldTrackSideEffects) {\n          if (_newFiber4.alternate !== null) {\n            // The new fiber is a work in progress, but if there exists a\n            // current, that means that we reused the fiber. We need to delete\n            // it from the child list so that we don't add it to the deletion\n            // list.\n            existingChildren['delete'](_newFiber4.key === null ? newIdx : _newFiber4.key);\n          }\n        }\n        lastPlacedIndex = placeChild(_newFiber4, lastPlacedIndex, newIdx);\n        if (previousNewFiber === null) {\n          resultingFirstChild = _newFiber4;\n        } else {\n          previousNewFiber.sibling = _newFiber4;\n        }\n        previousNewFiber = _newFiber4;\n      }\n    }\n\n    if (shouldTrackSideEffects) {\n      // Any existing children that weren't consumed above were deleted. We need\n      // to add them to the deletion list.\n      existingChildren.forEach(function (child) {\n        return deleteChild(returnFiber, child);\n      });\n    }\n\n    return resultingFirstChild;\n  }\n\n  function reconcileSingleTextNode(returnFiber, currentFirstChild, textContent, priority) {\n    // There's no need to check for keys on text nodes since we don't have a\n    // way to define them.\n    if (currentFirstChild !== null && currentFirstChild.tag === HostText$5) {\n      // We already have an existing node so let's just update it and delete\n      // the rest.\n      deleteRemainingChildren(returnFiber, currentFirstChild.sibling);\n      var existing = useFiber(currentFirstChild, priority);\n      existing.pendingProps = textContent;\n      existing['return'] = returnFiber;\n      return existing;\n    }\n    // The existing first child is not a text node so we need to create one\n    // and delete the existing ones.\n    deleteRemainingChildren(returnFiber, currentFirstChild);\n    var created = createFiberFromText$1(textContent, returnFiber.internalContextTag, priority);\n    created['return'] = returnFiber;\n    return created;\n  }\n\n  function reconcileSingleElement(returnFiber, currentFirstChild, element, priority) {\n    var key = element.key;\n    var child = currentFirstChild;\n    while (child !== null) {\n      // TODO: If key === null and child.key === null, then this only applies to\n      // the first item in the list.\n      if (child.key === key) {\n        if (child.type === element.type) {\n          deleteRemainingChildren(returnFiber, child.sibling);\n          var existing = useFiber(child, priority);\n          existing.ref = coerceRef(child, element);\n          existing.pendingProps = element.props;\n          existing['return'] = returnFiber;\n          {\n            existing._debugSource = element._source;\n            existing._debugOwner = element._owner;\n          }\n          return existing;\n        } else {\n          deleteRemainingChildren(returnFiber, child);\n          break;\n        }\n      } else {\n        deleteChild(returnFiber, child);\n      }\n      child = child.sibling;\n    }\n\n    var created = createFiberFromElement$1(element, returnFiber.internalContextTag, priority);\n    created.ref = coerceRef(currentFirstChild, element);\n    created['return'] = returnFiber;\n    return created;\n  }\n\n  function reconcileSingleCoroutine(returnFiber, currentFirstChild, coroutine, priority) {\n    var key = coroutine.key;\n    var child = currentFirstChild;\n    while (child !== null) {\n      // TODO: If key === null and child.key === null, then this only applies to\n      // the first item in the list.\n      if (child.key === key) {\n        if (child.tag === CoroutineComponent$2) {\n          deleteRemainingChildren(returnFiber, child.sibling);\n          var existing = useFiber(child, priority);\n          existing.pendingProps = coroutine;\n          existing['return'] = returnFiber;\n          return existing;\n        } else {\n          deleteRemainingChildren(returnFiber, child);\n          break;\n        }\n      } else {\n        deleteChild(returnFiber, child);\n      }\n      child = child.sibling;\n    }\n\n    var created = createFiberFromCoroutine$1(coroutine, returnFiber.internalContextTag, priority);\n    created['return'] = returnFiber;\n    return created;\n  }\n\n  function reconcileSingleYield(returnFiber, currentFirstChild, yieldNode, priority) {\n    // There's no need to check for keys on yields since they're stateless.\n    var child = currentFirstChild;\n    if (child !== null) {\n      if (child.tag === YieldComponent$3) {\n        deleteRemainingChildren(returnFiber, child.sibling);\n        var existing = useFiber(child, priority);\n        existing.type = yieldNode.value;\n        existing['return'] = returnFiber;\n        return existing;\n      } else {\n        deleteRemainingChildren(returnFiber, child);\n      }\n    }\n\n    var created = createFiberFromYield$1(yieldNode, returnFiber.internalContextTag, priority);\n    created.type = yieldNode.value;\n    created['return'] = returnFiber;\n    return created;\n  }\n\n  function reconcileSinglePortal(returnFiber, currentFirstChild, portal, priority) {\n    var key = portal.key;\n    var child = currentFirstChild;\n    while (child !== null) {\n      // TODO: If key === null and child.key === null, then this only applies to\n      // the first item in the list.\n      if (child.key === key) {\n        if (child.tag === HostPortal$5 && child.stateNode.containerInfo === portal.containerInfo && child.stateNode.implementation === portal.implementation) {\n          deleteRemainingChildren(returnFiber, child.sibling);\n          var existing = useFiber(child, priority);\n          existing.pendingProps = portal.children || [];\n          existing['return'] = returnFiber;\n          return existing;\n        } else {\n          deleteRemainingChildren(returnFiber, child);\n          break;\n        }\n      } else {\n        deleteChild(returnFiber, child);\n      }\n      child = child.sibling;\n    }\n\n    var created = createFiberFromPortal$1(portal, returnFiber.internalContextTag, priority);\n    created['return'] = returnFiber;\n    return created;\n  }\n\n  // This API will tag the children with the side-effect of the reconciliation\n  // itself. They will be added to the side-effect list as we pass through the\n  // children and the parent.\n  function reconcileChildFibers(returnFiber, currentFirstChild, newChild, priority) {\n    // This function is not recursive.\n    // If the top level item is an array, we treat it as a set of children,\n    // not as a fragment. Nested arrays on the other hand will be treated as\n    // fragment nodes. Recursion happens at the normal flow.\n\n    // Handle object types\n    var isObject = typeof newChild === 'object' && newChild !== null;\n    if (isObject) {\n      // Support only the subset of return types that Stack supports. Treat\n      // everything else as empty, but log a warning.\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          return placeSingleChild(reconcileSingleElement(returnFiber, currentFirstChild, newChild, priority));\n\n        case REACT_COROUTINE_TYPE:\n          return placeSingleChild(reconcileSingleCoroutine(returnFiber, currentFirstChild, newChild, priority));\n\n        case REACT_YIELD_TYPE:\n          return placeSingleChild(reconcileSingleYield(returnFiber, currentFirstChild, newChild, priority));\n\n        case REACT_PORTAL_TYPE:\n          return placeSingleChild(reconcileSinglePortal(returnFiber, currentFirstChild, newChild, priority));\n      }\n    }\n\n    if (typeof newChild === 'string' || typeof newChild === 'number') {\n      return placeSingleChild(reconcileSingleTextNode(returnFiber, currentFirstChild, '' + newChild, priority));\n    }\n\n    if (isArray(newChild)) {\n      return reconcileChildrenArray(returnFiber, currentFirstChild, newChild, priority);\n    }\n\n    if (getIteratorFn(newChild)) {\n      return reconcileChildrenIterator(returnFiber, currentFirstChild, newChild, priority);\n    }\n\n    if (isObject) {\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n\n    {\n      if (typeof newChild === 'function') {\n        warnOnFunctionType();\n      }\n    }\n    if (typeof newChild === 'undefined') {\n      // If the new child is undefined, and the return fiber is a composite\n      // component, throw an error. If Fiber return types are disabled,\n      // we already threw above.\n      switch (returnFiber.tag) {\n        case ClassComponent$7:\n          {\n            {\n              var instance = returnFiber.stateNode;\n              if (instance.render._isMockFunction) {\n                // We allow auto-mocks to proceed as if they're returning null.\n                break;\n              }\n            }\n          }\n        // Intentionally fall through to the next case, which handles both\n        // functions and classes\n        // eslint-disable-next-lined no-fallthrough\n        case FunctionalComponent$2:\n          {\n            var Component = returnFiber.type;\n            invariant(false, '%s(...): Nothing was returned from render. This usually means a return statement is missing. Or, to render nothing, return null.', Component.displayName || Component.name || 'Component');\n          }\n      }\n    }\n\n    // Remaining cases are all treated as empty.\n    return deleteRemainingChildren(returnFiber, currentFirstChild);\n  }\n\n  return reconcileChildFibers;\n}\n\nvar reconcileChildFibers$1 = ChildReconciler(true, true);\n\nvar reconcileChildFibersInPlace$1 = ChildReconciler(false, true);\n\nvar mountChildFibersInPlace$1 = ChildReconciler(false, false);\n\nvar cloneChildFibers$1 = function (current, workInProgress) {\n  !(current === null || workInProgress.child === current.child) ? invariant(false, 'Resuming work not yet implemented.') : void 0;\n\n  if (workInProgress.child === null) {\n    return;\n  }\n\n  var currentChild = workInProgress.child;\n  var newChild = createWorkInProgress$2(currentChild, currentChild.pendingWorkPriority);\n  // TODO: Pass this as an argument, since it's easy to forget.\n  newChild.pendingProps = currentChild.pendingProps;\n  workInProgress.child = newChild;\n\n  newChild['return'] = workInProgress;\n  while (currentChild.sibling !== null) {\n    currentChild = currentChild.sibling;\n    newChild = newChild.sibling = createWorkInProgress$2(currentChild, currentChild.pendingWorkPriority);\n    newChild.pendingProps = currentChild.pendingProps;\n    newChild['return'] = workInProgress;\n  }\n  newChild.sibling = null;\n};\n\nvar ReactChildFiber = {\n\treconcileChildFibers: reconcileChildFibers$1,\n\treconcileChildFibersInPlace: reconcileChildFibersInPlace$1,\n\tmountChildFibersInPlace: mountChildFibersInPlace$1,\n\tcloneChildFibers: cloneChildFibers$1\n};\n\nvar Update$1 = ReactTypeOfSideEffect.Update;\n\n\n\nvar AsyncUpdates$1 = ReactTypeOfInternalContext.AsyncUpdates;\n\nvar cacheContext$1 = ReactFiberContext.cacheContext;\nvar getMaskedContext$2 = ReactFiberContext.getMaskedContext;\nvar getUnmaskedContext$2 = ReactFiberContext.getUnmaskedContext;\nvar isContextConsumer$1 = ReactFiberContext.isContextConsumer;\n\nvar addUpdate$1 = ReactFiberUpdateQueue.addUpdate;\nvar addReplaceUpdate$1 = ReactFiberUpdateQueue.addReplaceUpdate;\nvar addForceUpdate$1 = ReactFiberUpdateQueue.addForceUpdate;\nvar beginUpdateQueue$2 = ReactFiberUpdateQueue.beginUpdateQueue;\n\nvar _require5 = ReactFiberContext;\nvar hasContextChanged$2 = _require5.hasContextChanged;\n\nvar isMounted$1 = ReactFiberTreeReflection.isMounted;\n\n\n\n\n\n\n\nvar fakeInternalInstance = {};\nvar isArray$1 = Array.isArray;\n\n{\n  var _require7$1 = ReactDebugFiberPerf_1,\n      startPhaseTimer$1 = _require7$1.startPhaseTimer,\n      stopPhaseTimer$1 = _require7$1.stopPhaseTimer;\n\n  var warning$25 = require$$0;\n  var warnOnInvalidCallback = function (callback, callerName) {\n    warning$25(callback === null || typeof callback === 'function', '%s(...): Expected the last optional `callback` argument to be a ' + 'function. Instead received: %s.', callerName, callback);\n  };\n\n  // This is so gross but it's at least non-critical and can be removed if\n  // it causes problems. This is meant to give a nicer error message for\n  // ReactDOM15.unstable_renderSubtreeIntoContainer(reactDOM16Component,\n  // ...)) which otherwise throws a \"_processChildContext is not a function\"\n  // exception.\n  Object.defineProperty(fakeInternalInstance, '_processChildContext', {\n    enumerable: false,\n    value: function () {\n      invariant(false, '_processChildContext is not available in React 16+. This likely means you have multiple copies of React and are attempting to nest a React 15 tree inside a React 16 tree using unstable_renderSubtreeIntoContainer, which isn\\'t supported. Try to make sure you have only one copy of React (and ideally, switch to ReactDOM.createPortal).');\n    }\n  });\n  Object.freeze(fakeInternalInstance);\n}\n\nvar ReactFiberClassComponent = function (scheduleUpdate, getPriorityContext, memoizeProps, memoizeState) {\n  // Class component state updater\n  var updater = {\n    isMounted: isMounted$1,\n    enqueueSetState: function (instance, partialState, callback) {\n      var fiber = ReactInstanceMap_1.get(instance);\n      var priorityLevel = getPriorityContext(fiber, false);\n      callback = callback === undefined ? null : callback;\n      {\n        warnOnInvalidCallback(callback, 'setState');\n      }\n      addUpdate$1(fiber, partialState, callback, priorityLevel);\n      scheduleUpdate(fiber, priorityLevel);\n    },\n    enqueueReplaceState: function (instance, state, callback) {\n      var fiber = ReactInstanceMap_1.get(instance);\n      var priorityLevel = getPriorityContext(fiber, false);\n      callback = callback === undefined ? null : callback;\n      {\n        warnOnInvalidCallback(callback, 'replaceState');\n      }\n      addReplaceUpdate$1(fiber, state, callback, priorityLevel);\n      scheduleUpdate(fiber, priorityLevel);\n    },\n    enqueueForceUpdate: function (instance, callback) {\n      var fiber = ReactInstanceMap_1.get(instance);\n      var priorityLevel = getPriorityContext(fiber, false);\n      callback = callback === undefined ? null : callback;\n      {\n        warnOnInvalidCallback(callback, 'forceUpdate');\n      }\n      addForceUpdate$1(fiber, callback, priorityLevel);\n      scheduleUpdate(fiber, priorityLevel);\n    }\n  };\n\n  function checkShouldComponentUpdate(workInProgress, oldProps, newProps, oldState, newState, newContext) {\n    if (oldProps === null || workInProgress.updateQueue !== null && workInProgress.updateQueue.hasForceUpdate) {\n      // If the workInProgress already has an Update effect, return true\n      return true;\n    }\n\n    var instance = workInProgress.stateNode;\n    var type = workInProgress.type;\n    if (typeof instance.shouldComponentUpdate === 'function') {\n      {\n        startPhaseTimer$1(workInProgress, 'shouldComponentUpdate');\n      }\n      var shouldUpdate = instance.shouldComponentUpdate(newProps, newState, newContext);\n      {\n        stopPhaseTimer$1();\n      }\n\n      {\n        warning$25(shouldUpdate !== undefined, '%s.shouldComponentUpdate(): Returned undefined instead of a ' + 'boolean value. Make sure to return true or false.', getComponentName_1(workInProgress) || 'Unknown');\n      }\n\n      return shouldUpdate;\n    }\n\n    if (type.prototype && type.prototype.isPureReactComponent) {\n      return !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState);\n    }\n\n    return true;\n  }\n\n  function checkClassInstance(workInProgress) {\n    var instance = workInProgress.stateNode;\n    var type = workInProgress.type;\n    {\n      var name = getComponentName_1(workInProgress);\n      var renderPresent = instance.render;\n      warning$25(renderPresent, '%s(...): No `render` method found on the returned component ' + 'instance: you may have forgotten to define `render`.', name);\n      var noGetInitialStateOnES6 = !instance.getInitialState || instance.getInitialState.isReactClassApproved || instance.state;\n      warning$25(noGetInitialStateOnES6, 'getInitialState was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Did you mean to define a state property instead?', name);\n      var noGetDefaultPropsOnES6 = !instance.getDefaultProps || instance.getDefaultProps.isReactClassApproved;\n      warning$25(noGetDefaultPropsOnES6, 'getDefaultProps was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Use a static property to define defaultProps instead.', name);\n      var noInstancePropTypes = !instance.propTypes;\n      warning$25(noInstancePropTypes, 'propTypes was defined as an instance property on %s. Use a static ' + 'property to define propTypes instead.', name);\n      var noInstanceContextTypes = !instance.contextTypes;\n      warning$25(noInstanceContextTypes, 'contextTypes was defined as an instance property on %s. Use a static ' + 'property to define contextTypes instead.', name);\n      var noComponentShouldUpdate = typeof instance.componentShouldUpdate !== 'function';\n      warning$25(noComponentShouldUpdate, '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', name);\n      if (type.prototype && type.prototype.isPureReactComponent && typeof instance.shouldComponentUpdate !== 'undefined') {\n        warning$25(false, '%s has a method called shouldComponentUpdate(). ' + 'shouldComponentUpdate should not be used when extending React.PureComponent. ' + 'Please extend React.Component if shouldComponentUpdate is used.', getComponentName_1(workInProgress) || 'A pure component');\n      }\n      var noComponentDidUnmount = typeof instance.componentDidUnmount !== 'function';\n      warning$25(noComponentDidUnmount, '%s has a method called ' + 'componentDidUnmount(). But there is no such lifecycle method. ' + 'Did you mean componentWillUnmount()?', name);\n      var noComponentWillRecieveProps = typeof instance.componentWillRecieveProps !== 'function';\n      warning$25(noComponentWillRecieveProps, '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', name);\n      var hasMutatedProps = instance.props !== workInProgress.pendingProps;\n      warning$25(instance.props === undefined || !hasMutatedProps, '%s(...): When calling super() in `%s`, make sure to pass ' + \"up the same props that your component's constructor was passed.\", name, name);\n      var noInstanceDefaultProps = !instance.defaultProps;\n      warning$25(noInstanceDefaultProps, 'Setting defaultProps as an instance property on %s is not supported and will be ignored.' + ' Instead, define defaultProps as a static property on %s.', name, name);\n    }\n\n    var state = instance.state;\n    if (state && (typeof state !== 'object' || isArray$1(state))) {\n      invariant(false, '%s.state: must be set to an object or null', getComponentName_1(workInProgress));\n    }\n    if (typeof instance.getChildContext === 'function') {\n      !(typeof workInProgress.type.childContextTypes === 'object') ? invariant(false, '%s.getChildContext(): childContextTypes must be defined in order to use getChildContext().', getComponentName_1(workInProgress)) : void 0;\n    }\n  }\n\n  function resetInputPointers(workInProgress, instance) {\n    instance.props = workInProgress.memoizedProps;\n    instance.state = workInProgress.memoizedState;\n  }\n\n  function adoptClassInstance(workInProgress, instance) {\n    instance.updater = updater;\n    workInProgress.stateNode = instance;\n    // The instance needs access to the fiber so that it can schedule updates\n    ReactInstanceMap_1.set(instance, workInProgress);\n    {\n      instance._reactInternalInstance = fakeInternalInstance;\n    }\n  }\n\n  function constructClassInstance(workInProgress, props) {\n    var ctor = workInProgress.type;\n    var unmaskedContext = getUnmaskedContext$2(workInProgress);\n    var needsContext = isContextConsumer$1(workInProgress);\n    var context = needsContext ? getMaskedContext$2(workInProgress, unmaskedContext) : emptyObject;\n    var instance = new ctor(props, context);\n    adoptClassInstance(workInProgress, instance);\n\n    // Cache unmasked context so we can avoid recreating masked context unless necessary.\n    // ReactFiberContext usually updates this cache but can't for newly-created instances.\n    if (needsContext) {\n      cacheContext$1(workInProgress, unmaskedContext, context);\n    }\n\n    return instance;\n  }\n\n  function callComponentWillMount(workInProgress, instance) {\n    {\n      startPhaseTimer$1(workInProgress, 'componentWillMount');\n    }\n    var oldState = instance.state;\n    instance.componentWillMount();\n    {\n      stopPhaseTimer$1();\n    }\n\n    if (oldState !== instance.state) {\n      {\n        warning$25(false, '%s.componentWillMount(): Assigning directly to this.state is ' + \"deprecated (except inside a component's \" + 'constructor). Use setState instead.', getComponentName_1(workInProgress));\n      }\n      updater.enqueueReplaceState(instance, instance.state, null);\n    }\n  }\n\n  function callComponentWillReceiveProps(workInProgress, instance, newProps, newContext) {\n    {\n      startPhaseTimer$1(workInProgress, 'componentWillReceiveProps');\n    }\n    var oldState = instance.state;\n    instance.componentWillReceiveProps(newProps, newContext);\n    {\n      stopPhaseTimer$1();\n    }\n\n    if (instance.state !== oldState) {\n      {\n        warning$25(false, '%s.componentWillReceiveProps(): Assigning directly to ' + \"this.state is deprecated (except inside a component's \" + 'constructor). Use setState instead.', getComponentName_1(workInProgress));\n      }\n      updater.enqueueReplaceState(instance, instance.state, null);\n    }\n  }\n\n  // Invokes the mount life-cycles on a previously never rendered instance.\n  function mountClassInstance(workInProgress, priorityLevel) {\n    var current = workInProgress.alternate;\n\n    {\n      checkClassInstance(workInProgress);\n    }\n\n    var instance = workInProgress.stateNode;\n    var state = instance.state || null;\n\n    var props = workInProgress.pendingProps;\n    !props ? invariant(false, 'There must be pending props for an initial mount. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n\n    var unmaskedContext = getUnmaskedContext$2(workInProgress);\n\n    instance.props = props;\n    instance.state = state;\n    instance.refs = emptyObject;\n    instance.context = getMaskedContext$2(workInProgress, unmaskedContext);\n\n    if (ReactFeatureFlags_1.enableAsyncSubtreeAPI && workInProgress.type != null && workInProgress.type.prototype != null && workInProgress.type.prototype.unstable_isAsyncReactComponent === true) {\n      workInProgress.internalContextTag |= AsyncUpdates$1;\n    }\n\n    if (typeof instance.componentWillMount === 'function') {\n      callComponentWillMount(workInProgress, instance);\n      // If we had additional state updates during this life-cycle, let's\n      // process them now.\n      var updateQueue = workInProgress.updateQueue;\n      if (updateQueue !== null) {\n        instance.state = beginUpdateQueue$2(current, workInProgress, updateQueue, instance, state, props, priorityLevel);\n      }\n    }\n    if (typeof instance.componentDidMount === 'function') {\n      workInProgress.effectTag |= Update$1;\n    }\n  }\n\n  // Called on a preexisting class instance. Returns false if a resumed render\n  // could be reused.\n  // function resumeMountClassInstance(\n  //   workInProgress: Fiber,\n  //   priorityLevel: PriorityLevel,\n  // ): boolean {\n  //   const instance = workInProgress.stateNode;\n  //   resetInputPointers(workInProgress, instance);\n\n  //   let newState = workInProgress.memoizedState;\n  //   let newProps = workInProgress.pendingProps;\n  //   if (!newProps) {\n  //     // If there isn't any new props, then we'll reuse the memoized props.\n  //     // This could be from already completed work.\n  //     newProps = workInProgress.memoizedProps;\n  //     invariant(\n  //       newProps != null,\n  //       'There should always be pending or memoized props. This error is ' +\n  //         'likely caused by a bug in React. Please file an issue.',\n  //     );\n  //   }\n  //   const newUnmaskedContext = getUnmaskedContext(workInProgress);\n  //   const newContext = getMaskedContext(workInProgress, newUnmaskedContext);\n\n  //   const oldContext = instance.context;\n  //   const oldProps = workInProgress.memoizedProps;\n\n  //   if (\n  //     typeof instance.componentWillReceiveProps === 'function' &&\n  //     (oldProps !== newProps || oldContext !== newContext)\n  //   ) {\n  //     callComponentWillReceiveProps(\n  //       workInProgress,\n  //       instance,\n  //       newProps,\n  //       newContext,\n  //     );\n  //   }\n\n  //   // Process the update queue before calling shouldComponentUpdate\n  //   const updateQueue = workInProgress.updateQueue;\n  //   if (updateQueue !== null) {\n  //     newState = beginUpdateQueue(\n  //       workInProgress,\n  //       updateQueue,\n  //       instance,\n  //       newState,\n  //       newProps,\n  //       priorityLevel,\n  //     );\n  //   }\n\n  //   // TODO: Should we deal with a setState that happened after the last\n  //   // componentWillMount and before this componentWillMount? Probably\n  //   // unsupported anyway.\n\n  //   if (\n  //     !checkShouldComponentUpdate(\n  //       workInProgress,\n  //       workInProgress.memoizedProps,\n  //       newProps,\n  //       workInProgress.memoizedState,\n  //       newState,\n  //       newContext,\n  //     )\n  //   ) {\n  //     // Update the existing instance's state, props, and context pointers even\n  //     // though we're bailing out.\n  //     instance.props = newProps;\n  //     instance.state = newState;\n  //     instance.context = newContext;\n  //     return false;\n  //   }\n\n  //   // Update the input pointers now so that they are correct when we call\n  //   // componentWillMount\n  //   instance.props = newProps;\n  //   instance.state = newState;\n  //   instance.context = newContext;\n\n  //   if (typeof instance.componentWillMount === 'function') {\n  //     callComponentWillMount(workInProgress, instance);\n  //     // componentWillMount may have called setState. Process the update queue.\n  //     const newUpdateQueue = workInProgress.updateQueue;\n  //     if (newUpdateQueue !== null) {\n  //       newState = beginUpdateQueue(\n  //         workInProgress,\n  //         newUpdateQueue,\n  //         instance,\n  //         newState,\n  //         newProps,\n  //         priorityLevel,\n  //       );\n  //     }\n  //   }\n\n  //   if (typeof instance.componentDidMount === 'function') {\n  //     workInProgress.effectTag |= Update;\n  //   }\n\n  //   instance.state = newState;\n\n  //   return true;\n  // }\n\n  // Invokes the update life-cycles and returns false if it shouldn't rerender.\n  function updateClassInstance(current, workInProgress, priorityLevel) {\n    var instance = workInProgress.stateNode;\n    resetInputPointers(workInProgress, instance);\n\n    var oldProps = workInProgress.memoizedProps;\n    var newProps = workInProgress.pendingProps;\n    if (!newProps) {\n      // If there aren't any new props, then we'll reuse the memoized props.\n      // This could be from already completed work.\n      newProps = oldProps;\n      !(newProps != null) ? invariant(false, 'There should always be pending or memoized props. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n    }\n    var oldContext = instance.context;\n    var newUnmaskedContext = getUnmaskedContext$2(workInProgress);\n    var newContext = getMaskedContext$2(workInProgress, newUnmaskedContext);\n\n    // Note: During these life-cycles, instance.props/instance.state are what\n    // ever the previously attempted to render - not the \"current\". However,\n    // during componentDidUpdate we pass the \"current\" props.\n\n    if (typeof instance.componentWillReceiveProps === 'function' && (oldProps !== newProps || oldContext !== newContext)) {\n      callComponentWillReceiveProps(workInProgress, instance, newProps, newContext);\n    }\n\n    // Compute the next state using the memoized state and the update queue.\n    var oldState = workInProgress.memoizedState;\n    // TODO: Previous state can be null.\n    var newState = void 0;\n    if (workInProgress.updateQueue !== null) {\n      newState = beginUpdateQueue$2(current, workInProgress, workInProgress.updateQueue, instance, oldState, newProps, priorityLevel);\n    } else {\n      newState = oldState;\n    }\n\n    if (oldProps === newProps && oldState === newState && !hasContextChanged$2() && !(workInProgress.updateQueue !== null && workInProgress.updateQueue.hasForceUpdate)) {\n      // If an update was already in progress, we should schedule an Update\n      // effect even though we're bailing out, so that cWU/cDU are called.\n      if (typeof instance.componentDidUpdate === 'function') {\n        if (oldProps !== current.memoizedProps || oldState !== current.memoizedState) {\n          workInProgress.effectTag |= Update$1;\n        }\n      }\n      return false;\n    }\n\n    var shouldUpdate = checkShouldComponentUpdate(workInProgress, oldProps, newProps, oldState, newState, newContext);\n\n    if (shouldUpdate) {\n      if (typeof instance.componentWillUpdate === 'function') {\n        {\n          startPhaseTimer$1(workInProgress, 'componentWillUpdate');\n        }\n        instance.componentWillUpdate(newProps, newState, newContext);\n        {\n          stopPhaseTimer$1();\n        }\n      }\n      if (typeof instance.componentDidUpdate === 'function') {\n        workInProgress.effectTag |= Update$1;\n      }\n    } else {\n      // If an update was already in progress, we should schedule an Update\n      // effect even though we're bailing out, so that cWU/cDU are called.\n      if (typeof instance.componentDidUpdate === 'function') {\n        if (oldProps !== current.memoizedProps || oldState !== current.memoizedState) {\n          workInProgress.effectTag |= Update$1;\n        }\n      }\n\n      // If shouldComponentUpdate returned false, we should still update the\n      // memoized props/state to indicate that this work can be reused.\n      memoizeProps(workInProgress, newProps);\n      memoizeState(workInProgress, newState);\n    }\n\n    // Update the existing instance's state, props, and context pointers even\n    // if shouldComponentUpdate returns false.\n    instance.props = newProps;\n    instance.state = newState;\n    instance.context = newContext;\n\n    return shouldUpdate;\n  }\n\n  return {\n    adoptClassInstance: adoptClassInstance,\n    constructClassInstance: constructClassInstance,\n    mountClassInstance: mountClassInstance,\n    // resumeMountClassInstance,\n    updateClassInstance: updateClassInstance\n  };\n};\n\nvar mountChildFibersInPlace = ReactChildFiber.mountChildFibersInPlace;\nvar reconcileChildFibers = ReactChildFiber.reconcileChildFibers;\nvar reconcileChildFibersInPlace = ReactChildFiber.reconcileChildFibersInPlace;\nvar cloneChildFibers = ReactChildFiber.cloneChildFibers;\n\nvar beginUpdateQueue$1 = ReactFiberUpdateQueue.beginUpdateQueue;\n\n\n\nvar getMaskedContext$1 = ReactFiberContext.getMaskedContext;\nvar getUnmaskedContext$1 = ReactFiberContext.getUnmaskedContext;\nvar hasContextChanged$1 = ReactFiberContext.hasContextChanged;\nvar pushContextProvider$1 = ReactFiberContext.pushContextProvider;\nvar pushTopLevelContextObject$1 = ReactFiberContext.pushTopLevelContextObject;\nvar invalidateContextProvider$1 = ReactFiberContext.invalidateContextProvider;\n\nvar IndeterminateComponent$2 = ReactTypeOfWork.IndeterminateComponent;\nvar FunctionalComponent$1 = ReactTypeOfWork.FunctionalComponent;\nvar ClassComponent$6 = ReactTypeOfWork.ClassComponent;\nvar HostRoot$7 = ReactTypeOfWork.HostRoot;\nvar HostComponent$7 = ReactTypeOfWork.HostComponent;\nvar HostText$4 = ReactTypeOfWork.HostText;\nvar HostPortal$4 = ReactTypeOfWork.HostPortal;\nvar CoroutineComponent$1 = ReactTypeOfWork.CoroutineComponent;\nvar CoroutineHandlerPhase = ReactTypeOfWork.CoroutineHandlerPhase;\nvar YieldComponent$2 = ReactTypeOfWork.YieldComponent;\nvar Fragment$2 = ReactTypeOfWork.Fragment;\n\nvar NoWork$3 = ReactPriorityLevel.NoWork;\nvar OffscreenPriority$1 = ReactPriorityLevel.OffscreenPriority;\n\nvar PerformedWork$1 = ReactTypeOfSideEffect.PerformedWork;\nvar Placement$2 = ReactTypeOfSideEffect.Placement;\nvar ContentReset$1 = ReactTypeOfSideEffect.ContentReset;\nvar Err$1 = ReactTypeOfSideEffect.Err;\nvar Ref$1 = ReactTypeOfSideEffect.Ref;\n\n\n\nvar ReactCurrentOwner$2 = ReactGlobalSharedState_1.ReactCurrentOwner;\n\n\n\n{\n  var ReactDebugCurrentFiber$4 = ReactDebugCurrentFiber_1;\n\n  var _require7 = ReactDebugFiberPerf_1,\n      cancelWorkTimer = _require7.cancelWorkTimer;\n\n  var warning$23 = require$$0;\n\n  var warnedAboutStatelessRefs = {};\n}\n\nvar ReactFiberBeginWork = function (config, hostContext, hydrationContext, scheduleUpdate, getPriorityContext) {\n  var shouldSetTextContent = config.shouldSetTextContent,\n      useSyncScheduling = config.useSyncScheduling,\n      shouldDeprioritizeSubtree = config.shouldDeprioritizeSubtree;\n  var pushHostContext = hostContext.pushHostContext,\n      pushHostContainer = hostContext.pushHostContainer;\n  var enterHydrationState = hydrationContext.enterHydrationState,\n      resetHydrationState = hydrationContext.resetHydrationState,\n      tryToClaimNextHydratableInstance = hydrationContext.tryToClaimNextHydratableInstance;\n\n  var _ReactFiberClassCompo = ReactFiberClassComponent(scheduleUpdate, getPriorityContext, memoizeProps, memoizeState),\n      adoptClassInstance = _ReactFiberClassCompo.adoptClassInstance,\n      constructClassInstance = _ReactFiberClassCompo.constructClassInstance,\n      mountClassInstance = _ReactFiberClassCompo.mountClassInstance,\n      updateClassInstance = _ReactFiberClassCompo.updateClassInstance;\n\n  function reconcileChildren(current, workInProgress, nextChildren) {\n    var priorityLevel = workInProgress.pendingWorkPriority;\n    reconcileChildrenAtPriority(current, workInProgress, nextChildren, priorityLevel);\n  }\n\n  function reconcileChildrenAtPriority(current, workInProgress, nextChildren, priorityLevel) {\n    if (current === null) {\n      // If this is a fresh new component that hasn't been rendered yet, we\n      // won't update its child set by applying minimal side-effects. Instead,\n      // we will add them all to the child before it gets rendered. That means\n      // we can optimize this reconciliation pass by not tracking side-effects.\n      workInProgress.child = mountChildFibersInPlace(workInProgress, workInProgress.child, nextChildren, priorityLevel);\n    } else if (current.child === workInProgress.child) {\n      // If the current child is the same as the work in progress, it means that\n      // we haven't yet started any work on these children. Therefore, we use\n      // the clone algorithm to create a copy of all the current children.\n\n      // If we had any progressed work already, that is invalid at this point so\n      // let's throw it out.\n      workInProgress.child = reconcileChildFibers(workInProgress, workInProgress.child, nextChildren, priorityLevel);\n    } else {\n      // If, on the other hand, it is already using a clone, that means we've\n      // already begun some work on this tree and we can continue where we left\n      // off by reconciling against the existing children.\n      workInProgress.child = reconcileChildFibersInPlace(workInProgress, workInProgress.child, nextChildren, priorityLevel);\n    }\n  }\n\n  function updateFragment(current, workInProgress) {\n    var nextChildren = workInProgress.pendingProps;\n    if (hasContextChanged$1()) {\n      // Normally we can bail out on props equality but if context has changed\n      // we don't do the bailout and we have to reuse existing props instead.\n      if (nextChildren === null) {\n        nextChildren = workInProgress.memoizedProps;\n      }\n    } else if (nextChildren === null || workInProgress.memoizedProps === nextChildren) {\n      return bailoutOnAlreadyFinishedWork(current, workInProgress);\n    }\n    reconcileChildren(current, workInProgress, nextChildren);\n    memoizeProps(workInProgress, nextChildren);\n    return workInProgress.child;\n  }\n\n  function markRef(current, workInProgress) {\n    var ref = workInProgress.ref;\n    if (ref !== null && (!current || current.ref !== ref)) {\n      // Schedule a Ref effect\n      workInProgress.effectTag |= Ref$1;\n    }\n  }\n\n  function updateFunctionalComponent(current, workInProgress) {\n    var fn = workInProgress.type;\n    var nextProps = workInProgress.pendingProps;\n\n    var memoizedProps = workInProgress.memoizedProps;\n    if (hasContextChanged$1()) {\n      // Normally we can bail out on props equality but if context has changed\n      // we don't do the bailout and we have to reuse existing props instead.\n      if (nextProps === null) {\n        nextProps = memoizedProps;\n      }\n    } else {\n      if (nextProps === null || memoizedProps === nextProps) {\n        return bailoutOnAlreadyFinishedWork(current, workInProgress);\n      }\n      // TODO: consider bringing fn.shouldComponentUpdate() back.\n      // It used to be here.\n    }\n\n    var unmaskedContext = getUnmaskedContext$1(workInProgress);\n    var context = getMaskedContext$1(workInProgress, unmaskedContext);\n\n    var nextChildren;\n\n    {\n      ReactCurrentOwner$2.current = workInProgress;\n      ReactDebugCurrentFiber$4.setCurrentFiber(workInProgress, 'render');\n      nextChildren = fn(nextProps, context);\n      ReactDebugCurrentFiber$4.setCurrentFiber(workInProgress, null);\n    }\n    // React DevTools reads this flag.\n    workInProgress.effectTag |= PerformedWork$1;\n    reconcileChildren(current, workInProgress, nextChildren);\n    memoizeProps(workInProgress, nextProps);\n    return workInProgress.child;\n  }\n\n  function updateClassComponent(current, workInProgress, priorityLevel) {\n    // Push context providers early to prevent context stack mismatches.\n    // During mounting we don't know the child context yet as the instance doesn't exist.\n    // We will invalidate the child context in finishClassComponent() right after rendering.\n    var hasContext = pushContextProvider$1(workInProgress);\n\n    var shouldUpdate = void 0;\n    if (current === null) {\n      if (!workInProgress.stateNode) {\n        // In the initial pass we might need to construct the instance.\n        constructClassInstance(workInProgress, workInProgress.pendingProps);\n        mountClassInstance(workInProgress, priorityLevel);\n        shouldUpdate = true;\n      } else {\n        invariant(false, 'Resuming work not yet implemented.');\n        // In a resume, we'll already have an instance we can reuse.\n        // shouldUpdate = resumeMountClassInstance(workInProgress, priorityLevel);\n      }\n    } else {\n      shouldUpdate = updateClassInstance(current, workInProgress, priorityLevel);\n    }\n    return finishClassComponent(current, workInProgress, shouldUpdate, hasContext);\n  }\n\n  function finishClassComponent(current, workInProgress, shouldUpdate, hasContext) {\n    // Refs should update even if shouldComponentUpdate returns false\n    markRef(current, workInProgress);\n\n    if (!shouldUpdate) {\n      // Context providers should defer to sCU for rendering\n      if (hasContext) {\n        invalidateContextProvider$1(workInProgress, false);\n      }\n\n      return bailoutOnAlreadyFinishedWork(current, workInProgress);\n    }\n\n    var instance = workInProgress.stateNode;\n\n    // Rerender\n    ReactCurrentOwner$2.current = workInProgress;\n    var nextChildren = void 0;\n    {\n      ReactDebugCurrentFiber$4.setCurrentFiber(workInProgress, 'render');\n      nextChildren = instance.render();\n      ReactDebugCurrentFiber$4.setCurrentFiber(workInProgress, null);\n    }\n    // React DevTools reads this flag.\n    workInProgress.effectTag |= PerformedWork$1;\n    reconcileChildren(current, workInProgress, nextChildren);\n    // Memoize props and state using the values we just used to render.\n    // TODO: Restructure so we never read values from the instance.\n    memoizeState(workInProgress, instance.state);\n    memoizeProps(workInProgress, instance.props);\n\n    // The context might have changed so we need to recalculate it.\n    if (hasContext) {\n      invalidateContextProvider$1(workInProgress, true);\n    }\n\n    return workInProgress.child;\n  }\n\n  function pushHostRootContext(workInProgress) {\n    var root = workInProgress.stateNode;\n    if (root.pendingContext) {\n      pushTopLevelContextObject$1(workInProgress, root.pendingContext, root.pendingContext !== root.context);\n    } else if (root.context) {\n      // Should always be set\n      pushTopLevelContextObject$1(workInProgress, root.context, false);\n    }\n    pushHostContainer(workInProgress, root.containerInfo);\n  }\n\n  function updateHostRoot(current, workInProgress, priorityLevel) {\n    pushHostRootContext(workInProgress);\n    var updateQueue = workInProgress.updateQueue;\n    if (updateQueue !== null) {\n      var prevState = workInProgress.memoizedState;\n      var state = beginUpdateQueue$1(current, workInProgress, updateQueue, null, prevState, null, priorityLevel);\n      if (prevState === state) {\n        // If the state is the same as before, that's a bailout because we had\n        // no work matching this priority.\n        resetHydrationState();\n        return bailoutOnAlreadyFinishedWork(current, workInProgress);\n      }\n      var element = state.element;\n      if ((current === null || current.child === null) && enterHydrationState(workInProgress)) {\n        // If we don't have any current children this might be the first pass.\n        // We always try to hydrate. If this isn't a hydration pass there won't\n        // be any children to hydrate which is effectively the same thing as\n        // not hydrating.\n\n        // This is a bit of a hack. We track the host root as a placement to\n        // know that we're currently in a mounting state. That way isMounted\n        // works as expected. We must reset this before committing.\n        // TODO: Delete this when we delete isMounted and findDOMNode.\n        workInProgress.effectTag |= Placement$2;\n\n        // Ensure that children mount into this root without tracking\n        // side-effects. This ensures that we don't store Placement effects on\n        // nodes that will be hydrated.\n        workInProgress.child = mountChildFibersInPlace(workInProgress, workInProgress.child, element, priorityLevel);\n      } else {\n        // Otherwise reset hydration state in case we aborted and resumed another\n        // root.\n        resetHydrationState();\n        reconcileChildren(current, workInProgress, element);\n      }\n      memoizeState(workInProgress, state);\n      return workInProgress.child;\n    }\n    resetHydrationState();\n    // If there is no update queue, that's a bailout because the root has no props.\n    return bailoutOnAlreadyFinishedWork(current, workInProgress);\n  }\n\n  function updateHostComponent(current, workInProgress, renderPriority) {\n    pushHostContext(workInProgress);\n\n    if (current === null) {\n      tryToClaimNextHydratableInstance(workInProgress);\n    }\n\n    var type = workInProgress.type;\n    var memoizedProps = workInProgress.memoizedProps;\n    var nextProps = workInProgress.pendingProps;\n    if (nextProps === null) {\n      nextProps = memoizedProps;\n      !(nextProps !== null) ? invariant(false, 'We should always have pending or current props. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n    }\n    var prevProps = current !== null ? current.memoizedProps : null;\n\n    if (hasContextChanged$1()) {\n      // Normally we can bail out on props equality but if context has changed\n      // we don't do the bailout and we have to reuse existing props instead.\n    } else if (nextProps === null || memoizedProps === nextProps) {\n      return bailoutOnAlreadyFinishedWork(current, workInProgress);\n    }\n\n    var nextChildren = nextProps.children;\n    var isDirectTextChild = shouldSetTextContent(type, nextProps);\n\n    if (isDirectTextChild) {\n      // We special case a direct text child of a host node. This is a common\n      // case. We won't handle it as a reified child. We will instead handle\n      // this in the host environment that also have access to this prop. That\n      // avoids allocating another HostText fiber and traversing it.\n      nextChildren = null;\n    } else if (prevProps && shouldSetTextContent(type, prevProps)) {\n      // If we're switching from a direct text child to a normal child, or to\n      // empty, we need to schedule the text content to be reset.\n      workInProgress.effectTag |= ContentReset$1;\n    }\n\n    markRef(current, workInProgress);\n\n    // Check the host config to see if the children are offscreen/hidden.\n    if (renderPriority !== OffscreenPriority$1 && !useSyncScheduling && shouldDeprioritizeSubtree(type, nextProps)) {\n      // Down-prioritize the children.\n      workInProgress.pendingWorkPriority = OffscreenPriority$1;\n      // Bailout and come back to this fiber later at OffscreenPriority.\n      return null;\n    }\n\n    reconcileChildren(current, workInProgress, nextChildren);\n    memoizeProps(workInProgress, nextProps);\n    return workInProgress.child;\n  }\n\n  function updateHostText(current, workInProgress) {\n    if (current === null) {\n      tryToClaimNextHydratableInstance(workInProgress);\n    }\n    var nextProps = workInProgress.pendingProps;\n    if (nextProps === null) {\n      nextProps = workInProgress.memoizedProps;\n    }\n    memoizeProps(workInProgress, nextProps);\n    // Nothing to do here. This is terminal. We'll do the completion step\n    // immediately after.\n    return null;\n  }\n\n  function mountIndeterminateComponent(current, workInProgress, priorityLevel) {\n    !(current === null) ? invariant(false, 'An indeterminate component should never have mounted. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n    var fn = workInProgress.type;\n    var props = workInProgress.pendingProps;\n    var unmaskedContext = getUnmaskedContext$1(workInProgress);\n    var context = getMaskedContext$1(workInProgress, unmaskedContext);\n\n    var value;\n\n    {\n      ReactCurrentOwner$2.current = workInProgress;\n      value = fn(props, context);\n    }\n    // React DevTools reads this flag.\n    workInProgress.effectTag |= PerformedWork$1;\n\n    if (typeof value === 'object' && value !== null && typeof value.render === 'function') {\n      // Proceed under the assumption that this is a class instance\n      workInProgress.tag = ClassComponent$6;\n\n      // Push context providers early to prevent context stack mismatches.\n      // During mounting we don't know the child context yet as the instance doesn't exist.\n      // We will invalidate the child context in finishClassComponent() right after rendering.\n      var hasContext = pushContextProvider$1(workInProgress);\n      adoptClassInstance(workInProgress, value);\n      mountClassInstance(workInProgress, priorityLevel);\n      return finishClassComponent(current, workInProgress, true, hasContext);\n    } else {\n      // Proceed under the assumption that this is a functional component\n      workInProgress.tag = FunctionalComponent$1;\n      {\n        var Component = workInProgress.type;\n\n        if (Component) {\n          warning$23(!Component.childContextTypes, '%s(...): childContextTypes cannot be defined on a functional component.', Component.displayName || Component.name || 'Component');\n        }\n        if (workInProgress.ref !== null) {\n          var info = '';\n          var ownerName = ReactDebugCurrentFiber$4.getCurrentFiberOwnerName();\n          if (ownerName) {\n            info += '\\n\\nCheck the render method of `' + ownerName + '`.';\n          }\n\n          var warningKey = ownerName || workInProgress._debugID || '';\n          var debugSource = workInProgress._debugSource;\n          if (debugSource) {\n            warningKey = debugSource.fileName + ':' + debugSource.lineNumber;\n          }\n          if (!warnedAboutStatelessRefs[warningKey]) {\n            warnedAboutStatelessRefs[warningKey] = true;\n            warning$23(false, 'Stateless function components cannot be given refs. ' + 'Attempts to access this ref will fail.%s%s', info, ReactDebugCurrentFiber$4.getCurrentFiberStackAddendum());\n          }\n        }\n      }\n      reconcileChildren(current, workInProgress, value);\n      memoizeProps(workInProgress, props);\n      return workInProgress.child;\n    }\n  }\n\n  function updateCoroutineComponent(current, workInProgress) {\n    var nextCoroutine = workInProgress.pendingProps;\n    if (hasContextChanged$1()) {\n      // Normally we can bail out on props equality but if context has changed\n      // we don't do the bailout and we have to reuse existing props instead.\n      if (nextCoroutine === null) {\n        nextCoroutine = current && current.memoizedProps;\n        !(nextCoroutine !== null) ? invariant(false, 'We should always have pending or current props. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n      }\n    } else if (nextCoroutine === null || workInProgress.memoizedProps === nextCoroutine) {\n      nextCoroutine = workInProgress.memoizedProps;\n      // TODO: When bailing out, we might need to return the stateNode instead\n      // of the child. To check it for work.\n      // return bailoutOnAlreadyFinishedWork(current, workInProgress);\n    }\n\n    var nextChildren = nextCoroutine.children;\n    var priorityLevel = workInProgress.pendingWorkPriority;\n\n    // The following is a fork of reconcileChildrenAtPriority but using\n    // stateNode to store the child.\n    if (current === null) {\n      workInProgress.stateNode = mountChildFibersInPlace(workInProgress, workInProgress.stateNode, nextChildren, priorityLevel);\n    } else if (current.child === workInProgress.child) {\n      workInProgress.stateNode = reconcileChildFibers(workInProgress, workInProgress.stateNode, nextChildren, priorityLevel);\n    } else {\n      workInProgress.stateNode = reconcileChildFibersInPlace(workInProgress, workInProgress.stateNode, nextChildren, priorityLevel);\n    }\n\n    memoizeProps(workInProgress, nextCoroutine);\n    // This doesn't take arbitrary time so we could synchronously just begin\n    // eagerly do the work of workInProgress.child as an optimization.\n    return workInProgress.stateNode;\n  }\n\n  function updatePortalComponent(current, workInProgress) {\n    pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n    var priorityLevel = workInProgress.pendingWorkPriority;\n    var nextChildren = workInProgress.pendingProps;\n    if (hasContextChanged$1()) {\n      // Normally we can bail out on props equality but if context has changed\n      // we don't do the bailout and we have to reuse existing props instead.\n      if (nextChildren === null) {\n        nextChildren = current && current.memoizedProps;\n        !(nextChildren != null) ? invariant(false, 'We should always have pending or current props. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n      }\n    } else if (nextChildren === null || workInProgress.memoizedProps === nextChildren) {\n      return bailoutOnAlreadyFinishedWork(current, workInProgress);\n    }\n\n    if (current === null) {\n      // Portals are special because we don't append the children during mount\n      // but at commit. Therefore we need to track insertions which the normal\n      // flow doesn't do during mount. This doesn't happen at the root because\n      // the root always starts with a \"current\" with a null child.\n      // TODO: Consider unifying this with how the root works.\n      workInProgress.child = reconcileChildFibersInPlace(workInProgress, workInProgress.child, nextChildren, priorityLevel);\n      memoizeProps(workInProgress, nextChildren);\n    } else {\n      reconcileChildren(current, workInProgress, nextChildren);\n      memoizeProps(workInProgress, nextChildren);\n    }\n    return workInProgress.child;\n  }\n\n  /*\n  function reuseChildrenEffects(returnFiber : Fiber, firstChild : Fiber) {\n    let child = firstChild;\n    do {\n      // Ensure that the first and last effect of the parent corresponds\n      // to the children's first and last effect.\n      if (!returnFiber.firstEffect) {\n        returnFiber.firstEffect = child.firstEffect;\n      }\n      if (child.lastEffect) {\n        if (returnFiber.lastEffect) {\n          returnFiber.lastEffect.nextEffect = child.firstEffect;\n        }\n        returnFiber.lastEffect = child.lastEffect;\n      }\n    } while (child = child.sibling);\n  }\n  */\n\n  function bailoutOnAlreadyFinishedWork(current, workInProgress) {\n    {\n      cancelWorkTimer(workInProgress);\n    }\n\n    // TODO: We should ideally be able to bail out early if the children have no\n    // more work to do. However, since we don't have a separation of this\n    // Fiber's priority and its children yet - we don't know without doing lots\n    // of the same work we do anyway. Once we have that separation we can just\n    // bail out here if the children has no more work at this priority level.\n    // if (workInProgress.priorityOfChildren <= priorityLevel) {\n    //   // If there are side-effects in these children that have not yet been\n    //   // committed we need to ensure that they get properly transferred up.\n    //   if (current && current.child !== workInProgress.child) {\n    //     reuseChildrenEffects(workInProgress, child);\n    //   }\n    //   return null;\n    // }\n\n    cloneChildFibers(current, workInProgress);\n    return workInProgress.child;\n  }\n\n  function bailoutOnLowPriority(current, workInProgress) {\n    {\n      cancelWorkTimer(workInProgress);\n    }\n\n    // TODO: Handle HostComponent tags here as well and call pushHostContext()?\n    // See PR 8590 discussion for context\n    switch (workInProgress.tag) {\n      case HostRoot$7:\n        pushHostRootContext(workInProgress);\n        break;\n      case ClassComponent$6:\n        pushContextProvider$1(workInProgress);\n        break;\n      case HostPortal$4:\n        pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n        break;\n    }\n    // TODO: What if this is currently in progress?\n    // How can that happen? How is this not being cloned?\n    return null;\n  }\n\n  // TODO: Delete memoizeProps/State and move to reconcile/bailout instead\n  function memoizeProps(workInProgress, nextProps) {\n    workInProgress.memoizedProps = nextProps;\n  }\n\n  function memoizeState(workInProgress, nextState) {\n    workInProgress.memoizedState = nextState;\n    // Don't reset the updateQueue, in case there are pending updates. Resetting\n    // is handled by beginUpdateQueue.\n  }\n\n  function beginWork(current, workInProgress, priorityLevel) {\n    if (workInProgress.pendingWorkPriority === NoWork$3 || workInProgress.pendingWorkPriority > priorityLevel) {\n      return bailoutOnLowPriority(current, workInProgress);\n    }\n\n    {\n      ReactDebugCurrentFiber$4.setCurrentFiber(workInProgress, null);\n    }\n\n    switch (workInProgress.tag) {\n      case IndeterminateComponent$2:\n        return mountIndeterminateComponent(current, workInProgress, priorityLevel);\n      case FunctionalComponent$1:\n        return updateFunctionalComponent(current, workInProgress);\n      case ClassComponent$6:\n        return updateClassComponent(current, workInProgress, priorityLevel);\n      case HostRoot$7:\n        return updateHostRoot(current, workInProgress, priorityLevel);\n      case HostComponent$7:\n        return updateHostComponent(current, workInProgress, priorityLevel);\n      case HostText$4:\n        return updateHostText(current, workInProgress);\n      case CoroutineHandlerPhase:\n        // This is a restart. Reset the tag to the initial phase.\n        workInProgress.tag = CoroutineComponent$1;\n      // Intentionally fall through since this is now the same.\n      case CoroutineComponent$1:\n        return updateCoroutineComponent(current, workInProgress);\n      case YieldComponent$2:\n        // A yield component is just a placeholder, we can just run through the\n        // next one immediately.\n        return null;\n      case HostPortal$4:\n        return updatePortalComponent(current, workInProgress);\n      case Fragment$2:\n        return updateFragment(current, workInProgress);\n      default:\n        invariant(false, 'Unknown unit of work tag. This error is likely caused by a bug in React. Please file an issue.');\n    }\n  }\n\n  function beginFailedWork(current, workInProgress, priorityLevel) {\n    // Push context providers here to avoid a push/pop context mismatch.\n    switch (workInProgress.tag) {\n      case ClassComponent$6:\n        pushContextProvider$1(workInProgress);\n        break;\n      case HostRoot$7:\n        pushHostRootContext(workInProgress);\n        break;\n      default:\n        invariant(false, 'Invalid type of work. This error is likely caused by a bug in React. Please file an issue.');\n    }\n\n    // Add an error effect so we can handle the error during the commit phase\n    workInProgress.effectTag |= Err$1;\n\n    // This is a weird case where we do \"resume\" work — work that failed on\n    // our first attempt. Because we no longer have a notion of \"progressed\n    // deletions,\" reset the child to the current child to make sure we delete\n    // it again. TODO: Find a better way to handle this, perhaps during a more\n    // general overhaul of error handling.\n    if (current === null) {\n      workInProgress.child = null;\n    } else if (workInProgress.child !== current.child) {\n      workInProgress.child = current.child;\n    }\n\n    if (workInProgress.pendingWorkPriority === NoWork$3 || workInProgress.pendingWorkPriority > priorityLevel) {\n      return bailoutOnLowPriority(current, workInProgress);\n    }\n\n    // If we don't bail out, we're going be recomputing our children so we need\n    // to drop our effect list.\n    workInProgress.firstEffect = null;\n    workInProgress.lastEffect = null;\n\n    // Unmount the current children as if the component rendered null\n    var nextChildren = null;\n    reconcileChildrenAtPriority(current, workInProgress, nextChildren, priorityLevel);\n\n    if (workInProgress.tag === ClassComponent$6) {\n      var instance = workInProgress.stateNode;\n      workInProgress.memoizedProps = instance.props;\n      workInProgress.memoizedState = instance.state;\n    }\n\n    return workInProgress.child;\n  }\n\n  return {\n    beginWork: beginWork,\n    beginFailedWork: beginFailedWork\n  };\n};\n\nvar reconcileChildFibers$2 = ReactChildFiber.reconcileChildFibers;\n\nvar popContextProvider$2 = ReactFiberContext.popContextProvider;\nvar popTopLevelContextObject$1 = ReactFiberContext.popTopLevelContextObject;\n\n\n\n\nvar IndeterminateComponent$3 = ReactTypeOfWork.IndeterminateComponent;\nvar FunctionalComponent$3 = ReactTypeOfWork.FunctionalComponent;\nvar ClassComponent$8 = ReactTypeOfWork.ClassComponent;\nvar HostRoot$8 = ReactTypeOfWork.HostRoot;\nvar HostComponent$8 = ReactTypeOfWork.HostComponent;\nvar HostText$6 = ReactTypeOfWork.HostText;\nvar HostPortal$6 = ReactTypeOfWork.HostPortal;\nvar CoroutineComponent$3 = ReactTypeOfWork.CoroutineComponent;\nvar CoroutineHandlerPhase$1 = ReactTypeOfWork.CoroutineHandlerPhase;\nvar YieldComponent$4 = ReactTypeOfWork.YieldComponent;\nvar Fragment$4 = ReactTypeOfWork.Fragment;\nvar Placement$4 = ReactTypeOfSideEffect.Placement;\nvar Ref$2 = ReactTypeOfSideEffect.Ref;\nvar Update$2 = ReactTypeOfSideEffect.Update;\nvar OffscreenPriority$2 = ReactPriorityLevel.OffscreenPriority;\n\n\n{\n  var ReactDebugCurrentFiber$5 = ReactDebugCurrentFiber_1;\n}\n\n\n\nvar ReactFiberCompleteWork = function (config, hostContext, hydrationContext) {\n  var createInstance = config.createInstance,\n      createTextInstance = config.createTextInstance,\n      appendInitialChild = config.appendInitialChild,\n      finalizeInitialChildren = config.finalizeInitialChildren,\n      prepareUpdate = config.prepareUpdate;\n  var getRootHostContainer = hostContext.getRootHostContainer,\n      popHostContext = hostContext.popHostContext,\n      getHostContext = hostContext.getHostContext,\n      popHostContainer = hostContext.popHostContainer;\n  var prepareToHydrateHostInstance = hydrationContext.prepareToHydrateHostInstance,\n      prepareToHydrateHostTextInstance = hydrationContext.prepareToHydrateHostTextInstance,\n      popHydrationState = hydrationContext.popHydrationState;\n\n\n  function markUpdate(workInProgress) {\n    // Tag the fiber with an update effect. This turns a Placement into\n    // an UpdateAndPlacement.\n    workInProgress.effectTag |= Update$2;\n  }\n\n  function markRef(workInProgress) {\n    workInProgress.effectTag |= Ref$2;\n  }\n\n  function appendAllYields(yields, workInProgress) {\n    var node = workInProgress.stateNode;\n    if (node) {\n      node['return'] = workInProgress;\n    }\n    while (node !== null) {\n      if (node.tag === HostComponent$8 || node.tag === HostText$6 || node.tag === HostPortal$6) {\n        invariant(false, 'A coroutine cannot have host component children.');\n      } else if (node.tag === YieldComponent$4) {\n        yields.push(node.type);\n      } else if (node.child !== null) {\n        node.child['return'] = node;\n        node = node.child;\n        continue;\n      }\n      while (node.sibling === null) {\n        if (node['return'] === null || node['return'] === workInProgress) {\n          return;\n        }\n        node = node['return'];\n      }\n      node.sibling['return'] = node['return'];\n      node = node.sibling;\n    }\n  }\n\n  function moveCoroutineToHandlerPhase(current, workInProgress) {\n    var coroutine = workInProgress.memoizedProps;\n    !coroutine ? invariant(false, 'Should be resolved by now. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n\n    // First step of the coroutine has completed. Now we need to do the second.\n    // TODO: It would be nice to have a multi stage coroutine represented by a\n    // single component, or at least tail call optimize nested ones. Currently\n    // that requires additional fields that we don't want to add to the fiber.\n    // So this requires nested handlers.\n    // Note: This doesn't mutate the alternate node. I don't think it needs to\n    // since this stage is reset for every pass.\n    workInProgress.tag = CoroutineHandlerPhase$1;\n\n    // Build up the yields.\n    // TODO: Compare this to a generator or opaque helpers like Children.\n    var yields = [];\n    appendAllYields(yields, workInProgress);\n    var fn = coroutine.handler;\n    var props = coroutine.props;\n    var nextChildren = fn(props, yields);\n\n    var currentFirstChild = current !== null ? current.child : null;\n    // Inherit the priority of the returnFiber.\n    var priority = workInProgress.pendingWorkPriority;\n    workInProgress.child = reconcileChildFibers$2(workInProgress, currentFirstChild, nextChildren, priority);\n    return workInProgress.child;\n  }\n\n  function appendAllChildren(parent, workInProgress) {\n    // We only have the top Fiber that was created but we need recurse down its\n    // children to find all the terminal nodes.\n    var node = workInProgress.child;\n    while (node !== null) {\n      if (node.tag === HostComponent$8 || node.tag === HostText$6) {\n        appendInitialChild(parent, node.stateNode);\n      } else if (node.tag === HostPortal$6) {\n        // If we have a portal child, then we don't want to traverse\n        // down its children. Instead, we'll get insertions from each child in\n        // the portal directly.\n      } else if (node.child !== null) {\n        node = node.child;\n        continue;\n      }\n      if (node === workInProgress) {\n        return;\n      }\n      while (node.sibling === null) {\n        if (node['return'] === null || node['return'] === workInProgress) {\n          return;\n        }\n        node = node['return'];\n      }\n      node = node.sibling;\n    }\n  }\n\n  function completeWork(current, workInProgress, renderPriority) {\n    {\n      ReactDebugCurrentFiber$5.setCurrentFiber(workInProgress, null);\n    }\n\n    // Get the latest props.\n    var newProps = workInProgress.pendingProps;\n    if (newProps === null) {\n      newProps = workInProgress.memoizedProps;\n    } else if (workInProgress.pendingWorkPriority !== OffscreenPriority$2 || renderPriority === OffscreenPriority$2) {\n      // Reset the pending props, unless this was a down-prioritization.\n      workInProgress.pendingProps = null;\n    }\n\n    switch (workInProgress.tag) {\n      case FunctionalComponent$3:\n        return null;\n      case ClassComponent$8:\n        {\n          // We are leaving this subtree, so pop context if any.\n          popContextProvider$2(workInProgress);\n          return null;\n        }\n      case HostRoot$8:\n        {\n          popHostContainer(workInProgress);\n          popTopLevelContextObject$1(workInProgress);\n          var fiberRoot = workInProgress.stateNode;\n          if (fiberRoot.pendingContext) {\n            fiberRoot.context = fiberRoot.pendingContext;\n            fiberRoot.pendingContext = null;\n          }\n\n          if (current === null || current.child === null) {\n            // If we hydrated, pop so that we can delete any remaining children\n            // that weren't hydrated.\n            popHydrationState(workInProgress);\n            // This resets the hacky state to fix isMounted before committing.\n            // TODO: Delete this when we delete isMounted and findDOMNode.\n            workInProgress.effectTag &= ~Placement$4;\n          }\n          return null;\n        }\n      case HostComponent$8:\n        {\n          popHostContext(workInProgress);\n          var rootContainerInstance = getRootHostContainer();\n          var type = workInProgress.type;\n          if (current !== null && workInProgress.stateNode != null) {\n            // If we have an alternate, that means this is an update and we need to\n            // schedule a side-effect to do the updates.\n            var oldProps = current.memoizedProps;\n            // If we get updated because one of our children updated, we don't\n            // have newProps so we'll have to reuse them.\n            // TODO: Split the update API as separate for the props vs. children.\n            // Even better would be if children weren't special cased at all tho.\n            var instance = workInProgress.stateNode;\n            var currentHostContext = getHostContext();\n            var updatePayload = prepareUpdate(instance, type, oldProps, newProps, rootContainerInstance, currentHostContext);\n\n            // TODO: Type this specific to this type of component.\n            workInProgress.updateQueue = updatePayload;\n            // If the update payload indicates that there is a change or if there\n            // is a new ref we mark this as an update.\n            if (updatePayload) {\n              markUpdate(workInProgress);\n            }\n            if (current.ref !== workInProgress.ref) {\n              markRef(workInProgress);\n            }\n          } else {\n            if (!newProps) {\n              !(workInProgress.stateNode !== null) ? invariant(false, 'We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n              // This can happen when we abort work.\n              return null;\n            }\n\n            var _currentHostContext = getHostContext();\n            // TODO: Move createInstance to beginWork and keep it on a context\n            // \"stack\" as the parent. Then append children as we go in beginWork\n            // or completeWork depending on we want to add then top->down or\n            // bottom->up. Top->down is faster in IE11.\n            var wasHydrated = popHydrationState(workInProgress);\n            if (wasHydrated) {\n              // TOOD: Move this and createInstance step into the beginPhase\n              // to consolidate.\n              if (prepareToHydrateHostInstance(workInProgress, rootContainerInstance, _currentHostContext)) {\n                // If changes to the hydrated node needs to be applied at the\n                // commit-phase we mark this as such.\n                markUpdate(workInProgress);\n              }\n            } else {\n              var _instance = createInstance(type, newProps, rootContainerInstance, _currentHostContext, workInProgress);\n\n              appendAllChildren(_instance, workInProgress);\n\n              // Certain renderers require commit-time effects for initial mount.\n              // (eg DOM renderer supports auto-focus for certain elements).\n              // Make sure such renderers get scheduled for later work.\n              if (finalizeInitialChildren(_instance, type, newProps, rootContainerInstance)) {\n                markUpdate(workInProgress);\n              }\n              workInProgress.stateNode = _instance;\n            }\n\n            if (workInProgress.ref !== null) {\n              // If there is a ref on a host node we need to schedule a callback\n              markRef(workInProgress);\n            }\n          }\n          return null;\n        }\n      case HostText$6:\n        {\n          var newText = newProps;\n          if (current && workInProgress.stateNode != null) {\n            var oldText = current.memoizedProps;\n            // If we have an alternate, that means this is an update and we need\n            // to schedule a side-effect to do the updates.\n            if (oldText !== newText) {\n              markUpdate(workInProgress);\n            }\n          } else {\n            if (typeof newText !== 'string') {\n              !(workInProgress.stateNode !== null) ? invariant(false, 'We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n              // This can happen when we abort work.\n              return null;\n            }\n            var _rootContainerInstance = getRootHostContainer();\n            var _currentHostContext2 = getHostContext();\n            var _wasHydrated = popHydrationState(workInProgress);\n            if (_wasHydrated) {\n              if (prepareToHydrateHostTextInstance(workInProgress)) {\n                markUpdate(workInProgress);\n              }\n            } else {\n              workInProgress.stateNode = createTextInstance(newText, _rootContainerInstance, _currentHostContext2, workInProgress);\n            }\n          }\n          return null;\n        }\n      case CoroutineComponent$3:\n        return moveCoroutineToHandlerPhase(current, workInProgress);\n      case CoroutineHandlerPhase$1:\n        // Reset the tag to now be a first phase coroutine.\n        workInProgress.tag = CoroutineComponent$3;\n        return null;\n      case YieldComponent$4:\n        // Does nothing.\n        return null;\n      case Fragment$4:\n        return null;\n      case HostPortal$6:\n        // TODO: Only mark this as an update if we have any pending callbacks.\n        markUpdate(workInProgress);\n        popHostContainer(workInProgress);\n        return null;\n      // Error cases\n      case IndeterminateComponent$3:\n        invariant(false, 'An indeterminate component should have become determinate before completing. This error is likely caused by a bug in React. Please file an issue.');\n      // eslint-disable-next-line no-fallthrough\n      default:\n        invariant(false, 'Unknown unit of work tag. This error is likely caused by a bug in React. Please file an issue.');\n    }\n  }\n\n  return {\n    completeWork: completeWork\n  };\n};\n\n{\n  var warning$26 = require$$0;\n}\n\nvar onCommitFiberRoot = null;\nvar onCommitFiberUnmount = null;\nvar hasLoggedError = false;\n\nfunction catchErrors(fn) {\n  return function (arg) {\n    try {\n      return fn(arg);\n    } catch (err) {\n      if (true && !hasLoggedError) {\n        hasLoggedError = true;\n        warning$26(false, 'React DevTools encountered an error: %s', err);\n      }\n    }\n  };\n}\n\nfunction injectInternals$1(internals) {\n  if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') {\n    // No DevTools\n    return false;\n  }\n  var hook = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n  if (!hook.supportsFiber) {\n    {\n      warning$26(false, 'The installed version of React DevTools is too old and will not work ' + 'with the current version of React. Please update React DevTools. ' + 'https://fb.me/react-devtools');\n    }\n    // DevTools exists, even though it doesn't support Fiber.\n    return true;\n  }\n  try {\n    var rendererID = hook.inject(internals);\n    // We have successfully injected, so now it is safe to set up hooks.\n    onCommitFiberRoot = catchErrors(function (root) {\n      return hook.onCommitFiberRoot(rendererID, root);\n    });\n    onCommitFiberUnmount = catchErrors(function (fiber) {\n      return hook.onCommitFiberUnmount(rendererID, fiber);\n    });\n  } catch (err) {\n    // Catch all errors because it is unsafe to throw during initialization.\n    {\n      warning$26(false, 'React DevTools encountered an error: %s.', err);\n    }\n  }\n  // DevTools exists\n  return true;\n}\n\nfunction onCommitRoot$1(root) {\n  if (typeof onCommitFiberRoot === 'function') {\n    onCommitFiberRoot(root);\n  }\n}\n\nfunction onCommitUnmount$1(fiber) {\n  if (typeof onCommitFiberUnmount === 'function') {\n    onCommitFiberUnmount(fiber);\n  }\n}\n\nvar injectInternals_1 = injectInternals$1;\nvar onCommitRoot_1 = onCommitRoot$1;\nvar onCommitUnmount_1 = onCommitUnmount$1;\n\nvar ReactFiberDevToolsHook = {\n\tinjectInternals: injectInternals_1,\n\tonCommitRoot: onCommitRoot_1,\n\tonCommitUnmount: onCommitUnmount_1\n};\n\nvar ClassComponent$9 = ReactTypeOfWork.ClassComponent;\nvar HostRoot$9 = ReactTypeOfWork.HostRoot;\nvar HostComponent$9 = ReactTypeOfWork.HostComponent;\nvar HostText$7 = ReactTypeOfWork.HostText;\nvar HostPortal$7 = ReactTypeOfWork.HostPortal;\nvar CoroutineComponent$4 = ReactTypeOfWork.CoroutineComponent;\n\nvar commitCallbacks$1 = ReactFiberUpdateQueue.commitCallbacks;\n\nvar onCommitUnmount = ReactFiberDevToolsHook.onCommitUnmount;\n\nvar invokeGuardedCallback$2 = ReactErrorUtils_1.invokeGuardedCallback;\nvar hasCaughtError$1 = ReactErrorUtils_1.hasCaughtError;\nvar clearCaughtError$1 = ReactErrorUtils_1.clearCaughtError;\n\nvar Placement$5 = ReactTypeOfSideEffect.Placement;\nvar Update$3 = ReactTypeOfSideEffect.Update;\nvar Callback$1 = ReactTypeOfSideEffect.Callback;\nvar ContentReset$2 = ReactTypeOfSideEffect.ContentReset;\n\n\n\n{\n  var _require5$1 = ReactDebugFiberPerf_1,\n      startPhaseTimer$2 = _require5$1.startPhaseTimer,\n      stopPhaseTimer$2 = _require5$1.stopPhaseTimer;\n}\n\nvar ReactFiberCommitWork = function (config, captureError) {\n  var commitMount = config.commitMount,\n      commitUpdate = config.commitUpdate,\n      resetTextContent = config.resetTextContent,\n      commitTextUpdate = config.commitTextUpdate,\n      appendChild = config.appendChild,\n      appendChildToContainer = config.appendChildToContainer,\n      insertBefore = config.insertBefore,\n      insertInContainerBefore = config.insertInContainerBefore,\n      removeChild = config.removeChild,\n      removeChildFromContainer = config.removeChildFromContainer,\n      getPublicInstance = config.getPublicInstance;\n\n\n  {\n    var callComponentWillUnmountWithTimerInDev = function (current, instance) {\n      startPhaseTimer$2(current, 'componentWillUnmount');\n      instance.props = current.memoizedProps;\n      instance.state = current.memoizedState;\n      instance.componentWillUnmount();\n      stopPhaseTimer$2();\n    };\n  }\n\n  // Capture errors so they don't interrupt unmounting.\n  function safelyCallComponentWillUnmount(current, instance) {\n    {\n      invokeGuardedCallback$2(null, callComponentWillUnmountWithTimerInDev, null, current, instance);\n      if (hasCaughtError$1()) {\n        var unmountError = clearCaughtError$1();\n        captureError(current, unmountError);\n      }\n    }\n  }\n\n  function safelyDetachRef(current) {\n    var ref = current.ref;\n    if (ref !== null) {\n      {\n        invokeGuardedCallback$2(null, ref, null, null);\n        if (hasCaughtError$1()) {\n          var refError = clearCaughtError$1();\n          captureError(current, refError);\n        }\n      }\n    }\n  }\n\n  function getHostParentFiber(fiber) {\n    var parent = fiber['return'];\n    while (parent !== null) {\n      if (isHostParent(parent)) {\n        return parent;\n      }\n      parent = parent['return'];\n    }\n    invariant(false, 'Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue.');\n  }\n\n  function isHostParent(fiber) {\n    return fiber.tag === HostComponent$9 || fiber.tag === HostRoot$9 || fiber.tag === HostPortal$7;\n  }\n\n  function getHostSibling(fiber) {\n    // We're going to search forward into the tree until we find a sibling host\n    // node. Unfortunately, if multiple insertions are done in a row we have to\n    // search past them. This leads to exponential search for the next sibling.\n    var node = fiber;\n    siblings: while (true) {\n      // If we didn't find anything, let's try the next sibling.\n      while (node.sibling === null) {\n        if (node['return'] === null || isHostParent(node['return'])) {\n          // If we pop out of the root or hit the parent the fiber we are the\n          // last sibling.\n          return null;\n        }\n        node = node['return'];\n      }\n      node.sibling['return'] = node['return'];\n      node = node.sibling;\n      while (node.tag !== HostComponent$9 && node.tag !== HostText$7) {\n        // If it is not host node and, we might have a host node inside it.\n        // Try to search down until we find one.\n        if (node.effectTag & Placement$5) {\n          // If we don't have a child, try the siblings instead.\n          continue siblings;\n        }\n        // If we don't have a child, try the siblings instead.\n        // We also skip portals because they are not part of this host tree.\n        if (node.child === null || node.tag === HostPortal$7) {\n          continue siblings;\n        } else {\n          node.child['return'] = node;\n          node = node.child;\n        }\n      }\n      // Check if this host node is stable or about to be placed.\n      if (!(node.effectTag & Placement$5)) {\n        // Found it!\n        return node.stateNode;\n      }\n    }\n  }\n\n  function commitPlacement(finishedWork) {\n    // Recursively insert all host nodes into the parent.\n    var parentFiber = getHostParentFiber(finishedWork);\n    var parent = void 0;\n    var isContainer = void 0;\n    switch (parentFiber.tag) {\n      case HostComponent$9:\n        parent = parentFiber.stateNode;\n        isContainer = false;\n        break;\n      case HostRoot$9:\n        parent = parentFiber.stateNode.containerInfo;\n        isContainer = true;\n        break;\n      case HostPortal$7:\n        parent = parentFiber.stateNode.containerInfo;\n        isContainer = true;\n        break;\n      default:\n        invariant(false, 'Invalid host parent fiber. This error is likely caused by a bug in React. Please file an issue.');\n    }\n    if (parentFiber.effectTag & ContentReset$2) {\n      // Reset the text content of the parent before doing any insertions\n      resetTextContent(parent);\n      // Clear ContentReset from the effect tag\n      parentFiber.effectTag &= ~ContentReset$2;\n    }\n\n    var before = getHostSibling(finishedWork);\n    // We only have the top Fiber that was inserted but we need recurse down its\n    // children to find all the terminal nodes.\n    var node = finishedWork;\n    while (true) {\n      if (node.tag === HostComponent$9 || node.tag === HostText$7) {\n        if (before) {\n          if (isContainer) {\n            insertInContainerBefore(parent, node.stateNode, before);\n          } else {\n            insertBefore(parent, node.stateNode, before);\n          }\n        } else {\n          if (isContainer) {\n            appendChildToContainer(parent, node.stateNode);\n          } else {\n            appendChild(parent, node.stateNode);\n          }\n        }\n      } else if (node.tag === HostPortal$7) {\n        // If the insertion itself is a portal, then we don't want to traverse\n        // down its children. Instead, we'll get insertions from each child in\n        // the portal directly.\n      } else if (node.child !== null) {\n        node.child['return'] = node;\n        node = node.child;\n        continue;\n      }\n      if (node === finishedWork) {\n        return;\n      }\n      while (node.sibling === null) {\n        if (node['return'] === null || node['return'] === finishedWork) {\n          return;\n        }\n        node = node['return'];\n      }\n      node.sibling['return'] = node['return'];\n      node = node.sibling;\n    }\n  }\n\n  function commitNestedUnmounts(root) {\n    // While we're inside a removed host node we don't want to call\n    // removeChild on the inner nodes because they're removed by the top\n    // call anyway. We also want to call componentWillUnmount on all\n    // composites before this host node is removed from the tree. Therefore\n    var node = root;\n    while (true) {\n      commitUnmount(node);\n      // Visit children because they may contain more composite or host nodes.\n      // Skip portals because commitUnmount() currently visits them recursively.\n      if (node.child !== null && node.tag !== HostPortal$7) {\n        node.child['return'] = node;\n        node = node.child;\n        continue;\n      }\n      if (node === root) {\n        return;\n      }\n      while (node.sibling === null) {\n        if (node['return'] === null || node['return'] === root) {\n          return;\n        }\n        node = node['return'];\n      }\n      node.sibling['return'] = node['return'];\n      node = node.sibling;\n    }\n  }\n\n  function unmountHostComponents(current) {\n    // We only have the top Fiber that was inserted but we need recurse down its\n    var node = current;\n\n    // Each iteration, currentParent is populated with node's host parent if not\n    // currentParentIsValid.\n    var currentParentIsValid = false;\n    var currentParent = void 0;\n    var currentParentIsContainer = void 0;\n\n    while (true) {\n      if (!currentParentIsValid) {\n        var parent = node['return'];\n        findParent: while (true) {\n          !(parent !== null) ? invariant(false, 'Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n          switch (parent.tag) {\n            case HostComponent$9:\n              currentParent = parent.stateNode;\n              currentParentIsContainer = false;\n              break findParent;\n            case HostRoot$9:\n              currentParent = parent.stateNode.containerInfo;\n              currentParentIsContainer = true;\n              break findParent;\n            case HostPortal$7:\n              currentParent = parent.stateNode.containerInfo;\n              currentParentIsContainer = true;\n              break findParent;\n          }\n          parent = parent['return'];\n        }\n        currentParentIsValid = true;\n      }\n\n      if (node.tag === HostComponent$9 || node.tag === HostText$7) {\n        commitNestedUnmounts(node);\n        // After all the children have unmounted, it is now safe to remove the\n        // node from the tree.\n        if (currentParentIsContainer) {\n          removeChildFromContainer(currentParent, node.stateNode);\n        } else {\n          removeChild(currentParent, node.stateNode);\n        }\n        // Don't visit children because we already visited them.\n      } else if (node.tag === HostPortal$7) {\n        // When we go into a portal, it becomes the parent to remove from.\n        // We will reassign it back when we pop the portal on the way up.\n        currentParent = node.stateNode.containerInfo;\n        // Visit children because portals might contain host components.\n        if (node.child !== null) {\n          node.child['return'] = node;\n          node = node.child;\n          continue;\n        }\n      } else {\n        commitUnmount(node);\n        // Visit children because we may find more host components below.\n        if (node.child !== null) {\n          node.child['return'] = node;\n          node = node.child;\n          continue;\n        }\n      }\n      if (node === current) {\n        return;\n      }\n      while (node.sibling === null) {\n        if (node['return'] === null || node['return'] === current) {\n          return;\n        }\n        node = node['return'];\n        if (node.tag === HostPortal$7) {\n          // When we go out of the portal, we need to restore the parent.\n          // Since we don't keep a stack of them, we will search for it.\n          currentParentIsValid = false;\n        }\n      }\n      node.sibling['return'] = node['return'];\n      node = node.sibling;\n    }\n  }\n\n  function commitDeletion(current) {\n    // Recursively delete all host nodes from the parent.\n    // Detach refs and call componentWillUnmount() on the whole subtree.\n    unmountHostComponents(current);\n\n    // Cut off the return pointers to disconnect it from the tree. Ideally, we\n    // should clear the child pointer of the parent alternate to let this\n    // get GC:ed but we don't know which for sure which parent is the current\n    // one so we'll settle for GC:ing the subtree of this child. This child\n    // itself will be GC:ed when the parent updates the next time.\n    current['return'] = null;\n    current.child = null;\n    if (current.alternate) {\n      current.alternate.child = null;\n      current.alternate['return'] = null;\n    }\n  }\n\n  // User-originating errors (lifecycles and refs) should not interrupt\n  // deletion, so don't let them throw. Host-originating errors should\n  // interrupt deletion, so it's okay\n  function commitUnmount(current) {\n    if (typeof onCommitUnmount === 'function') {\n      onCommitUnmount(current);\n    }\n\n    switch (current.tag) {\n      case ClassComponent$9:\n        {\n          safelyDetachRef(current);\n          var instance = current.stateNode;\n          if (typeof instance.componentWillUnmount === 'function') {\n            safelyCallComponentWillUnmount(current, instance);\n          }\n          return;\n        }\n      case HostComponent$9:\n        {\n          safelyDetachRef(current);\n          return;\n        }\n      case CoroutineComponent$4:\n        {\n          commitNestedUnmounts(current.stateNode);\n          return;\n        }\n      case HostPortal$7:\n        {\n          // TODO: this is recursive.\n          // We are also not using this parent because\n          // the portal will get pushed immediately.\n          unmountHostComponents(current);\n          return;\n        }\n    }\n  }\n\n  function commitWork(current, finishedWork) {\n    switch (finishedWork.tag) {\n      case ClassComponent$9:\n        {\n          return;\n        }\n      case HostComponent$9:\n        {\n          var instance = finishedWork.stateNode;\n          if (instance != null) {\n            // Commit the work prepared earlier.\n            var newProps = finishedWork.memoizedProps;\n            // For hydration we reuse the update path but we treat the oldProps\n            // as the newProps. The updatePayload will contain the real change in\n            // this case.\n            var oldProps = current !== null ? current.memoizedProps : newProps;\n            var type = finishedWork.type;\n            // TODO: Type the updateQueue to be specific to host components.\n            var updatePayload = finishedWork.updateQueue;\n            finishedWork.updateQueue = null;\n            if (updatePayload !== null) {\n              commitUpdate(instance, updatePayload, type, oldProps, newProps, finishedWork);\n            }\n          }\n          return;\n        }\n      case HostText$7:\n        {\n          !(finishedWork.stateNode !== null) ? invariant(false, 'This should have a text node initialized. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n          var textInstance = finishedWork.stateNode;\n          var newText = finishedWork.memoizedProps;\n          // For hydration we reuse the update path but we treat the oldProps\n          // as the newProps. The updatePayload will contain the real change in\n          // this case.\n          var oldText = current !== null ? current.memoizedProps : newText;\n          commitTextUpdate(textInstance, oldText, newText);\n          return;\n        }\n      case HostRoot$9:\n        {\n          return;\n        }\n      case HostPortal$7:\n        {\n          return;\n        }\n      default:\n        {\n          invariant(false, 'This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.');\n        }\n    }\n  }\n\n  function commitLifeCycles(current, finishedWork) {\n    switch (finishedWork.tag) {\n      case ClassComponent$9:\n        {\n          var instance = finishedWork.stateNode;\n          if (finishedWork.effectTag & Update$3) {\n            if (current === null) {\n              {\n                startPhaseTimer$2(finishedWork, 'componentDidMount');\n              }\n              instance.props = finishedWork.memoizedProps;\n              instance.state = finishedWork.memoizedState;\n              instance.componentDidMount();\n              {\n                stopPhaseTimer$2();\n              }\n            } else {\n              var prevProps = current.memoizedProps;\n              var prevState = current.memoizedState;\n              {\n                startPhaseTimer$2(finishedWork, 'componentDidUpdate');\n              }\n              instance.props = finishedWork.memoizedProps;\n              instance.state = finishedWork.memoizedState;\n              instance.componentDidUpdate(prevProps, prevState);\n              {\n                stopPhaseTimer$2();\n              }\n            }\n          }\n          if (finishedWork.effectTag & Callback$1 && finishedWork.updateQueue !== null) {\n            commitCallbacks$1(finishedWork, finishedWork.updateQueue, instance);\n          }\n          return;\n        }\n      case HostRoot$9:\n        {\n          var updateQueue = finishedWork.updateQueue;\n          if (updateQueue !== null) {\n            var _instance = finishedWork.child && finishedWork.child.stateNode;\n            commitCallbacks$1(finishedWork, updateQueue, _instance);\n          }\n          return;\n        }\n      case HostComponent$9:\n        {\n          var _instance2 = finishedWork.stateNode;\n\n          // Renderers may schedule work to be done after host components are mounted\n          // (eg DOM renderer may schedule auto-focus for inputs and form controls).\n          // These effects should only be committed when components are first mounted,\n          // aka when there is no current/alternate.\n          if (current === null && finishedWork.effectTag & Update$3) {\n            var type = finishedWork.type;\n            var props = finishedWork.memoizedProps;\n            commitMount(_instance2, type, props, finishedWork);\n          }\n\n          return;\n        }\n      case HostText$7:\n        {\n          // We have no life-cycles associated with text.\n          return;\n        }\n      case HostPortal$7:\n        {\n          // We have no life-cycles associated with portals.\n          return;\n        }\n      default:\n        {\n          invariant(false, 'This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.');\n        }\n    }\n  }\n\n  function commitAttachRef(finishedWork) {\n    var ref = finishedWork.ref;\n    if (ref !== null) {\n      var instance = finishedWork.stateNode;\n      switch (finishedWork.tag) {\n        case HostComponent$9:\n          ref(getPublicInstance(instance));\n          break;\n        default:\n          ref(instance);\n      }\n    }\n  }\n\n  function commitDetachRef(current) {\n    var currentRef = current.ref;\n    if (currentRef !== null) {\n      currentRef(null);\n    }\n  }\n\n  return {\n    commitPlacement: commitPlacement,\n    commitDeletion: commitDeletion,\n    commitWork: commitWork,\n    commitLifeCycles: commitLifeCycles,\n    commitAttachRef: commitAttachRef,\n    commitDetachRef: commitDetachRef\n  };\n};\n\nvar createCursor$2 = ReactFiberStack.createCursor;\nvar pop$2 = ReactFiberStack.pop;\nvar push$2 = ReactFiberStack.push;\n\n\n\nvar NO_CONTEXT = {};\n\nvar ReactFiberHostContext = function (config) {\n  var getChildHostContext = config.getChildHostContext,\n      getRootHostContext = config.getRootHostContext;\n\n\n  var contextStackCursor = createCursor$2(NO_CONTEXT);\n  var contextFiberStackCursor = createCursor$2(NO_CONTEXT);\n  var rootInstanceStackCursor = createCursor$2(NO_CONTEXT);\n\n  function requiredContext(c) {\n    !(c !== NO_CONTEXT) ? invariant(false, 'Expected host context to exist. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n    return c;\n  }\n\n  function getRootHostContainer() {\n    var rootInstance = requiredContext(rootInstanceStackCursor.current);\n    return rootInstance;\n  }\n\n  function pushHostContainer(fiber, nextRootInstance) {\n    // Push current root instance onto the stack;\n    // This allows us to reset root when portals are popped.\n    push$2(rootInstanceStackCursor, nextRootInstance, fiber);\n\n    var nextRootContext = getRootHostContext(nextRootInstance);\n\n    // Track the context and the Fiber that provided it.\n    // This enables us to pop only Fibers that provide unique contexts.\n    push$2(contextFiberStackCursor, fiber, fiber);\n    push$2(contextStackCursor, nextRootContext, fiber);\n  }\n\n  function popHostContainer(fiber) {\n    pop$2(contextStackCursor, fiber);\n    pop$2(contextFiberStackCursor, fiber);\n    pop$2(rootInstanceStackCursor, fiber);\n  }\n\n  function getHostContext() {\n    var context = requiredContext(contextStackCursor.current);\n    return context;\n  }\n\n  function pushHostContext(fiber) {\n    var rootInstance = requiredContext(rootInstanceStackCursor.current);\n    var context = requiredContext(contextStackCursor.current);\n    var nextContext = getChildHostContext(context, fiber.type, rootInstance);\n\n    // Don't push this Fiber's context unless it's unique.\n    if (context === nextContext) {\n      return;\n    }\n\n    // Track the context and the Fiber that provided it.\n    // This enables us to pop only Fibers that provide unique contexts.\n    push$2(contextFiberStackCursor, fiber, fiber);\n    push$2(contextStackCursor, nextContext, fiber);\n  }\n\n  function popHostContext(fiber) {\n    // Do not pop unless this Fiber provided the current context.\n    // pushHostContext() only pushes Fibers that provide unique contexts.\n    if (contextFiberStackCursor.current !== fiber) {\n      return;\n    }\n\n    pop$2(contextStackCursor, fiber);\n    pop$2(contextFiberStackCursor, fiber);\n  }\n\n  function resetHostContainer() {\n    contextStackCursor.current = NO_CONTEXT;\n    rootInstanceStackCursor.current = NO_CONTEXT;\n  }\n\n  return {\n    getHostContext: getHostContext,\n    getRootHostContainer: getRootHostContainer,\n    popHostContainer: popHostContainer,\n    popHostContext: popHostContext,\n    pushHostContainer: pushHostContainer,\n    pushHostContext: pushHostContext,\n    resetHostContainer: resetHostContainer\n  };\n};\n\nvar HostComponent$10 = ReactTypeOfWork.HostComponent;\nvar HostText$8 = ReactTypeOfWork.HostText;\nvar HostRoot$10 = ReactTypeOfWork.HostRoot;\n\nvar Deletion$2 = ReactTypeOfSideEffect.Deletion;\nvar Placement$6 = ReactTypeOfSideEffect.Placement;\n\nvar createFiberFromHostInstanceForDeletion$1 = ReactFiber.createFiberFromHostInstanceForDeletion;\n\nvar ReactFiberHydrationContext = function (config) {\n  var shouldSetTextContent = config.shouldSetTextContent,\n      canHydrateInstance = config.canHydrateInstance,\n      canHydrateTextInstance = config.canHydrateTextInstance,\n      getNextHydratableSibling = config.getNextHydratableSibling,\n      getFirstHydratableChild = config.getFirstHydratableChild,\n      hydrateInstance = config.hydrateInstance,\n      hydrateTextInstance = config.hydrateTextInstance,\n      didNotHydrateInstance = config.didNotHydrateInstance,\n      didNotFindHydratableInstance = config.didNotFindHydratableInstance,\n      didNotFindHydratableTextInstance = config.didNotFindHydratableTextInstance;\n\n  // If this doesn't have hydration mode.\n\n  if (!(canHydrateInstance && canHydrateTextInstance && getNextHydratableSibling && getFirstHydratableChild && hydrateInstance && hydrateTextInstance && didNotHydrateInstance && didNotFindHydratableInstance && didNotFindHydratableTextInstance)) {\n    return {\n      enterHydrationState: function () {\n        return false;\n      },\n      resetHydrationState: function () {},\n      tryToClaimNextHydratableInstance: function () {},\n      prepareToHydrateHostInstance: function () {\n        invariant(false, 'Expected prepareToHydrateHostInstance() to never be called. This error is likely caused by a bug in React. Please file an issue.');\n      },\n      prepareToHydrateHostTextInstance: function () {\n        invariant(false, 'Expected prepareToHydrateHostTextInstance() to never be called. This error is likely caused by a bug in React. Please file an issue.');\n      },\n      popHydrationState: function (fiber) {\n        return false;\n      }\n    };\n  }\n\n  // The deepest Fiber on the stack involved in a hydration context.\n  // This may have been an insertion or a hydration.\n  var hydrationParentFiber = null;\n  var nextHydratableInstance = null;\n  var isHydrating = false;\n\n  function enterHydrationState(fiber) {\n    var parentInstance = fiber.stateNode.containerInfo;\n    nextHydratableInstance = getFirstHydratableChild(parentInstance);\n    hydrationParentFiber = fiber;\n    isHydrating = true;\n    return true;\n  }\n\n  function deleteHydratableInstance(returnFiber, instance) {\n    {\n      switch (returnFiber.tag) {\n        case HostRoot$10:\n          didNotHydrateInstance(returnFiber.stateNode.containerInfo, instance);\n          break;\n        case HostComponent$10:\n          didNotHydrateInstance(returnFiber.stateNode, instance);\n          break;\n      }\n    }\n\n    var childToDelete = createFiberFromHostInstanceForDeletion$1();\n    childToDelete.stateNode = instance;\n    childToDelete['return'] = returnFiber;\n    childToDelete.effectTag = Deletion$2;\n\n    // This might seem like it belongs on progressedFirstDeletion. However,\n    // these children are not part of the reconciliation list of children.\n    // Even if we abort and rereconcile the children, that will try to hydrate\n    // again and the nodes are still in the host tree so these will be\n    // recreated.\n    if (returnFiber.lastEffect !== null) {\n      returnFiber.lastEffect.nextEffect = childToDelete;\n      returnFiber.lastEffect = childToDelete;\n    } else {\n      returnFiber.firstEffect = returnFiber.lastEffect = childToDelete;\n    }\n  }\n\n  function insertNonHydratedInstance(returnFiber, fiber) {\n    fiber.effectTag |= Placement$6;\n    {\n      var parentInstance;\n      switch (returnFiber.tag) {\n        // TODO: Currently we don't warn for insertions into the root because\n        // we always insert into the root in the non-hydrating case. We just\n        // delete the existing content. Reenable this once we have a better\n        // strategy for determining if we're hydrating or not.\n        // case HostRoot:\n        //   parentInstance = returnFiber.stateNode.containerInfo;\n        //   break;\n        case HostComponent$10:\n          parentInstance = returnFiber.stateNode;\n          break;\n        default:\n          return;\n      }\n      switch (fiber.tag) {\n        case HostComponent$10:\n          var type = fiber.type;\n          var props = fiber.pendingProps;\n          didNotFindHydratableInstance(parentInstance, type, props);\n          break;\n        case HostText$8:\n          var text = fiber.pendingProps;\n          didNotFindHydratableTextInstance(parentInstance, text);\n          break;\n      }\n    }\n  }\n\n  function canHydrate(fiber, nextInstance) {\n    switch (fiber.tag) {\n      case HostComponent$10:\n        {\n          var type = fiber.type;\n          var props = fiber.pendingProps;\n          return canHydrateInstance(nextInstance, type, props);\n        }\n      case HostText$8:\n        {\n          var text = fiber.pendingProps;\n          return canHydrateTextInstance(nextInstance, text);\n        }\n      default:\n        return false;\n    }\n  }\n\n  function tryToClaimNextHydratableInstance(fiber) {\n    if (!isHydrating) {\n      return;\n    }\n    var nextInstance = nextHydratableInstance;\n    if (!nextInstance) {\n      // Nothing to hydrate. Make it an insertion.\n      insertNonHydratedInstance(hydrationParentFiber, fiber);\n      isHydrating = false;\n      hydrationParentFiber = fiber;\n      return;\n    }\n    if (!canHydrate(fiber, nextInstance)) {\n      // If we can't hydrate this instance let's try the next one.\n      // We use this as a heuristic. It's based on intuition and not data so it\n      // might be flawed or unnecessary.\n      nextInstance = getNextHydratableSibling(nextInstance);\n      if (!nextInstance || !canHydrate(fiber, nextInstance)) {\n        // Nothing to hydrate. Make it an insertion.\n        insertNonHydratedInstance(hydrationParentFiber, fiber);\n        isHydrating = false;\n        hydrationParentFiber = fiber;\n        return;\n      }\n      // We matched the next one, we'll now assume that the first one was\n      // superfluous and we'll delete it. Since we can't eagerly delete it\n      // we'll have to schedule a deletion. To do that, this node needs a dummy\n      // fiber associated with it.\n      deleteHydratableInstance(hydrationParentFiber, nextHydratableInstance);\n    }\n    fiber.stateNode = nextInstance;\n    hydrationParentFiber = fiber;\n    nextHydratableInstance = getFirstHydratableChild(nextInstance);\n  }\n\n  function prepareToHydrateHostInstance(fiber, rootContainerInstance, hostContext) {\n    var instance = fiber.stateNode;\n    var updatePayload = hydrateInstance(instance, fiber.type, fiber.memoizedProps, rootContainerInstance, hostContext, fiber);\n    // TODO: Type this specific to this type of component.\n    fiber.updateQueue = updatePayload;\n    // If the update payload indicates that there is a change or if there\n    // is a new ref we mark this as an update.\n    if (updatePayload !== null) {\n      return true;\n    }\n    return false;\n  }\n\n  function prepareToHydrateHostTextInstance(fiber) {\n    var textInstance = fiber.stateNode;\n    var shouldUpdate = hydrateTextInstance(textInstance, fiber.memoizedProps, fiber);\n    return shouldUpdate;\n  }\n\n  function popToNextHostParent(fiber) {\n    var parent = fiber['return'];\n    while (parent !== null && parent.tag !== HostComponent$10 && parent.tag !== HostRoot$10) {\n      parent = parent['return'];\n    }\n    hydrationParentFiber = parent;\n  }\n\n  function popHydrationState(fiber) {\n    if (fiber !== hydrationParentFiber) {\n      // We're deeper than the current hydration context, inside an inserted\n      // tree.\n      return false;\n    }\n    if (!isHydrating) {\n      // If we're not currently hydrating but we're in a hydration context, then\n      // we were an insertion and now need to pop up reenter hydration of our\n      // siblings.\n      popToNextHostParent(fiber);\n      isHydrating = true;\n      return false;\n    }\n\n    var type = fiber.type;\n\n    // If we have any remaining hydratable nodes, we need to delete them now.\n    // We only do this deeper than head and body since they tend to have random\n    // other nodes in them. We also ignore components with pure text content in\n    // side of them.\n    // TODO: Better heuristic.\n    if (fiber.tag !== HostComponent$10 || type !== 'head' && type !== 'body' && !shouldSetTextContent(type, fiber.memoizedProps)) {\n      var nextInstance = nextHydratableInstance;\n      while (nextInstance) {\n        deleteHydratableInstance(fiber, nextInstance);\n        nextInstance = getNextHydratableSibling(nextInstance);\n      }\n    }\n\n    popToNextHostParent(fiber);\n    nextHydratableInstance = hydrationParentFiber ? getNextHydratableSibling(fiber.stateNode) : null;\n    return true;\n  }\n\n  function resetHydrationState() {\n    hydrationParentFiber = null;\n    nextHydratableInstance = null;\n    isHydrating = false;\n  }\n\n  return {\n    enterHydrationState: enterHydrationState,\n    resetHydrationState: resetHydrationState,\n    tryToClaimNextHydratableInstance: tryToClaimNextHydratableInstance,\n    prepareToHydrateHostInstance: prepareToHydrateHostInstance,\n    prepareToHydrateHostTextInstance: prepareToHydrateHostTextInstance,\n    popHydrationState: popHydrationState\n  };\n};\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 * @providesModule ReactFiberInstrumentation\n * \n */\n\n// This lets us hook into Fiber to debug what it's doing.\n// See https://github.com/facebook/react/pull/8033.\n// This is not part of the public API, not even for React DevTools.\n// You may only inject a debugTool if you work on React Fiber itself.\n\nvar ReactFiberInstrumentation$2 = {\n  debugTool: null\n};\n\nvar ReactFiberInstrumentation_1 = ReactFiberInstrumentation$2;\n\nvar popContextProvider$1 = ReactFiberContext.popContextProvider;\n\nvar reset$1 = ReactFiberStack.reset;\n\nvar getStackAddendumByWorkInProgressFiber$2 = ReactFiberComponentTreeHook.getStackAddendumByWorkInProgressFiber;\n\nvar logCapturedError = ReactFiberErrorLogger.logCapturedError;\n\nvar invokeGuardedCallback$1 = ReactErrorUtils_1.invokeGuardedCallback;\nvar hasCaughtError = ReactErrorUtils_1.hasCaughtError;\nvar clearCaughtError = ReactErrorUtils_1.clearCaughtError;\n\n\n\n\n\n\n\nvar ReactCurrentOwner$1 = ReactGlobalSharedState_1.ReactCurrentOwner;\n\n\n\nvar createWorkInProgress$1 = ReactFiber.createWorkInProgress;\nvar largerPriority$1 = ReactFiber.largerPriority;\n\nvar onCommitRoot = ReactFiberDevToolsHook.onCommitRoot;\n\nvar NoWork$2 = ReactPriorityLevel.NoWork;\nvar SynchronousPriority$1 = ReactPriorityLevel.SynchronousPriority;\nvar TaskPriority$1 = ReactPriorityLevel.TaskPriority;\nvar HighPriority = ReactPriorityLevel.HighPriority;\nvar LowPriority = ReactPriorityLevel.LowPriority;\nvar OffscreenPriority = ReactPriorityLevel.OffscreenPriority;\n\nvar AsyncUpdates = ReactTypeOfInternalContext.AsyncUpdates;\n\nvar PerformedWork = ReactTypeOfSideEffect.PerformedWork;\nvar Placement$1 = ReactTypeOfSideEffect.Placement;\nvar Update = ReactTypeOfSideEffect.Update;\nvar PlacementAndUpdate = ReactTypeOfSideEffect.PlacementAndUpdate;\nvar Deletion = ReactTypeOfSideEffect.Deletion;\nvar ContentReset = ReactTypeOfSideEffect.ContentReset;\nvar Callback = ReactTypeOfSideEffect.Callback;\nvar Err = ReactTypeOfSideEffect.Err;\nvar Ref = ReactTypeOfSideEffect.Ref;\n\nvar HostRoot$6 = ReactTypeOfWork.HostRoot;\nvar HostComponent$6 = ReactTypeOfWork.HostComponent;\nvar HostPortal$3 = ReactTypeOfWork.HostPortal;\nvar ClassComponent$5 = ReactTypeOfWork.ClassComponent;\n\nvar getUpdatePriority$1 = ReactFiberUpdateQueue.getUpdatePriority;\n\nvar _require14 = ReactFiberContext;\nvar resetContext$1 = _require14.resetContext;\n\n\n\n{\n  var warning$22 = require$$0;\n  var ReactFiberInstrumentation$1 = ReactFiberInstrumentation_1;\n  var ReactDebugCurrentFiber$3 = ReactDebugCurrentFiber_1;\n\n  var _require15 = ReactDebugFiberPerf_1,\n      recordEffect = _require15.recordEffect,\n      recordScheduleUpdate = _require15.recordScheduleUpdate,\n      startWorkTimer = _require15.startWorkTimer,\n      stopWorkTimer = _require15.stopWorkTimer,\n      stopFailedWorkTimer = _require15.stopFailedWorkTimer,\n      startWorkLoopTimer = _require15.startWorkLoopTimer,\n      stopWorkLoopTimer = _require15.stopWorkLoopTimer,\n      startCommitTimer = _require15.startCommitTimer,\n      stopCommitTimer = _require15.stopCommitTimer,\n      startCommitHostEffectsTimer = _require15.startCommitHostEffectsTimer,\n      stopCommitHostEffectsTimer = _require15.stopCommitHostEffectsTimer,\n      startCommitLifeCyclesTimer = _require15.startCommitLifeCyclesTimer,\n      stopCommitLifeCyclesTimer = _require15.stopCommitLifeCyclesTimer;\n\n  var warnAboutUpdateOnUnmounted = function (instance) {\n    var ctor = instance.constructor;\n    warning$22(false, 'Can only update a mounted or mounting component. This usually means ' + 'you called setState, replaceState, or forceUpdate on an unmounted ' + 'component. This is a no-op.\\n\\nPlease check the code for the ' + '%s component.', ctor && (ctor.displayName || ctor.name) || 'ReactClass');\n  };\n\n  var warnAboutInvalidUpdates = function (instance) {\n    switch (ReactDebugCurrentFiber$3.phase) {\n      case 'getChildContext':\n        warning$22(false, 'setState(...): Cannot call setState() inside getChildContext()');\n        break;\n      case 'render':\n        warning$22(false, 'Cannot update during an existing state transition (such as within ' + \"`render` or another component's constructor). Render methods should \" + 'be a pure function of props and state; constructor side-effects are ' + 'an anti-pattern, but can be moved to `componentWillMount`.');\n        break;\n    }\n  };\n}\n\nvar timeHeuristicForUnitOfWork = 1;\n\nvar ReactFiberScheduler = function (config) {\n  var hostContext = ReactFiberHostContext(config);\n  var hydrationContext = ReactFiberHydrationContext(config);\n  var popHostContainer = hostContext.popHostContainer,\n      popHostContext = hostContext.popHostContext,\n      resetHostContainer = hostContext.resetHostContainer;\n\n  var _ReactFiberBeginWork = ReactFiberBeginWork(config, hostContext, hydrationContext, scheduleUpdate, getPriorityContext),\n      beginWork = _ReactFiberBeginWork.beginWork,\n      beginFailedWork = _ReactFiberBeginWork.beginFailedWork;\n\n  var _ReactFiberCompleteWo = ReactFiberCompleteWork(config, hostContext, hydrationContext),\n      completeWork = _ReactFiberCompleteWo.completeWork;\n\n  var _ReactFiberCommitWork = ReactFiberCommitWork(config, captureError),\n      commitPlacement = _ReactFiberCommitWork.commitPlacement,\n      commitDeletion = _ReactFiberCommitWork.commitDeletion,\n      commitWork = _ReactFiberCommitWork.commitWork,\n      commitLifeCycles = _ReactFiberCommitWork.commitLifeCycles,\n      commitAttachRef = _ReactFiberCommitWork.commitAttachRef,\n      commitDetachRef = _ReactFiberCommitWork.commitDetachRef;\n\n  var scheduleDeferredCallback = config.scheduleDeferredCallback,\n      useSyncScheduling = config.useSyncScheduling,\n      prepareForCommit = config.prepareForCommit,\n      resetAfterCommit = config.resetAfterCommit;\n\n  // The priority level to use when scheduling an update. We use NoWork to\n  // represent the default priority.\n  // TODO: Should we change this to an array instead of using the call stack?\n  // Might be less confusing.\n\n  var priorityContext = NoWork$2;\n\n  // Keeps track of whether we're currently in a work loop.\n  var isPerformingWork = false;\n\n  // Keeps track of whether the current deadline has expired.\n  var deadlineHasExpired = false;\n\n  // Keeps track of whether we should should batch sync updates.\n  var isBatchingUpdates = false;\n\n  // This is needed for the weird case where the initial mount is synchronous\n  // even inside batchedUpdates :(\n  var isUnbatchingUpdates = false;\n\n  // The next work in progress fiber that we're currently working on.\n  var nextUnitOfWork = null;\n  var nextPriorityLevel = NoWork$2;\n\n  // The next fiber with an effect that we're currently committing.\n  var nextEffect = null;\n\n  var pendingCommit = null;\n\n  // Linked list of roots with scheduled work on them.\n  var nextScheduledRoot = null;\n  var lastScheduledRoot = null;\n\n  // Keep track of which host environment callbacks are scheduled.\n  var isCallbackScheduled = false;\n\n  // Keep track of which fibers have captured an error that need to be handled.\n  // Work is removed from this collection after componentDidCatch is called.\n  var capturedErrors = null;\n  // Keep track of which fibers have failed during the current batch of work.\n  // This is a different set than capturedErrors, because it is not reset until\n  // the end of the batch. This is needed to propagate errors correctly if a\n  // subtree fails more than once.\n  var failedBoundaries = null;\n  // Error boundaries that captured an error during the current commit.\n  var commitPhaseBoundaries = null;\n  var firstUncaughtError = null;\n  var didFatal = false;\n\n  var isCommitting = false;\n  var isUnmounting = false;\n\n  // Use these to prevent an infinite loop of nested updates\n  var NESTED_UPDATE_LIMIT = 1000;\n  var nestedUpdateCount = 0;\n  var nextRenderedTree = null;\n\n  function resetContextStack() {\n    // Reset the stack\n    reset$1();\n    // Reset the cursors\n    resetContext$1();\n    resetHostContainer();\n  }\n\n  // resetNextUnitOfWork mutates the current priority context. It is reset after\n  // after the workLoop exits, so never call resetNextUnitOfWork from outside\n  // the work loop.\n  function resetNextUnitOfWork() {\n    // Clear out roots with no more work on them, or if they have uncaught errors\n    while (nextScheduledRoot !== null && nextScheduledRoot.current.pendingWorkPriority === NoWork$2) {\n      // Unschedule this root.\n      nextScheduledRoot.isScheduled = false;\n      // Read the next pointer now.\n      // We need to clear it in case this root gets scheduled again later.\n      var next = nextScheduledRoot.nextScheduledRoot;\n      nextScheduledRoot.nextScheduledRoot = null;\n      // Exit if we cleared all the roots and there's no work to do.\n      if (nextScheduledRoot === lastScheduledRoot) {\n        nextScheduledRoot = null;\n        lastScheduledRoot = null;\n        nextPriorityLevel = NoWork$2;\n        return null;\n      }\n      // Continue with the next root.\n      // If there's no work on it, it will get unscheduled too.\n      nextScheduledRoot = next;\n    }\n\n    var root = nextScheduledRoot;\n    var highestPriorityRoot = null;\n    var highestPriorityLevel = NoWork$2;\n    while (root !== null) {\n      if (root.current.pendingWorkPriority !== NoWork$2 && (highestPriorityLevel === NoWork$2 || highestPriorityLevel > root.current.pendingWorkPriority)) {\n        highestPriorityLevel = root.current.pendingWorkPriority;\n        highestPriorityRoot = root;\n      }\n      // We didn't find anything to do in this root, so let's try the next one.\n      root = root.nextScheduledRoot;\n    }\n    if (highestPriorityRoot !== null) {\n      nextPriorityLevel = highestPriorityLevel;\n      // Before we start any new work, let's make sure that we have a fresh\n      // stack to work from.\n      // TODO: This call is buried a bit too deep. It would be nice to have\n      // a single point which happens right before any new work and\n      // unfortunately this is it.\n      resetContextStack();\n\n      nextUnitOfWork = createWorkInProgress$1(highestPriorityRoot.current, highestPriorityLevel);\n      if (highestPriorityRoot !== nextRenderedTree) {\n        // We've switched trees. Reset the nested update counter.\n        nestedUpdateCount = 0;\n        nextRenderedTree = highestPriorityRoot;\n      }\n      return;\n    }\n\n    nextPriorityLevel = NoWork$2;\n    nextUnitOfWork = null;\n    nextRenderedTree = null;\n    return;\n  }\n\n  function commitAllHostEffects() {\n    while (nextEffect !== null) {\n      {\n        ReactDebugCurrentFiber$3.setCurrentFiber(nextEffect, null);\n        recordEffect();\n      }\n\n      var effectTag = nextEffect.effectTag;\n      if (effectTag & ContentReset) {\n        config.resetTextContent(nextEffect.stateNode);\n      }\n\n      if (effectTag & Ref) {\n        var current = nextEffect.alternate;\n        if (current !== null) {\n          commitDetachRef(current);\n        }\n      }\n\n      // The following switch statement is only concerned about placement,\n      // updates, and deletions. To avoid needing to add a case for every\n      // possible bitmap value, we remove the secondary effects from the\n      // effect tag and switch on that value.\n      var primaryEffectTag = effectTag & ~(Callback | Err | ContentReset | Ref | PerformedWork);\n      switch (primaryEffectTag) {\n        case Placement$1:\n          {\n            commitPlacement(nextEffect);\n            // Clear the \"placement\" from effect tag so that we know that this is inserted, before\n            // any life-cycles like componentDidMount gets called.\n            // TODO: findDOMNode doesn't rely on this any more but isMounted\n            // does and isMounted is deprecated anyway so we should be able\n            // to kill this.\n            nextEffect.effectTag &= ~Placement$1;\n            break;\n          }\n        case PlacementAndUpdate:\n          {\n            // Placement\n            commitPlacement(nextEffect);\n            // Clear the \"placement\" from effect tag so that we know that this is inserted, before\n            // any life-cycles like componentDidMount gets called.\n            nextEffect.effectTag &= ~Placement$1;\n\n            // Update\n            var _current = nextEffect.alternate;\n            commitWork(_current, nextEffect);\n            break;\n          }\n        case Update:\n          {\n            var _current2 = nextEffect.alternate;\n            commitWork(_current2, nextEffect);\n            break;\n          }\n        case Deletion:\n          {\n            isUnmounting = true;\n            commitDeletion(nextEffect);\n            isUnmounting = false;\n            break;\n          }\n      }\n      nextEffect = nextEffect.nextEffect;\n    }\n\n    {\n      ReactDebugCurrentFiber$3.resetCurrentFiber();\n    }\n  }\n\n  function commitAllLifeCycles() {\n    while (nextEffect !== null) {\n      var effectTag = nextEffect.effectTag;\n\n      // Use Task priority for lifecycle updates\n      if (effectTag & (Update | Callback)) {\n        {\n          recordEffect();\n        }\n        var current = nextEffect.alternate;\n        commitLifeCycles(current, nextEffect);\n      }\n\n      if (effectTag & Ref) {\n        {\n          recordEffect();\n        }\n        commitAttachRef(nextEffect);\n      }\n\n      if (effectTag & Err) {\n        {\n          recordEffect();\n        }\n        commitErrorHandling(nextEffect);\n      }\n\n      var next = nextEffect.nextEffect;\n      // Ensure that we clean these up so that we don't accidentally keep them.\n      // I'm not actually sure this matters because we can't reset firstEffect\n      // and lastEffect since they're on every node, not just the effectful\n      // ones. So we have to clean everything as we reuse nodes anyway.\n      nextEffect.nextEffect = null;\n      // Ensure that we reset the effectTag here so that we can rely on effect\n      // tags to reason about the current life-cycle.\n      nextEffect = next;\n    }\n  }\n\n  function commitAllWork(finishedWork) {\n    // We keep track of this so that captureError can collect any boundaries\n    // that capture an error during the commit phase. The reason these aren't\n    // local to this function is because errors that occur during cWU are\n    // captured elsewhere, to prevent the unmount from being interrupted.\n    isCommitting = true;\n    {\n      startCommitTimer();\n    }\n\n    pendingCommit = null;\n    var root = finishedWork.stateNode;\n    !(root.current !== finishedWork) ? invariant(false, 'Cannot commit the same tree as before. This is probably a bug related to the return field. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n\n    if (nextPriorityLevel === SynchronousPriority$1 || nextPriorityLevel === TaskPriority$1) {\n      // Keep track of the number of iterations to prevent an infinite\n      // update loop.\n      nestedUpdateCount++;\n    }\n\n    // Reset this to null before calling lifecycles\n    ReactCurrentOwner$1.current = null;\n\n    var firstEffect = void 0;\n    if (finishedWork.effectTag > PerformedWork) {\n      // A fiber's effect list consists only of its children, not itself. So if\n      // the root has an effect, we need to add it to the end of the list. The\n      // resulting list is the set that would belong to the root's parent, if\n      // it had one; that is, all the effects in the tree including the root.\n      if (finishedWork.lastEffect !== null) {\n        finishedWork.lastEffect.nextEffect = finishedWork;\n        firstEffect = finishedWork.firstEffect;\n      } else {\n        firstEffect = finishedWork;\n      }\n    } else {\n      // There is no effect on the root.\n      firstEffect = finishedWork.firstEffect;\n    }\n\n    prepareForCommit();\n\n    // Commit all the side-effects within a tree. We'll do this in two passes.\n    // The first pass performs all the host insertions, updates, deletions and\n    // ref unmounts.\n    nextEffect = firstEffect;\n    {\n      startCommitHostEffectsTimer();\n    }\n    while (nextEffect !== null) {\n      var didError = false;\n      var _error = void 0;\n      {\n        invokeGuardedCallback$1(null, commitAllHostEffects, null);\n        if (hasCaughtError()) {\n          didError = true;\n          _error = clearCaughtError();\n        }\n      }\n      if (didError) {\n        !(nextEffect !== null) ? invariant(false, 'Should have next effect. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n        captureError(nextEffect, _error);\n        // Clean-up\n        if (nextEffect !== null) {\n          nextEffect = nextEffect.nextEffect;\n        }\n      }\n    }\n    {\n      stopCommitHostEffectsTimer();\n    }\n\n    resetAfterCommit();\n\n    // The work-in-progress tree is now the current tree. This must come after\n    // the first pass of the commit phase, so that the previous tree is still\n    // current during componentWillUnmount, but before the second pass, so that\n    // the finished work is current during componentDidMount/Update.\n    root.current = finishedWork;\n\n    // In the second pass we'll perform all life-cycles and ref callbacks.\n    // Life-cycles happen as a separate pass so that all placements, updates,\n    // and deletions in the entire tree have already been invoked.\n    // This pass also triggers any renderer-specific initial effects.\n    nextEffect = firstEffect;\n    {\n      startCommitLifeCyclesTimer();\n    }\n    while (nextEffect !== null) {\n      var _didError = false;\n      var _error2 = void 0;\n      {\n        invokeGuardedCallback$1(null, commitAllLifeCycles, null);\n        if (hasCaughtError()) {\n          _didError = true;\n          _error2 = clearCaughtError();\n        }\n      }\n      if (_didError) {\n        !(nextEffect !== null) ? invariant(false, 'Should have next effect. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n        captureError(nextEffect, _error2);\n        if (nextEffect !== null) {\n          nextEffect = nextEffect.nextEffect;\n        }\n      }\n    }\n\n    isCommitting = false;\n    {\n      stopCommitLifeCyclesTimer();\n      stopCommitTimer();\n    }\n    if (typeof onCommitRoot === 'function') {\n      onCommitRoot(finishedWork.stateNode);\n    }\n    if (true && ReactFiberInstrumentation$1.debugTool) {\n      ReactFiberInstrumentation$1.debugTool.onCommitWork(finishedWork);\n    }\n\n    // If we caught any errors during this commit, schedule their boundaries\n    // to update.\n    if (commitPhaseBoundaries) {\n      commitPhaseBoundaries.forEach(scheduleErrorRecovery);\n      commitPhaseBoundaries = null;\n    }\n\n    // This tree is done. Reset the unit of work pointer to the next highest\n    // priority root. If there's no more work left, the pointer is set to null.\n    resetNextUnitOfWork();\n  }\n\n  function resetWorkPriority(workInProgress, renderPriority) {\n    if (workInProgress.pendingWorkPriority !== NoWork$2 && workInProgress.pendingWorkPriority > renderPriority) {\n      // This was a down-prioritization. Don't bubble priority from children.\n      return;\n    }\n\n    // Check for pending update priority.\n    var newPriority = getUpdatePriority$1(workInProgress);\n\n    // TODO: Coroutines need to visit stateNode\n\n    var child = workInProgress.child;\n    while (child !== null) {\n      // Ensure that remaining work priority bubbles up.\n      newPriority = largerPriority$1(newPriority, child.pendingWorkPriority);\n      child = child.sibling;\n    }\n    workInProgress.pendingWorkPriority = newPriority;\n  }\n\n  function completeUnitOfWork(workInProgress) {\n    while (true) {\n      // The current, flushed, state of this fiber is the alternate.\n      // Ideally nothing should rely on this, but relying on it here\n      // means that we don't need an additional field on the work in\n      // progress.\n      var current = workInProgress.alternate;\n      var next = completeWork(current, workInProgress, nextPriorityLevel);\n\n      var returnFiber = workInProgress['return'];\n      var siblingFiber = workInProgress.sibling;\n\n      resetWorkPriority(workInProgress, nextPriorityLevel);\n\n      if (next !== null) {\n        {\n          stopWorkTimer(workInProgress);\n        }\n        if (true && ReactFiberInstrumentation$1.debugTool) {\n          ReactFiberInstrumentation$1.debugTool.onCompleteWork(workInProgress);\n        }\n        // If completing this work spawned new work, do that next. We'll come\n        // back here again.\n        return next;\n      }\n\n      if (returnFiber !== null) {\n        // Append all the effects of the subtree and this fiber onto the effect\n        // list of the parent. The completion order of the children affects the\n        // side-effect order.\n        if (returnFiber.firstEffect === null) {\n          returnFiber.firstEffect = workInProgress.firstEffect;\n        }\n        if (workInProgress.lastEffect !== null) {\n          if (returnFiber.lastEffect !== null) {\n            returnFiber.lastEffect.nextEffect = workInProgress.firstEffect;\n          }\n          returnFiber.lastEffect = workInProgress.lastEffect;\n        }\n\n        // If this fiber had side-effects, we append it AFTER the children's\n        // side-effects. We can perform certain side-effects earlier if\n        // needed, by doing multiple passes over the effect list. We don't want\n        // to schedule our own side-effect on our own list because if end up\n        // reusing children we'll schedule this effect onto itself since we're\n        // at the end.\n        var effectTag = workInProgress.effectTag;\n        // Skip both NoWork and PerformedWork tags when creating the effect list.\n        // PerformedWork effect is read by React DevTools but shouldn't be committed.\n        if (effectTag > PerformedWork) {\n          if (returnFiber.lastEffect !== null) {\n            returnFiber.lastEffect.nextEffect = workInProgress;\n          } else {\n            returnFiber.firstEffect = workInProgress;\n          }\n          returnFiber.lastEffect = workInProgress;\n        }\n      }\n\n      {\n        stopWorkTimer(workInProgress);\n      }\n      if (true && ReactFiberInstrumentation$1.debugTool) {\n        ReactFiberInstrumentation$1.debugTool.onCompleteWork(workInProgress);\n      }\n\n      if (siblingFiber !== null) {\n        // If there is more work to do in this returnFiber, do that next.\n        return siblingFiber;\n      } else if (returnFiber !== null) {\n        // If there's no more work in this returnFiber. Complete the returnFiber.\n        workInProgress = returnFiber;\n        continue;\n      } else {\n        // We've reached the root. Mark the root as pending commit. Depending\n        // on how much time we have left, we'll either commit it now or in\n        // the next frame.\n        pendingCommit = workInProgress;\n        return null;\n      }\n    }\n\n    // Without this explicit null return Flow complains of invalid return type\n    // TODO Remove the above while(true) loop\n    // eslint-disable-next-line no-unreachable\n    return null;\n  }\n\n  function performUnitOfWork(workInProgress) {\n    // The current, flushed, state of this fiber is the alternate.\n    // Ideally nothing should rely on this, but relying on it here\n    // means that we don't need an additional field on the work in\n    // progress.\n    var current = workInProgress.alternate;\n\n    // See if beginning this work spawns more work.\n    {\n      startWorkTimer(workInProgress);\n    }\n    var next = beginWork(current, workInProgress, nextPriorityLevel);\n    if (true && ReactFiberInstrumentation$1.debugTool) {\n      ReactFiberInstrumentation$1.debugTool.onBeginWork(workInProgress);\n    }\n\n    if (next === null) {\n      // If this doesn't spawn new work, complete the current work.\n      next = completeUnitOfWork(workInProgress);\n    }\n\n    ReactCurrentOwner$1.current = null;\n    {\n      ReactDebugCurrentFiber$3.resetCurrentFiber();\n    }\n\n    return next;\n  }\n\n  function performFailedUnitOfWork(workInProgress) {\n    // The current, flushed, state of this fiber is the alternate.\n    // Ideally nothing should rely on this, but relying on it here\n    // means that we don't need an additional field on the work in\n    // progress.\n    var current = workInProgress.alternate;\n\n    // See if beginning this work spawns more work.\n    {\n      startWorkTimer(workInProgress);\n    }\n    var next = beginFailedWork(current, workInProgress, nextPriorityLevel);\n    if (true && ReactFiberInstrumentation$1.debugTool) {\n      ReactFiberInstrumentation$1.debugTool.onBeginWork(workInProgress);\n    }\n\n    if (next === null) {\n      // If this doesn't spawn new work, complete the current work.\n      next = completeUnitOfWork(workInProgress);\n    }\n\n    ReactCurrentOwner$1.current = null;\n    {\n      ReactDebugCurrentFiber$3.resetCurrentFiber();\n    }\n\n    return next;\n  }\n\n  function performDeferredWork(deadline) {\n    performWork(OffscreenPriority, deadline);\n  }\n\n  function handleCommitPhaseErrors() {\n    // This is a special work loop for handling commit phase errors. It's\n    // similar to the syncrhonous work loop, but does an additional check on\n    // each fiber to see if it's an error boundary with an unhandled error. If\n    // so, it uses a forked version of performUnitOfWork that unmounts the\n    // failed subtree.\n    //\n    // The loop stops once the children have unmounted and error lifecycles are\n    // called. Then we return to the regular flow.\n\n    if (capturedErrors !== null && capturedErrors.size > 0 && nextPriorityLevel === TaskPriority$1) {\n      while (nextUnitOfWork !== null) {\n        if (hasCapturedError(nextUnitOfWork)) {\n          // Use a forked version of performUnitOfWork\n          nextUnitOfWork = performFailedUnitOfWork(nextUnitOfWork);\n        } else {\n          nextUnitOfWork = performUnitOfWork(nextUnitOfWork);\n        }\n        if (nextUnitOfWork === null) {\n          !(pendingCommit !== null) ? invariant(false, 'Should have a pending commit. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n          // We just completed a root. Commit it now.\n          priorityContext = TaskPriority$1;\n          commitAllWork(pendingCommit);\n          priorityContext = nextPriorityLevel;\n\n          if (capturedErrors === null || capturedErrors.size === 0 || nextPriorityLevel !== TaskPriority$1) {\n            // There are no more unhandled errors. We can exit this special\n            // work loop. If there's still additional work, we'll perform it\n            // using one of the normal work loops.\n            break;\n          }\n          // The commit phase produced additional errors. Continue working.\n        }\n      }\n    }\n  }\n\n  function workLoop(minPriorityLevel, deadline) {\n    if (pendingCommit !== null) {\n      priorityContext = TaskPriority$1;\n      commitAllWork(pendingCommit);\n      handleCommitPhaseErrors();\n    } else if (nextUnitOfWork === null) {\n      resetNextUnitOfWork();\n    }\n\n    if (nextPriorityLevel === NoWork$2 || nextPriorityLevel > minPriorityLevel) {\n      return;\n    }\n\n    // During the render phase, updates should have the same priority at which\n    // we're rendering.\n    priorityContext = nextPriorityLevel;\n\n    loop: do {\n      if (nextPriorityLevel <= TaskPriority$1) {\n        // Flush all synchronous and task work.\n        while (nextUnitOfWork !== null) {\n          nextUnitOfWork = performUnitOfWork(nextUnitOfWork);\n          if (nextUnitOfWork === null) {\n            !(pendingCommit !== null) ? invariant(false, 'Should have a pending commit. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n            // We just completed a root. Commit it now.\n            priorityContext = TaskPriority$1;\n            commitAllWork(pendingCommit);\n            priorityContext = nextPriorityLevel;\n            // Clear any errors that were scheduled during the commit phase.\n            handleCommitPhaseErrors();\n            // The priority level may have changed. Check again.\n            if (nextPriorityLevel === NoWork$2 || nextPriorityLevel > minPriorityLevel || nextPriorityLevel > TaskPriority$1) {\n              // The priority level does not match.\n              break;\n            }\n          }\n        }\n      } else if (deadline !== null) {\n        // Flush asynchronous work until the deadline expires.\n        while (nextUnitOfWork !== null && !deadlineHasExpired) {\n          if (deadline.timeRemaining() > timeHeuristicForUnitOfWork) {\n            nextUnitOfWork = performUnitOfWork(nextUnitOfWork);\n            // In a deferred work batch, iff nextUnitOfWork returns null, we just\n            // completed a root and a pendingCommit exists. Logically, we could\n            // omit either of the checks in the following condition, but we need\n            // both to satisfy Flow.\n            if (nextUnitOfWork === null) {\n              !(pendingCommit !== null) ? invariant(false, 'Should have a pending commit. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n              // We just completed a root. If we have time, commit it now.\n              // Otherwise, we'll commit it in the next frame.\n              if (deadline.timeRemaining() > timeHeuristicForUnitOfWork) {\n                priorityContext = TaskPriority$1;\n                commitAllWork(pendingCommit);\n                priorityContext = nextPriorityLevel;\n                // Clear any errors that were scheduled during the commit phase.\n                handleCommitPhaseErrors();\n                // The priority level may have changed. Check again.\n                if (nextPriorityLevel === NoWork$2 || nextPriorityLevel > minPriorityLevel || nextPriorityLevel < HighPriority) {\n                  // The priority level does not match.\n                  break;\n                }\n              } else {\n                deadlineHasExpired = true;\n              }\n            }\n          } else {\n            deadlineHasExpired = true;\n          }\n        }\n      }\n\n      // There might be work left. Depending on the priority, we should\n      // either perform it now or schedule a callback to perform it later.\n      switch (nextPriorityLevel) {\n        case SynchronousPriority$1:\n        case TaskPriority$1:\n          // We have remaining synchronous or task work. Keep performing it,\n          // regardless of whether we're inside a callback.\n          if (nextPriorityLevel <= minPriorityLevel) {\n            continue loop;\n          }\n          break loop;\n        case HighPriority:\n        case LowPriority:\n        case OffscreenPriority:\n          // We have remaining async work.\n          if (deadline === null) {\n            // We're not inside a callback. Exit and perform the work during\n            // the next callback.\n            break loop;\n          }\n          // We are inside a callback.\n          if (!deadlineHasExpired && nextPriorityLevel <= minPriorityLevel) {\n            // We still have time. Keep working.\n            continue loop;\n          }\n          // We've run out of time. Exit.\n          break loop;\n        case NoWork$2:\n          // No work left. We can exit.\n          break loop;\n        default:\n          invariant(false, 'Switch statement should be exhuastive. This error is likely caused by a bug in React. Please file an issue.');\n      }\n    } while (true);\n  }\n\n  function performWorkCatchBlock(failedWork, boundary, minPriorityLevel, deadline) {\n    // We're going to restart the error boundary that captured the error.\n    // Conceptually, we're unwinding the stack. We need to unwind the\n    // context stack, too.\n    unwindContexts(failedWork, boundary);\n\n    // Restart the error boundary using a forked version of\n    // performUnitOfWork that deletes the boundary's children. The entire\n    // failed subree will be unmounted. During the commit phase, a special\n    // lifecycle method is called on the error boundary, which triggers\n    // a re-render.\n    nextUnitOfWork = performFailedUnitOfWork(boundary);\n\n    // Continue working.\n    workLoop(minPriorityLevel, deadline);\n  }\n\n  function performWork(minPriorityLevel, deadline) {\n    {\n      startWorkLoopTimer();\n    }\n\n    !!isPerformingWork ? invariant(false, 'performWork was called recursively. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n    isPerformingWork = true;\n\n    // The priority context changes during the render phase. We'll need to\n    // reset it at the end.\n    var previousPriorityContext = priorityContext;\n\n    var didError = false;\n    var error = null;\n    {\n      invokeGuardedCallback$1(null, workLoop, null, minPriorityLevel, deadline);\n      if (hasCaughtError()) {\n        didError = true;\n        error = clearCaughtError();\n      }\n    }\n\n    // An error was thrown during the render phase.\n    while (didError) {\n      if (didFatal) {\n        // This was a fatal error. Don't attempt to recover from it.\n        firstUncaughtError = error;\n        break;\n      }\n\n      var failedWork = nextUnitOfWork;\n      if (failedWork === null) {\n        // An error was thrown but there's no current unit of work. This can\n        // happen during the commit phase if there's a bug in the renderer.\n        didFatal = true;\n        continue;\n      }\n\n      // \"Capture\" the error by finding the nearest boundary. If there is no\n      // error boundary, we use the root.\n      var boundary = captureError(failedWork, error);\n      !(boundary !== null) ? invariant(false, 'Should have found an error boundary. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n\n      if (didFatal) {\n        // The error we just captured was a fatal error. This happens\n        // when the error propagates to the root more than once.\n        continue;\n      }\n\n      didError = false;\n      error = null;\n      {\n        invokeGuardedCallback$1(null, performWorkCatchBlock, null, failedWork, boundary, minPriorityLevel, deadline);\n        if (hasCaughtError()) {\n          didError = true;\n          error = clearCaughtError();\n          continue;\n        }\n      }\n      // We're finished working. Exit the error loop.\n      break;\n    }\n\n    // Reset the priority context to its previous value.\n    priorityContext = previousPriorityContext;\n\n    // If we're inside a callback, set this to false, since we just flushed it.\n    if (deadline !== null) {\n      isCallbackScheduled = false;\n    }\n    // If there's remaining async work, make sure we schedule another callback.\n    if (nextPriorityLevel > TaskPriority$1 && !isCallbackScheduled) {\n      scheduleDeferredCallback(performDeferredWork);\n      isCallbackScheduled = true;\n    }\n\n    var errorToThrow = firstUncaughtError;\n\n    // We're done performing work. Time to clean up.\n    isPerformingWork = false;\n    deadlineHasExpired = false;\n    didFatal = false;\n    firstUncaughtError = null;\n    capturedErrors = null;\n    failedBoundaries = null;\n    nextRenderedTree = null;\n    nestedUpdateCount = 0;\n\n    {\n      stopWorkLoopTimer();\n    }\n\n    // It's safe to throw any unhandled errors.\n    if (errorToThrow !== null) {\n      throw errorToThrow;\n    }\n  }\n\n  // Returns the boundary that captured the error, or null if the error is ignored\n  function captureError(failedWork, error) {\n    // It is no longer valid because we exited the user code.\n    ReactCurrentOwner$1.current = null;\n    {\n      ReactDebugCurrentFiber$3.resetCurrentFiber();\n    }\n\n    // Search for the nearest error boundary.\n    var boundary = null;\n\n    // Passed to logCapturedError()\n    var errorBoundaryFound = false;\n    var willRetry = false;\n    var errorBoundaryName = null;\n\n    // Host containers are a special case. If the failed work itself is a host\n    // container, then it acts as its own boundary. In all other cases, we\n    // ignore the work itself and only search through the parents.\n    if (failedWork.tag === HostRoot$6) {\n      boundary = failedWork;\n\n      if (isFailedBoundary(failedWork)) {\n        // If this root already failed, there must have been an error when\n        // attempting to unmount it. This is a worst-case scenario and\n        // should only be possible if there's a bug in the renderer.\n        didFatal = true;\n      }\n    } else {\n      var node = failedWork['return'];\n      while (node !== null && boundary === null) {\n        if (node.tag === ClassComponent$5) {\n          var instance = node.stateNode;\n          if (typeof instance.componentDidCatch === 'function') {\n            errorBoundaryFound = true;\n            errorBoundaryName = getComponentName_1(node);\n\n            // Found an error boundary!\n            boundary = node;\n            willRetry = true;\n          }\n        } else if (node.tag === HostRoot$6) {\n          // Treat the root like a no-op error boundary\n          boundary = node;\n        }\n\n        if (isFailedBoundary(node)) {\n          // This boundary is already in a failed state.\n\n          // If we're currently unmounting, that means this error was\n          // thrown while unmounting a failed subtree. We should ignore\n          // the error.\n          if (isUnmounting) {\n            return null;\n          }\n\n          // If we're in the commit phase, we should check to see if\n          // this boundary already captured an error during this commit.\n          // This case exists because multiple errors can be thrown during\n          // a single commit without interruption.\n          if (commitPhaseBoundaries !== null && (commitPhaseBoundaries.has(node) || node.alternate !== null && commitPhaseBoundaries.has(node.alternate))) {\n            // If so, we should ignore this error.\n            return null;\n          }\n\n          // The error should propagate to the next boundary -— we keep looking.\n          boundary = null;\n          willRetry = false;\n        }\n\n        node = node['return'];\n      }\n    }\n\n    if (boundary !== null) {\n      // Add to the collection of failed boundaries. This lets us know that\n      // subsequent errors in this subtree should propagate to the next boundary.\n      if (failedBoundaries === null) {\n        failedBoundaries = new Set();\n      }\n      failedBoundaries.add(boundary);\n\n      // This method is unsafe outside of the begin and complete phases.\n      // We might be in the commit phase when an error is captured.\n      // The risk is that the return path from this Fiber may not be accurate.\n      // That risk is acceptable given the benefit of providing users more context.\n      var _componentStack = getStackAddendumByWorkInProgressFiber$2(failedWork);\n      var _componentName = getComponentName_1(failedWork);\n\n      // Add to the collection of captured errors. This is stored as a global\n      // map of errors and their component stack location keyed by the boundaries\n      // that capture them. We mostly use this Map as a Set; it's a Map only to\n      // avoid adding a field to Fiber to store the error.\n      if (capturedErrors === null) {\n        capturedErrors = new Map();\n      }\n\n      var capturedError = {\n        componentName: _componentName,\n        componentStack: _componentStack,\n        error: error,\n        errorBoundary: errorBoundaryFound ? boundary.stateNode : null,\n        errorBoundaryFound: errorBoundaryFound,\n        errorBoundaryName: errorBoundaryName,\n        willRetry: willRetry\n      };\n\n      capturedErrors.set(boundary, capturedError);\n\n      try {\n        logCapturedError(capturedError);\n      } catch (e) {\n        // Prevent cycle if logCapturedError() throws.\n        // A cycle may still occur if logCapturedError renders a component that throws.\n        console.error(e);\n      }\n\n      // If we're in the commit phase, defer scheduling an update on the\n      // boundary until after the commit is complete\n      if (isCommitting) {\n        if (commitPhaseBoundaries === null) {\n          commitPhaseBoundaries = new Set();\n        }\n        commitPhaseBoundaries.add(boundary);\n      } else {\n        // Otherwise, schedule an update now.\n        // TODO: Is this actually necessary during the render phase? Is it\n        // possible to unwind and continue rendering at the same priority,\n        // without corrupting internal state?\n        scheduleErrorRecovery(boundary);\n      }\n      return boundary;\n    } else if (firstUncaughtError === null) {\n      // If no boundary is found, we'll need to throw the error\n      firstUncaughtError = error;\n    }\n    return null;\n  }\n\n  function hasCapturedError(fiber) {\n    // TODO: capturedErrors should store the boundary instance, to avoid needing\n    // to check the alternate.\n    return capturedErrors !== null && (capturedErrors.has(fiber) || fiber.alternate !== null && capturedErrors.has(fiber.alternate));\n  }\n\n  function isFailedBoundary(fiber) {\n    // TODO: failedBoundaries should store the boundary instance, to avoid\n    // needing to check the alternate.\n    return failedBoundaries !== null && (failedBoundaries.has(fiber) || fiber.alternate !== null && failedBoundaries.has(fiber.alternate));\n  }\n\n  function commitErrorHandling(effectfulFiber) {\n    var capturedError = void 0;\n    if (capturedErrors !== null) {\n      capturedError = capturedErrors.get(effectfulFiber);\n      capturedErrors['delete'](effectfulFiber);\n      if (capturedError == null) {\n        if (effectfulFiber.alternate !== null) {\n          effectfulFiber = effectfulFiber.alternate;\n          capturedError = capturedErrors.get(effectfulFiber);\n          capturedErrors['delete'](effectfulFiber);\n        }\n      }\n    }\n\n    !(capturedError != null) ? invariant(false, 'No error for given unit of work. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n\n    switch (effectfulFiber.tag) {\n      case ClassComponent$5:\n        var instance = effectfulFiber.stateNode;\n\n        var info = {\n          componentStack: capturedError.componentStack\n        };\n\n        // Allow the boundary to handle the error, usually by scheduling\n        // an update to itself\n        instance.componentDidCatch(capturedError.error, info);\n        return;\n      case HostRoot$6:\n        if (firstUncaughtError === null) {\n          // If this is the host container, we treat it as a no-op error\n          // boundary. We'll throw the first uncaught error once it's safe to\n          // do so, at the end of the batch.\n          firstUncaughtError = capturedError.error;\n        }\n        return;\n      default:\n        invariant(false, 'Invalid type of work. This error is likely caused by a bug in React. Please file an issue.');\n    }\n  }\n\n  function unwindContexts(from, to) {\n    var node = from;\n    while (node !== null) {\n      switch (node.tag) {\n        case ClassComponent$5:\n          popContextProvider$1(node);\n          break;\n        case HostComponent$6:\n          popHostContext(node);\n          break;\n        case HostRoot$6:\n          popHostContainer(node);\n          break;\n        case HostPortal$3:\n          popHostContainer(node);\n          break;\n      }\n      if (node === to || node.alternate === to) {\n        {\n          stopFailedWorkTimer(node);\n        }\n        break;\n      } else {\n        stopWorkTimer(node);\n      }\n      node = node['return'];\n    }\n  }\n\n  function scheduleRoot(root, priorityLevel) {\n    if (priorityLevel === NoWork$2) {\n      return;\n    }\n\n    if (!root.isScheduled) {\n      root.isScheduled = true;\n      if (lastScheduledRoot) {\n        // Schedule ourselves to the end.\n        lastScheduledRoot.nextScheduledRoot = root;\n        lastScheduledRoot = root;\n      } else {\n        // We're the only work scheduled.\n        nextScheduledRoot = root;\n        lastScheduledRoot = root;\n      }\n    }\n  }\n\n  function scheduleUpdate(fiber, priorityLevel) {\n    return scheduleUpdateImpl(fiber, priorityLevel, false);\n  }\n\n  function scheduleUpdateImpl(fiber, priorityLevel, isErrorRecovery) {\n    {\n      recordScheduleUpdate();\n    }\n\n    if (nestedUpdateCount > NESTED_UPDATE_LIMIT) {\n      didFatal = true;\n      invariant(false, 'Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.');\n    }\n\n    if (!isPerformingWork && priorityLevel <= nextPriorityLevel) {\n      // We must reset the current unit of work pointer so that we restart the\n      // search from the root during the next tick, in case there is now higher\n      // priority work somewhere earlier than before.\n      nextUnitOfWork = null;\n    }\n\n    {\n      if (!isErrorRecovery && fiber.tag === ClassComponent$5) {\n        var instance = fiber.stateNode;\n        warnAboutInvalidUpdates(instance);\n      }\n    }\n\n    var node = fiber;\n    var shouldContinue = true;\n    while (node !== null && shouldContinue) {\n      // Walk the parent path to the root and update each node's priority. Once\n      // we reach a node whose priority matches (and whose alternate's priority\n      // matches) we can exit safely knowing that the rest of the path is correct.\n      shouldContinue = false;\n      if (node.pendingWorkPriority === NoWork$2 || node.pendingWorkPriority > priorityLevel) {\n        // Priority did not match. Update and keep going.\n        shouldContinue = true;\n        node.pendingWorkPriority = priorityLevel;\n      }\n      if (node.alternate !== null) {\n        if (node.alternate.pendingWorkPriority === NoWork$2 || node.alternate.pendingWorkPriority > priorityLevel) {\n          // Priority did not match. Update and keep going.\n          shouldContinue = true;\n          node.alternate.pendingWorkPriority = priorityLevel;\n        }\n      }\n      if (node['return'] === null) {\n        if (node.tag === HostRoot$6) {\n          var root = node.stateNode;\n          scheduleRoot(root, priorityLevel);\n          if (!isPerformingWork) {\n            switch (priorityLevel) {\n              case SynchronousPriority$1:\n                // Perform this update now.\n                if (isUnbatchingUpdates) {\n                  // We're inside unbatchedUpdates, which is inside either\n                  // batchedUpdates or a lifecycle. We should only flush\n                  // synchronous work, not task work.\n                  performWork(SynchronousPriority$1, null);\n                } else {\n                  // Flush both synchronous and task work.\n                  performWork(TaskPriority$1, null);\n                }\n                break;\n              case TaskPriority$1:\n                !isBatchingUpdates ? invariant(false, 'Task updates can only be scheduled as a nested update or inside batchedUpdates.') : void 0;\n                break;\n              default:\n                // Schedule a callback to perform the work later.\n                if (!isCallbackScheduled) {\n                  scheduleDeferredCallback(performDeferredWork);\n                  isCallbackScheduled = true;\n                }\n            }\n          }\n        } else {\n          {\n            if (!isErrorRecovery && fiber.tag === ClassComponent$5) {\n              warnAboutUpdateOnUnmounted(fiber.stateNode);\n            }\n          }\n          return;\n        }\n      }\n      node = node['return'];\n    }\n  }\n\n  function getPriorityContext(fiber, forceAsync) {\n    var priorityLevel = priorityContext;\n    if (priorityLevel === NoWork$2) {\n      if (!useSyncScheduling || fiber.internalContextTag & AsyncUpdates || forceAsync) {\n        priorityLevel = LowPriority;\n      } else {\n        priorityLevel = SynchronousPriority$1;\n      }\n    }\n\n    // If we're in a batch, or if we're already performing work, downgrade sync\n    // priority to task priority\n    if (priorityLevel === SynchronousPriority$1 && (isPerformingWork || isBatchingUpdates)) {\n      return TaskPriority$1;\n    }\n    return priorityLevel;\n  }\n\n  function scheduleErrorRecovery(fiber) {\n    scheduleUpdateImpl(fiber, TaskPriority$1, true);\n  }\n\n  function batchedUpdates(fn, a) {\n    var previousIsBatchingUpdates = isBatchingUpdates;\n    isBatchingUpdates = true;\n    try {\n      return fn(a);\n    } finally {\n      isBatchingUpdates = previousIsBatchingUpdates;\n      // If we're not already inside a batch, we need to flush any task work\n      // that was created by the user-provided function.\n      if (!isPerformingWork && !isBatchingUpdates) {\n        performWork(TaskPriority$1, null);\n      }\n    }\n  }\n\n  function unbatchedUpdates(fn) {\n    var previousIsUnbatchingUpdates = isUnbatchingUpdates;\n    var previousIsBatchingUpdates = isBatchingUpdates;\n    // This is only true if we're nested inside batchedUpdates.\n    isUnbatchingUpdates = isBatchingUpdates;\n    isBatchingUpdates = false;\n    try {\n      return fn();\n    } finally {\n      isBatchingUpdates = previousIsBatchingUpdates;\n      isUnbatchingUpdates = previousIsUnbatchingUpdates;\n    }\n  }\n\n  function flushSync(batch) {\n    var previousIsBatchingUpdates = isBatchingUpdates;\n    var previousPriorityContext = priorityContext;\n    isBatchingUpdates = true;\n    priorityContext = SynchronousPriority$1;\n    try {\n      return batch();\n    } finally {\n      isBatchingUpdates = previousIsBatchingUpdates;\n      priorityContext = previousPriorityContext;\n\n      !!isPerformingWork ? invariant(false, 'flushSync was called from inside a lifecycle method. It cannot be called when React is already rendering.') : void 0;\n      performWork(TaskPriority$1, null);\n    }\n  }\n\n  function deferredUpdates(fn) {\n    var previousPriorityContext = priorityContext;\n    priorityContext = LowPriority;\n    try {\n      return fn();\n    } finally {\n      priorityContext = previousPriorityContext;\n    }\n  }\n\n  return {\n    scheduleUpdate: scheduleUpdate,\n    getPriorityContext: getPriorityContext,\n    batchedUpdates: batchedUpdates,\n    unbatchedUpdates: unbatchedUpdates,\n    flushSync: flushSync,\n    deferredUpdates: deferredUpdates\n  };\n};\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 * @providesModule getContextForSubtree\n * \n */\n\n\n\n\n\n\nvar getContextFiber = function (arg) {\n  invariant(false, 'Missing injection for fiber getContextForSubtree');\n};\n\nfunction getContextForSubtree(parentComponent) {\n  if (!parentComponent) {\n    return emptyObject;\n  }\n\n  var instance = ReactInstanceMap_1.get(parentComponent);\n  if (typeof instance.tag === 'number') {\n    return getContextFiber(instance);\n  } else {\n    return instance._processChildContext(instance._context);\n  }\n}\n\ngetContextForSubtree._injectFiber = function (fn) {\n  getContextFiber = fn;\n};\n\nvar getContextForSubtree_1 = getContextForSubtree;\n\nvar addTopLevelUpdate = ReactFiberUpdateQueue.addTopLevelUpdate;\n\nvar findCurrentUnmaskedContext = ReactFiberContext.findCurrentUnmaskedContext;\nvar isContextProvider = ReactFiberContext.isContextProvider;\nvar processChildContext = ReactFiberContext.processChildContext;\n\nvar createFiberRoot = ReactFiberRoot.createFiberRoot;\n\n\n\nvar HostComponent$3 = ReactTypeOfWork.HostComponent;\n\n{\n  var warning$18 = require$$0;\n  var ReactFiberInstrumentation = ReactFiberInstrumentation_1;\n  var ReactDebugCurrentFiber$1 = ReactDebugCurrentFiber_1;\n  var getComponentName$4 = getComponentName_1;\n}\n\nvar findCurrentHostFiber$1 = ReactFiberTreeReflection.findCurrentHostFiber;\nvar findCurrentHostFiberWithNoPortals$1 = ReactFiberTreeReflection.findCurrentHostFiberWithNoPortals;\n\n\n\ngetContextForSubtree_1._injectFiber(function (fiber) {\n  var parentContext = findCurrentUnmaskedContext(fiber);\n  return isContextProvider(fiber) ? processChildContext(fiber, parentContext, false) : parentContext;\n});\n\nvar ReactFiberReconciler = function (config) {\n  var getPublicInstance = config.getPublicInstance;\n\n  var _ReactFiberScheduler = ReactFiberScheduler(config),\n      scheduleUpdate = _ReactFiberScheduler.scheduleUpdate,\n      getPriorityContext = _ReactFiberScheduler.getPriorityContext,\n      batchedUpdates = _ReactFiberScheduler.batchedUpdates,\n      unbatchedUpdates = _ReactFiberScheduler.unbatchedUpdates,\n      flushSync = _ReactFiberScheduler.flushSync,\n      deferredUpdates = _ReactFiberScheduler.deferredUpdates;\n\n  function scheduleTopLevelUpdate(current, element, callback) {\n    {\n      if (ReactDebugCurrentFiber$1.phase === 'render' && ReactDebugCurrentFiber$1.current !== null) {\n        warning$18(false, 'Render methods should be a pure function of props and state; ' + 'triggering nested component updates from render is not allowed. ' + 'If necessary, trigger nested updates in componentDidUpdate.\\n\\n' + 'Check the render method of %s.', getComponentName$4(ReactDebugCurrentFiber$1.current) || 'Unknown');\n      }\n    }\n\n    // Check if the top-level element is an async wrapper component. If so, treat\n    // updates to the root as async. This is a bit weird but lets us avoid a separate\n    // `renderAsync` API.\n    var forceAsync = ReactFeatureFlags_1.enableAsyncSubtreeAPI && element != null && element.type != null && element.type.prototype != null && element.type.prototype.unstable_isAsyncReactComponent === true;\n    var priorityLevel = getPriorityContext(current, forceAsync);\n    var nextState = { element: element };\n    callback = callback === undefined ? null : callback;\n    {\n      warning$18(callback === null || typeof callback === 'function', 'render(...): Expected the last optional `callback` argument to be a ' + 'function. Instead received: %s.', callback);\n    }\n    addTopLevelUpdate(current, nextState, callback, priorityLevel);\n    scheduleUpdate(current, priorityLevel);\n  }\n\n  return {\n    createContainer: function (containerInfo) {\n      return createFiberRoot(containerInfo);\n    },\n    updateContainer: function (element, container, parentComponent, callback) {\n      // TODO: If this is a nested container, this won't be the root.\n      var current = container.current;\n\n      {\n        if (ReactFiberInstrumentation.debugTool) {\n          if (current.alternate === null) {\n            ReactFiberInstrumentation.debugTool.onMountContainer(container);\n          } else if (element === null) {\n            ReactFiberInstrumentation.debugTool.onUnmountContainer(container);\n          } else {\n            ReactFiberInstrumentation.debugTool.onUpdateContainer(container);\n          }\n        }\n      }\n\n      var context = getContextForSubtree_1(parentComponent);\n      if (container.context === null) {\n        container.context = context;\n      } else {\n        container.pendingContext = context;\n      }\n\n      scheduleTopLevelUpdate(current, element, callback);\n    },\n\n\n    batchedUpdates: batchedUpdates,\n\n    unbatchedUpdates: unbatchedUpdates,\n\n    deferredUpdates: deferredUpdates,\n\n    flushSync: flushSync,\n\n    getPublicRootInstance: function (container) {\n      var containerFiber = container.current;\n      if (!containerFiber.child) {\n        return null;\n      }\n      switch (containerFiber.child.tag) {\n        case HostComponent$3:\n          return getPublicInstance(containerFiber.child.stateNode);\n        default:\n          return containerFiber.child.stateNode;\n      }\n    },\n    findHostInstance: function (fiber) {\n      var hostFiber = findCurrentHostFiber$1(fiber);\n      if (hostFiber === null) {\n        return null;\n      }\n      return hostFiber.stateNode;\n    },\n    findHostInstanceWithNoPortals: function (fiber) {\n      var hostFiber = findCurrentHostFiberWithNoPortals$1(fiber);\n      if (hostFiber === null) {\n        return null;\n      }\n      return hostFiber.stateNode;\n    }\n  };\n};\n\nvar TEXT_NODE$3 = HTMLNodeType_1.TEXT_NODE;\n\n/**\n * Given any node return the first leaf node without children.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {DOMElement|DOMTextNode}\n */\n\n\nfunction getLeafNode(node) {\n  while (node && node.firstChild) {\n    node = node.firstChild;\n  }\n  return node;\n}\n\n/**\n * Get the next sibling within a container. This will walk up the\n * DOM if a node's siblings have been exhausted.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {?DOMElement|DOMTextNode}\n */\nfunction getSiblingNode(node) {\n  while (node) {\n    if (node.nextSibling) {\n      return node.nextSibling;\n    }\n    node = node.parentNode;\n  }\n}\n\n/**\n * Get object describing the nodes which contain characters at offset.\n *\n * @param {DOMElement|DOMTextNode} root\n * @param {number} offset\n * @return {?object}\n */\nfunction getNodeForCharacterOffset(root, offset) {\n  var node = getLeafNode(root);\n  var nodeStart = 0;\n  var nodeEnd = 0;\n\n  while (node) {\n    if (node.nodeType === TEXT_NODE$3) {\n      nodeEnd = nodeStart + node.textContent.length;\n\n      if (nodeStart <= offset && nodeEnd >= offset) {\n        return {\n          node: node,\n          offset: offset - nodeStart\n        };\n      }\n\n      nodeStart = nodeEnd;\n    }\n\n    node = getLeafNode(getSiblingNode(node));\n  }\n}\n\nvar getNodeForCharacterOffset_1 = getNodeForCharacterOffset;\n\nvar contentKey = null;\n\n/**\n * Gets the key used to access text content on a DOM node.\n *\n * @return {?string} Key used to access text content.\n * @internal\n */\nfunction getTextContentAccessor() {\n  if (!contentKey && ExecutionEnvironment.canUseDOM) {\n    // Prefer textContent to innerText because many browsers support both but\n    // SVG <text> elements don't support innerText even when <div> does.\n    contentKey = 'textContent' in document.documentElement ? 'textContent' : 'innerText';\n  }\n  return contentKey;\n}\n\nvar getTextContentAccessor_1 = getTextContentAccessor;\n\n/**\n * While `isCollapsed` is available on the Selection object and `collapsed`\n * is available on the Range object, IE11 sometimes gets them wrong.\n * If the anchor/focus nodes and offsets are the same, the range is collapsed.\n */\nfunction isCollapsed(anchorNode, anchorOffset, focusNode$$1, focusOffset) {\n  return anchorNode === focusNode$$1 && anchorOffset === focusOffset;\n}\n\n/**\n * @param {DOMElement} node\n * @return {?object}\n */\nfunction getModernOffsets(node) {\n  var selection = window.getSelection && window.getSelection();\n\n  if (!selection || selection.rangeCount === 0) {\n    return null;\n  }\n\n  var anchorNode = selection.anchorNode;\n  var anchorOffset = selection.anchorOffset;\n  var focusNode$$1 = selection.focusNode;\n  var focusOffset = selection.focusOffset;\n\n  var currentRange = selection.getRangeAt(0);\n\n  // In Firefox, range.startContainer and range.endContainer can be \"anonymous\n  // divs\", e.g. the up/down buttons on an <input type=\"number\">. Anonymous\n  // divs do not seem to expose properties, triggering a \"Permission denied\n  // error\" if any of its properties are accessed. The only seemingly possible\n  // way to avoid erroring is to access a property that typically works for\n  // non-anonymous divs and catch any error that may otherwise arise. See\n  // https://bugzilla.mozilla.org/show_bug.cgi?id=208427\n  try {\n    /* eslint-disable no-unused-expressions */\n    currentRange.startContainer.nodeType;\n    currentRange.endContainer.nodeType;\n    /* eslint-enable no-unused-expressions */\n  } catch (e) {\n    return null;\n  }\n\n  // If the node and offset values are the same, the selection is collapsed.\n  // `Selection.isCollapsed` is available natively, but IE sometimes gets\n  // this value wrong.\n  var isSelectionCollapsed = isCollapsed(selection.anchorNode, selection.anchorOffset, selection.focusNode, selection.focusOffset);\n\n  var rangeLength = isSelectionCollapsed ? 0 : currentRange.toString().length;\n\n  var tempRange = currentRange.cloneRange();\n  tempRange.selectNodeContents(node);\n  tempRange.setEnd(currentRange.startContainer, currentRange.startOffset);\n\n  var isTempRangeCollapsed = isCollapsed(tempRange.startContainer, tempRange.startOffset, tempRange.endContainer, tempRange.endOffset);\n\n  var start = isTempRangeCollapsed ? 0 : tempRange.toString().length;\n  var end = start + rangeLength;\n\n  // Detect whether the selection is backward.\n  var detectionRange = document.createRange();\n  detectionRange.setStart(anchorNode, anchorOffset);\n  detectionRange.setEnd(focusNode$$1, focusOffset);\n  var isBackward = detectionRange.collapsed;\n\n  return {\n    start: isBackward ? end : start,\n    end: isBackward ? start : end\n  };\n}\n\n/**\n * In modern non-IE browsers, we can support both forward and backward\n * selections.\n *\n * Note: IE10+ supports the Selection object, but it does not support\n * the `extend` method, which means that even in modern IE, it's not possible\n * to programmatically create a backward selection. Thus, for all IE\n * versions, we use the old IE API to create our selections.\n *\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\nfunction setModernOffsets(node, offsets) {\n  if (!window.getSelection) {\n    return;\n  }\n\n  var selection = window.getSelection();\n  var length = node[getTextContentAccessor_1()].length;\n  var start = Math.min(offsets.start, length);\n  var end = offsets.end === undefined ? start : Math.min(offsets.end, length);\n\n  // IE 11 uses modern selection, but doesn't support the extend method.\n  // Flip backward selections, so we can set with a single range.\n  if (!selection.extend && start > end) {\n    var temp = end;\n    end = start;\n    start = temp;\n  }\n\n  var startMarker = getNodeForCharacterOffset_1(node, start);\n  var endMarker = getNodeForCharacterOffset_1(node, end);\n\n  if (startMarker && endMarker) {\n    var range = document.createRange();\n    range.setStart(startMarker.node, startMarker.offset);\n    selection.removeAllRanges();\n\n    if (start > end) {\n      selection.addRange(range);\n      selection.extend(endMarker.node, endMarker.offset);\n    } else {\n      range.setEnd(endMarker.node, endMarker.offset);\n      selection.addRange(range);\n    }\n  }\n}\n\nvar ReactDOMSelection = {\n  /**\n   * @param {DOMElement} node\n   */\n  getOffsets: getModernOffsets,\n\n  /**\n   * @param {DOMElement|DOMTextNode} node\n   * @param {object} offsets\n   */\n  setOffsets: setModernOffsets\n};\n\nvar ReactDOMSelection_1 = ReactDOMSelection;\n\nvar ELEMENT_NODE$2 = HTMLNodeType_1.ELEMENT_NODE;\n\n\n\n\n\nfunction isInDocument(node) {\n  return containsNode(document.documentElement, node);\n}\n\n/**\n * @ReactInputSelection: React input selection module. Based on Selection.js,\n * but modified to be suitable for react and has a couple of bug fixes (doesn't\n * assume buttons have range selections allowed).\n * Input selection module for React.\n */\nvar ReactInputSelection = {\n  hasSelectionCapabilities: function (elem) {\n    var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n    return nodeName && (nodeName === 'input' && elem.type === 'text' || nodeName === 'textarea' || elem.contentEditable === 'true');\n  },\n\n  getSelectionInformation: function () {\n    var focusedElem = getActiveElement();\n    return {\n      focusedElem: focusedElem,\n      selectionRange: ReactInputSelection.hasSelectionCapabilities(focusedElem) ? ReactInputSelection.getSelection(focusedElem) : null\n    };\n  },\n\n  /**\n   * @restoreSelection: If any selection information was potentially lost,\n   * restore it. This is useful when performing operations that could remove dom\n   * nodes and place them back in, resulting in focus being lost.\n   */\n  restoreSelection: function (priorSelectionInformation) {\n    var curFocusedElem = getActiveElement();\n    var priorFocusedElem = priorSelectionInformation.focusedElem;\n    var priorSelectionRange = priorSelectionInformation.selectionRange;\n    if (curFocusedElem !== priorFocusedElem && isInDocument(priorFocusedElem)) {\n      if (ReactInputSelection.hasSelectionCapabilities(priorFocusedElem)) {\n        ReactInputSelection.setSelection(priorFocusedElem, priorSelectionRange);\n      }\n\n      // Focusing a node can change the scroll position, which is undesirable\n      var ancestors = [];\n      var ancestor = priorFocusedElem;\n      while (ancestor = ancestor.parentNode) {\n        if (ancestor.nodeType === ELEMENT_NODE$2) {\n          ancestors.push({\n            element: ancestor,\n            left: ancestor.scrollLeft,\n            top: ancestor.scrollTop\n          });\n        }\n      }\n\n      focusNode(priorFocusedElem);\n\n      for (var i = 0; i < ancestors.length; i++) {\n        var info = ancestors[i];\n        info.element.scrollLeft = info.left;\n        info.element.scrollTop = info.top;\n      }\n    }\n  },\n\n  /**\n   * @getSelection: Gets the selection bounds of a focused textarea, input or\n   * contentEditable node.\n   * -@input: Look up selection bounds of this input\n   * -@return {start: selectionStart, end: selectionEnd}\n   */\n  getSelection: function (input) {\n    var selection;\n\n    if ('selectionStart' in input) {\n      // Modern browser with input or textarea.\n      selection = {\n        start: input.selectionStart,\n        end: input.selectionEnd\n      };\n    } else {\n      // Content editable or old IE textarea.\n      selection = ReactDOMSelection_1.getOffsets(input);\n    }\n\n    return selection || { start: 0, end: 0 };\n  },\n\n  /**\n   * @setSelection: Sets the selection bounds of a textarea or input and focuses\n   * the input.\n   * -@input     Set selection bounds of this input or textarea\n   * -@offsets   Object of same form that is returned from get*\n   */\n  setSelection: function (input, offsets) {\n    var start = offsets.start;\n    var end = offsets.end;\n    if (end === undefined) {\n      end = start;\n    }\n\n    if ('selectionStart' in input) {\n      input.selectionStart = start;\n      input.selectionEnd = Math.min(end, input.value.length);\n    } else {\n      ReactDOMSelection_1.setOffsets(input, offsets);\n    }\n  }\n};\n\nvar ReactInputSelection_1 = ReactInputSelection;\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 * @providesModule ReactVersion\n */\n\nvar ReactVersion = '16.0.0';\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 * @providesModule findDOMNode\n * \n */\n\n\n\nvar ELEMENT_NODE$3 = HTMLNodeType_1.ELEMENT_NODE;\n\nvar ReactCurrentOwner$3 = ReactGlobalSharedState_1.ReactCurrentOwner;\n\n\n\n\n{\n  var warning$27 = require$$0;\n}\n\nvar findFiber = function (arg) {\n  invariant(false, 'Missing injection for fiber findDOMNode');\n};\nvar findStack = function (arg) {\n  invariant(false, 'Missing injection for stack findDOMNode');\n};\n\nvar findDOMNode = function (componentOrElement) {\n  {\n    var owner = ReactCurrentOwner$3.current;\n    if (owner !== null) {\n      var isFiber = typeof owner.tag === 'number';\n      var warnedAboutRefsInRender = isFiber ? owner.stateNode._warnedAboutRefsInRender : owner._warnedAboutRefsInRender;\n      warning$27(warnedAboutRefsInRender, '%s is accessing findDOMNode inside its render(). ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', getComponentName_1(owner) || 'A component');\n      if (isFiber) {\n        owner.stateNode._warnedAboutRefsInRender = true;\n      } else {\n        owner._warnedAboutRefsInRender = true;\n      }\n    }\n  }\n  if (componentOrElement == null) {\n    return null;\n  }\n  if (componentOrElement.nodeType === ELEMENT_NODE$3) {\n    return componentOrElement;\n  }\n\n  var inst = ReactInstanceMap_1.get(componentOrElement);\n  if (inst) {\n    if (typeof inst.tag === 'number') {\n      return findFiber(inst);\n    } else {\n      return findStack(inst);\n    }\n  }\n\n  if (typeof componentOrElement.render === 'function') {\n    invariant(false, 'Unable to find node on an unmounted component.');\n  } else {\n    invariant(false, 'Element appears to be neither ReactComponent nor DOMNode. Keys: %s', Object.keys(componentOrElement));\n  }\n};\n\nfindDOMNode._injectFiber = function (fn) {\n  findFiber = fn;\n};\nfindDOMNode._injectStack = function (fn) {\n  findStack = fn;\n};\n\nvar findDOMNode_1 = findDOMNode;\n\n/**\n * Copyright (c) 2014-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 * @providesModule lowPriorityWarning\n */\n\n/**\n * Forked from fbjs/warning:\n * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js\n *\n * Only change is we use console.warn instead of console.error,\n * and do nothing when 'console' is not supported.\n * This really simplifies the code.\n * ---\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar lowPriorityWarning$1 = function () {};\n\n{\n  var printWarning = function (format) {\n    for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    var argIndex = 0;\n    var message = 'Warning: ' + format.replace(/%s/g, function () {\n      return args[argIndex++];\n    });\n    if (typeof console !== 'undefined') {\n      console.warn(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) {}\n  };\n\n  lowPriorityWarning$1 = function (condition, format) {\n    if (format === undefined) {\n      throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n    }\n    if (!condition) {\n      for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n        args[_key2 - 2] = arguments[_key2];\n      }\n\n      printWarning.apply(undefined, [format].concat(args));\n    }\n  };\n}\n\nvar lowPriorityWarning_1 = lowPriorityWarning$1;\n\nvar validateDOMNesting$1 = emptyFunction;\n\n{\n  var warning$28 = require$$0;\n\n  var _require$13 = ReactDebugCurrentFiber_1,\n      getCurrentFiberStackAddendum$6 = _require$13.getCurrentFiberStackAddendum;\n\n  // This validation code was written based on the HTML5 parsing spec:\n  // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n  //\n  // Note: this does not catch all invalid nesting, nor does it try to (as it's\n  // not clear what practical benefit doing so provides); instead, we warn only\n  // for cases where the parser will give a parse tree differing from what React\n  // intended. For example, <b><div></div></b> is invalid but we don't warn\n  // because it still parses correctly; we do warn for other cases like nested\n  // <p> tags where the beginning of the second element implicitly closes the\n  // first, causing a confusing mess.\n\n  // https://html.spec.whatwg.org/multipage/syntax.html#special\n\n\n  var specialTags = ['address', 'applet', 'area', 'article', 'aside', 'base', 'basefont', 'bgsound', 'blockquote', 'body', 'br', 'button', 'caption', 'center', 'col', 'colgroup', 'dd', 'details', 'dir', 'div', 'dl', 'dt', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'frame', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'iframe', 'img', 'input', 'isindex', 'li', 'link', 'listing', 'main', 'marquee', 'menu', 'menuitem', 'meta', 'nav', 'noembed', 'noframes', 'noscript', 'object', 'ol', 'p', 'param', 'plaintext', 'pre', 'script', 'section', 'select', 'source', 'style', 'summary', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'title', 'tr', 'track', 'ul', 'wbr', 'xmp'];\n\n  // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n  var inScopeTags = ['applet', 'caption', 'html', 'table', 'td', 'th', 'marquee', 'object', 'template',\n\n  // https://html.spec.whatwg.org/multipage/syntax.html#html-integration-point\n  // TODO: Distinguish by namespace here -- for <title>, including it here\n  // errs on the side of fewer warnings\n  'foreignObject', 'desc', 'title'];\n\n  // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-button-scope\n  var buttonScopeTags = inScopeTags.concat(['button']);\n\n  // https://html.spec.whatwg.org/multipage/syntax.html#generate-implied-end-tags\n  var impliedEndTags = ['dd', 'dt', 'li', 'option', 'optgroup', 'p', 'rp', 'rt'];\n\n  var emptyAncestorInfo = {\n    current: null,\n\n    formTag: null,\n    aTagInScope: null,\n    buttonTagInScope: null,\n    nobrTagInScope: null,\n    pTagInButtonScope: null,\n\n    listItemTagAutoclosing: null,\n    dlItemTagAutoclosing: null\n  };\n\n  var updatedAncestorInfo$1 = function (oldInfo, tag, instance) {\n    var ancestorInfo = _assign({}, oldInfo || emptyAncestorInfo);\n    var info = { tag: tag, instance: instance };\n\n    if (inScopeTags.indexOf(tag) !== -1) {\n      ancestorInfo.aTagInScope = null;\n      ancestorInfo.buttonTagInScope = null;\n      ancestorInfo.nobrTagInScope = null;\n    }\n    if (buttonScopeTags.indexOf(tag) !== -1) {\n      ancestorInfo.pTagInButtonScope = null;\n    }\n\n    // See rules for 'li', 'dd', 'dt' start tags in\n    // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n    if (specialTags.indexOf(tag) !== -1 && tag !== 'address' && tag !== 'div' && tag !== 'p') {\n      ancestorInfo.listItemTagAutoclosing = null;\n      ancestorInfo.dlItemTagAutoclosing = null;\n    }\n\n    ancestorInfo.current = info;\n\n    if (tag === 'form') {\n      ancestorInfo.formTag = info;\n    }\n    if (tag === 'a') {\n      ancestorInfo.aTagInScope = info;\n    }\n    if (tag === 'button') {\n      ancestorInfo.buttonTagInScope = info;\n    }\n    if (tag === 'nobr') {\n      ancestorInfo.nobrTagInScope = info;\n    }\n    if (tag === 'p') {\n      ancestorInfo.pTagInButtonScope = info;\n    }\n    if (tag === 'li') {\n      ancestorInfo.listItemTagAutoclosing = info;\n    }\n    if (tag === 'dd' || tag === 'dt') {\n      ancestorInfo.dlItemTagAutoclosing = info;\n    }\n\n    return ancestorInfo;\n  };\n\n  /**\n   * Returns whether\n   */\n  var isTagValidWithParent = function (tag, parentTag) {\n    // First, let's check if we're in an unusual parsing mode...\n    switch (parentTag) {\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inselect\n      case 'select':\n        return tag === 'option' || tag === 'optgroup' || tag === '#text';\n      case 'optgroup':\n        return tag === 'option' || tag === '#text';\n      // Strictly speaking, seeing an <option> doesn't mean we're in a <select>\n      // but\n      case 'option':\n        return tag === '#text';\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intd\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incaption\n      // No special behavior since these rules fall back to \"in body\" mode for\n      // all except special table nodes which cause bad parsing behavior anyway.\n\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intr\n      case 'tr':\n        return tag === 'th' || tag === 'td' || tag === 'style' || tag === 'script' || tag === 'template';\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intbody\n      case 'tbody':\n      case 'thead':\n      case 'tfoot':\n        return tag === 'tr' || tag === 'style' || tag === 'script' || tag === 'template';\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incolgroup\n      case 'colgroup':\n        return tag === 'col' || tag === 'template';\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intable\n      case 'table':\n        return tag === 'caption' || tag === 'colgroup' || tag === 'tbody' || tag === 'tfoot' || tag === 'thead' || tag === 'style' || tag === 'script' || tag === 'template';\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inhead\n      case 'head':\n        return tag === 'base' || tag === 'basefont' || tag === 'bgsound' || tag === 'link' || tag === 'meta' || tag === 'title' || tag === 'noscript' || tag === 'noframes' || tag === 'style' || tag === 'script' || tag === 'template';\n      // https://html.spec.whatwg.org/multipage/semantics.html#the-html-element\n      case 'html':\n        return tag === 'head' || tag === 'body';\n      case '#document':\n        return tag === 'html';\n    }\n\n    // Probably in the \"in body\" parsing mode, so we outlaw only tag combos\n    // where the parsing rules cause implicit opens or closes to be added.\n    // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n    switch (tag) {\n      case 'h1':\n      case 'h2':\n      case 'h3':\n      case 'h4':\n      case 'h5':\n      case 'h6':\n        return parentTag !== 'h1' && parentTag !== 'h2' && parentTag !== 'h3' && parentTag !== 'h4' && parentTag !== 'h5' && parentTag !== 'h6';\n\n      case 'rp':\n      case 'rt':\n        return impliedEndTags.indexOf(parentTag) === -1;\n\n      case 'body':\n      case 'caption':\n      case 'col':\n      case 'colgroup':\n      case 'frame':\n      case 'head':\n      case 'html':\n      case 'tbody':\n      case 'td':\n      case 'tfoot':\n      case 'th':\n      case 'thead':\n      case 'tr':\n        // These tags are only valid with a few parents that have special child\n        // parsing rules -- if we're down here, then none of those matched and\n        // so we allow it only if we don't know what the parent is, as all other\n        // cases are invalid.\n        return parentTag == null;\n    }\n\n    return true;\n  };\n\n  /**\n   * Returns whether\n   */\n  var findInvalidAncestorForTag = function (tag, ancestorInfo) {\n    switch (tag) {\n      case 'address':\n      case 'article':\n      case 'aside':\n      case 'blockquote':\n      case 'center':\n      case 'details':\n      case 'dialog':\n      case 'dir':\n      case 'div':\n      case 'dl':\n      case 'fieldset':\n      case 'figcaption':\n      case 'figure':\n      case 'footer':\n      case 'header':\n      case 'hgroup':\n      case 'main':\n      case 'menu':\n      case 'nav':\n      case 'ol':\n      case 'p':\n      case 'section':\n      case 'summary':\n      case 'ul':\n      case 'pre':\n      case 'listing':\n      case 'table':\n      case 'hr':\n      case 'xmp':\n      case 'h1':\n      case 'h2':\n      case 'h3':\n      case 'h4':\n      case 'h5':\n      case 'h6':\n        return ancestorInfo.pTagInButtonScope;\n\n      case 'form':\n        return ancestorInfo.formTag || ancestorInfo.pTagInButtonScope;\n\n      case 'li':\n        return ancestorInfo.listItemTagAutoclosing;\n\n      case 'dd':\n      case 'dt':\n        return ancestorInfo.dlItemTagAutoclosing;\n\n      case 'button':\n        return ancestorInfo.buttonTagInScope;\n\n      case 'a':\n        // Spec says something about storing a list of markers, but it sounds\n        // equivalent to this check.\n        return ancestorInfo.aTagInScope;\n\n      case 'nobr':\n        return ancestorInfo.nobrTagInScope;\n    }\n\n    return null;\n  };\n\n  /**\n   * Given a ReactCompositeComponent instance, return a list of its recursive\n   * owners, starting at the root and ending with the instance itself.\n   */\n  var findOwnerStack = function (instance) {\n    if (!instance) {\n      return [];\n    }\n\n    var stack = [];\n    do {\n      stack.push(instance);\n    } while (instance = instance._currentElement._owner);\n    stack.reverse();\n    return stack;\n  };\n\n  var getOwnerInfo = function (childInstance, childTag, ancestorInstance, ancestorTag, isParent) {\n    var childOwner = childInstance && childInstance._currentElement._owner;\n    var ancestorOwner = ancestorInstance && ancestorInstance._currentElement._owner;\n\n    var childOwners = findOwnerStack(childOwner);\n    var ancestorOwners = findOwnerStack(ancestorOwner);\n\n    var minStackLen = Math.min(childOwners.length, ancestorOwners.length);\n    var i;\n\n    var deepestCommon = -1;\n    for (i = 0; i < minStackLen; i++) {\n      if (childOwners[i] === ancestorOwners[i]) {\n        deepestCommon = i;\n      } else {\n        break;\n      }\n    }\n\n    var UNKNOWN = '(unknown)';\n    var childOwnerNames = childOwners.slice(deepestCommon + 1).map(function (inst) {\n      return getComponentName_1(inst) || UNKNOWN;\n    });\n    var ancestorOwnerNames = ancestorOwners.slice(deepestCommon + 1).map(function (inst) {\n      return getComponentName_1(inst) || UNKNOWN;\n    });\n    var ownerInfo = [].concat(\n    // If the parent and child instances have a common owner ancestor, start\n    // with that -- otherwise we just start with the parent's owners.\n    deepestCommon !== -1 ? getComponentName_1(childOwners[deepestCommon]) || UNKNOWN : [], ancestorOwnerNames, ancestorTag,\n    // If we're warning about an invalid (non-parent) ancestry, add '...'\n    isParent ? [] : ['...'], childOwnerNames, childTag).join(' > ');\n\n    return ownerInfo;\n  };\n\n  var didWarn = {};\n\n  validateDOMNesting$1 = function (childTag, childText, childInstance, ancestorInfo) {\n    ancestorInfo = ancestorInfo || emptyAncestorInfo;\n    var parentInfo = ancestorInfo.current;\n    var parentTag = parentInfo && parentInfo.tag;\n\n    if (childText != null) {\n      warning$28(childTag == null, 'validateDOMNesting: when childText is passed, childTag should be null');\n      childTag = '#text';\n    }\n\n    var invalidParent = isTagValidWithParent(childTag, parentTag) ? null : parentInfo;\n    var invalidAncestor = invalidParent ? null : findInvalidAncestorForTag(childTag, ancestorInfo);\n    var invalidParentOrAncestor = invalidParent || invalidAncestor;\n    if (!invalidParentOrAncestor) {\n      return;\n    }\n\n    var ancestorInstance = invalidParentOrAncestor.instance;\n    var ancestorTag = invalidParentOrAncestor.tag;\n    var addendum;\n\n    if (childInstance != null) {\n      addendum = ' See ' + getOwnerInfo(childInstance, childTag, ancestorInstance, ancestorTag, !!invalidParent) + '.';\n    } else {\n      addendum = getCurrentFiberStackAddendum$6();\n    }\n\n    var warnKey = !!invalidParent + '|' + childTag + '|' + ancestorTag + '|' + addendum;\n    if (didWarn[warnKey]) {\n      return;\n    }\n    didWarn[warnKey] = true;\n\n    var tagDisplayName = childTag;\n    var whitespaceInfo = '';\n    if (childTag === '#text') {\n      if (/\\S/.test(childText)) {\n        tagDisplayName = 'Text nodes';\n      } else {\n        tagDisplayName = 'Whitespace text nodes';\n        whitespaceInfo = \" Make sure you don't have any extra whitespace between tags on \" + 'each line of your source code.';\n      }\n    } else {\n      tagDisplayName = '<' + childTag + '>';\n    }\n\n    if (invalidParent) {\n      var info = '';\n      if (ancestorTag === 'table' && childTag === 'tr') {\n        info += ' Add a <tbody> to your code to match the DOM tree generated by ' + 'the browser.';\n      }\n      warning$28(false, 'validateDOMNesting(...): %s cannot appear as a child of <%s>.%s%s%s', tagDisplayName, ancestorTag, whitespaceInfo, info, addendum);\n    } else {\n      warning$28(false, 'validateDOMNesting(...): %s cannot appear as a descendant of ' + '<%s>.%s', tagDisplayName, ancestorTag, addendum);\n    }\n  };\n\n  validateDOMNesting$1.updatedAncestorInfo = updatedAncestorInfo$1;\n\n  // For testing\n  validateDOMNesting$1.isTagValidInContext = function (tag, ancestorInfo) {\n    ancestorInfo = ancestorInfo || emptyAncestorInfo;\n    var parentInfo = ancestorInfo.current;\n    var parentTag = parentInfo && parentInfo.tag;\n    return isTagValidWithParent(tag, parentTag) && !findInvalidAncestorForTag(tag, ancestorInfo);\n  };\n}\n\nvar validateDOMNesting_1 = validateDOMNesting$1;\n\nvar HostComponent$11 = ReactTypeOfWork.HostComponent;\n\nfunction getParent(inst) {\n  if (inst._hostParent !== undefined) {\n    return inst._hostParent;\n  }\n  if (typeof inst.tag === 'number') {\n    do {\n      inst = inst['return'];\n      // TODO: If this is a HostRoot we might want to bail out.\n      // That is depending on if we want nested subtrees (layers) to bubble\n      // events to their parent. We could also go through parentNode on the\n      // host node but that wouldn't work for React Native and doesn't let us\n      // do the portal feature.\n    } while (inst && inst.tag !== HostComponent$11);\n    if (inst) {\n      return inst;\n    }\n  }\n  return null;\n}\n\n/**\n * Return the lowest common ancestor of A and B, or null if they are in\n * different trees.\n */\nfunction getLowestCommonAncestor(instA, instB) {\n  var depthA = 0;\n  for (var tempA = instA; tempA; tempA = getParent(tempA)) {\n    depthA++;\n  }\n  var depthB = 0;\n  for (var tempB = instB; tempB; tempB = getParent(tempB)) {\n    depthB++;\n  }\n\n  // If A is deeper, crawl up.\n  while (depthA - depthB > 0) {\n    instA = getParent(instA);\n    depthA--;\n  }\n\n  // If B is deeper, crawl up.\n  while (depthB - depthA > 0) {\n    instB = getParent(instB);\n    depthB--;\n  }\n\n  // Walk in lockstep until we find a match.\n  var depth = depthA;\n  while (depth--) {\n    if (instA === instB || instA === instB.alternate) {\n      return instA;\n    }\n    instA = getParent(instA);\n    instB = getParent(instB);\n  }\n  return null;\n}\n\n/**\n * Return if A is an ancestor of B.\n */\nfunction isAncestor(instA, instB) {\n  while (instB) {\n    if (instA === instB || instA === instB.alternate) {\n      return true;\n    }\n    instB = getParent(instB);\n  }\n  return false;\n}\n\n/**\n * Return the parent instance of the passed-in instance.\n */\nfunction getParentInstance(inst) {\n  return getParent(inst);\n}\n\n/**\n * Simulates the traversal of a two-phase, capture/bubble event dispatch.\n */\nfunction traverseTwoPhase(inst, fn, arg) {\n  var path = [];\n  while (inst) {\n    path.push(inst);\n    inst = getParent(inst);\n  }\n  var i;\n  for (i = path.length; i-- > 0;) {\n    fn(path[i], 'captured', arg);\n  }\n  for (i = 0; i < path.length; i++) {\n    fn(path[i], 'bubbled', arg);\n  }\n}\n\n/**\n * Traverses the ID hierarchy and invokes the supplied `cb` on any IDs that\n * should would receive a `mouseEnter` or `mouseLeave` event.\n *\n * Does not invoke the callback on the nearest common ancestor because nothing\n * \"entered\" or \"left\" that element.\n */\nfunction traverseEnterLeave(from, to, fn, argFrom, argTo) {\n  var common = from && to ? getLowestCommonAncestor(from, to) : null;\n  var pathFrom = [];\n  while (from && from !== common) {\n    pathFrom.push(from);\n    from = getParent(from);\n  }\n  var pathTo = [];\n  while (to && to !== common) {\n    pathTo.push(to);\n    to = getParent(to);\n  }\n  var i;\n  for (i = 0; i < pathFrom.length; i++) {\n    fn(pathFrom[i], 'bubbled', argFrom);\n  }\n  for (i = pathTo.length; i-- > 0;) {\n    fn(pathTo[i], 'captured', argTo);\n  }\n}\n\nvar ReactTreeTraversal = {\n  isAncestor: isAncestor,\n  getLowestCommonAncestor: getLowestCommonAncestor,\n  getParentInstance: getParentInstance,\n  traverseTwoPhase: traverseTwoPhase,\n  traverseEnterLeave: traverseEnterLeave\n};\n\nvar getListener = EventPluginHub_1.getListener;\n\n{\n  var warning$29 = require$$0;\n}\n\n/**\n * Some event types have a notion of different registration names for different\n * \"phases\" of propagation. This finds listeners by a given phase.\n */\nfunction listenerAtPhase(inst, event, propagationPhase) {\n  var registrationName = event.dispatchConfig.phasedRegistrationNames[propagationPhase];\n  return getListener(inst, registrationName);\n}\n\n/**\n * Tags a `SyntheticEvent` with dispatched listeners. Creating this function\n * here, allows us to not have to bind or create functions for each event.\n * Mutating the event's members allows us to not have to create a wrapping\n * \"dispatch\" object that pairs the event with the listener.\n */\nfunction accumulateDirectionalDispatches(inst, phase, event) {\n  {\n    warning$29(inst, 'Dispatching inst must not be null');\n  }\n  var listener = listenerAtPhase(inst, event, phase);\n  if (listener) {\n    event._dispatchListeners = accumulateInto_1(event._dispatchListeners, listener);\n    event._dispatchInstances = accumulateInto_1(event._dispatchInstances, inst);\n  }\n}\n\n/**\n * Collect dispatches (must be entirely collected before dispatching - see unit\n * tests). Lazily allocate the array to conserve memory.  We must loop through\n * each event and perform the traversal for each one. We cannot perform a\n * single traversal for the entire collection of events because each event may\n * have a different target.\n */\nfunction accumulateTwoPhaseDispatchesSingle(event) {\n  if (event && event.dispatchConfig.phasedRegistrationNames) {\n    ReactTreeTraversal.traverseTwoPhase(event._targetInst, accumulateDirectionalDispatches, event);\n  }\n}\n\n/**\n * Same as `accumulateTwoPhaseDispatchesSingle`, but skips over the targetID.\n */\nfunction accumulateTwoPhaseDispatchesSingleSkipTarget(event) {\n  if (event && event.dispatchConfig.phasedRegistrationNames) {\n    var targetInst = event._targetInst;\n    var parentInst = targetInst ? ReactTreeTraversal.getParentInstance(targetInst) : null;\n    ReactTreeTraversal.traverseTwoPhase(parentInst, accumulateDirectionalDispatches, event);\n  }\n}\n\n/**\n * Accumulates without regard to direction, does not look for phased\n * registration names. Same as `accumulateDirectDispatchesSingle` but without\n * requiring that the `dispatchMarker` be the same as the dispatched ID.\n */\nfunction accumulateDispatches(inst, ignoredDirection, event) {\n  if (inst && event && event.dispatchConfig.registrationName) {\n    var registrationName = event.dispatchConfig.registrationName;\n    var listener = getListener(inst, registrationName);\n    if (listener) {\n      event._dispatchListeners = accumulateInto_1(event._dispatchListeners, listener);\n      event._dispatchInstances = accumulateInto_1(event._dispatchInstances, inst);\n    }\n  }\n}\n\n/**\n * Accumulates dispatches on an `SyntheticEvent`, but only for the\n * `dispatchMarker`.\n * @param {SyntheticEvent} event\n */\nfunction accumulateDirectDispatchesSingle(event) {\n  if (event && event.dispatchConfig.registrationName) {\n    accumulateDispatches(event._targetInst, null, event);\n  }\n}\n\nfunction accumulateTwoPhaseDispatches(events) {\n  forEachAccumulated_1(events, accumulateTwoPhaseDispatchesSingle);\n}\n\nfunction accumulateTwoPhaseDispatchesSkipTarget(events) {\n  forEachAccumulated_1(events, accumulateTwoPhaseDispatchesSingleSkipTarget);\n}\n\nfunction accumulateEnterLeaveDispatches(leave, enter, from, to) {\n  ReactTreeTraversal.traverseEnterLeave(from, to, accumulateDispatches, leave, enter);\n}\n\nfunction accumulateDirectDispatches(events) {\n  forEachAccumulated_1(events, accumulateDirectDispatchesSingle);\n}\n\n/**\n * A small set of propagation patterns, each of which will accept a small amount\n * of information, and generate a set of \"dispatch ready event objects\" - which\n * are sets of events that have already been annotated with a set of dispatched\n * listener functions/ids. The API is designed this way to discourage these\n * propagation strategies from actually executing the dispatches, since we\n * always want to collect the entire set of dispatches before executing even a\n * single one.\n *\n * @constructor EventPropagators\n */\nvar EventPropagators = {\n  accumulateTwoPhaseDispatches: accumulateTwoPhaseDispatches,\n  accumulateTwoPhaseDispatchesSkipTarget: accumulateTwoPhaseDispatchesSkipTarget,\n  accumulateDirectDispatches: accumulateDirectDispatches,\n  accumulateEnterLeaveDispatches: accumulateEnterLeaveDispatches\n};\n\nvar EventPropagators_1 = EventPropagators;\n\n/**\n * This helper object stores information about text content of a target node,\n * allowing comparison of content before and after a given event.\n *\n * Identify the node where selection currently begins, then observe\n * both its text content and its current position in the DOM. Since the\n * browser may natively replace the target node during composition, we can\n * use its position to find its replacement.\n * \n *\n */\nvar compositionState = {\n  _root: null,\n  _startText: null,\n  _fallbackText: null\n};\n\nvar FallbackCompositionState = {\n  initialize: function (nativeEventTarget) {\n    compositionState._root = nativeEventTarget;\n    compositionState._startText = FallbackCompositionState.getText();\n    return true;\n  },\n  reset: function () {\n    compositionState._root = null;\n    compositionState._startText = null;\n    compositionState._fallbackText = null;\n  },\n  getData: function () {\n    if (compositionState._fallbackText) {\n      return compositionState._fallbackText;\n    }\n\n    var start;\n    var startValue = compositionState._startText;\n    var startLength = startValue.length;\n    var end;\n    var endValue = FallbackCompositionState.getText();\n    var endLength = endValue.length;\n\n    for (start = 0; start < startLength; start++) {\n      if (startValue[start] !== endValue[start]) {\n        break;\n      }\n    }\n\n    var minEnd = startLength - start;\n    for (end = 1; end <= minEnd; end++) {\n      if (startValue[startLength - end] !== endValue[endLength - end]) {\n        break;\n      }\n    }\n\n    var sliceTail = end > 1 ? 1 - end : undefined;\n    compositionState._fallbackText = endValue.slice(start, sliceTail);\n    return compositionState._fallbackText;\n  },\n  getText: function () {\n    if ('value' in compositionState._root) {\n      return compositionState._root.value;\n    }\n    return compositionState._root[getTextContentAccessor_1()];\n  }\n};\n\nvar FallbackCompositionState_1 = FallbackCompositionState;\n\nvar didWarnForAddedNewProperty = false;\nvar isProxySupported = typeof Proxy === 'function';\nvar EVENT_POOL_SIZE = 10;\n\n{\n  var warning$30 = require$$0;\n}\n\nvar shouldBeReleasedProperties = ['dispatchConfig', '_targetInst', 'nativeEvent', 'isDefaultPrevented', 'isPropagationStopped', '_dispatchListeners', '_dispatchInstances'];\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar EventInterface = {\n  type: null,\n  target: null,\n  // currentTarget is set when dispatching; no use in copying it here\n  currentTarget: emptyFunction.thatReturnsNull,\n  eventPhase: null,\n  bubbles: null,\n  cancelable: null,\n  timeStamp: function (event) {\n    return event.timeStamp || Date.now();\n  },\n  defaultPrevented: null,\n  isTrusted: null\n};\n\n/**\n * Synthetic events are dispatched by event plugins, typically in response to a\n * top-level event delegation handler.\n *\n * These systems should generally use pooling to reduce the frequency of garbage\n * collection. The system should check `isPersistent` to determine whether the\n * event should be released into the pool after being dispatched. Users that\n * need a persisted event should invoke `persist`.\n *\n * Synthetic events (and subclasses) implement the DOM Level 3 Events API by\n * normalizing browser quirks. Subclasses do not necessarily have to implement a\n * DOM interface; custom application-specific events can also subclass this.\n *\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {*} targetInst Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @param {DOMEventTarget} nativeEventTarget Target node.\n */\nfunction SyntheticEvent(dispatchConfig, targetInst, nativeEvent, nativeEventTarget) {\n  {\n    // these have a getter/setter for warnings\n    delete this.nativeEvent;\n    delete this.preventDefault;\n    delete this.stopPropagation;\n  }\n\n  this.dispatchConfig = dispatchConfig;\n  this._targetInst = targetInst;\n  this.nativeEvent = nativeEvent;\n\n  var Interface = this.constructor.Interface;\n  for (var propName in Interface) {\n    if (!Interface.hasOwnProperty(propName)) {\n      continue;\n    }\n    {\n      delete this[propName]; // this has a getter/setter for warnings\n    }\n    var normalize = Interface[propName];\n    if (normalize) {\n      this[propName] = normalize(nativeEvent);\n    } else {\n      if (propName === 'target') {\n        this.target = nativeEventTarget;\n      } else {\n        this[propName] = nativeEvent[propName];\n      }\n    }\n  }\n\n  var defaultPrevented = nativeEvent.defaultPrevented != null ? nativeEvent.defaultPrevented : nativeEvent.returnValue === false;\n  if (defaultPrevented) {\n    this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n  } else {\n    this.isDefaultPrevented = emptyFunction.thatReturnsFalse;\n  }\n  this.isPropagationStopped = emptyFunction.thatReturnsFalse;\n  return this;\n}\n\n_assign(SyntheticEvent.prototype, {\n  preventDefault: function () {\n    this.defaultPrevented = true;\n    var event = this.nativeEvent;\n    if (!event) {\n      return;\n    }\n\n    if (event.preventDefault) {\n      event.preventDefault();\n    } else if (typeof event.returnValue !== 'unknown') {\n      event.returnValue = false;\n    }\n    this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n  },\n\n  stopPropagation: function () {\n    var event = this.nativeEvent;\n    if (!event) {\n      return;\n    }\n\n    if (event.stopPropagation) {\n      event.stopPropagation();\n    } else if (typeof event.cancelBubble !== 'unknown') {\n      // The ChangeEventPlugin registers a \"propertychange\" event for\n      // IE. This event does not support bubbling or cancelling, and\n      // any references to cancelBubble throw \"Member not found\".  A\n      // typeof check of \"unknown\" circumvents this issue (and is also\n      // IE specific).\n      event.cancelBubble = true;\n    }\n\n    this.isPropagationStopped = emptyFunction.thatReturnsTrue;\n  },\n\n  /**\n   * We release all dispatched `SyntheticEvent`s after each event loop, adding\n   * them back into the pool. This allows a way to hold onto a reference that\n   * won't be added back into the pool.\n   */\n  persist: function () {\n    this.isPersistent = emptyFunction.thatReturnsTrue;\n  },\n\n  /**\n   * Checks if this event should be released back into the pool.\n   *\n   * @return {boolean} True if this should not be released, false otherwise.\n   */\n  isPersistent: emptyFunction.thatReturnsFalse,\n\n  /**\n   * `PooledClass` looks for `destructor` on each instance it releases.\n   */\n  destructor: function () {\n    var Interface = this.constructor.Interface;\n    for (var propName in Interface) {\n      {\n        Object.defineProperty(this, propName, getPooledWarningPropertyDefinition(propName, Interface[propName]));\n      }\n    }\n    for (var i = 0; i < shouldBeReleasedProperties.length; i++) {\n      this[shouldBeReleasedProperties[i]] = null;\n    }\n    {\n      Object.defineProperty(this, 'nativeEvent', getPooledWarningPropertyDefinition('nativeEvent', null));\n      Object.defineProperty(this, 'preventDefault', getPooledWarningPropertyDefinition('preventDefault', emptyFunction));\n      Object.defineProperty(this, 'stopPropagation', getPooledWarningPropertyDefinition('stopPropagation', emptyFunction));\n    }\n  }\n});\n\nSyntheticEvent.Interface = EventInterface;\n\n/**\n * Helper to reduce boilerplate when creating subclasses.\n *\n * @param {function} Class\n * @param {?object} Interface\n */\nSyntheticEvent.augmentClass = function (Class, Interface) {\n  var Super = this;\n\n  var E = function () {};\n  E.prototype = Super.prototype;\n  var prototype = new E();\n\n  _assign(prototype, Class.prototype);\n  Class.prototype = prototype;\n  Class.prototype.constructor = Class;\n\n  Class.Interface = _assign({}, Super.Interface, Interface);\n  Class.augmentClass = Super.augmentClass;\n  addEventPoolingTo(Class);\n};\n\n/** Proxying after everything set on SyntheticEvent\n  * to resolve Proxy issue on some WebKit browsers\n  * in which some Event properties are set to undefined (GH#10010)\n  */\n{\n  if (isProxySupported) {\n    /*eslint-disable no-func-assign */\n    SyntheticEvent = new Proxy(SyntheticEvent, {\n      construct: function (target, args) {\n        return this.apply(target, Object.create(target.prototype), args);\n      },\n      apply: function (constructor, that, args) {\n        return new Proxy(constructor.apply(that, args), {\n          set: function (target, prop, value) {\n            if (prop !== 'isPersistent' && !target.constructor.Interface.hasOwnProperty(prop) && shouldBeReleasedProperties.indexOf(prop) === -1) {\n              warning$30(didWarnForAddedNewProperty || target.isPersistent(), \"This synthetic event is reused for performance reasons. If you're \" + \"seeing this, you're adding a new property in the synthetic event object. \" + 'The property is never released. See ' + 'https://fb.me/react-event-pooling for more information.');\n              didWarnForAddedNewProperty = true;\n            }\n            target[prop] = value;\n            return true;\n          }\n        });\n      }\n    });\n    /*eslint-enable no-func-assign */\n  }\n}\n\naddEventPoolingTo(SyntheticEvent);\n\nvar SyntheticEvent_1 = SyntheticEvent;\n\n/**\n  * Helper to nullify syntheticEvent instance properties when destructing\n  *\n  * @param {String} propName\n  * @param {?object} getVal\n  * @return {object} defineProperty object\n  */\nfunction getPooledWarningPropertyDefinition(propName, getVal) {\n  var isFunction = typeof getVal === 'function';\n  return {\n    configurable: true,\n    set: set,\n    get: get\n  };\n\n  function set(val) {\n    var action = isFunction ? 'setting the method' : 'setting the property';\n    warn(action, 'This is effectively a no-op');\n    return val;\n  }\n\n  function get() {\n    var action = isFunction ? 'accessing the method' : 'accessing the property';\n    var result = isFunction ? 'This is a no-op function' : 'This is set to null';\n    warn(action, result);\n    return getVal;\n  }\n\n  function warn(action, result) {\n    var warningCondition = false;\n    warning$30(warningCondition, \"This synthetic event is reused for performance reasons. If you're seeing this, \" + \"you're %s `%s` on a released/nullified synthetic event. %s. \" + 'If you must keep the original synthetic event around, use event.persist(). ' + 'See https://fb.me/react-event-pooling for more information.', action, propName, result);\n  }\n}\n\nfunction getPooledEvent(dispatchConfig, targetInst, nativeEvent, nativeInst) {\n  var EventConstructor = this;\n  if (EventConstructor.eventPool.length) {\n    var instance = EventConstructor.eventPool.pop();\n    EventConstructor.call(instance, dispatchConfig, targetInst, nativeEvent, nativeInst);\n    return instance;\n  }\n  return new EventConstructor(dispatchConfig, targetInst, nativeEvent, nativeInst);\n}\n\nfunction releasePooledEvent(event) {\n  var EventConstructor = this;\n  !(event instanceof EventConstructor) ? invariant(false, 'Trying to release an event instance  into a pool of a different type.') : void 0;\n  event.destructor();\n  if (EventConstructor.eventPool.length < EVENT_POOL_SIZE) {\n    EventConstructor.eventPool.push(event);\n  }\n}\n\nfunction addEventPoolingTo(EventConstructor) {\n  EventConstructor.eventPool = [];\n  EventConstructor.getPooled = getPooledEvent;\n  EventConstructor.release = releasePooledEvent;\n}\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#events-compositionevents\n */\nvar CompositionEventInterface = {\n  data: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticCompositionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n  return SyntheticEvent_1.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent_1.augmentClass(SyntheticCompositionEvent, CompositionEventInterface);\n\nvar SyntheticCompositionEvent_1 = SyntheticCompositionEvent;\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105\n *      /#events-inputevents\n */\nvar InputEventInterface = {\n  data: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticInputEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n  return SyntheticEvent_1.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent_1.augmentClass(SyntheticInputEvent, InputEventInterface);\n\nvar SyntheticInputEvent_1 = SyntheticInputEvent;\n\nvar END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space\nvar START_KEYCODE = 229;\n\nvar canUseCompositionEvent = ExecutionEnvironment.canUseDOM && 'CompositionEvent' in window;\n\nvar documentMode = null;\nif (ExecutionEnvironment.canUseDOM && 'documentMode' in document) {\n  documentMode = document.documentMode;\n}\n\n// Webkit offers a very useful `textInput` event that can be used to\n// directly represent `beforeInput`. The IE `textinput` event is not as\n// useful, so we don't use it.\nvar canUseTextInputEvent = ExecutionEnvironment.canUseDOM && 'TextEvent' in window && !documentMode && !isPresto();\n\n// In IE9+, we have access to composition events, but the data supplied\n// by the native compositionend event may be incorrect. Japanese ideographic\n// spaces, for instance (\\u3000) are not recorded correctly.\nvar useFallbackCompositionData = ExecutionEnvironment.canUseDOM && (!canUseCompositionEvent || documentMode && documentMode > 8 && documentMode <= 11);\n\n/**\n * Opera <= 12 includes TextEvent in window, but does not fire\n * text input events. Rely on keypress instead.\n */\nfunction isPresto() {\n  var opera = window.opera;\n  return typeof opera === 'object' && typeof opera.version === 'function' && parseInt(opera.version(), 10) <= 12;\n}\n\nvar SPACEBAR_CODE = 32;\nvar SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE);\n\n// Events and their corresponding property names.\nvar eventTypes = {\n  beforeInput: {\n    phasedRegistrationNames: {\n      bubbled: 'onBeforeInput',\n      captured: 'onBeforeInputCapture'\n    },\n    dependencies: ['topCompositionEnd', 'topKeyPress', 'topTextInput', 'topPaste']\n  },\n  compositionEnd: {\n    phasedRegistrationNames: {\n      bubbled: 'onCompositionEnd',\n      captured: 'onCompositionEndCapture'\n    },\n    dependencies: ['topBlur', 'topCompositionEnd', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n  },\n  compositionStart: {\n    phasedRegistrationNames: {\n      bubbled: 'onCompositionStart',\n      captured: 'onCompositionStartCapture'\n    },\n    dependencies: ['topBlur', 'topCompositionStart', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n  },\n  compositionUpdate: {\n    phasedRegistrationNames: {\n      bubbled: 'onCompositionUpdate',\n      captured: 'onCompositionUpdateCapture'\n    },\n    dependencies: ['topBlur', 'topCompositionUpdate', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n  }\n};\n\n// Track whether we've ever handled a keypress on the space key.\nvar hasSpaceKeypress = false;\n\n/**\n * Return whether a native keypress event is assumed to be a command.\n * This is required because Firefox fires `keypress` events for key commands\n * (cut, copy, select-all, etc.) even though no character is inserted.\n */\nfunction isKeypressCommand(nativeEvent) {\n  return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) &&\n  // ctrlKey && altKey is equivalent to AltGr, and is not a command.\n  !(nativeEvent.ctrlKey && nativeEvent.altKey);\n}\n\n/**\n * Translate native top level events into event types.\n *\n * @param {string} topLevelType\n * @return {object}\n */\nfunction getCompositionEventType(topLevelType) {\n  switch (topLevelType) {\n    case 'topCompositionStart':\n      return eventTypes.compositionStart;\n    case 'topCompositionEnd':\n      return eventTypes.compositionEnd;\n    case 'topCompositionUpdate':\n      return eventTypes.compositionUpdate;\n  }\n}\n\n/**\n * Does our fallback best-guess model think this event signifies that\n * composition has begun?\n *\n * @param {string} topLevelType\n * @param {object} nativeEvent\n * @return {boolean}\n */\nfunction isFallbackCompositionStart(topLevelType, nativeEvent) {\n  return topLevelType === 'topKeyDown' && nativeEvent.keyCode === START_KEYCODE;\n}\n\n/**\n * Does our fallback mode think that this event is the end of composition?\n *\n * @param {string} topLevelType\n * @param {object} nativeEvent\n * @return {boolean}\n */\nfunction isFallbackCompositionEnd(topLevelType, nativeEvent) {\n  switch (topLevelType) {\n    case 'topKeyUp':\n      // Command keys insert or clear IME input.\n      return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1;\n    case 'topKeyDown':\n      // Expect IME keyCode on each keydown. If we get any other\n      // code we must have exited earlier.\n      return nativeEvent.keyCode !== START_KEYCODE;\n    case 'topKeyPress':\n    case 'topMouseDown':\n    case 'topBlur':\n      // Events are not possible without cancelling IME.\n      return true;\n    default:\n      return false;\n  }\n}\n\n/**\n * Google Input Tools provides composition data via a CustomEvent,\n * with the `data` property populated in the `detail` object. If this\n * is available on the event object, use it. If not, this is a plain\n * composition event and we have nothing special to extract.\n *\n * @param {object} nativeEvent\n * @return {?string}\n */\nfunction getDataFromCustomEvent(nativeEvent) {\n  var detail = nativeEvent.detail;\n  if (typeof detail === 'object' && 'data' in detail) {\n    return detail.data;\n  }\n  return null;\n}\n\n// Track the current IME composition status, if any.\nvar isComposing = false;\n\n/**\n * @return {?object} A SyntheticCompositionEvent.\n */\nfunction extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n  var eventType;\n  var fallbackData;\n\n  if (canUseCompositionEvent) {\n    eventType = getCompositionEventType(topLevelType);\n  } else if (!isComposing) {\n    if (isFallbackCompositionStart(topLevelType, nativeEvent)) {\n      eventType = eventTypes.compositionStart;\n    }\n  } else if (isFallbackCompositionEnd(topLevelType, nativeEvent)) {\n    eventType = eventTypes.compositionEnd;\n  }\n\n  if (!eventType) {\n    return null;\n  }\n\n  if (useFallbackCompositionData) {\n    // The current composition is stored statically and must not be\n    // overwritten while composition continues.\n    if (!isComposing && eventType === eventTypes.compositionStart) {\n      isComposing = FallbackCompositionState_1.initialize(nativeEventTarget);\n    } else if (eventType === eventTypes.compositionEnd) {\n      if (isComposing) {\n        fallbackData = FallbackCompositionState_1.getData();\n      }\n    }\n  }\n\n  var event = SyntheticCompositionEvent_1.getPooled(eventType, targetInst, nativeEvent, nativeEventTarget);\n\n  if (fallbackData) {\n    // Inject data generated from fallback path into the synthetic event.\n    // This matches the property of native CompositionEventInterface.\n    event.data = fallbackData;\n  } else {\n    var customData = getDataFromCustomEvent(nativeEvent);\n    if (customData !== null) {\n      event.data = customData;\n    }\n  }\n\n  EventPropagators_1.accumulateTwoPhaseDispatches(event);\n  return event;\n}\n\n/**\n * @param {TopLevelTypes} topLevelType Record from `BrowserEventConstants`.\n * @param {object} nativeEvent Native browser event.\n * @return {?string} The string corresponding to this `beforeInput` event.\n */\nfunction getNativeBeforeInputChars(topLevelType, nativeEvent) {\n  switch (topLevelType) {\n    case 'topCompositionEnd':\n      return getDataFromCustomEvent(nativeEvent);\n    case 'topKeyPress':\n      /**\n       * If native `textInput` events are available, our goal is to make\n       * use of them. However, there is a special case: the spacebar key.\n       * In Webkit, preventing default on a spacebar `textInput` event\n       * cancels character insertion, but it *also* causes the browser\n       * to fall back to its default spacebar behavior of scrolling the\n       * page.\n       *\n       * Tracking at:\n       * https://code.google.com/p/chromium/issues/detail?id=355103\n       *\n       * To avoid this issue, use the keypress event as if no `textInput`\n       * event is available.\n       */\n      var which = nativeEvent.which;\n      if (which !== SPACEBAR_CODE) {\n        return null;\n      }\n\n      hasSpaceKeypress = true;\n      return SPACEBAR_CHAR;\n\n    case 'topTextInput':\n      // Record the characters to be added to the DOM.\n      var chars = nativeEvent.data;\n\n      // If it's a spacebar character, assume that we have already handled\n      // it at the keypress level and bail immediately. Android Chrome\n      // doesn't give us keycodes, so we need to blacklist it.\n      if (chars === SPACEBAR_CHAR && hasSpaceKeypress) {\n        return null;\n      }\n\n      return chars;\n\n    default:\n      // For other native event types, do nothing.\n      return null;\n  }\n}\n\n/**\n * For browsers that do not provide the `textInput` event, extract the\n * appropriate string to use for SyntheticInputEvent.\n *\n * @param {string} topLevelType Record from `BrowserEventConstants`.\n * @param {object} nativeEvent Native browser event.\n * @return {?string} The fallback string for this `beforeInput` event.\n */\nfunction getFallbackBeforeInputChars(topLevelType, nativeEvent) {\n  // If we are currently composing (IME) and using a fallback to do so,\n  // try to extract the composed characters from the fallback object.\n  // If composition event is available, we extract a string only at\n  // compositionevent, otherwise extract it at fallback events.\n  if (isComposing) {\n    if (topLevelType === 'topCompositionEnd' || !canUseCompositionEvent && isFallbackCompositionEnd(topLevelType, nativeEvent)) {\n      var chars = FallbackCompositionState_1.getData();\n      FallbackCompositionState_1.reset();\n      isComposing = false;\n      return chars;\n    }\n    return null;\n  }\n\n  switch (topLevelType) {\n    case 'topPaste':\n      // If a paste event occurs after a keypress, throw out the input\n      // chars. Paste events should not lead to BeforeInput events.\n      return null;\n    case 'topKeyPress':\n      /**\n       * As of v27, Firefox may fire keypress events even when no character\n       * will be inserted. A few possibilities:\n       *\n       * - `which` is `0`. Arrow keys, Esc key, etc.\n       *\n       * - `which` is the pressed key code, but no char is available.\n       *   Ex: 'AltGr + d` in Polish. There is no modified character for\n       *   this key combination and no character is inserted into the\n       *   document, but FF fires the keypress for char code `100` anyway.\n       *   No `input` event will occur.\n       *\n       * - `which` is the pressed key code, but a command combination is\n       *   being used. Ex: `Cmd+C`. No character is inserted, and no\n       *   `input` event will occur.\n       */\n      if (!isKeypressCommand(nativeEvent)) {\n        // IE fires the `keypress` event when a user types an emoji via\n        // Touch keyboard of Windows.  In such a case, the `char` property\n        // holds an emoji character like `\\uD83D\\uDE0A`.  Because its length\n        // is 2, the property `which` does not represent an emoji correctly.\n        // In such a case, we directly return the `char` property instead of\n        // using `which`.\n        if (nativeEvent.char && nativeEvent.char.length > 1) {\n          return nativeEvent.char;\n        } else if (nativeEvent.which) {\n          return String.fromCharCode(nativeEvent.which);\n        }\n      }\n      return null;\n    case 'topCompositionEnd':\n      return useFallbackCompositionData ? null : nativeEvent.data;\n    default:\n      return null;\n  }\n}\n\n/**\n * Extract a SyntheticInputEvent for `beforeInput`, based on either native\n * `textInput` or fallback behavior.\n *\n * @return {?object} A SyntheticInputEvent.\n */\nfunction extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n  var chars;\n\n  if (canUseTextInputEvent) {\n    chars = getNativeBeforeInputChars(topLevelType, nativeEvent);\n  } else {\n    chars = getFallbackBeforeInputChars(topLevelType, nativeEvent);\n  }\n\n  // If no characters are being inserted, no BeforeInput event should\n  // be fired.\n  if (!chars) {\n    return null;\n  }\n\n  var event = SyntheticInputEvent_1.getPooled(eventTypes.beforeInput, targetInst, nativeEvent, nativeEventTarget);\n\n  event.data = chars;\n  EventPropagators_1.accumulateTwoPhaseDispatches(event);\n  return event;\n}\n\n/**\n * Create an `onBeforeInput` event to match\n * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents.\n *\n * This event plugin is based on the native `textInput` event\n * available in Chrome, Safari, Opera, and IE. This event fires after\n * `onKeyPress` and `onCompositionEnd`, but before `onInput`.\n *\n * `beforeInput` is spec'd but not implemented in any browsers, and\n * the `input` event does not provide any useful information about what has\n * actually been added, contrary to the spec. Thus, `textInput` is the best\n * available event to identify the characters that have actually been inserted\n * into the target node.\n *\n * This plugin is also responsible for emitting `composition` events, thus\n * allowing us to share composition fallback code for both `beforeInput` and\n * `composition` event types.\n */\nvar BeforeInputEventPlugin = {\n  eventTypes: eventTypes,\n\n  extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n    return [extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget), extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget)];\n  }\n};\n\nvar BeforeInputEventPlugin_1 = BeforeInputEventPlugin;\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 * @providesModule isTextInputElement\n * \n */\n\n/**\n * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary\n */\n\nvar supportedInputTypes = {\n  color: true,\n  date: true,\n  datetime: true,\n  'datetime-local': true,\n  email: true,\n  month: true,\n  number: true,\n  password: true,\n  range: true,\n  search: true,\n  tel: true,\n  text: true,\n  time: true,\n  url: true,\n  week: true\n};\n\nfunction isTextInputElement(elem) {\n  var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n\n  if (nodeName === 'input') {\n    return !!supportedInputTypes[elem.type];\n  }\n\n  if (nodeName === 'textarea') {\n    return true;\n  }\n\n  return false;\n}\n\nvar isTextInputElement_1 = isTextInputElement;\n\nvar eventTypes$1 = {\n  change: {\n    phasedRegistrationNames: {\n      bubbled: 'onChange',\n      captured: 'onChangeCapture'\n    },\n    dependencies: ['topBlur', 'topChange', 'topClick', 'topFocus', 'topInput', 'topKeyDown', 'topKeyUp', 'topSelectionChange']\n  }\n};\n\nfunction createAndAccumulateChangeEvent(inst, nativeEvent, target) {\n  var event = SyntheticEvent_1.getPooled(eventTypes$1.change, inst, nativeEvent, target);\n  event.type = 'change';\n  // Flag this event loop as needing state restore.\n  ReactControlledComponent_1.enqueueStateRestore(target);\n  EventPropagators_1.accumulateTwoPhaseDispatches(event);\n  return event;\n}\n/**\n * For IE shims\n */\nvar activeElement = null;\nvar activeElementInst = null;\n\n/**\n * SECTION: handle `change` event\n */\nfunction shouldUseChangeEvent(elem) {\n  var nodeName = elem.nodeName && elem.nodeName.toLowerCase();\n  return nodeName === 'select' || nodeName === 'input' && elem.type === 'file';\n}\n\nfunction manualDispatchChangeEvent(nativeEvent) {\n  var event = createAndAccumulateChangeEvent(activeElementInst, nativeEvent, getEventTarget_1(nativeEvent));\n\n  // If change and propertychange bubbled, we'd just bind to it like all the\n  // other events and have it go through ReactBrowserEventEmitter. Since it\n  // doesn't, we manually listen for the events and so we have to enqueue and\n  // process the abstract event manually.\n  //\n  // Batching is necessary here in order to ensure that all event handlers run\n  // before the next rerender (including event handlers attached to ancestor\n  // elements instead of directly on the input). Without this, controlled\n  // components don't work properly in conjunction with event bubbling because\n  // the component is rerendered and the value reverted before all the event\n  // handlers can run. See https://github.com/facebook/react/issues/708.\n  ReactGenericBatching_1.batchedUpdates(runEventInBatch, event);\n}\n\nfunction runEventInBatch(event) {\n  EventPluginHub_1.enqueueEvents(event);\n  EventPluginHub_1.processEventQueue(false);\n}\n\nfunction getInstIfValueChanged(targetInst) {\n  var targetNode = ReactDOMComponentTree_1.getNodeFromInstance(targetInst);\n  if (inputValueTracking_1.updateValueIfChanged(targetNode)) {\n    return targetInst;\n  }\n}\n\nfunction getTargetInstForChangeEvent(topLevelType, targetInst) {\n  if (topLevelType === 'topChange') {\n    return targetInst;\n  }\n}\n\n/**\n * SECTION: handle `input` event\n */\nvar isInputEventSupported = false;\nif (ExecutionEnvironment.canUseDOM) {\n  // IE9 claims to support the input event but fails to trigger it when\n  // deleting text, so we ignore its input events.\n  isInputEventSupported = isEventSupported_1('input') && (!document.documentMode || document.documentMode > 9);\n}\n\n/**\n * (For IE <=9) Starts tracking propertychange events on the passed-in element\n * and override the value property so that we can distinguish user events from\n * value changes in JS.\n */\nfunction startWatchingForValueChange(target, targetInst) {\n  activeElement = target;\n  activeElementInst = targetInst;\n  activeElement.attachEvent('onpropertychange', handlePropertyChange);\n}\n\n/**\n * (For IE <=9) Removes the event listeners from the currently-tracked element,\n * if any exists.\n */\nfunction stopWatchingForValueChange() {\n  if (!activeElement) {\n    return;\n  }\n  activeElement.detachEvent('onpropertychange', handlePropertyChange);\n  activeElement = null;\n  activeElementInst = null;\n}\n\n/**\n * (For IE <=9) Handles a propertychange event, sending a `change` event if\n * the value of the active element has changed.\n */\nfunction handlePropertyChange(nativeEvent) {\n  if (nativeEvent.propertyName !== 'value') {\n    return;\n  }\n  if (getInstIfValueChanged(activeElementInst)) {\n    manualDispatchChangeEvent(nativeEvent);\n  }\n}\n\nfunction handleEventsForInputEventPolyfill(topLevelType, target, targetInst) {\n  if (topLevelType === 'topFocus') {\n    // In IE9, propertychange fires for most input events but is buggy and\n    // doesn't fire when text is deleted, but conveniently, selectionchange\n    // appears to fire in all of the remaining cases so we catch those and\n    // forward the event if the value has changed\n    // In either case, we don't want to call the event handler if the value\n    // is changed from JS so we redefine a setter for `.value` that updates\n    // our activeElementValue variable, allowing us to ignore those changes\n    //\n    // stopWatching() should be a noop here but we call it just in case we\n    // missed a blur event somehow.\n    stopWatchingForValueChange();\n    startWatchingForValueChange(target, targetInst);\n  } else if (topLevelType === 'topBlur') {\n    stopWatchingForValueChange();\n  }\n}\n\n// For IE8 and IE9.\nfunction getTargetInstForInputEventPolyfill(topLevelType, targetInst) {\n  if (topLevelType === 'topSelectionChange' || topLevelType === 'topKeyUp' || topLevelType === 'topKeyDown') {\n    // On the selectionchange event, the target is just document which isn't\n    // helpful for us so just check activeElement instead.\n    //\n    // 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire\n    // propertychange on the first input event after setting `value` from a\n    // script and fires only keydown, keypress, keyup. Catching keyup usually\n    // gets it and catching keydown lets us fire an event for the first\n    // keystroke if user does a key repeat (it'll be a little delayed: right\n    // before the second keystroke). Other input methods (e.g., paste) seem to\n    // fire selectionchange normally.\n    return getInstIfValueChanged(activeElementInst);\n  }\n}\n\n/**\n * SECTION: handle `click` event\n */\nfunction shouldUseClickEvent(elem) {\n  // Use the `click` event to detect changes to checkbox and radio inputs.\n  // This approach works across all browsers, whereas `change` does not fire\n  // until `blur` in IE8.\n  var nodeName = elem.nodeName;\n  return nodeName && nodeName.toLowerCase() === 'input' && (elem.type === 'checkbox' || elem.type === 'radio');\n}\n\nfunction getTargetInstForClickEvent(topLevelType, targetInst) {\n  if (topLevelType === 'topClick') {\n    return getInstIfValueChanged(targetInst);\n  }\n}\n\nfunction getTargetInstForInputOrChangeEvent(topLevelType, targetInst) {\n  if (topLevelType === 'topInput' || topLevelType === 'topChange') {\n    return getInstIfValueChanged(targetInst);\n  }\n}\n\nfunction handleControlledInputBlur(inst, node) {\n  // TODO: In IE, inst is occasionally null. Why?\n  if (inst == null) {\n    return;\n  }\n\n  // Fiber and ReactDOM keep wrapper state in separate places\n  var state = inst._wrapperState || node._wrapperState;\n\n  if (!state || !state.controlled || node.type !== 'number') {\n    return;\n  }\n\n  // If controlled, assign the value attribute to the current value on blur\n  var value = '' + node.value;\n  if (node.getAttribute('value') !== value) {\n    node.setAttribute('value', value);\n  }\n}\n\n/**\n * This plugin creates an `onChange` event that normalizes change events\n * across form elements. This event fires at a time when it's possible to\n * change the element's value without seeing a flicker.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - select\n */\nvar ChangeEventPlugin = {\n  eventTypes: eventTypes$1,\n\n  _isInputEventSupported: isInputEventSupported,\n\n  extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n    var targetNode = targetInst ? ReactDOMComponentTree_1.getNodeFromInstance(targetInst) : window;\n\n    var getTargetInstFunc, handleEventFunc;\n    if (shouldUseChangeEvent(targetNode)) {\n      getTargetInstFunc = getTargetInstForChangeEvent;\n    } else if (isTextInputElement_1(targetNode)) {\n      if (isInputEventSupported) {\n        getTargetInstFunc = getTargetInstForInputOrChangeEvent;\n      } else {\n        getTargetInstFunc = getTargetInstForInputEventPolyfill;\n        handleEventFunc = handleEventsForInputEventPolyfill;\n      }\n    } else if (shouldUseClickEvent(targetNode)) {\n      getTargetInstFunc = getTargetInstForClickEvent;\n    }\n\n    if (getTargetInstFunc) {\n      var inst = getTargetInstFunc(topLevelType, targetInst);\n      if (inst) {\n        var event = createAndAccumulateChangeEvent(inst, nativeEvent, nativeEventTarget);\n        return event;\n      }\n    }\n\n    if (handleEventFunc) {\n      handleEventFunc(topLevelType, targetNode, targetInst);\n    }\n\n    // When blurring, set the value attribute for number inputs\n    if (topLevelType === 'topBlur') {\n      handleControlledInputBlur(targetInst, targetNode);\n    }\n  }\n};\n\nvar ChangeEventPlugin_1 = ChangeEventPlugin;\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 * @providesModule DOMEventPluginOrder\n */\n\n/**\n * Module that is injectable into `EventPluginHub`, that specifies a\n * deterministic ordering of `EventPlugin`s. A convenient way to reason about\n * plugins, without having to package every one of them. This is better than\n * having plugins be ordered in the same order that they are injected because\n * that ordering would be influenced by the packaging order.\n * `ResponderEventPlugin` must occur before `SimpleEventPlugin` so that\n * preventing default on events is convenient in `SimpleEventPlugin` handlers.\n */\n\nvar DOMEventPluginOrder = ['ResponderEventPlugin', 'SimpleEventPlugin', 'TapEventPlugin', 'EnterLeaveEventPlugin', 'ChangeEventPlugin', 'SelectEventPlugin', 'BeforeInputEventPlugin'];\n\nvar DOMEventPluginOrder_1 = DOMEventPluginOrder;\n\n/**\n * @interface UIEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar UIEventInterface = {\n  view: function (event) {\n    if (event.view) {\n      return event.view;\n    }\n\n    var target = getEventTarget_1(event);\n    if (target.window === target) {\n      // target is a window object\n      return target;\n    }\n\n    var doc = target.ownerDocument;\n    // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.\n    if (doc) {\n      return doc.defaultView || doc.parentWindow;\n    } else {\n      return window;\n    }\n  },\n  detail: function (event) {\n    return event.detail || 0;\n  }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticUIEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n  return SyntheticEvent_1.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent_1.augmentClass(SyntheticUIEvent, UIEventInterface);\n\nvar SyntheticUIEvent_1 = SyntheticUIEvent;\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 * @providesModule getEventModifierState\n */\n\n/**\n * Translation from modifier key to the associated property in the event.\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#keys-Modifiers\n */\n\nvar modifierKeyToProp = {\n  Alt: 'altKey',\n  Control: 'ctrlKey',\n  Meta: 'metaKey',\n  Shift: 'shiftKey'\n};\n\n// IE8 does not implement getModifierState so we simply map it to the only\n// modifier keys exposed by the event itself, does not support Lock-keys.\n// Currently, all major browsers except Chrome seems to support Lock-keys.\nfunction modifierStateGetter(keyArg) {\n  var syntheticEvent = this;\n  var nativeEvent = syntheticEvent.nativeEvent;\n  if (nativeEvent.getModifierState) {\n    return nativeEvent.getModifierState(keyArg);\n  }\n  var keyProp = modifierKeyToProp[keyArg];\n  return keyProp ? !!nativeEvent[keyProp] : false;\n}\n\nfunction getEventModifierState(nativeEvent) {\n  return modifierStateGetter;\n}\n\nvar getEventModifierState_1 = getEventModifierState;\n\n/**\n * @interface MouseEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar MouseEventInterface = {\n  screenX: null,\n  screenY: null,\n  clientX: null,\n  clientY: null,\n  pageX: null,\n  pageY: null,\n  ctrlKey: null,\n  shiftKey: null,\n  altKey: null,\n  metaKey: null,\n  getModifierState: getEventModifierState_1,\n  button: null,\n  buttons: null,\n  relatedTarget: function (event) {\n    return event.relatedTarget || (event.fromElement === event.srcElement ? event.toElement : event.fromElement);\n  }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticMouseEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n  return SyntheticUIEvent_1.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent_1.augmentClass(SyntheticMouseEvent, MouseEventInterface);\n\nvar SyntheticMouseEvent_1 = SyntheticMouseEvent;\n\nvar eventTypes$2 = {\n  mouseEnter: {\n    registrationName: 'onMouseEnter',\n    dependencies: ['topMouseOut', 'topMouseOver']\n  },\n  mouseLeave: {\n    registrationName: 'onMouseLeave',\n    dependencies: ['topMouseOut', 'topMouseOver']\n  }\n};\n\nvar EnterLeaveEventPlugin = {\n  eventTypes: eventTypes$2,\n\n  /**\n   * For almost every interaction we care about, there will be both a top-level\n   * `mouseover` and `mouseout` event that occurs. Only use `mouseout` so that\n   * we do not extract duplicate events. However, moving the mouse into the\n   * browser from outside will not fire a `mouseout` event. In this case, we use\n   * the `mouseover` top-level event.\n   */\n  extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n    if (topLevelType === 'topMouseOver' && (nativeEvent.relatedTarget || nativeEvent.fromElement)) {\n      return null;\n    }\n    if (topLevelType !== 'topMouseOut' && topLevelType !== 'topMouseOver') {\n      // Must not be a mouse in or mouse out - ignoring.\n      return null;\n    }\n\n    var win;\n    if (nativeEventTarget.window === nativeEventTarget) {\n      // `nativeEventTarget` is probably a window object.\n      win = nativeEventTarget;\n    } else {\n      // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.\n      var doc = nativeEventTarget.ownerDocument;\n      if (doc) {\n        win = doc.defaultView || doc.parentWindow;\n      } else {\n        win = window;\n      }\n    }\n\n    var from;\n    var to;\n    if (topLevelType === 'topMouseOut') {\n      from = targetInst;\n      var related = nativeEvent.relatedTarget || nativeEvent.toElement;\n      to = related ? ReactDOMComponentTree_1.getClosestInstanceFromNode(related) : null;\n    } else {\n      // Moving to a node from outside the window.\n      from = null;\n      to = targetInst;\n    }\n\n    if (from === to) {\n      // Nothing pertains to our managed components.\n      return null;\n    }\n\n    var fromNode = from == null ? win : ReactDOMComponentTree_1.getNodeFromInstance(from);\n    var toNode = to == null ? win : ReactDOMComponentTree_1.getNodeFromInstance(to);\n\n    var leave = SyntheticMouseEvent_1.getPooled(eventTypes$2.mouseLeave, from, nativeEvent, nativeEventTarget);\n    leave.type = 'mouseleave';\n    leave.target = fromNode;\n    leave.relatedTarget = toNode;\n\n    var enter = SyntheticMouseEvent_1.getPooled(eventTypes$2.mouseEnter, to, nativeEvent, nativeEventTarget);\n    enter.type = 'mouseenter';\n    enter.target = toNode;\n    enter.relatedTarget = fromNode;\n\n    EventPropagators_1.accumulateEnterLeaveDispatches(leave, enter, from, to);\n\n    return [leave, enter];\n  }\n};\n\nvar EnterLeaveEventPlugin_1 = EnterLeaveEventPlugin;\n\nvar DOCUMENT_NODE$2 = HTMLNodeType_1.DOCUMENT_NODE;\n\n\n\n\n\nvar skipSelectionChangeEvent = ExecutionEnvironment.canUseDOM && 'documentMode' in document && document.documentMode <= 11;\n\nvar eventTypes$3 = {\n  select: {\n    phasedRegistrationNames: {\n      bubbled: 'onSelect',\n      captured: 'onSelectCapture'\n    },\n    dependencies: ['topBlur', 'topContextMenu', 'topFocus', 'topKeyDown', 'topKeyUp', 'topMouseDown', 'topMouseUp', 'topSelectionChange']\n  }\n};\n\nvar activeElement$1 = null;\nvar activeElementInst$1 = null;\nvar lastSelection = null;\nvar mouseDown = false;\n\n// Track whether all listeners exists for this plugin. If none exist, we do\n// not extract events. See #3639.\nvar isListeningToAllDependencies = ReactBrowserEventEmitter_1.isListeningToAllDependencies;\n\n/**\n * Get an object which is a unique representation of the current selection.\n *\n * The return value will not be consistent across nodes or browsers, but\n * two identical selections on the same node will return identical objects.\n *\n * @param {DOMElement} node\n * @return {object}\n */\nfunction getSelection(node) {\n  if ('selectionStart' in node && ReactInputSelection_1.hasSelectionCapabilities(node)) {\n    return {\n      start: node.selectionStart,\n      end: node.selectionEnd\n    };\n  } else if (window.getSelection) {\n    var selection = window.getSelection();\n    return {\n      anchorNode: selection.anchorNode,\n      anchorOffset: selection.anchorOffset,\n      focusNode: selection.focusNode,\n      focusOffset: selection.focusOffset\n    };\n  }\n}\n\n/**\n * Poll selection to see whether it's changed.\n *\n * @param {object} nativeEvent\n * @return {?SyntheticEvent}\n */\nfunction constructSelectEvent(nativeEvent, nativeEventTarget) {\n  // Ensure we have the right element, and that the user is not dragging a\n  // selection (this matches native `select` event behavior). In HTML5, select\n  // fires only on input and textarea thus if there's no focused element we\n  // won't dispatch.\n  if (mouseDown || activeElement$1 == null || activeElement$1 !== getActiveElement()) {\n    return null;\n  }\n\n  // Only fire when selection has actually changed.\n  var currentSelection = getSelection(activeElement$1);\n  if (!lastSelection || !shallowEqual(lastSelection, currentSelection)) {\n    lastSelection = currentSelection;\n\n    var syntheticEvent = SyntheticEvent_1.getPooled(eventTypes$3.select, activeElementInst$1, nativeEvent, nativeEventTarget);\n\n    syntheticEvent.type = 'select';\n    syntheticEvent.target = activeElement$1;\n\n    EventPropagators_1.accumulateTwoPhaseDispatches(syntheticEvent);\n\n    return syntheticEvent;\n  }\n\n  return null;\n}\n\n/**\n * This plugin creates an `onSelect` event that normalizes select events\n * across form elements.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - contentEditable\n *\n * This differs from native browser implementations in the following ways:\n * - Fires on contentEditable fields as well as inputs.\n * - Fires for collapsed selection.\n * - Fires after user input.\n */\nvar SelectEventPlugin = {\n  eventTypes: eventTypes$3,\n\n  extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n    var doc = nativeEventTarget.window === nativeEventTarget ? nativeEventTarget.document : nativeEventTarget.nodeType === DOCUMENT_NODE$2 ? nativeEventTarget : nativeEventTarget.ownerDocument;\n    if (!doc || !isListeningToAllDependencies('onSelect', doc)) {\n      return null;\n    }\n\n    var targetNode = targetInst ? ReactDOMComponentTree_1.getNodeFromInstance(targetInst) : window;\n\n    switch (topLevelType) {\n      // Track the input node that has focus.\n      case 'topFocus':\n        if (isTextInputElement_1(targetNode) || targetNode.contentEditable === 'true') {\n          activeElement$1 = targetNode;\n          activeElementInst$1 = targetInst;\n          lastSelection = null;\n        }\n        break;\n      case 'topBlur':\n        activeElement$1 = null;\n        activeElementInst$1 = null;\n        lastSelection = null;\n        break;\n      // Don't fire the event while the user is dragging. This matches the\n      // semantics of the native select event.\n      case 'topMouseDown':\n        mouseDown = true;\n        break;\n      case 'topContextMenu':\n      case 'topMouseUp':\n        mouseDown = false;\n        return constructSelectEvent(nativeEvent, nativeEventTarget);\n      // Chrome and IE fire non-standard event when selection is changed (and\n      // sometimes when it hasn't). IE's event fires out of order with respect\n      // to key and input events on deletion, so we discard it.\n      //\n      // Firefox doesn't support selectionchange, so check selection status\n      // after each key entry. The selection changes after keydown and before\n      // keyup, but we check on keydown as well in the case of holding down a\n      // key, when multiple keydown events are fired but only one keyup is.\n      // This is also our approach for IE handling, for the reason above.\n      case 'topSelectionChange':\n        if (skipSelectionChangeEvent) {\n          break;\n        }\n      // falls through\n      case 'topKeyDown':\n      case 'topKeyUp':\n        return constructSelectEvent(nativeEvent, nativeEventTarget);\n    }\n\n    return null;\n  }\n};\n\nvar SelectEventPlugin_1 = SelectEventPlugin;\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/css3-animations/#AnimationEvent-interface\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent\n */\nvar AnimationEventInterface = {\n  animationName: null,\n  elapsedTime: null,\n  pseudoElement: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticAnimationEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n  return SyntheticEvent_1.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent_1.augmentClass(SyntheticAnimationEvent, AnimationEventInterface);\n\nvar SyntheticAnimationEvent_1 = SyntheticAnimationEvent;\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/clipboard-apis/\n */\nvar ClipboardEventInterface = {\n  clipboardData: function (event) {\n    return 'clipboardData' in event ? event.clipboardData : window.clipboardData;\n  }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticClipboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n  return SyntheticEvent_1.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent_1.augmentClass(SyntheticClipboardEvent, ClipboardEventInterface);\n\nvar SyntheticClipboardEvent_1 = SyntheticClipboardEvent;\n\n/**\n * @interface FocusEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar FocusEventInterface = {\n  relatedTarget: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticFocusEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n  return SyntheticUIEvent_1.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent_1.augmentClass(SyntheticFocusEvent, FocusEventInterface);\n\nvar SyntheticFocusEvent_1 = SyntheticFocusEvent;\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 * @providesModule getEventCharCode\n */\n\n/**\n * `charCode` represents the actual \"character code\" and is safe to use with\n * `String.fromCharCode`. As such, only keys that correspond to printable\n * characters produce a valid `charCode`, the only exception to this is Enter.\n * The Tab-key is considered non-printable and does not have a `charCode`,\n * presumably because it does not produce a tab-character in browsers.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {number} Normalized `charCode` property.\n */\n\nfunction getEventCharCode(nativeEvent) {\n  var charCode;\n  var keyCode = nativeEvent.keyCode;\n\n  if ('charCode' in nativeEvent) {\n    charCode = nativeEvent.charCode;\n\n    // FF does not set `charCode` for the Enter-key, check against `keyCode`.\n    if (charCode === 0 && keyCode === 13) {\n      charCode = 13;\n    }\n  } else {\n    // IE8 does not implement `charCode`, but `keyCode` has the correct value.\n    charCode = keyCode;\n  }\n\n  // Some non-printable keys are reported in `charCode`/`keyCode`, discard them.\n  // Must not discard the (non-)printable Enter-key.\n  if (charCode >= 32 || charCode === 13) {\n    return charCode;\n  }\n\n  return 0;\n}\n\nvar getEventCharCode_1 = getEventCharCode;\n\n/**\n * Normalization of deprecated HTML5 `key` values\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\nvar normalizeKey = {\n  Esc: 'Escape',\n  Spacebar: ' ',\n  Left: 'ArrowLeft',\n  Up: 'ArrowUp',\n  Right: 'ArrowRight',\n  Down: 'ArrowDown',\n  Del: 'Delete',\n  Win: 'OS',\n  Menu: 'ContextMenu',\n  Apps: 'ContextMenu',\n  Scroll: 'ScrollLock',\n  MozPrintableKey: 'Unidentified'\n};\n\n/**\n * Translation from legacy `keyCode` to HTML5 `key`\n * Only special keys supported, all others depend on keyboard layout or browser\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\nvar translateToKey = {\n  8: 'Backspace',\n  9: 'Tab',\n  12: 'Clear',\n  13: 'Enter',\n  16: 'Shift',\n  17: 'Control',\n  18: 'Alt',\n  19: 'Pause',\n  20: 'CapsLock',\n  27: 'Escape',\n  32: ' ',\n  33: 'PageUp',\n  34: 'PageDown',\n  35: 'End',\n  36: 'Home',\n  37: 'ArrowLeft',\n  38: 'ArrowUp',\n  39: 'ArrowRight',\n  40: 'ArrowDown',\n  45: 'Insert',\n  46: 'Delete',\n  112: 'F1',\n  113: 'F2',\n  114: 'F3',\n  115: 'F4',\n  116: 'F5',\n  117: 'F6',\n  118: 'F7',\n  119: 'F8',\n  120: 'F9',\n  121: 'F10',\n  122: 'F11',\n  123: 'F12',\n  144: 'NumLock',\n  145: 'ScrollLock',\n  224: 'Meta'\n};\n\n/**\n * @param {object} nativeEvent Native browser event.\n * @return {string} Normalized `key` property.\n */\nfunction getEventKey(nativeEvent) {\n  if (nativeEvent.key) {\n    // Normalize inconsistent values reported by browsers due to\n    // implementations of a working draft specification.\n\n    // FireFox implements `key` but returns `MozPrintableKey` for all\n    // printable characters (normalized to `Unidentified`), ignore it.\n    var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n    if (key !== 'Unidentified') {\n      return key;\n    }\n  }\n\n  // Browser does not implement `key`, polyfill as much of it as we can.\n  if (nativeEvent.type === 'keypress') {\n    var charCode = getEventCharCode_1(nativeEvent);\n\n    // The enter-key is technically both printable and non-printable and can\n    // thus be captured by `keypress`, no other non-printable key should.\n    return charCode === 13 ? 'Enter' : String.fromCharCode(charCode);\n  }\n  if (nativeEvent.type === 'keydown' || nativeEvent.type === 'keyup') {\n    // While user keyboard layout determines the actual meaning of each\n    // `keyCode` value, almost all function keys have a universal value.\n    return translateToKey[nativeEvent.keyCode] || 'Unidentified';\n  }\n  return '';\n}\n\nvar getEventKey_1 = getEventKey;\n\n/**\n * @interface KeyboardEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar KeyboardEventInterface = {\n  key: getEventKey_1,\n  location: null,\n  ctrlKey: null,\n  shiftKey: null,\n  altKey: null,\n  metaKey: null,\n  repeat: null,\n  locale: null,\n  getModifierState: getEventModifierState_1,\n  // Legacy Interface\n  charCode: function (event) {\n    // `charCode` is the result of a KeyPress event and represents the value of\n    // the actual printable character.\n\n    // KeyPress is deprecated, but its replacement is not yet final and not\n    // implemented in any major browser. Only KeyPress has charCode.\n    if (event.type === 'keypress') {\n      return getEventCharCode_1(event);\n    }\n    return 0;\n  },\n  keyCode: function (event) {\n    // `keyCode` is the result of a KeyDown/Up event and represents the value of\n    // physical keyboard key.\n\n    // The actual meaning of the value depends on the users' keyboard layout\n    // which cannot be detected. Assuming that it is a US keyboard layout\n    // provides a surprisingly accurate mapping for US and European users.\n    // Due to this, it is left to the user to implement at this time.\n    if (event.type === 'keydown' || event.type === 'keyup') {\n      return event.keyCode;\n    }\n    return 0;\n  },\n  which: function (event) {\n    // `which` is an alias for either `keyCode` or `charCode` depending on the\n    // type of the event.\n    if (event.type === 'keypress') {\n      return getEventCharCode_1(event);\n    }\n    if (event.type === 'keydown' || event.type === 'keyup') {\n      return event.keyCode;\n    }\n    return 0;\n  }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticKeyboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n  return SyntheticUIEvent_1.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent_1.augmentClass(SyntheticKeyboardEvent, KeyboardEventInterface);\n\nvar SyntheticKeyboardEvent_1 = SyntheticKeyboardEvent;\n\n/**\n * @interface DragEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar DragEventInterface = {\n  dataTransfer: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticDragEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n  return SyntheticMouseEvent_1.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticMouseEvent_1.augmentClass(SyntheticDragEvent, DragEventInterface);\n\nvar SyntheticDragEvent_1 = SyntheticDragEvent;\n\n/**\n * @interface TouchEvent\n * @see http://www.w3.org/TR/touch-events/\n */\nvar TouchEventInterface = {\n  touches: null,\n  targetTouches: null,\n  changedTouches: null,\n  altKey: null,\n  metaKey: null,\n  ctrlKey: null,\n  shiftKey: null,\n  getModifierState: getEventModifierState_1\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticTouchEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n  return SyntheticUIEvent_1.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent_1.augmentClass(SyntheticTouchEvent, TouchEventInterface);\n\nvar SyntheticTouchEvent_1 = SyntheticTouchEvent;\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2009/WD-css3-transitions-20090320/#transition-events-\n * @see https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent\n */\nvar TransitionEventInterface = {\n  propertyName: null,\n  elapsedTime: null,\n  pseudoElement: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticTransitionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n  return SyntheticEvent_1.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent_1.augmentClass(SyntheticTransitionEvent, TransitionEventInterface);\n\nvar SyntheticTransitionEvent_1 = SyntheticTransitionEvent;\n\n/**\n * @interface WheelEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar WheelEventInterface = {\n  deltaX: function (event) {\n    return 'deltaX' in event ? event.deltaX : // Fallback to `wheelDeltaX` for Webkit and normalize (right is positive).\n    'wheelDeltaX' in event ? -event.wheelDeltaX : 0;\n  },\n  deltaY: function (event) {\n    return 'deltaY' in event ? event.deltaY : // Fallback to `wheelDeltaY` for Webkit and normalize (down is positive).\n    'wheelDeltaY' in event ? -event.wheelDeltaY : // Fallback to `wheelDelta` for IE<9 and normalize (down is positive).\n    'wheelDelta' in event ? -event.wheelDelta : 0;\n  },\n  deltaZ: null,\n\n  // Browsers without \"deltaMode\" is reporting in raw wheel delta where one\n  // notch on the scroll is always +/- 120, roughly equivalent to pixels.\n  // A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or\n  // ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size.\n  deltaMode: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticMouseEvent}\n */\nfunction SyntheticWheelEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n  return SyntheticMouseEvent_1.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticMouseEvent_1.augmentClass(SyntheticWheelEvent, WheelEventInterface);\n\nvar SyntheticWheelEvent_1 = SyntheticWheelEvent;\n\n/**\n * Turns\n * ['abort', ...]\n * into\n * eventTypes = {\n *   'abort': {\n *     phasedRegistrationNames: {\n *       bubbled: 'onAbort',\n *       captured: 'onAbortCapture',\n *     },\n *     dependencies: ['topAbort'],\n *   },\n *   ...\n * };\n * topLevelEventsToDispatchConfig = {\n *   'topAbort': { sameConfig }\n * };\n */\nvar eventTypes$4 = {};\nvar topLevelEventsToDispatchConfig = {};\n['abort', 'animationEnd', 'animationIteration', 'animationStart', 'blur', 'cancel', 'canPlay', 'canPlayThrough', 'click', 'close', 'contextMenu', 'copy', 'cut', 'doubleClick', 'drag', 'dragEnd', 'dragEnter', 'dragExit', 'dragLeave', 'dragOver', 'dragStart', 'drop', 'durationChange', 'emptied', 'encrypted', 'ended', 'error', 'focus', 'input', 'invalid', 'keyDown', 'keyPress', 'keyUp', 'load', 'loadedData', 'loadedMetadata', 'loadStart', 'mouseDown', 'mouseMove', 'mouseOut', 'mouseOver', 'mouseUp', 'paste', 'pause', 'play', 'playing', 'progress', 'rateChange', 'reset', 'scroll', 'seeked', 'seeking', 'stalled', 'submit', 'suspend', 'timeUpdate', 'toggle', 'touchCancel', 'touchEnd', 'touchMove', 'touchStart', 'transitionEnd', 'volumeChange', 'waiting', 'wheel'].forEach(function (event) {\n  var capitalizedEvent = event[0].toUpperCase() + event.slice(1);\n  var onEvent = 'on' + capitalizedEvent;\n  var topEvent = 'top' + capitalizedEvent;\n\n  var type = {\n    phasedRegistrationNames: {\n      bubbled: onEvent,\n      captured: onEvent + 'Capture'\n    },\n    dependencies: [topEvent]\n  };\n  eventTypes$4[event] = type;\n  topLevelEventsToDispatchConfig[topEvent] = type;\n});\n\nvar SimpleEventPlugin = {\n  eventTypes: eventTypes$4,\n\n  extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n    var dispatchConfig = topLevelEventsToDispatchConfig[topLevelType];\n    if (!dispatchConfig) {\n      return null;\n    }\n    var EventConstructor;\n    switch (topLevelType) {\n      case 'topAbort':\n      case 'topCancel':\n      case 'topCanPlay':\n      case 'topCanPlayThrough':\n      case 'topClose':\n      case 'topDurationChange':\n      case 'topEmptied':\n      case 'topEncrypted':\n      case 'topEnded':\n      case 'topError':\n      case 'topInput':\n      case 'topInvalid':\n      case 'topLoad':\n      case 'topLoadedData':\n      case 'topLoadedMetadata':\n      case 'topLoadStart':\n      case 'topPause':\n      case 'topPlay':\n      case 'topPlaying':\n      case 'topProgress':\n      case 'topRateChange':\n      case 'topReset':\n      case 'topSeeked':\n      case 'topSeeking':\n      case 'topStalled':\n      case 'topSubmit':\n      case 'topSuspend':\n      case 'topTimeUpdate':\n      case 'topToggle':\n      case 'topVolumeChange':\n      case 'topWaiting':\n        // HTML Events\n        // @see http://www.w3.org/TR/html5/index.html#events-0\n        EventConstructor = SyntheticEvent_1;\n        break;\n      case 'topKeyPress':\n        // Firefox creates a keypress event for function keys too. This removes\n        // the unwanted keypress events. Enter is however both printable and\n        // non-printable. One would expect Tab to be as well (but it isn't).\n        if (getEventCharCode_1(nativeEvent) === 0) {\n          return null;\n        }\n      /* falls through */\n      case 'topKeyDown':\n      case 'topKeyUp':\n        EventConstructor = SyntheticKeyboardEvent_1;\n        break;\n      case 'topBlur':\n      case 'topFocus':\n        EventConstructor = SyntheticFocusEvent_1;\n        break;\n      case 'topClick':\n        // Firefox creates a click event on right mouse clicks. This removes the\n        // unwanted click events.\n        if (nativeEvent.button === 2) {\n          return null;\n        }\n      /* falls through */\n      case 'topDoubleClick':\n      case 'topMouseDown':\n      case 'topMouseMove':\n      case 'topMouseUp':\n      // TODO: Disabled elements should not respond to mouse events\n      /* falls through */\n      case 'topMouseOut':\n      case 'topMouseOver':\n      case 'topContextMenu':\n        EventConstructor = SyntheticMouseEvent_1;\n        break;\n      case 'topDrag':\n      case 'topDragEnd':\n      case 'topDragEnter':\n      case 'topDragExit':\n      case 'topDragLeave':\n      case 'topDragOver':\n      case 'topDragStart':\n      case 'topDrop':\n        EventConstructor = SyntheticDragEvent_1;\n        break;\n      case 'topTouchCancel':\n      case 'topTouchEnd':\n      case 'topTouchMove':\n      case 'topTouchStart':\n        EventConstructor = SyntheticTouchEvent_1;\n        break;\n      case 'topAnimationEnd':\n      case 'topAnimationIteration':\n      case 'topAnimationStart':\n        EventConstructor = SyntheticAnimationEvent_1;\n        break;\n      case 'topTransitionEnd':\n        EventConstructor = SyntheticTransitionEvent_1;\n        break;\n      case 'topScroll':\n        EventConstructor = SyntheticUIEvent_1;\n        break;\n      case 'topWheel':\n        EventConstructor = SyntheticWheelEvent_1;\n        break;\n      case 'topCopy':\n      case 'topCut':\n      case 'topPaste':\n        EventConstructor = SyntheticClipboardEvent_1;\n        break;\n    }\n    !EventConstructor ? invariant(false, 'SimpleEventPlugin: Unhandled event type, `%s`.', topLevelType) : void 0;\n    var event = EventConstructor.getPooled(dispatchConfig, targetInst, nativeEvent, nativeEventTarget);\n    EventPropagators_1.accumulateTwoPhaseDispatches(event);\n    return event;\n  }\n};\n\nvar SimpleEventPlugin_1 = SimpleEventPlugin;\n\nReactDOMEventListener_1.setHandleTopLevel(ReactBrowserEventEmitter_1.handleTopLevel);\n\n/**\n * Inject modules for resolving DOM hierarchy and plugin ordering.\n */\nEventPluginHub_1.injection.injectEventPluginOrder(DOMEventPluginOrder_1);\nEventPluginUtils_1.injection.injectComponentTree(ReactDOMComponentTree_1);\n\n/**\n * Some important event plugins included by default (without having to require\n * them).\n */\nEventPluginHub_1.injection.injectEventPluginsByName({\n  SimpleEventPlugin: SimpleEventPlugin_1,\n  EnterLeaveEventPlugin: EnterLeaveEventPlugin_1,\n  ChangeEventPlugin: ChangeEventPlugin_1,\n  SelectEventPlugin: SelectEventPlugin_1,\n  BeforeInputEventPlugin: BeforeInputEventPlugin_1\n});\n\nvar MUST_USE_PROPERTY = DOMProperty_1.injection.MUST_USE_PROPERTY;\nvar HAS_BOOLEAN_VALUE = DOMProperty_1.injection.HAS_BOOLEAN_VALUE;\nvar HAS_NUMERIC_VALUE = DOMProperty_1.injection.HAS_NUMERIC_VALUE;\nvar HAS_POSITIVE_NUMERIC_VALUE = DOMProperty_1.injection.HAS_POSITIVE_NUMERIC_VALUE;\nvar HAS_OVERLOADED_BOOLEAN_VALUE = DOMProperty_1.injection.HAS_OVERLOADED_BOOLEAN_VALUE;\nvar HAS_STRING_BOOLEAN_VALUE = DOMProperty_1.injection.HAS_STRING_BOOLEAN_VALUE;\n\nvar HTMLDOMPropertyConfig = {\n  // When adding attributes to this list, be sure to also add them to\n  // the `possibleStandardNames` module to ensure casing and incorrect\n  // name warnings.\n  Properties: {\n    allowFullScreen: HAS_BOOLEAN_VALUE,\n    // IE only true/false iFrame attribute\n    // https://msdn.microsoft.com/en-us/library/ms533072(v=vs.85).aspx\n    allowTransparency: HAS_STRING_BOOLEAN_VALUE,\n    // specifies target context for links with `preload` type\n    async: HAS_BOOLEAN_VALUE,\n    // autoFocus is polyfilled/normalized by AutoFocusUtils\n    // autoFocus: HAS_BOOLEAN_VALUE,\n    autoPlay: HAS_BOOLEAN_VALUE,\n    capture: HAS_BOOLEAN_VALUE,\n    checked: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n    cols: HAS_POSITIVE_NUMERIC_VALUE,\n    contentEditable: HAS_STRING_BOOLEAN_VALUE,\n    controls: HAS_BOOLEAN_VALUE,\n    'default': HAS_BOOLEAN_VALUE,\n    defer: HAS_BOOLEAN_VALUE,\n    disabled: HAS_BOOLEAN_VALUE,\n    download: HAS_OVERLOADED_BOOLEAN_VALUE,\n    draggable: HAS_STRING_BOOLEAN_VALUE,\n    formNoValidate: HAS_BOOLEAN_VALUE,\n    hidden: HAS_BOOLEAN_VALUE,\n    loop: HAS_BOOLEAN_VALUE,\n    // Caution; `option.selected` is not updated if `select.multiple` is\n    // disabled with `removeAttribute`.\n    multiple: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n    muted: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n    noValidate: HAS_BOOLEAN_VALUE,\n    open: HAS_BOOLEAN_VALUE,\n    playsInline: HAS_BOOLEAN_VALUE,\n    readOnly: HAS_BOOLEAN_VALUE,\n    required: HAS_BOOLEAN_VALUE,\n    reversed: HAS_BOOLEAN_VALUE,\n    rows: HAS_POSITIVE_NUMERIC_VALUE,\n    rowSpan: HAS_NUMERIC_VALUE,\n    scoped: HAS_BOOLEAN_VALUE,\n    seamless: HAS_BOOLEAN_VALUE,\n    selected: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n    size: HAS_POSITIVE_NUMERIC_VALUE,\n    start: HAS_NUMERIC_VALUE,\n    // support for projecting regular DOM Elements via V1 named slots ( shadow dom )\n    span: HAS_POSITIVE_NUMERIC_VALUE,\n    spellCheck: HAS_STRING_BOOLEAN_VALUE,\n    // Style must be explicitly set in the attribute list. React components\n    // expect a style object\n    style: 0,\n    // itemScope is for for Microdata support.\n    // See http://schema.org/docs/gs.html\n    itemScope: HAS_BOOLEAN_VALUE,\n    // These attributes must stay in the white-list because they have\n    // different attribute names (see DOMAttributeNames below)\n    acceptCharset: 0,\n    className: 0,\n    htmlFor: 0,\n    httpEquiv: 0,\n    // Attributes with mutation methods must be specified in the whitelist\n    // Set the string boolean flag to allow the behavior\n    value: HAS_STRING_BOOLEAN_VALUE\n  },\n  DOMAttributeNames: {\n    acceptCharset: 'accept-charset',\n    className: 'class',\n    htmlFor: 'for',\n    httpEquiv: 'http-equiv'\n  },\n  DOMMutationMethods: {\n    value: function (node, value) {\n      if (value == null) {\n        return node.removeAttribute('value');\n      }\n\n      // Number inputs get special treatment due to some edge cases in\n      // Chrome. Let everything else assign the value attribute as normal.\n      // https://github.com/facebook/react/issues/7253#issuecomment-236074326\n      if (node.type !== 'number' || node.hasAttribute('value') === false) {\n        node.setAttribute('value', '' + value);\n      } else if (node.validity && !node.validity.badInput && node.ownerDocument.activeElement !== node) {\n        // Don't assign an attribute if validation reports bad\n        // input. Chrome will clear the value. Additionally, don't\n        // operate on inputs that have focus, otherwise Chrome might\n        // strip off trailing decimal places and cause the user's\n        // cursor position to jump to the beginning of the input.\n        //\n        // In ReactDOMInput, we have an onBlur event that will trigger\n        // this function again when focus is lost.\n        node.setAttribute('value', '' + value);\n      }\n    }\n  }\n};\n\nvar HTMLDOMPropertyConfig_1 = HTMLDOMPropertyConfig;\n\nvar HAS_STRING_BOOLEAN_VALUE$1 = DOMProperty_1.injection.HAS_STRING_BOOLEAN_VALUE;\n\n\nvar NS = {\n  xlink: 'http://www.w3.org/1999/xlink',\n  xml: 'http://www.w3.org/XML/1998/namespace'\n};\n\n/**\n * This is a list of all SVG attributes that need special casing,\n * namespacing, or boolean value assignment.\n *\n * When adding attributes to this list, be sure to also add them to\n * the `possibleStandardNames` module to ensure casing and incorrect\n * name warnings.\n *\n * SVG Attributes List:\n * https://www.w3.org/TR/SVG/attindex.html\n * SMIL Spec:\n * https://www.w3.org/TR/smil\n */\nvar ATTRS = ['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', 'x-height', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xmlns:xlink', 'xml:lang', 'xml:space'];\n\nvar SVGDOMPropertyConfig = {\n  Properties: {\n    autoReverse: HAS_STRING_BOOLEAN_VALUE$1,\n    externalResourcesRequired: HAS_STRING_BOOLEAN_VALUE$1,\n    preserveAlpha: HAS_STRING_BOOLEAN_VALUE$1\n  },\n  DOMAttributeNames: {\n    autoReverse: 'autoReverse',\n    externalResourcesRequired: 'externalResourcesRequired',\n    preserveAlpha: 'preserveAlpha'\n  },\n  DOMAttributeNamespaces: {\n    xlinkActuate: NS.xlink,\n    xlinkArcrole: NS.xlink,\n    xlinkHref: NS.xlink,\n    xlinkRole: NS.xlink,\n    xlinkShow: NS.xlink,\n    xlinkTitle: NS.xlink,\n    xlinkType: NS.xlink,\n    xmlBase: NS.xml,\n    xmlLang: NS.xml,\n    xmlSpace: NS.xml\n  }\n};\n\nvar CAMELIZE = /[\\-\\:]([a-z])/g;\nvar capitalize = function (token) {\n  return token[1].toUpperCase();\n};\n\nATTRS.forEach(function (original) {\n  var reactName = original.replace(CAMELIZE, capitalize);\n\n  SVGDOMPropertyConfig.Properties[reactName] = 0;\n  SVGDOMPropertyConfig.DOMAttributeNames[reactName] = original;\n});\n\nvar SVGDOMPropertyConfig_1 = SVGDOMPropertyConfig;\n\nDOMProperty_1.injection.injectDOMPropertyConfig(HTMLDOMPropertyConfig_1);\nDOMProperty_1.injection.injectDOMPropertyConfig(SVGDOMPropertyConfig_1);\n\nvar injectInternals = ReactFiberDevToolsHook.injectInternals;\n\nvar ELEMENT_NODE = HTMLNodeType_1.ELEMENT_NODE;\nvar TEXT_NODE = HTMLNodeType_1.TEXT_NODE;\nvar COMMENT_NODE = HTMLNodeType_1.COMMENT_NODE;\nvar DOCUMENT_NODE = HTMLNodeType_1.DOCUMENT_NODE;\nvar DOCUMENT_FRAGMENT_NODE = HTMLNodeType_1.DOCUMENT_FRAGMENT_NODE;\n\nvar ROOT_ATTRIBUTE_NAME = DOMProperty_1.ROOT_ATTRIBUTE_NAME;\n\n\n\n\nvar getChildNamespace = DOMNamespaces.getChildNamespace;\nvar createElement = ReactDOMFiberComponent_1.createElement;\nvar createTextNode = ReactDOMFiberComponent_1.createTextNode;\nvar setInitialProperties = ReactDOMFiberComponent_1.setInitialProperties;\nvar diffProperties = ReactDOMFiberComponent_1.diffProperties;\nvar updateProperties = ReactDOMFiberComponent_1.updateProperties;\nvar diffHydratedProperties = ReactDOMFiberComponent_1.diffHydratedProperties;\nvar diffHydratedText = ReactDOMFiberComponent_1.diffHydratedText;\nvar warnForDeletedHydratableElement = ReactDOMFiberComponent_1.warnForDeletedHydratableElement;\nvar warnForDeletedHydratableText = ReactDOMFiberComponent_1.warnForDeletedHydratableText;\nvar warnForInsertedHydratedElement = ReactDOMFiberComponent_1.warnForInsertedHydratedElement;\nvar warnForInsertedHydratedText = ReactDOMFiberComponent_1.warnForInsertedHydratedText;\nvar precacheFiberNode = ReactDOMComponentTree_1.precacheFiberNode;\nvar updateFiberProps = ReactDOMComponentTree_1.updateFiberProps;\n\n\n{\n  var lowPriorityWarning = lowPriorityWarning_1;\n  var warning = require$$0;\n  var validateDOMNesting = validateDOMNesting_1;\n  var updatedAncestorInfo = validateDOMNesting.updatedAncestorInfo;\n\n\n  if (typeof Map !== 'function' || Map.prototype == null || typeof Map.prototype.forEach !== 'function' || typeof Set !== 'function' || Set.prototype == null || typeof Set.prototype.clear !== 'function' || typeof Set.prototype.forEach !== 'function') {\n    warning(false, 'React depends on Map and Set built-in types. Make sure that you load a ' + 'polyfill in older browsers. http://fb.me/react-polyfills');\n  }\n}\n\n\n\nReactControlledComponent_1.injection.injectFiberControlledHostComponent(ReactDOMFiberComponent_1);\nfindDOMNode_1._injectFiber(function (fiber) {\n  return DOMRenderer.findHostInstance(fiber);\n});\n\nvar eventsEnabled = null;\nvar selectionInformation = null;\n\n/**\n * True if the supplied DOM node is a valid node element.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM is a valid DOM node.\n * @internal\n */\nfunction isValidContainer(node) {\n  return !!(node && (node.nodeType === ELEMENT_NODE || node.nodeType === DOCUMENT_NODE || node.nodeType === DOCUMENT_FRAGMENT_NODE || node.nodeType === COMMENT_NODE && node.nodeValue === ' react-mount-point-unstable '));\n}\n\nfunction getReactRootElementInContainer(container) {\n  if (!container) {\n    return null;\n  }\n\n  if (container.nodeType === DOCUMENT_NODE) {\n    return container.documentElement;\n  } else {\n    return container.firstChild;\n  }\n}\n\nfunction shouldHydrateDueToLegacyHeuristic(container) {\n  var rootElement = getReactRootElementInContainer(container);\n  return !!(rootElement && rootElement.nodeType === ELEMENT_NODE && rootElement.hasAttribute(ROOT_ATTRIBUTE_NAME));\n}\n\nfunction shouldAutoFocusHostComponent(type, props) {\n  switch (type) {\n    case 'button':\n    case 'input':\n    case 'select':\n    case 'textarea':\n      return !!props.autoFocus;\n  }\n  return false;\n}\n\nvar DOMRenderer = ReactFiberReconciler({\n  getRootHostContext: function (rootContainerInstance) {\n    var type = void 0;\n    var namespace = void 0;\n    if (rootContainerInstance.nodeType === DOCUMENT_NODE) {\n      type = '#document';\n      var root = rootContainerInstance.documentElement;\n      namespace = root ? root.namespaceURI : getChildNamespace(null, '');\n    } else {\n      var container = rootContainerInstance.nodeType === COMMENT_NODE ? rootContainerInstance.parentNode : rootContainerInstance;\n      var ownNamespace = container.namespaceURI || null;\n      type = container.tagName;\n      namespace = getChildNamespace(ownNamespace, type);\n    }\n    {\n      var validatedTag = type.toLowerCase();\n      var _ancestorInfo = updatedAncestorInfo(null, validatedTag, null);\n      return { namespace: namespace, ancestorInfo: _ancestorInfo };\n    }\n    return namespace;\n  },\n  getChildHostContext: function (parentHostContext, type) {\n    {\n      var parentHostContextDev = parentHostContext;\n      var _namespace = getChildNamespace(parentHostContextDev.namespace, type);\n      var _ancestorInfo2 = updatedAncestorInfo(parentHostContextDev.ancestorInfo, type, null);\n      return { namespace: _namespace, ancestorInfo: _ancestorInfo2 };\n    }\n    var parentNamespace = parentHostContext;\n    return getChildNamespace(parentNamespace, type);\n  },\n  getPublicInstance: function (instance) {\n    return instance;\n  },\n  prepareForCommit: function () {\n    eventsEnabled = ReactBrowserEventEmitter_1.isEnabled();\n    selectionInformation = ReactInputSelection_1.getSelectionInformation();\n    ReactBrowserEventEmitter_1.setEnabled(false);\n  },\n  resetAfterCommit: function () {\n    ReactInputSelection_1.restoreSelection(selectionInformation);\n    selectionInformation = null;\n    ReactBrowserEventEmitter_1.setEnabled(eventsEnabled);\n    eventsEnabled = null;\n  },\n  createInstance: function (type, props, rootContainerInstance, hostContext, internalInstanceHandle) {\n    var parentNamespace = void 0;\n    {\n      // TODO: take namespace into account when validating.\n      var hostContextDev = hostContext;\n      validateDOMNesting(type, null, null, hostContextDev.ancestorInfo);\n      if (typeof props.children === 'string' || typeof props.children === 'number') {\n        var string = '' + props.children;\n        var ownAncestorInfo = updatedAncestorInfo(hostContextDev.ancestorInfo, type, null);\n        validateDOMNesting(null, string, null, ownAncestorInfo);\n      }\n      parentNamespace = hostContextDev.namespace;\n    }\n    var domElement = createElement(type, props, rootContainerInstance, parentNamespace);\n    precacheFiberNode(internalInstanceHandle, domElement);\n    updateFiberProps(domElement, props);\n    return domElement;\n  },\n  appendInitialChild: function (parentInstance, child) {\n    parentInstance.appendChild(child);\n  },\n  finalizeInitialChildren: function (domElement, type, props, rootContainerInstance) {\n    setInitialProperties(domElement, type, props, rootContainerInstance);\n    return shouldAutoFocusHostComponent(type, props);\n  },\n  prepareUpdate: function (domElement, type, oldProps, newProps, rootContainerInstance, hostContext) {\n    {\n      var hostContextDev = hostContext;\n      if (typeof newProps.children !== typeof oldProps.children && (typeof newProps.children === 'string' || typeof newProps.children === 'number')) {\n        var string = '' + newProps.children;\n        var ownAncestorInfo = updatedAncestorInfo(hostContextDev.ancestorInfo, type, null);\n        validateDOMNesting(null, string, null, ownAncestorInfo);\n      }\n    }\n    return diffProperties(domElement, type, oldProps, newProps, rootContainerInstance);\n  },\n  commitMount: function (domElement, type, newProps, internalInstanceHandle) {\n    domElement.focus();\n  },\n  commitUpdate: function (domElement, updatePayload, type, oldProps, newProps, internalInstanceHandle) {\n    // Update the props handle so that we know which props are the ones with\n    // with current event handlers.\n    updateFiberProps(domElement, newProps);\n    // Apply the diff to the DOM node.\n    updateProperties(domElement, updatePayload, type, oldProps, newProps);\n  },\n  shouldSetTextContent: function (type, props) {\n    return type === 'textarea' || typeof props.children === 'string' || typeof props.children === 'number' || typeof props.dangerouslySetInnerHTML === 'object' && props.dangerouslySetInnerHTML !== null && typeof props.dangerouslySetInnerHTML.__html === 'string';\n  },\n  resetTextContent: function (domElement) {\n    domElement.textContent = '';\n  },\n  shouldDeprioritizeSubtree: function (type, props) {\n    return !!props.hidden;\n  },\n  createTextInstance: function (text, rootContainerInstance, hostContext, internalInstanceHandle) {\n    {\n      var hostContextDev = hostContext;\n      validateDOMNesting(null, text, null, hostContextDev.ancestorInfo);\n    }\n    var textNode = createTextNode(text, rootContainerInstance);\n    precacheFiberNode(internalInstanceHandle, textNode);\n    return textNode;\n  },\n  commitTextUpdate: function (textInstance, oldText, newText) {\n    textInstance.nodeValue = newText;\n  },\n  appendChild: function (parentInstance, child) {\n    parentInstance.appendChild(child);\n  },\n  appendChildToContainer: function (container, child) {\n    if (container.nodeType === COMMENT_NODE) {\n      container.parentNode.insertBefore(child, container);\n    } else {\n      container.appendChild(child);\n    }\n  },\n  insertBefore: function (parentInstance, child, beforeChild) {\n    parentInstance.insertBefore(child, beforeChild);\n  },\n  insertInContainerBefore: function (container, child, beforeChild) {\n    if (container.nodeType === COMMENT_NODE) {\n      container.parentNode.insertBefore(child, beforeChild);\n    } else {\n      container.insertBefore(child, beforeChild);\n    }\n  },\n  removeChild: function (parentInstance, child) {\n    parentInstance.removeChild(child);\n  },\n  removeChildFromContainer: function (container, child) {\n    if (container.nodeType === COMMENT_NODE) {\n      container.parentNode.removeChild(child);\n    } else {\n      container.removeChild(child);\n    }\n  },\n  canHydrateInstance: function (instance, type, props) {\n    return instance.nodeType === ELEMENT_NODE && type === instance.nodeName.toLowerCase();\n  },\n  canHydrateTextInstance: function (instance, text) {\n    if (text === '') {\n      // Empty strings are not parsed by HTML so there won't be a correct match here.\n      return false;\n    }\n    return instance.nodeType === TEXT_NODE;\n  },\n  getNextHydratableSibling: function (instance) {\n    var node = instance.nextSibling;\n    // Skip non-hydratable nodes.\n    while (node && node.nodeType !== ELEMENT_NODE && node.nodeType !== TEXT_NODE) {\n      node = node.nextSibling;\n    }\n    return node;\n  },\n  getFirstHydratableChild: function (parentInstance) {\n    var next = parentInstance.firstChild;\n    // Skip non-hydratable nodes.\n    while (next && next.nodeType !== ELEMENT_NODE && next.nodeType !== TEXT_NODE) {\n      next = next.nextSibling;\n    }\n    return next;\n  },\n  hydrateInstance: function (instance, type, props, rootContainerInstance, hostContext, internalInstanceHandle) {\n    precacheFiberNode(internalInstanceHandle, instance);\n    // TODO: Possibly defer this until the commit phase where all the events\n    // get attached.\n    updateFiberProps(instance, props);\n    var parentNamespace = void 0;\n    {\n      var hostContextDev = hostContext;\n      parentNamespace = hostContextDev.namespace;\n    }\n    return diffHydratedProperties(instance, type, props, parentNamespace, rootContainerInstance);\n  },\n  hydrateTextInstance: function (textInstance, text, internalInstanceHandle) {\n    precacheFiberNode(internalInstanceHandle, textInstance);\n    return diffHydratedText(textInstance, text);\n  },\n  didNotHydrateInstance: function (parentInstance, instance) {\n    if (instance.nodeType === 1) {\n      warnForDeletedHydratableElement(parentInstance, instance);\n    } else {\n      warnForDeletedHydratableText(parentInstance, instance);\n    }\n  },\n  didNotFindHydratableInstance: function (parentInstance, type, props) {\n    warnForInsertedHydratedElement(parentInstance, type, props);\n  },\n  didNotFindHydratableTextInstance: function (parentInstance, text) {\n    warnForInsertedHydratedText(parentInstance, text);\n  },\n\n\n  scheduleDeferredCallback: ReactDOMFrameScheduling.rIC,\n\n  useSyncScheduling: !ReactDOMFeatureFlags_1.fiberAsyncScheduling\n});\n\nReactGenericBatching_1.injection.injectFiberBatchedUpdates(DOMRenderer.batchedUpdates);\n\nvar warnedAboutHydrateAPI = false;\n\nfunction renderSubtreeIntoContainer(parentComponent, children, container, forceHydrate, callback) {\n  !isValidContainer(container) ? invariant(false, 'Target container is not a DOM element.') : void 0;\n\n  {\n    if (container._reactRootContainer && container.nodeType !== COMMENT_NODE) {\n      var hostInstance = DOMRenderer.findHostInstanceWithNoPortals(container._reactRootContainer.current);\n      if (hostInstance) {\n        warning(hostInstance.parentNode === container, 'render(...): It looks like the React-rendered content of this ' + 'container was removed without using React. This is not ' + 'supported and will cause errors. Instead, call ' + 'ReactDOM.unmountComponentAtNode to empty a container.');\n      }\n    }\n\n    var isRootRenderedBySomeReact = !!container._reactRootContainer;\n    var rootEl = getReactRootElementInContainer(container);\n    var hasNonRootReactChild = !!(rootEl && ReactDOMComponentTree_1.getInstanceFromNode(rootEl));\n\n    warning(!hasNonRootReactChild || isRootRenderedBySomeReact, 'render(...): Replacing React-rendered children with a new root ' + 'component. If you intended to update the children of this node, ' + 'you should instead have the existing children update their state ' + 'and render the new components instead of calling ReactDOM.render.');\n\n    warning(container.nodeType !== ELEMENT_NODE || !container.tagName || container.tagName.toUpperCase() !== 'BODY', 'render(): Rendering components directly into document.body is ' + 'discouraged, since its children are often manipulated by third-party ' + 'scripts and browser extensions. This may lead to subtle ' + 'reconciliation issues. Try rendering into a container element created ' + 'for your app.');\n  }\n\n  var root = container._reactRootContainer;\n  if (!root) {\n    var shouldHydrate = forceHydrate || shouldHydrateDueToLegacyHeuristic(container);\n    // First clear any existing content.\n    if (!shouldHydrate) {\n      var warned = false;\n      var rootSibling = void 0;\n      while (rootSibling = container.lastChild) {\n        {\n          if (!warned && rootSibling.nodeType === ELEMENT_NODE && rootSibling.hasAttribute(ROOT_ATTRIBUTE_NAME)) {\n            warned = true;\n            warning(false, 'render(): Target node has markup rendered by React, but there ' + 'are unrelated nodes as well. This is most commonly caused by ' + 'white-space inserted around server-rendered markup.');\n          }\n        }\n        container.removeChild(rootSibling);\n      }\n    }\n    {\n      if (shouldHydrate && !forceHydrate && !warnedAboutHydrateAPI) {\n        warnedAboutHydrateAPI = true;\n        lowPriorityWarning(false, 'render(): Calling ReactDOM.render() to hydrate server-rendered markup ' + 'will stop working in React v17. Replace the ReactDOM.render() call ' + 'with ReactDOM.hydrate() if you want React to attach to the server HTML.');\n      }\n    }\n    var newRoot = DOMRenderer.createContainer(container);\n    root = container._reactRootContainer = newRoot;\n    // Initial mount should not be batched.\n    DOMRenderer.unbatchedUpdates(function () {\n      DOMRenderer.updateContainer(children, newRoot, parentComponent, callback);\n    });\n  } else {\n    DOMRenderer.updateContainer(children, root, parentComponent, callback);\n  }\n  return DOMRenderer.getPublicRootInstance(root);\n}\n\nfunction createPortal(children, container) {\n  var key = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n  !isValidContainer(container) ? invariant(false, 'Target container is not a DOM element.') : void 0;\n  // TODO: pass ReactDOM portal implementation as third argument\n  return ReactPortal.createPortal(children, container, null, key);\n}\n\nvar ReactDOMFiber = {\n  createPortal: createPortal,\n\n  hydrate: function (element, container, callback) {\n    // TODO: throw or warn if we couldn't hydrate?\n    return renderSubtreeIntoContainer(null, element, container, true, callback);\n  },\n  render: function (element, container, callback) {\n    return renderSubtreeIntoContainer(null, element, container, false, callback);\n  },\n  unstable_renderSubtreeIntoContainer: function (parentComponent, element, containerNode, callback) {\n    !(parentComponent != null && ReactInstanceMap_1.has(parentComponent)) ? invariant(false, 'parentComponent must be a valid React Component') : void 0;\n    return renderSubtreeIntoContainer(parentComponent, element, containerNode, false, callback);\n  },\n  unmountComponentAtNode: function (container) {\n    !isValidContainer(container) ? invariant(false, 'unmountComponentAtNode(...): Target container is not a DOM element.') : void 0;\n\n    if (container._reactRootContainer) {\n      {\n        var rootEl = getReactRootElementInContainer(container);\n        var renderedByDifferentReact = rootEl && !ReactDOMComponentTree_1.getInstanceFromNode(rootEl);\n        warning(!renderedByDifferentReact, \"unmountComponentAtNode(): The node you're attempting to unmount \" + 'was rendered by another copy of React.');\n      }\n\n      // Unmount should not be batched.\n      DOMRenderer.unbatchedUpdates(function () {\n        renderSubtreeIntoContainer(null, null, container, false, function () {\n          container._reactRootContainer = null;\n        });\n      });\n      // If you call unmountComponentAtNode twice in quick succession, you'll\n      // get `true` twice. That's probably fine?\n      return true;\n    } else {\n      {\n        var _rootEl = getReactRootElementInContainer(container);\n        var hasNonRootReactChild = !!(_rootEl && ReactDOMComponentTree_1.getInstanceFromNode(_rootEl));\n\n        // Check if the container itself is a React root node.\n        var isContainerReactRoot = container.nodeType === 1 && isValidContainer(container.parentNode) && !!container.parentNode._reactRootContainer;\n\n        warning(!hasNonRootReactChild, \"unmountComponentAtNode(): The node you're attempting to unmount \" + 'was rendered by React and is not a top-level container. %s', isContainerReactRoot ? 'You may have accidentally passed in a React root node instead ' + 'of its container.' : 'Instead, have the parent component update its state and ' + 'rerender in order to remove this component.');\n      }\n\n      return false;\n    }\n  },\n\n\n  findDOMNode: findDOMNode_1,\n\n  // Temporary alias since we already shipped React 16 RC with it.\n  // TODO: remove in React 17.\n  unstable_createPortal: createPortal,\n\n  unstable_batchedUpdates: ReactGenericBatching_1.batchedUpdates,\n\n  unstable_deferredUpdates: DOMRenderer.deferredUpdates,\n\n  flushSync: DOMRenderer.flushSync,\n\n  __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: {\n    // For TapEventPlugin which is popular in open source\n    EventPluginHub: EventPluginHub_1,\n    // Used by test-utils\n    EventPluginRegistry: EventPluginRegistry_1,\n    EventPropagators: EventPropagators_1,\n    ReactControlledComponent: ReactControlledComponent_1,\n    ReactDOMComponentTree: ReactDOMComponentTree_1,\n    ReactDOMEventListener: ReactDOMEventListener_1\n  }\n};\n\nvar foundDevTools = injectInternals({\n  findFiberByHostInstance: ReactDOMComponentTree_1.getClosestInstanceFromNode,\n  findHostInstanceByFiber: DOMRenderer.findHostInstance,\n  // This is an enum because we may add more (e.g. profiler build)\n  bundleType: 1,\n  version: ReactVersion,\n  rendererPackageName: 'react-dom'\n});\n\n{\n  if (!foundDevTools && ExecutionEnvironment.canUseDOM && window.top === window.self) {\n    // If we're in Chrome or Firefox, provide a download link if not installed.\n    if (navigator.userAgent.indexOf('Chrome') > -1 && navigator.userAgent.indexOf('Edge') === -1 || navigator.userAgent.indexOf('Firefox') > -1) {\n      var protocol = window.location.protocol;\n      // Don't warn in exotic cases like chrome-extension://.\n      if (/^(https?|file):$/.test(protocol)) {\n        console.info('%cDownload the React DevTools ' + 'for a better development experience: ' + 'https://fb.me/react-devtools' + (protocol === 'file:' ? '\\nYou might need to use a local HTTP server (instead of file://): ' + 'https://fb.me/react-devtools-faq' : ''), 'font-weight:bold');\n      }\n    }\n  }\n}\n\nvar ReactDOMFiberEntry = ReactDOMFiber;\n\nmodule.exports = ReactDOMFiberEntry;\n\n})();\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/cjs/react-dom.development.js\n// module id = 341\n// module chunks = 0","/**\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 * @typechecks\n */\n\n'use strict';\n\nvar hyphenate = require('./hyphenate');\n\nvar msPattern = /^ms-/;\n\n/**\n * Hyphenates a camelcased CSS property name, for example:\n *\n *   > hyphenateStyleName('backgroundColor')\n *   < \"background-color\"\n *   > hyphenateStyleName('MozTransition')\n *   < \"-moz-transition\"\n *   > hyphenateStyleName('msTransition')\n *   < \"-ms-transition\"\n *\n * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n * is converted to `-ms-`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenateStyleName(string) {\n  return hyphenate(string).replace(msPattern, '-ms-');\n}\n\nmodule.exports = hyphenateStyleName;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/hyphenateStyleName.js\n// module id = 342\n// module chunks = 0","'use strict';\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 * @typechecks\n */\n\nvar _uppercasePattern = /([A-Z])/g;\n\n/**\n * Hyphenates a camelcased string, for example:\n *\n *   > hyphenate('backgroundColor')\n *   < \"background-color\"\n *\n * For CSS style names, use `hyphenateStyleName` instead which works properly\n * with all vendor prefixes, including `ms`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenate(string) {\n  return string.replace(_uppercasePattern, '-$1').toLowerCase();\n}\n\nmodule.exports = hyphenate;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/hyphenate.js\n// module id = 343\n// module chunks = 0","/**\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 * @typechecks\n */\n\n'use strict';\n\nvar camelize = require('./camelize');\n\nvar msPattern = /^-ms-/;\n\n/**\n * Camelcases a hyphenated CSS property name, for example:\n *\n *   > camelizeStyleName('background-color')\n *   < \"backgroundColor\"\n *   > camelizeStyleName('-moz-transition')\n *   < \"MozTransition\"\n *   > camelizeStyleName('-ms-transition')\n *   < \"msTransition\"\n *\n * As Andi Smith suggests\n * (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix\n * is converted to lowercase `ms`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction camelizeStyleName(string) {\n  return camelize(string.replace(msPattern, 'ms-'));\n}\n\nmodule.exports = camelizeStyleName;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/camelizeStyleName.js\n// module id = 344\n// module chunks = 0","\"use strict\";\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 * @typechecks\n */\n\nvar _hyphenPattern = /-(.)/g;\n\n/**\n * Camelcases a hyphenated string, for example:\n *\n *   > camelize('background-color')\n *   < \"backgroundColor\"\n *\n * @param {string} string\n * @return {string}\n */\nfunction camelize(string) {\n  return string.replace(_hyphenPattern, function (_, character) {\n    return character.toUpperCase();\n  });\n}\n\nmodule.exports = camelize;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/camelize.js\n// module id = 345\n// module chunks = 0","'use strict';\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 * @typechecks\n */\n\nvar performance = require('./performance');\n\nvar performanceNow;\n\n/**\n * Detect if we can use `window.performance.now()` and gracefully fallback to\n * `Date.now()` if it doesn't exist. We need to support Firefox < 15 for now\n * because of Facebook's testing infrastructure.\n */\nif (performance.now) {\n  performanceNow = function performanceNow() {\n    return performance.now();\n  };\n} else {\n  performanceNow = function performanceNow() {\n    return Date.now();\n  };\n}\n\nmodule.exports = performanceNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/performanceNow.js\n// module id = 346\n// module chunks = 0","/**\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 * @typechecks\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar performance;\n\nif (ExecutionEnvironment.canUseDOM) {\n  performance = window.performance || window.msPerformance || window.webkitPerformance;\n}\n\nmodule.exports = performance || {};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/performance.js\n// module id = 347\n// module chunks = 0","/**\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 emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n  /* global Symbol */\n  var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n  var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n  /**\n   * Returns the iterator method function contained on the iterable object.\n   *\n   * Be sure to invoke the function with the iterable as context:\n   *\n   *     var iteratorFn = getIteratorFn(myIterable);\n   *     if (iteratorFn) {\n   *       var iterator = iteratorFn.call(myIterable);\n   *       ...\n   *     }\n   *\n   * @param {?object} maybeIterable\n   * @return {?function}\n   */\n  function getIteratorFn(maybeIterable) {\n    var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n    if (typeof iteratorFn === 'function') {\n      return iteratorFn;\n    }\n  }\n\n  /**\n   * Collection of methods that allow declaration and validation of props that are\n   * supplied to React components. Example usage:\n   *\n   *   var Props = require('ReactPropTypes');\n   *   var MyArticle = React.createClass({\n   *     propTypes: {\n   *       // An optional string prop named \"description\".\n   *       description: Props.string,\n   *\n   *       // A required enum prop named \"category\".\n   *       category: Props.oneOf(['News','Photos']).isRequired,\n   *\n   *       // A prop named \"dialog\" that requires an instance of Dialog.\n   *       dialog: Props.instanceOf(Dialog).isRequired\n   *     },\n   *     render: function() { ... }\n   *   });\n   *\n   * A more formal specification of how these methods are used:\n   *\n   *   type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n   *   decl := ReactPropTypes.{type}(.isRequired)?\n   *\n   * Each and every declaration produces a function with the same signature. This\n   * allows the creation of custom validation functions. For example:\n   *\n   *  var MyLink = React.createClass({\n   *    propTypes: {\n   *      // An optional string or URI prop named \"href\".\n   *      href: function(props, propName, componentName) {\n   *        var propValue = props[propName];\n   *        if (propValue != null && typeof propValue !== 'string' &&\n   *            !(propValue instanceof URI)) {\n   *          return new Error(\n   *            'Expected a string or an URI for ' + propName + ' in ' +\n   *            componentName\n   *          );\n   *        }\n   *      }\n   *    },\n   *    render: function() {...}\n   *  });\n   *\n   * @internal\n   */\n\n  var ANONYMOUS = '<<anonymous>>';\n\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n  var ReactPropTypes = {\n    array: createPrimitiveTypeChecker('array'),\n    bool: createPrimitiveTypeChecker('boolean'),\n    func: createPrimitiveTypeChecker('function'),\n    number: createPrimitiveTypeChecker('number'),\n    object: createPrimitiveTypeChecker('object'),\n    string: createPrimitiveTypeChecker('string'),\n    symbol: createPrimitiveTypeChecker('symbol'),\n\n    any: createAnyTypeChecker(),\n    arrayOf: createArrayOfTypeChecker,\n    element: createElementTypeChecker(),\n    instanceOf: createInstanceTypeChecker,\n    node: createNodeChecker(),\n    objectOf: createObjectOfTypeChecker,\n    oneOf: createEnumTypeChecker,\n    oneOfType: createUnionTypeChecker,\n    shape: createShapeTypeChecker,\n    exact: createStrictShapeTypeChecker,\n  };\n\n  /**\n   * inlined Object.is polyfill to avoid requiring consumers ship their own\n   * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n   */\n  /*eslint-disable no-self-compare*/\n  function is(x, y) {\n    // SameValue algorithm\n    if (x === y) {\n      // Steps 1-5, 7-10\n      // Steps 6.b-6.e: +0 != -0\n      return x !== 0 || 1 / x === 1 / y;\n    } else {\n      // Step 6.a: NaN == NaN\n      return x !== x && y !== y;\n    }\n  }\n  /*eslint-enable no-self-compare*/\n\n  /**\n   * We use an Error-like object for backward compatibility as people may call\n   * PropTypes directly and inspect their output. However, we don't use real\n   * Errors anymore. We don't inspect their stack anyway, and creating them\n   * is prohibitively expensive if they are created too often, such as what\n   * happens in oneOfType() for any type before the one that matched.\n   */\n  function PropTypeError(message) {\n    this.message = message;\n    this.stack = '';\n  }\n  // Make `instanceof Error` still work for returned errors.\n  PropTypeError.prototype = Error.prototype;\n\n  function createChainableTypeChecker(validate) {\n    if (process.env.NODE_ENV !== 'production') {\n      var manualPropTypeCallCache = {};\n      var manualPropTypeWarningCount = 0;\n    }\n    function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n      componentName = componentName || ANONYMOUS;\n      propFullName = propFullName || propName;\n\n      if (secret !== ReactPropTypesSecret) {\n        if (throwOnDirectAccess) {\n          // New behavior only for users of `prop-types` package\n          invariant(\n            false,\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        } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n          // Old behavior for people using React.PropTypes\n          var cacheKey = componentName + ':' + propName;\n          if (\n            !manualPropTypeCallCache[cacheKey] &&\n            // Avoid spamming the console because they are often not actionable except for lib authors\n            manualPropTypeWarningCount < 3\n          ) {\n            warning(\n              false,\n              'You are manually calling a React.PropTypes validation ' +\n              'function for the `%s` prop on `%s`. This is deprecated ' +\n              'and will throw in the standalone `prop-types` package. ' +\n              'You may be seeing this warning due to a third-party PropTypes ' +\n              'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.',\n              propFullName,\n              componentName\n            );\n            manualPropTypeCallCache[cacheKey] = true;\n            manualPropTypeWarningCount++;\n          }\n        }\n      }\n      if (props[propName] == null) {\n        if (isRequired) {\n          if (props[propName] === null) {\n            return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n          }\n          return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n        }\n        return null;\n      } else {\n        return validate(props, propName, componentName, location, propFullName);\n      }\n    }\n\n    var chainedCheckType = checkType.bind(null, false);\n    chainedCheckType.isRequired = checkType.bind(null, true);\n\n    return chainedCheckType;\n  }\n\n  function createPrimitiveTypeChecker(expectedType) {\n    function validate(props, propName, componentName, location, propFullName, secret) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== expectedType) {\n        // `propValue` being instance of, say, date/regexp, pass the 'object'\n        // check, but we can offer a more precise error message here rather than\n        // 'of type `object`'.\n        var preciseType = getPreciseType(propValue);\n\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createAnyTypeChecker() {\n    return createChainableTypeChecker(emptyFunction.thatReturnsNull);\n  }\n\n  function createArrayOfTypeChecker(typeChecker) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (typeof typeChecker !== 'function') {\n        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n      }\n      var propValue = props[propName];\n      if (!Array.isArray(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n      }\n      for (var i = 0; i < propValue.length; i++) {\n        var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n        if (error instanceof Error) {\n          return error;\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createElementTypeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      if (!isValidElement(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createInstanceTypeChecker(expectedClass) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (!(props[propName] instanceof expectedClass)) {\n        var expectedClassName = expectedClass.name || ANONYMOUS;\n        var actualClassName = getClassName(props[propName]);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createEnumTypeChecker(expectedValues) {\n    if (!Array.isArray(expectedValues)) {\n      process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n      return emptyFunction.thatReturnsNull;\n    }\n\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      for (var i = 0; i < expectedValues.length; i++) {\n        if (is(propValue, expectedValues[i])) {\n          return null;\n        }\n      }\n\n      var valuesString = JSON.stringify(expectedValues);\n      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createObjectOfTypeChecker(typeChecker) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (typeof typeChecker !== 'function') {\n        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n      }\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n      }\n      for (var key in propValue) {\n        if (propValue.hasOwnProperty(key)) {\n          var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n          if (error instanceof Error) {\n            return error;\n          }\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createUnionTypeChecker(arrayOfTypeCheckers) {\n    if (!Array.isArray(arrayOfTypeCheckers)) {\n      process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n      return emptyFunction.thatReturnsNull;\n    }\n\n    for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n      var checker = arrayOfTypeCheckers[i];\n      if (typeof checker !== 'function') {\n        warning(\n          false,\n          'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n          'received %s at index %s.',\n          getPostfixForTypeWarning(checker),\n          i\n        );\n        return emptyFunction.thatReturnsNull;\n      }\n    }\n\n    function validate(props, propName, componentName, location, propFullName) {\n      for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n        var checker = arrayOfTypeCheckers[i];\n        if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n          return null;\n        }\n      }\n\n      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createNodeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (!isNode(props[propName])) {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createShapeTypeChecker(shapeTypes) {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n      }\n      for (var key in shapeTypes) {\n        var checker = shapeTypes[key];\n        if (!checker) {\n          continue;\n        }\n        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n        if (error) {\n          return error;\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createStrictShapeTypeChecker(shapeTypes) {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n      }\n      // We need to check all keys in case some are required but missing from\n      // props.\n      var allKeys = assign({}, props[propName], shapeTypes);\n      for (var key in allKeys) {\n        var checker = shapeTypes[key];\n        if (!checker) {\n          return new PropTypeError(\n            'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n            '\\nBad object: ' + JSON.stringify(props[propName], null, '  ') +\n            '\\nValid keys: ' +  JSON.stringify(Object.keys(shapeTypes), null, '  ')\n          );\n        }\n        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n        if (error) {\n          return error;\n        }\n      }\n      return null;\n    }\n\n    return createChainableTypeChecker(validate);\n  }\n\n  function isNode(propValue) {\n    switch (typeof propValue) {\n      case 'number':\n      case 'string':\n      case 'undefined':\n        return true;\n      case 'boolean':\n        return !propValue;\n      case 'object':\n        if (Array.isArray(propValue)) {\n          return propValue.every(isNode);\n        }\n        if (propValue === null || isValidElement(propValue)) {\n          return true;\n        }\n\n        var iteratorFn = getIteratorFn(propValue);\n        if (iteratorFn) {\n          var iterator = iteratorFn.call(propValue);\n          var step;\n          if (iteratorFn !== propValue.entries) {\n            while (!(step = iterator.next()).done) {\n              if (!isNode(step.value)) {\n                return false;\n              }\n            }\n          } else {\n            // Iterator will provide entry [k,v] tuples rather than values.\n            while (!(step = iterator.next()).done) {\n              var entry = step.value;\n              if (entry) {\n                if (!isNode(entry[1])) {\n                  return false;\n                }\n              }\n            }\n          }\n        } else {\n          return false;\n        }\n\n        return true;\n      default:\n        return false;\n    }\n  }\n\n  function isSymbol(propType, propValue) {\n    // Native Symbol.\n    if (propType === 'symbol') {\n      return true;\n    }\n\n    // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n    if (propValue['@@toStringTag'] === 'Symbol') {\n      return true;\n    }\n\n    // Fallback for non-spec compliant Symbols which are polyfilled.\n    if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n      return true;\n    }\n\n    return false;\n  }\n\n  // Equivalent of `typeof` but with special handling for array and regexp.\n  function getPropType(propValue) {\n    var propType = typeof propValue;\n    if (Array.isArray(propValue)) {\n      return 'array';\n    }\n    if (propValue instanceof RegExp) {\n      // Old webkits (at least until Android 4.0) return 'function' rather than\n      // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n      // passes PropTypes.object.\n      return 'object';\n    }\n    if (isSymbol(propType, propValue)) {\n      return 'symbol';\n    }\n    return propType;\n  }\n\n  // This handles more types than `getPropType`. Only used for error messages.\n  // See `createPrimitiveTypeChecker`.\n  function getPreciseType(propValue) {\n    if (typeof propValue === 'undefined' || propValue === null) {\n      return '' + propValue;\n    }\n    var propType = getPropType(propValue);\n    if (propType === 'object') {\n      if (propValue instanceof Date) {\n        return 'date';\n      } else if (propValue instanceof RegExp) {\n        return 'regexp';\n      }\n    }\n    return propType;\n  }\n\n  // Returns a string that is postfixed to a warning about an invalid type.\n  // For example, \"undefined\" or \"of type array\"\n  function getPostfixForTypeWarning(value) {\n    var type = getPreciseType(value);\n    switch (type) {\n      case 'array':\n      case 'object':\n        return 'an ' + type;\n      case 'boolean':\n      case 'date':\n      case 'regexp':\n        return 'a ' + type;\n      default:\n        return type;\n    }\n  }\n\n  // Returns class name of the object, if any.\n  function getClassName(propValue) {\n    if (!propValue.constructor || !propValue.constructor.name) {\n      return ANONYMOUS;\n    }\n    return propValue.constructor.name;\n  }\n\n  ReactPropTypes.checkPropTypes = checkPropTypes;\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/factoryWithTypeCheckers.js\n// module id = 348\n// module chunks = 0","/**\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 emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\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    invariant(\n      false,\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  };\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    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim\n  };\n\n  ReactPropTypes.checkPropTypes = emptyFunction;\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/factoryWithThrowingShims.js\n// module id = 349\n// module chunks = 0","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from 'warning';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport createHistory from 'history/createBrowserHistory';\nimport Router from './Router';\n\n/**\n * The public API for a <Router> that uses HTML5 history.\n */\n\nvar BrowserRouter = function (_React$Component) {\n  _inherits(BrowserRouter, _React$Component);\n\n  function BrowserRouter() {\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, BrowserRouter);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.history = createHistory(_this.props), _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  BrowserRouter.prototype.componentWillMount = function componentWillMount() {\n    warning(!this.props.history, '<BrowserRouter> ignores the history prop. To use a custom history, ' + 'use `import { Router }` instead of `import { BrowserRouter as Router }`.');\n  };\n\n  BrowserRouter.prototype.render = function render() {\n    return React.createElement(Router, { history: this.history, children: this.props.children });\n  };\n\n  return BrowserRouter;\n}(React.Component);\n\nBrowserRouter.propTypes = {\n  basename: PropTypes.string,\n  forceRefresh: PropTypes.bool,\n  getUserConfirmation: PropTypes.func,\n  keyLength: PropTypes.number,\n  children: PropTypes.node\n};\n\n\nexport default BrowserRouter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router-dom/es/BrowserRouter.js\n// module id = 350\n// module chunks = 0","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from 'warning';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport createHistory from 'history/createHashHistory';\nimport Router from './Router';\n\n/**\n * The public API for a <Router> that uses window.location.hash.\n */\n\nvar HashRouter = function (_React$Component) {\n  _inherits(HashRouter, _React$Component);\n\n  function HashRouter() {\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, HashRouter);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.history = createHistory(_this.props), _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  HashRouter.prototype.componentWillMount = function componentWillMount() {\n    warning(!this.props.history, '<HashRouter> ignores the history prop. To use a custom history, ' + 'use `import { Router }` instead of `import { HashRouter as Router }`.');\n  };\n\n  HashRouter.prototype.render = function render() {\n    return React.createElement(Router, { history: this.history, children: this.props.children });\n  };\n\n  return HashRouter;\n}(React.Component);\n\nHashRouter.propTypes = {\n  basename: PropTypes.string,\n  getUserConfirmation: PropTypes.func,\n  hashType: PropTypes.oneOf(['hashbang', 'noslash', 'slash']),\n  children: PropTypes.node\n};\n\n\nexport default HashRouter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router-dom/es/HashRouter.js\n// module id = 351\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _LocationUtils = require('./LocationUtils');\n\nvar _PathUtils = require('./PathUtils');\n\nvar _createTransitionManager = require('./createTransitionManager');\n\nvar _createTransitionManager2 = _interopRequireDefault(_createTransitionManager);\n\nvar _DOMUtils = require('./DOMUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar HashChangeEvent = 'hashchange';\n\nvar HashPathCoders = {\n  hashbang: {\n    encodePath: function encodePath(path) {\n      return path.charAt(0) === '!' ? path : '!/' + (0, _PathUtils.stripLeadingSlash)(path);\n    },\n    decodePath: function decodePath(path) {\n      return path.charAt(0) === '!' ? path.substr(1) : path;\n    }\n  },\n  noslash: {\n    encodePath: _PathUtils.stripLeadingSlash,\n    decodePath: _PathUtils.addLeadingSlash\n  },\n  slash: {\n    encodePath: _PathUtils.addLeadingSlash,\n    decodePath: _PathUtils.addLeadingSlash\n  }\n};\n\nvar getHashPath = function 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\nvar pushHashPath = function pushHashPath(path) {\n  return window.location.hash = path;\n};\n\nvar replaceHashPath = function replaceHashPath(path) {\n  var hashIndex = window.location.href.indexOf('#');\n\n  window.location.replace(window.location.href.slice(0, hashIndex >= 0 ? hashIndex : 0) + '#' + path);\n};\n\nvar createHashHistory = function createHashHistory() {\n  var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n  (0, _invariant2.default)(_DOMUtils.canUseDOM, 'Hash history needs a DOM');\n\n  var globalHistory = window.history;\n  var canGoWithoutReload = (0, _DOMUtils.supportsGoWithoutReloadUsingHash)();\n\n  var _props$getUserConfirm = props.getUserConfirmation,\n      getUserConfirmation = _props$getUserConfirm === undefined ? _DOMUtils.getConfirmation : _props$getUserConfirm,\n      _props$hashType = props.hashType,\n      hashType = _props$hashType === undefined ? 'slash' : _props$hashType;\n\n  var basename = props.basename ? (0, _PathUtils.stripTrailingSlash)((0, _PathUtils.addLeadingSlash)(props.basename)) : '';\n\n  var _HashPathCoders$hashT = HashPathCoders[hashType],\n      encodePath = _HashPathCoders$hashT.encodePath,\n      decodePath = _HashPathCoders$hashT.decodePath;\n\n\n  var getDOMLocation = function getDOMLocation() {\n    var path = decodePath(getHashPath());\n\n    (0, _warning2.default)(!basename || (0, _PathUtils.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 + '\".');\n\n    if (basename) path = (0, _PathUtils.stripBasename)(path, basename);\n\n    return (0, _LocationUtils.createLocation)(path);\n  };\n\n  var transitionManager = (0, _createTransitionManager2.default)();\n\n  var setState = function setState(nextState) {\n    _extends(history, nextState);\n\n    history.length = globalHistory.length;\n\n    transitionManager.notifyListeners(history.location, history.action);\n  };\n\n  var forceNextPop = false;\n  var ignorePath = null;\n\n  var handleHashChange = 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\n      if (!forceNextPop && (0, _LocationUtils.locationsAreEqual)(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n      if (ignorePath === (0, _PathUtils.createPath)(location)) return; // Ignore this change; we already setState in push/replace.\n\n      ignorePath = null;\n\n      handlePop(location);\n    }\n  };\n\n  var handlePop = function handlePop(location) {\n    if (forceNextPop) {\n      forceNextPop = false;\n      setState();\n    } else {\n      var action = 'POP';\n\n      transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n        if (ok) {\n          setState({ action: action, location: location });\n        } else {\n          revertPop(location);\n        }\n      });\n    }\n  };\n\n  var revertPop = function revertPop(fromLocation) {\n    var toLocation = history.location;\n\n    // 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((0, _PathUtils.createPath)(toLocation));\n\n    if (toIndex === -1) toIndex = 0;\n\n    var fromIndex = allPaths.lastIndexOf((0, _PathUtils.createPath)(fromLocation));\n\n    if (fromIndex === -1) fromIndex = 0;\n\n    var delta = toIndex - fromIndex;\n\n    if (delta) {\n      forceNextPop = true;\n      go(delta);\n    }\n  };\n\n  // Ensure the hash is encoded properly before doing anything else.\n  var path = getHashPath();\n  var encodedPath = encodePath(path);\n\n  if (path !== encodedPath) replaceHashPath(encodedPath);\n\n  var initialLocation = getDOMLocation();\n  var allPaths = [(0, _PathUtils.createPath)(initialLocation)];\n\n  // Public interface\n\n  var createHref = function createHref(location) {\n    return '#' + encodePath(basename + (0, _PathUtils.createPath)(location));\n  };\n\n  var push = function push(path, state) {\n    (0, _warning2.default)(state === undefined, 'Hash history cannot push state; it is ignored');\n\n    var action = 'PUSH';\n    var location = (0, _LocationUtils.createLocation)(path, undefined, undefined, history.location);\n\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n\n      var path = (0, _PathUtils.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\n        var prevIndex = allPaths.lastIndexOf((0, _PathUtils.createPath)(history.location));\n        var nextPaths = allPaths.slice(0, prevIndex === -1 ? 0 : prevIndex + 1);\n\n        nextPaths.push(path);\n        allPaths = nextPaths;\n\n        setState({ action: action, location: location });\n      } else {\n        (0, _warning2.default)(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack');\n\n        setState();\n      }\n    });\n  };\n\n  var replace = function replace(path, state) {\n    (0, _warning2.default)(state === undefined, 'Hash history cannot replace state; it is ignored');\n\n    var action = 'REPLACE';\n    var location = (0, _LocationUtils.createLocation)(path, undefined, undefined, history.location);\n\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n\n      var path = (0, _PathUtils.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((0, _PathUtils.createPath)(history.location));\n\n      if (prevIndex !== -1) allPaths[prevIndex] = path;\n\n      setState({ action: action, location: location });\n    });\n  };\n\n  var go = function go(n) {\n    (0, _warning2.default)(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser');\n\n    globalHistory.go(n);\n  };\n\n  var goBack = function goBack() {\n    return go(-1);\n  };\n\n  var goForward = function goForward() {\n    return go(1);\n  };\n\n  var listenerCount = 0;\n\n  var checkDOMListeners = function checkDOMListeners(delta) {\n    listenerCount += delta;\n\n    if (listenerCount === 1) {\n      (0, _DOMUtils.addEventListener)(window, HashChangeEvent, handleHashChange);\n    } else if (listenerCount === 0) {\n      (0, _DOMUtils.removeEventListener)(window, HashChangeEvent, handleHashChange);\n    }\n  };\n\n  var isBlocked = false;\n\n  var block = function block() {\n    var prompt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\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  var listen = function listen(listener) {\n    var unlisten = transitionManager.appendListener(listener);\n    checkDOMListeners(1);\n\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\n  return history;\n};\n\nexports.default = createHashHistory;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/history/createHashHistory.js\n// module id = 352\n// module chunks = 0","// Written in this round about way for babel-transform-imports\nimport MemoryRouter from 'react-router/es/MemoryRouter';\n\nexport default MemoryRouter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router-dom/es/MemoryRouter.js\n// module id = 353\n// module chunks = 0","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from 'warning';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport createHistory from 'history/createMemoryHistory';\nimport Router from './Router';\n\n/**\n * The public API for a <Router> that stores location in memory.\n */\n\nvar MemoryRouter = function (_React$Component) {\n  _inherits(MemoryRouter, _React$Component);\n\n  function MemoryRouter() {\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, MemoryRouter);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.history = createHistory(_this.props), _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  MemoryRouter.prototype.componentWillMount = function componentWillMount() {\n    warning(!this.props.history, '<MemoryRouter> ignores the history prop. To use a custom history, ' + 'use `import { Router }` instead of `import { MemoryRouter as Router }`.');\n  };\n\n  MemoryRouter.prototype.render = function render() {\n    return React.createElement(Router, { history: this.history, children: this.props.children });\n  };\n\n  return MemoryRouter;\n}(React.Component);\n\nMemoryRouter.propTypes = {\n  initialEntries: PropTypes.array,\n  initialIndex: PropTypes.number,\n  getUserConfirmation: PropTypes.func,\n  keyLength: PropTypes.number,\n  children: PropTypes.node\n};\n\n\nexport default MemoryRouter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/es/MemoryRouter.js\n// module id = 354\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _PathUtils = require('./PathUtils');\n\nvar _LocationUtils = require('./LocationUtils');\n\nvar _createTransitionManager = require('./createTransitionManager');\n\nvar _createTransitionManager2 = _interopRequireDefault(_createTransitionManager);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar clamp = function clamp(n, lowerBound, upperBound) {\n  return Math.min(Math.max(n, lowerBound), upperBound);\n};\n\n/**\n * Creates a history object that stores locations in memory.\n */\nvar createMemoryHistory = function createMemoryHistory() {\n  var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var getUserConfirmation = props.getUserConfirmation,\n      _props$initialEntries = props.initialEntries,\n      initialEntries = _props$initialEntries === undefined ? ['/'] : _props$initialEntries,\n      _props$initialIndex = props.initialIndex,\n      initialIndex = _props$initialIndex === undefined ? 0 : _props$initialIndex,\n      _props$keyLength = props.keyLength,\n      keyLength = _props$keyLength === undefined ? 6 : _props$keyLength;\n\n\n  var transitionManager = (0, _createTransitionManager2.default)();\n\n  var setState = function setState(nextState) {\n    _extends(history, nextState);\n\n    history.length = history.entries.length;\n\n    transitionManager.notifyListeners(history.location, history.action);\n  };\n\n  var createKey = 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' ? (0, _LocationUtils.createLocation)(entry, undefined, createKey()) : (0, _LocationUtils.createLocation)(entry, undefined, entry.key || createKey());\n  });\n\n  // Public interface\n\n  var createHref = _PathUtils.createPath;\n\n  var push = function push(path, state) {\n    (0, _warning2.default)(!((typeof path === 'undefined' ? 'undefined' : _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');\n\n    var action = 'PUSH';\n    var location = (0, _LocationUtils.createLocation)(path, state, createKey(), history.location);\n\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n\n      var prevIndex = history.index;\n      var nextIndex = prevIndex + 1;\n\n      var nextEntries = history.entries.slice(0);\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  var replace = function replace(path, state) {\n    (0, _warning2.default)(!((typeof path === 'undefined' ? 'undefined' : _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');\n\n    var action = 'REPLACE';\n    var location = (0, _LocationUtils.createLocation)(path, state, createKey(), history.location);\n\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n\n      history.entries[history.index] = location;\n\n      setState({ action: action, location: location });\n    });\n  };\n\n  var go = function go(n) {\n    var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n\n    var action = 'POP';\n    var location = history.entries[nextIndex];\n\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  var goBack = function goBack() {\n    return go(-1);\n  };\n\n  var goForward = function goForward() {\n    return go(1);\n  };\n\n  var canGo = function canGo(n) {\n    var nextIndex = history.index + n;\n    return nextIndex >= 0 && nextIndex < history.entries.length;\n  };\n\n  var block = function block() {\n    var prompt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    return transitionManager.setPrompt(prompt);\n  };\n\n  var listen = 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\n  return history;\n};\n\nexports.default = createMemoryHistory;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/history/createMemoryHistory.js\n// module id = 355\n// module chunks = 0","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport Route from './Route';\nimport Link from './Link';\n\n/**\n * A <Link> wrapper that knows if it's \"active\" or not.\n */\nvar NavLink = function NavLink(_ref) {\n  var to = _ref.to,\n      exact = _ref.exact,\n      strict = _ref.strict,\n      location = _ref.location,\n      activeClassName = _ref.activeClassName,\n      className = _ref.className,\n      activeStyle = _ref.activeStyle,\n      style = _ref.style,\n      getIsActive = _ref.isActive,\n      ariaCurrent = _ref.ariaCurrent,\n      rest = _objectWithoutProperties(_ref, ['to', 'exact', 'strict', 'location', 'activeClassName', 'className', 'activeStyle', 'style', 'isActive', 'ariaCurrent']);\n\n  return React.createElement(Route, {\n    path: (typeof to === 'undefined' ? 'undefined' : _typeof(to)) === 'object' ? to.pathname : to,\n    exact: exact,\n    strict: strict,\n    location: location,\n    children: function children(_ref2) {\n      var location = _ref2.location,\n          match = _ref2.match;\n\n      var isActive = !!(getIsActive ? getIsActive(match, location) : match);\n\n      return React.createElement(Link, _extends({\n        to: to,\n        className: isActive ? [className, activeClassName].filter(function (i) {\n          return i;\n        }).join(' ') : className,\n        style: isActive ? _extends({}, style, activeStyle) : style,\n        'aria-current': isActive && ariaCurrent\n      }, rest));\n    }\n  });\n};\n\nNavLink.propTypes = {\n  to: Link.propTypes.to,\n  exact: PropTypes.bool,\n  strict: PropTypes.bool,\n  location: PropTypes.object,\n  activeClassName: PropTypes.string,\n  className: PropTypes.string,\n  activeStyle: PropTypes.object,\n  style: PropTypes.object,\n  isActive: PropTypes.func,\n  ariaCurrent: PropTypes.oneOf(['page', 'step', 'location', 'true'])\n};\n\nNavLink.defaultProps = {\n  activeClassName: 'active',\n  ariaCurrent: 'true'\n};\n\nexport default NavLink;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router-dom/es/NavLink.js\n// module id = 356\n// module chunks = 0","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))\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) {\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 + ')$')\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.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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/node_modules/path-to-regexp/index.js\n// module id = 357\n// module chunks = 0","module.exports = Array.isArray || function (arr) {\n  return Object.prototype.toString.call(arr) == '[object Array]';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/node_modules/isarray/index.js\n// module id = 358\n// module chunks = 0","// Written in this round about way for babel-transform-imports\nimport Prompt from 'react-router/es/Prompt';\n\nexport default Prompt;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router-dom/es/Prompt.js\n// module id = 359\n// module chunks = 0","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport invariant from 'invariant';\n\n/**\n * The public API for prompting the user before navigating away\n * from a screen with a component.\n */\n\nvar Prompt = function (_React$Component) {\n  _inherits(Prompt, _React$Component);\n\n  function Prompt() {\n    _classCallCheck(this, Prompt);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  Prompt.prototype.enable = function enable(message) {\n    if (this.unblock) this.unblock();\n\n    this.unblock = this.context.router.history.block(message);\n  };\n\n  Prompt.prototype.disable = function disable() {\n    if (this.unblock) {\n      this.unblock();\n      this.unblock = null;\n    }\n  };\n\n  Prompt.prototype.componentWillMount = function componentWillMount() {\n    invariant(this.context.router, 'You should not use <Prompt> outside a <Router>');\n\n    if (this.props.when) this.enable(this.props.message);\n  };\n\n  Prompt.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n    if (nextProps.when) {\n      if (!this.props.when || this.props.message !== nextProps.message) this.enable(nextProps.message);\n    } else {\n      this.disable();\n    }\n  };\n\n  Prompt.prototype.componentWillUnmount = function componentWillUnmount() {\n    this.disable();\n  };\n\n  Prompt.prototype.render = function render() {\n    return null;\n  };\n\n  return Prompt;\n}(React.Component);\n\nPrompt.propTypes = {\n  when: PropTypes.bool,\n  message: PropTypes.oneOfType([PropTypes.func, PropTypes.string]).isRequired\n};\nPrompt.defaultProps = {\n  when: true\n};\nPrompt.contextTypes = {\n  router: PropTypes.shape({\n    history: PropTypes.shape({\n      block: PropTypes.func.isRequired\n    }).isRequired\n  }).isRequired\n};\n\n\nexport default Prompt;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/es/Prompt.js\n// module id = 360\n// module chunks = 0","// Written in this round about way for babel-transform-imports\nimport Redirect from 'react-router/es/Redirect';\n\nexport default Redirect;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router-dom/es/Redirect.js\n// module id = 361\n// module chunks = 0","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport warning from 'warning';\nimport invariant from 'invariant';\nimport { createLocation, locationsAreEqual } from 'history';\n\n/**\n * The public API for updating the location programmatically\n * with a component.\n */\n\nvar Redirect = function (_React$Component) {\n  _inherits(Redirect, _React$Component);\n\n  function Redirect() {\n    _classCallCheck(this, Redirect);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  Redirect.prototype.isStatic = function isStatic() {\n    return this.context.router && this.context.router.staticContext;\n  };\n\n  Redirect.prototype.componentWillMount = function componentWillMount() {\n    invariant(this.context.router, 'You should not use <Redirect> outside a <Router>');\n\n    if (this.isStatic()) this.perform();\n  };\n\n  Redirect.prototype.componentDidMount = function componentDidMount() {\n    if (!this.isStatic()) this.perform();\n  };\n\n  Redirect.prototype.componentDidUpdate = function componentDidUpdate(prevProps) {\n    var prevTo = createLocation(prevProps.to);\n    var nextTo = createLocation(this.props.to);\n\n    if (locationsAreEqual(prevTo, nextTo)) {\n      warning(false, 'You tried to redirect to the same route you\\'re currently on: ' + ('\"' + nextTo.pathname + nextTo.search + '\"'));\n      return;\n    }\n\n    this.perform();\n  };\n\n  Redirect.prototype.perform = function perform() {\n    var history = this.context.router.history;\n    var _props = this.props,\n        push = _props.push,\n        to = _props.to;\n\n\n    if (push) {\n      history.push(to);\n    } else {\n      history.replace(to);\n    }\n  };\n\n  Redirect.prototype.render = function render() {\n    return null;\n  };\n\n  return Redirect;\n}(React.Component);\n\nRedirect.propTypes = {\n  push: PropTypes.bool,\n  from: PropTypes.string,\n  to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n};\nRedirect.defaultProps = {\n  push: false\n};\nRedirect.contextTypes = {\n  router: PropTypes.shape({\n    history: PropTypes.shape({\n      push: PropTypes.func.isRequired,\n      replace: PropTypes.func.isRequired\n    }).isRequired,\n    staticContext: PropTypes.object\n  }).isRequired\n};\n\n\nexport default Redirect;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/es/Redirect.js\n// module id = 362\n// module chunks = 0","import _createBrowserHistory from './createBrowserHistory';\nexport { _createBrowserHistory as createBrowserHistory };\nimport _createHashHistory from './createHashHistory';\nexport { _createHashHistory as createHashHistory };\nimport _createMemoryHistory from './createMemoryHistory';\nexport { _createMemoryHistory as createMemoryHistory };\n\nexport { createLocation, locationsAreEqual } from './LocationUtils';\nexport { parsePath, createPath } from './PathUtils';\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/history/es/index.js\n// module id = 363\n// module chunks = 0","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport warning from 'warning';\nimport invariant from 'invariant';\nimport { createLocation } from './LocationUtils';\nimport { addLeadingSlash, stripTrailingSlash, hasBasename, stripBasename, createPath } from './PathUtils';\nimport createTransitionManager from './createTransitionManager';\nimport { canUseDOM, addEventListener, removeEventListener, getConfirmation, supportsHistory, supportsPopStateOnHashChange, isExtraneousPopstateEvent } from './DOMUtils';\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nvar getHistoryState = function 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/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\nvar createBrowserHistory = function createBrowserHistory() {\n  var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n  invariant(canUseDOM, 'Browser history needs a DOM');\n\n  var globalHistory = window.history;\n  var canUseHistory = supportsHistory();\n  var needsHashChangeListener = !supportsPopStateOnHashChange();\n\n  var _props$forceRefresh = props.forceRefresh,\n      forceRefresh = _props$forceRefresh === undefined ? false : _props$forceRefresh,\n      _props$getUserConfirm = props.getUserConfirmation,\n      getUserConfirmation = _props$getUserConfirm === undefined ? getConfirmation : _props$getUserConfirm,\n      _props$keyLength = props.keyLength,\n      keyLength = _props$keyLength === undefined ? 6 : _props$keyLength;\n\n  var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n  var getDOMLocation = 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\n\n    var path = pathname + search + hash;\n\n    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 + '\".');\n\n    if (basename) path = stripBasename(path, basename);\n\n    return createLocation(path, state, key);\n  };\n\n  var createKey = function createKey() {\n    return Math.random().toString(36).substr(2, keyLength);\n  };\n\n  var transitionManager = createTransitionManager();\n\n  var setState = function setState(nextState) {\n    _extends(history, nextState);\n\n    history.length = globalHistory.length;\n\n    transitionManager.notifyListeners(history.location, history.action);\n  };\n\n  var handlePopState = function handlePopState(event) {\n    // Ignore extraneous popstate events in WebKit.\n    if (isExtraneousPopstateEvent(event)) return;\n\n    handlePop(getDOMLocation(event.state));\n  };\n\n  var handleHashChange = function handleHashChange() {\n    handlePop(getDOMLocation(getHistoryState()));\n  };\n\n  var forceNextPop = false;\n\n  var handlePop = function handlePop(location) {\n    if (forceNextPop) {\n      forceNextPop = false;\n      setState();\n    } else {\n      var action = 'POP';\n\n      transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n        if (ok) {\n          setState({ action: action, location: location });\n        } else {\n          revertPop(location);\n        }\n      });\n    }\n  };\n\n  var revertPop = function revertPop(fromLocation) {\n    var toLocation = history.location;\n\n    // 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\n    if (toIndex === -1) toIndex = 0;\n\n    var fromIndex = allKeys.indexOf(fromLocation.key);\n\n    if (fromIndex === -1) fromIndex = 0;\n\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];\n\n  // Public interface\n\n  var createHref = function createHref(location) {\n    return basename + createPath(location);\n  };\n\n  var push = function push(path, state) {\n    warning(!((typeof path === 'undefined' ? 'undefined' : _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');\n\n    var action = 'PUSH';\n    var location = createLocation(path, state, createKey(), history.location);\n\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n\n      var href = createHref(location);\n      var key = location.key,\n          state = location.state;\n\n\n      if (canUseHistory) {\n        globalHistory.pushState({ key: key, state: state }, 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 ? 0 : prevIndex + 1);\n\n          nextKeys.push(location.key);\n          allKeys = nextKeys;\n\n          setState({ action: action, location: location });\n        }\n      } else {\n        warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history');\n\n        window.location.href = href;\n      }\n    });\n  };\n\n  var replace = function replace(path, state) {\n    warning(!((typeof path === 'undefined' ? 'undefined' : _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');\n\n    var action = 'REPLACE';\n    var location = createLocation(path, state, createKey(), history.location);\n\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n\n      var href = createHref(location);\n      var key = location.key,\n          state = location.state;\n\n\n      if (canUseHistory) {\n        globalHistory.replaceState({ key: key, state: state }, null, href);\n\n        if (forceRefresh) {\n          window.location.replace(href);\n        } else {\n          var prevIndex = allKeys.indexOf(history.location.key);\n\n          if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n\n          setState({ action: action, location: location });\n        }\n      } else {\n        warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history');\n\n        window.location.replace(href);\n      }\n    });\n  };\n\n  var go = function go(n) {\n    globalHistory.go(n);\n  };\n\n  var goBack = function goBack() {\n    return go(-1);\n  };\n\n  var goForward = function goForward() {\n    return go(1);\n  };\n\n  var listenerCount = 0;\n\n  var checkDOMListeners = function checkDOMListeners(delta) {\n    listenerCount += delta;\n\n    if (listenerCount === 1) {\n      addEventListener(window, PopStateEvent, handlePopState);\n\n      if (needsHashChangeListener) addEventListener(window, HashChangeEvent, handleHashChange);\n    } else if (listenerCount === 0) {\n      removeEventListener(window, PopStateEvent, handlePopState);\n\n      if (needsHashChangeListener) removeEventListener(window, HashChangeEvent, handleHashChange);\n    }\n  };\n\n  var isBlocked = false;\n\n  var block = function block() {\n    var prompt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\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  var listen = function listen(listener) {\n    var unlisten = transitionManager.appendListener(listener);\n    checkDOMListeners(1);\n\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\n  return history;\n};\n\nexport default createBrowserHistory;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/history/es/createBrowserHistory.js\n// module id = 364\n// module chunks = 0","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport warning from 'warning';\nimport invariant from 'invariant';\nimport { createLocation, locationsAreEqual } from './LocationUtils';\nimport { addLeadingSlash, stripLeadingSlash, stripTrailingSlash, hasBasename, stripBasename, createPath } from './PathUtils';\nimport createTransitionManager from './createTransitionManager';\nimport { canUseDOM, addEventListener, removeEventListener, getConfirmation, supportsGoWithoutReloadUsingHash } from './DOMUtils';\n\nvar HashChangeEvent = 'hashchange';\n\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\nvar getHashPath = function 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\nvar pushHashPath = function pushHashPath(path) {\n  return window.location.hash = path;\n};\n\nvar replaceHashPath = function replaceHashPath(path) {\n  var hashIndex = window.location.href.indexOf('#');\n\n  window.location.replace(window.location.href.slice(0, hashIndex >= 0 ? hashIndex : 0) + '#' + path);\n};\n\nvar createHashHistory = function createHashHistory() {\n  var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n  invariant(canUseDOM, 'Hash history needs a DOM');\n\n  var globalHistory = window.history;\n  var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n\n  var _props$getUserConfirm = props.getUserConfirmation,\n      getUserConfirmation = _props$getUserConfirm === undefined ? getConfirmation : _props$getUserConfirm,\n      _props$hashType = props.hashType,\n      hashType = _props$hashType === undefined ? 'slash' : _props$hashType;\n\n  var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n  var _HashPathCoders$hashT = HashPathCoders[hashType],\n      encodePath = _HashPathCoders$hashT.encodePath,\n      decodePath = _HashPathCoders$hashT.decodePath;\n\n\n  var getDOMLocation = function getDOMLocation() {\n    var path = decodePath(getHashPath());\n\n    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 + '\".');\n\n    if (basename) path = stripBasename(path, basename);\n\n    return createLocation(path);\n  };\n\n  var transitionManager = createTransitionManager();\n\n  var setState = function setState(nextState) {\n    _extends(history, nextState);\n\n    history.length = globalHistory.length;\n\n    transitionManager.notifyListeners(history.location, history.action);\n  };\n\n  var forceNextPop = false;\n  var ignorePath = null;\n\n  var handleHashChange = 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\n      if (!forceNextPop && locationsAreEqual(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\n      handlePop(location);\n    }\n  };\n\n  var handlePop = function handlePop(location) {\n    if (forceNextPop) {\n      forceNextPop = false;\n      setState();\n    } else {\n      var action = 'POP';\n\n      transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n        if (ok) {\n          setState({ action: action, location: location });\n        } else {\n          revertPop(location);\n        }\n      });\n    }\n  };\n\n  var revertPop = function revertPop(fromLocation) {\n    var toLocation = history.location;\n\n    // 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\n    if (toIndex === -1) toIndex = 0;\n\n    var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n\n    if (fromIndex === -1) fromIndex = 0;\n\n    var delta = toIndex - fromIndex;\n\n    if (delta) {\n      forceNextPop = true;\n      go(delta);\n    }\n  };\n\n  // Ensure the hash is encoded properly before doing anything else.\n  var path = getHashPath();\n  var encodedPath = encodePath(path);\n\n  if (path !== encodedPath) replaceHashPath(encodedPath);\n\n  var initialLocation = getDOMLocation();\n  var allPaths = [createPath(initialLocation)];\n\n  // Public interface\n\n  var createHref = function createHref(location) {\n    return '#' + encodePath(basename + createPath(location));\n  };\n\n  var push = function push(path, state) {\n    warning(state === undefined, 'Hash history cannot push state; it is ignored');\n\n    var action = 'PUSH';\n    var location = createLocation(path, undefined, undefined, history.location);\n\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n\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\n        var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n        var nextPaths = allPaths.slice(0, prevIndex === -1 ? 0 : prevIndex + 1);\n\n        nextPaths.push(path);\n        allPaths = nextPaths;\n\n        setState({ action: action, location: location });\n      } else {\n        warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack');\n\n        setState();\n      }\n    });\n  };\n\n  var replace = function replace(path, state) {\n    warning(state === undefined, 'Hash history cannot replace state; it is ignored');\n\n    var action = 'REPLACE';\n    var location = createLocation(path, undefined, undefined, history.location);\n\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n\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\n      if (prevIndex !== -1) allPaths[prevIndex] = path;\n\n      setState({ action: action, location: location });\n    });\n  };\n\n  var go = function go(n) {\n    warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser');\n\n    globalHistory.go(n);\n  };\n\n  var goBack = function goBack() {\n    return go(-1);\n  };\n\n  var goForward = function goForward() {\n    return go(1);\n  };\n\n  var listenerCount = 0;\n\n  var checkDOMListeners = function checkDOMListeners(delta) {\n    listenerCount += delta;\n\n    if (listenerCount === 1) {\n      addEventListener(window, HashChangeEvent, handleHashChange);\n    } else if (listenerCount === 0) {\n      removeEventListener(window, HashChangeEvent, handleHashChange);\n    }\n  };\n\n  var isBlocked = false;\n\n  var block = function block() {\n    var prompt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\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  var listen = function listen(listener) {\n    var unlisten = transitionManager.appendListener(listener);\n    checkDOMListeners(1);\n\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\n  return history;\n};\n\nexport default createHashHistory;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/history/es/createHashHistory.js\n// module id = 365\n// module chunks = 0","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport warning from 'warning';\nimport { createPath } from './PathUtils';\nimport { createLocation } from './LocationUtils';\nimport createTransitionManager from './createTransitionManager';\n\nvar clamp = function clamp(n, lowerBound, upperBound) {\n  return Math.min(Math.max(n, lowerBound), upperBound);\n};\n\n/**\n * Creates a history object that stores locations in memory.\n */\nvar createMemoryHistory = function createMemoryHistory() {\n  var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var getUserConfirmation = props.getUserConfirmation,\n      _props$initialEntries = props.initialEntries,\n      initialEntries = _props$initialEntries === undefined ? ['/'] : _props$initialEntries,\n      _props$initialIndex = props.initialIndex,\n      initialIndex = _props$initialIndex === undefined ? 0 : _props$initialIndex,\n      _props$keyLength = props.keyLength,\n      keyLength = _props$keyLength === undefined ? 6 : _props$keyLength;\n\n\n  var transitionManager = createTransitionManager();\n\n  var setState = function setState(nextState) {\n    _extends(history, nextState);\n\n    history.length = history.entries.length;\n\n    transitionManager.notifyListeners(history.location, history.action);\n  };\n\n  var createKey = 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  });\n\n  // Public interface\n\n  var createHref = createPath;\n\n  var push = function push(path, state) {\n    warning(!((typeof path === 'undefined' ? 'undefined' : _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');\n\n    var action = 'PUSH';\n    var location = createLocation(path, state, createKey(), history.location);\n\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n\n      var prevIndex = history.index;\n      var nextIndex = prevIndex + 1;\n\n      var nextEntries = history.entries.slice(0);\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  var replace = function replace(path, state) {\n    warning(!((typeof path === 'undefined' ? 'undefined' : _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');\n\n    var action = 'REPLACE';\n    var location = createLocation(path, state, createKey(), history.location);\n\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n\n      history.entries[history.index] = location;\n\n      setState({ action: action, location: location });\n    });\n  };\n\n  var go = function go(n) {\n    var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n\n    var action = 'POP';\n    var location = history.entries[nextIndex];\n\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  var goBack = function goBack() {\n    return go(-1);\n  };\n\n  var goForward = function goForward() {\n    return go(1);\n  };\n\n  var canGo = function canGo(n) {\n    var nextIndex = history.index + n;\n    return nextIndex >= 0 && nextIndex < history.entries.length;\n  };\n\n  var block = function block() {\n    var prompt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    return transitionManager.setPrompt(prompt);\n  };\n\n  var listen = 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\n  return history;\n};\n\nexport default createMemoryHistory;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/history/es/createMemoryHistory.js\n// module id = 366\n// module chunks = 0","// Written in this round about way for babel-transform-imports\nimport StaticRouter from 'react-router/es/StaticRouter';\n\nexport default StaticRouter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router-dom/es/StaticRouter.js\n// module id = 367\n// module chunks = 0","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from 'warning';\nimport invariant from 'invariant';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { addLeadingSlash, createPath, parsePath } from 'history/PathUtils';\nimport Router from './Router';\n\nvar normalizeLocation = function normalizeLocation(object) {\n  var _object$pathname = object.pathname,\n      pathname = _object$pathname === undefined ? '/' : _object$pathname,\n      _object$search = object.search,\n      search = _object$search === undefined ? '' : _object$search,\n      _object$hash = object.hash,\n      hash = _object$hash === undefined ? '' : _object$hash;\n\n\n  return {\n    pathname: pathname,\n    search: search === '?' ? '' : search,\n    hash: hash === '#' ? '' : hash\n  };\n};\n\nvar addBasename = function addBasename(basename, location) {\n  if (!basename) return location;\n\n  return _extends({}, location, {\n    pathname: addLeadingSlash(basename) + location.pathname\n  });\n};\n\nvar stripBasename = function stripBasename(basename, location) {\n  if (!basename) return location;\n\n  var base = addLeadingSlash(basename);\n\n  if (location.pathname.indexOf(base) !== 0) return location;\n\n  return _extends({}, location, {\n    pathname: location.pathname.substr(base.length)\n  });\n};\n\nvar createLocation = function createLocation(location) {\n  return typeof location === 'string' ? parsePath(location) : normalizeLocation(location);\n};\n\nvar createURL = function createURL(location) {\n  return typeof location === 'string' ? location : createPath(location);\n};\n\nvar staticHandler = function staticHandler(methodName) {\n  return function () {\n    invariant(false, 'You cannot %s with <StaticRouter>', methodName);\n  };\n};\n\nvar noop = function noop() {};\n\n/**\n * The public top-level API for a \"static\" <Router>, 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 */\n\nvar StaticRouter = function (_React$Component) {\n  _inherits(StaticRouter, _React$Component);\n\n  function StaticRouter() {\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, StaticRouter);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.createHref = function (path) {\n      return addLeadingSlash(_this.props.basename + createURL(path));\n    }, _this.handlePush = function (location) {\n      var _this$props = _this.props,\n          basename = _this$props.basename,\n          context = _this$props.context;\n\n      context.action = 'PUSH';\n      context.location = addBasename(basename, createLocation(location));\n      context.url = createURL(context.location);\n    }, _this.handleReplace = function (location) {\n      var _this$props2 = _this.props,\n          basename = _this$props2.basename,\n          context = _this$props2.context;\n\n      context.action = 'REPLACE';\n      context.location = addBasename(basename, createLocation(location));\n      context.url = createURL(context.location);\n    }, _this.handleListen = function () {\n      return noop;\n    }, _this.handleBlock = function () {\n      return noop;\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  StaticRouter.prototype.getChildContext = function getChildContext() {\n    return {\n      router: {\n        staticContext: this.props.context\n      }\n    };\n  };\n\n  StaticRouter.prototype.componentWillMount = function componentWillMount() {\n    warning(!this.props.history, '<StaticRouter> ignores the history prop. To use a custom history, ' + 'use `import { Router }` instead of `import { StaticRouter as Router }`.');\n  };\n\n  StaticRouter.prototype.render = function render() {\n    var _props = this.props,\n        basename = _props.basename,\n        context = _props.context,\n        location = _props.location,\n        props = _objectWithoutProperties(_props, ['basename', 'context', 'location']);\n\n    var history = {\n      createHref: this.createHref,\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 React.createElement(Router, _extends({}, props, { history: history }));\n  };\n\n  return StaticRouter;\n}(React.Component);\n\nStaticRouter.propTypes = {\n  basename: PropTypes.string,\n  context: PropTypes.object.isRequired,\n  location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n};\nStaticRouter.defaultProps = {\n  basename: '',\n  location: '/'\n};\nStaticRouter.childContextTypes = {\n  router: PropTypes.object.isRequired\n};\n\n\nexport default StaticRouter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/es/StaticRouter.js\n// module id = 368\n// module chunks = 0","// Written in this round about way for babel-transform-imports\nimport Switch from 'react-router/es/Switch';\n\nexport default Switch;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router-dom/es/Switch.js\n// module id = 369\n// module chunks = 0","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport warning from 'warning';\nimport invariant from 'invariant';\nimport matchPath from './matchPath';\n\n/**\n * The public API for rendering the first <Route> that matches.\n */\n\nvar Switch = function (_React$Component) {\n  _inherits(Switch, _React$Component);\n\n  function Switch() {\n    _classCallCheck(this, Switch);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  Switch.prototype.componentWillMount = function componentWillMount() {\n    invariant(this.context.router, 'You should not use <Switch> outside a <Router>');\n  };\n\n  Switch.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n    warning(!(nextProps.location && !this.props.location), '<Switch> 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    warning(!(!nextProps.location && this.props.location), '<Switch> 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  Switch.prototype.render = function render() {\n    var route = this.context.router.route;\n    var children = this.props.children;\n\n    var location = this.props.location || route.location;\n\n    var match = void 0,\n        child = void 0;\n    React.Children.forEach(children, function (element) {\n      if (!React.isValidElement(element)) return;\n\n      var _element$props = element.props,\n          pathProp = _element$props.path,\n          exact = _element$props.exact,\n          strict = _element$props.strict,\n          sensitive = _element$props.sensitive,\n          from = _element$props.from;\n\n      var path = pathProp || from;\n\n      if (match == null) {\n        child = element;\n        match = path ? matchPath(location.pathname, { path: path, exact: exact, strict: strict, sensitive: sensitive }) : route.match;\n      }\n    });\n\n    return match ? React.cloneElement(child, { location: location, computedMatch: match }) : null;\n  };\n\n  return Switch;\n}(React.Component);\n\nSwitch.contextTypes = {\n  router: PropTypes.shape({\n    route: PropTypes.object.isRequired\n  }).isRequired\n};\nSwitch.propTypes = {\n  children: PropTypes.node,\n  location: PropTypes.object\n};\n\n\nexport default Switch;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/es/Switch.js\n// module id = 370\n// module chunks = 0","// Written in this round about way for babel-transform-imports\nimport matchPath from 'react-router/es/matchPath';\n\nexport default matchPath;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router-dom/es/matchPath.js\n// module id = 371\n// module chunks = 0","// Written in this round about way for babel-transform-imports\nimport withRouter from 'react-router/es/withRouter';\n\nexport default withRouter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router-dom/es/withRouter.js\n// module id = 372\n// module chunks = 0","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport hoistStatics from 'hoist-non-react-statics';\nimport Route from './Route';\n\n/**\n * A public higher-order component to access the imperative API\n */\nvar withRouter = function withRouter(Component) {\n  var C = function C(props) {\n    var wrappedComponentRef = props.wrappedComponentRef,\n        remainingProps = _objectWithoutProperties(props, ['wrappedComponentRef']);\n\n    return React.createElement(Route, { render: function render(routeComponentProps) {\n        return React.createElement(Component, _extends({}, remainingProps, routeComponentProps, { ref: wrappedComponentRef }));\n      } });\n  };\n\n  C.displayName = 'withRouter(' + (Component.displayName || Component.name) + ')';\n  C.WrappedComponent = Component;\n  C.propTypes = {\n    wrappedComponentRef: PropTypes.func\n  };\n\n  return hoistStatics(C, Component);\n};\n\nexport default withRouter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/es/withRouter.js\n// module id = 373\n// module chunks = 0","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport { Component, Children } from 'react';\nimport PropTypes from 'prop-types';\nimport { storeShape, subscriptionShape } from '../utils/PropTypes';\nimport warning from '../utils/warning';\n\nvar didWarnAboutReceivingStore = false;\nfunction warnAboutReceivingStore() {\n  if (didWarnAboutReceivingStore) {\n    return;\n  }\n  didWarnAboutReceivingStore = true;\n\n  warning('<Provider> does not support changing `store` on the fly. ' + 'It is most likely that you see this error because you updated to ' + 'Redux 2.x and React Redux 2.x which no longer hot reload reducers ' + 'automatically. See https://github.com/reactjs/react-redux/releases/' + 'tag/v2.0.0 for the migration instructions.');\n}\n\nexport function createProvider() {\n  var _Provider$childContex;\n\n  var storeKey = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'store';\n  var subKey = arguments[1];\n\n  var subscriptionKey = subKey || storeKey + 'Subscription';\n\n  var Provider = function (_Component) {\n    _inherits(Provider, _Component);\n\n    Provider.prototype.getChildContext = function getChildContext() {\n      var _ref;\n\n      return _ref = {}, _ref[storeKey] = this[storeKey], _ref[subscriptionKey] = null, _ref;\n    };\n\n    function Provider(props, context) {\n      _classCallCheck(this, Provider);\n\n      var _this = _possibleConstructorReturn(this, _Component.call(this, props, context));\n\n      _this[storeKey] = props.store;\n      return _this;\n    }\n\n    Provider.prototype.render = function render() {\n      return Children.only(this.props.children);\n    };\n\n    return Provider;\n  }(Component);\n\n  if (process.env.NODE_ENV !== 'production') {\n    Provider.prototype.componentWillReceiveProps = function (nextProps) {\n      if (this[storeKey] !== nextProps.store) {\n        warnAboutReceivingStore();\n      }\n    };\n  }\n\n  Provider.propTypes = {\n    store: storeShape.isRequired,\n    children: PropTypes.element.isRequired\n  };\n  Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[storeKey] = storeShape.isRequired, _Provider$childContex[subscriptionKey] = subscriptionShape, _Provider$childContex);\n\n  return Provider;\n}\n\nexport default createProvider();\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-redux/es/components/Provider.js\n// module id = 374\n// module chunks = 0","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nvar CLEARED = null;\nvar nullListeners = {\n  notify: function notify() {}\n};\n\nfunction createListenerCollection() {\n  // the current/next pattern is copied from redux's createStore code.\n  // TODO: refactor+expose that code to be reusable here?\n  var current = [];\n  var next = [];\n\n  return {\n    clear: function clear() {\n      next = CLEARED;\n      current = CLEARED;\n    },\n    notify: function notify() {\n      var listeners = current = next;\n      for (var i = 0; i < listeners.length; i++) {\n        listeners[i]();\n      }\n    },\n    get: function get() {\n      return next;\n    },\n    subscribe: function subscribe(listener) {\n      var isSubscribed = true;\n      if (next === current) next = current.slice();\n      next.push(listener);\n\n      return function unsubscribe() {\n        if (!isSubscribed || current === CLEARED) return;\n        isSubscribed = false;\n\n        if (next === current) next = current.slice();\n        next.splice(next.indexOf(listener), 1);\n      };\n    }\n  };\n}\n\nvar Subscription = function () {\n  function Subscription(store, parentSub, onStateChange) {\n    _classCallCheck(this, Subscription);\n\n    this.store = store;\n    this.parentSub = parentSub;\n    this.onStateChange = onStateChange;\n    this.unsubscribe = null;\n    this.listeners = nullListeners;\n  }\n\n  Subscription.prototype.addNestedSub = function addNestedSub(listener) {\n    this.trySubscribe();\n    return this.listeners.subscribe(listener);\n  };\n\n  Subscription.prototype.notifyNestedSubs = function notifyNestedSubs() {\n    this.listeners.notify();\n  };\n\n  Subscription.prototype.isSubscribed = function isSubscribed() {\n    return Boolean(this.unsubscribe);\n  };\n\n  Subscription.prototype.trySubscribe = function trySubscribe() {\n    if (!this.unsubscribe) {\n      this.unsubscribe = this.parentSub ? this.parentSub.addNestedSub(this.onStateChange) : this.store.subscribe(this.onStateChange);\n\n      this.listeners = createListenerCollection();\n    }\n  };\n\n  Subscription.prototype.tryUnsubscribe = function tryUnsubscribe() {\n    if (this.unsubscribe) {\n      this.unsubscribe();\n      this.unsubscribe = null;\n      this.listeners.clear();\n      this.listeners = nullListeners;\n    }\n  };\n\n  return Subscription;\n}();\n\nexport { Subscription as default };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-redux/es/utils/Subscription.js\n// module id = 375\n// module chunks = 0","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n\n/*\n  connect is a facade over connectAdvanced. It turns its args into a compatible\n  selectorFactory, which has the signature:\n\n    (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\n  \n  connect passes its args to connectAdvanced as options, which will in turn pass them to\n  selectorFactory each time a Connect component instance is instantiated or hot reloaded.\n\n  selectorFactory returns a final props selector from its mapStateToProps,\n  mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\n  mergePropsFactories, and pure args.\n\n  The resulting final props selector is called by the Connect component instance whenever\n  it receives new props or store state.\n */\n\nfunction match(arg, factories, name) {\n  for (var i = factories.length - 1; i >= 0; i--) {\n    var result = factories[i](arg);\n    if (result) return result;\n  }\n\n  return function (dispatch, options) {\n    throw new Error('Invalid value of type ' + typeof arg + ' for ' + name + ' argument when connecting component ' + options.wrappedComponentName + '.');\n  };\n}\n\nfunction strictEqual(a, b) {\n  return a === b;\n}\n\n// createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\nexport function createConnect() {\n  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n      _ref$connectHOC = _ref.connectHOC,\n      connectHOC = _ref$connectHOC === undefined ? connectAdvanced : _ref$connectHOC,\n      _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n      mapStateToPropsFactories = _ref$mapStateToPropsF === undefined ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n      _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n      mapDispatchToPropsFactories = _ref$mapDispatchToPro === undefined ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n      _ref$mergePropsFactor = _ref.mergePropsFactories,\n      mergePropsFactories = _ref$mergePropsFactor === undefined ? defaultMergePropsFactories : _ref$mergePropsFactor,\n      _ref$selectorFactory = _ref.selectorFactory,\n      selectorFactory = _ref$selectorFactory === undefined ? defaultSelectorFactory : _ref$selectorFactory;\n\n  return function connect(mapStateToProps, mapDispatchToProps, mergeProps) {\n    var _ref2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {},\n        _ref2$pure = _ref2.pure,\n        pure = _ref2$pure === undefined ? true : _ref2$pure,\n        _ref2$areStatesEqual = _ref2.areStatesEqual,\n        areStatesEqual = _ref2$areStatesEqual === undefined ? strictEqual : _ref2$areStatesEqual,\n        _ref2$areOwnPropsEqua = _ref2.areOwnPropsEqual,\n        areOwnPropsEqual = _ref2$areOwnPropsEqua === undefined ? shallowEqual : _ref2$areOwnPropsEqua,\n        _ref2$areStatePropsEq = _ref2.areStatePropsEqual,\n        areStatePropsEqual = _ref2$areStatePropsEq === undefined ? shallowEqual : _ref2$areStatePropsEq,\n        _ref2$areMergedPropsE = _ref2.areMergedPropsEqual,\n        areMergedPropsEqual = _ref2$areMergedPropsE === undefined ? shallowEqual : _ref2$areMergedPropsE,\n        extraOptions = _objectWithoutProperties(_ref2, ['pure', 'areStatesEqual', 'areOwnPropsEqual', 'areStatePropsEqual', 'areMergedPropsEqual']);\n\n    var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n    var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n    var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n\n    return connectHOC(selectorFactory, _extends({\n      // used in error messages\n      methodName: 'connect',\n\n      // used to compute Connect's displayName from the wrapped component's displayName.\n      getDisplayName: function getDisplayName(name) {\n        return 'Connect(' + name + ')';\n      },\n\n      // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n      shouldHandleStateChanges: Boolean(mapStateToProps),\n\n      // passed through to selectorFactory\n      initMapStateToProps: initMapStateToProps,\n      initMapDispatchToProps: initMapDispatchToProps,\n      initMergeProps: initMergeProps,\n      pure: pure,\n      areStatesEqual: areStatesEqual,\n      areOwnPropsEqual: areOwnPropsEqual,\n      areStatePropsEqual: areStatePropsEqual,\n      areMergedPropsEqual: areMergedPropsEqual\n\n    }, extraOptions));\n  };\n}\n\nexport default createConnect();\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-redux/es/connect/connect.js\n// module id = 376\n// module chunks = 0","var hasOwn = Object.prototype.hasOwnProperty;\n\nfunction is(x, y) {\n  if (x === y) {\n    return x !== 0 || y !== 0 || 1 / x === 1 / y;\n  } else {\n    return x !== x && y !== y;\n  }\n}\n\nexport default function shallowEqual(objA, objB) {\n  if (is(objA, objB)) return true;\n\n  if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n    return false;\n  }\n\n  var keysA = Object.keys(objA);\n  var keysB = Object.keys(objB);\n\n  if (keysA.length !== keysB.length) return false;\n\n  for (var i = 0; i < keysA.length; i++) {\n    if (!hasOwn.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-redux/es/utils/shallowEqual.js\n// module id = 377\n// module chunks = 0","import { bindActionCreators } from 'redux';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\n\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n  return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\n\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n  return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n    return { dispatch: dispatch };\n  }) : undefined;\n}\n\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n  return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n    return bindActionCreators(mapDispatchToProps, dispatch);\n  }) : undefined;\n}\n\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-redux/es/connect/mapDispatchToProps.js\n// module id = 378\n// module chunks = 0","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\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\nexport default baseGetTag;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash-es/_baseGetTag.js\n// module id = 379\n// module chunks = 0","import freeGlobal from './_freeGlobal.js';\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\nexport default root;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash-es/_root.js\n// module id = 380\n// module chunks = 0","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash-es/_freeGlobal.js\n// module id = 381\n// module chunks = 0","import Symbol from './_Symbol.js';\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\nexport default getRawTag;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash-es/_getRawTag.js\n// module id = 382\n// module chunks = 0","/** 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\nexport default objectToString;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash-es/_objectToString.js\n// module id = 383\n// module chunks = 0","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash-es/_getPrototype.js\n// module id = 384\n// module chunks = 0","/**\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\nexport default overArg;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash-es/_overArg.js\n// module id = 385\n// module chunks = 0","/**\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\nexport default isObjectLike;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash-es/isObjectLike.js\n// module id = 386\n// module chunks = 0","module.exports = require('./lib/index');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/symbol-observable/index.js\n// module id = 387\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _ponyfill = require('./ponyfill');\n\nvar _ponyfill2 = _interopRequireDefault(_ponyfill);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar root; /* global window */\n\n\nif (typeof self !== 'undefined') {\n  root = self;\n} else if (typeof window !== 'undefined') {\n  root = window;\n} else if (typeof global !== 'undefined') {\n  root = global;\n} else if (typeof module !== 'undefined') {\n  root = module;\n} else {\n  root = Function('return this')();\n}\n\nvar result = (0, _ponyfill2['default'])(root);\nexports['default'] = result;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/symbol-observable/lib/index.js\n// module id = 388\n// module chunks = 0","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\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/module.js\n// module id = 389\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports['default'] = symbolObservablePonyfill;\nfunction symbolObservablePonyfill(root) {\n\tvar result;\n\tvar _Symbol = root.Symbol;\n\n\tif (typeof _Symbol === 'function') {\n\t\tif (_Symbol.observable) {\n\t\t\tresult = _Symbol.observable;\n\t\t} else {\n\t\t\tresult = _Symbol('observable');\n\t\t\t_Symbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/symbol-observable/lib/ponyfill.js\n// module id = 390\n// module chunks = 0","import { ActionTypes } from './createStore';\nimport isPlainObject from 'lodash-es/isPlainObject';\nimport warning from './utils/warning';\n\nfunction getUndefinedStateErrorMessage(key, action) {\n  var actionType = action && action.type;\n  var actionName = actionType && '\"' + actionType.toString() + '\"' || 'an action';\n\n  return 'Given action ' + actionName + ', reducer \"' + key + '\" returned undefined. ' + 'To ignore an action, you must explicitly return the previous state. ' + 'If you want this reducer to hold no value, you can return null instead of undefined.';\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n  var reducerKeys = Object.keys(reducers);\n  var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n  if (reducerKeys.length === 0) {\n    return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n  }\n\n  if (!isPlainObject(inputState)) {\n    return 'The ' + argumentName + ' has unexpected type of \"' + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + '\". Expected argument to be an object with the following ' + ('keys: \"' + reducerKeys.join('\", \"') + '\"');\n  }\n\n  var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n    return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n  });\n\n  unexpectedKeys.forEach(function (key) {\n    unexpectedKeyCache[key] = true;\n  });\n\n  if (unexpectedKeys.length > 0) {\n    return 'Unexpected ' + (unexpectedKeys.length > 1 ? 'keys' : 'key') + ' ' + ('\"' + unexpectedKeys.join('\", \"') + '\" found in ' + argumentName + '. ') + 'Expected to find one of the known reducer keys instead: ' + ('\"' + reducerKeys.join('\", \"') + '\". Unexpected keys will be ignored.');\n  }\n}\n\nfunction assertReducerShape(reducers) {\n  Object.keys(reducers).forEach(function (key) {\n    var reducer = reducers[key];\n    var initialState = reducer(undefined, { type: ActionTypes.INIT });\n\n    if (typeof initialState === 'undefined') {\n      throw new Error('Reducer \"' + key + '\" returned undefined during initialization. ' + 'If the state passed to the reducer is undefined, you must ' + 'explicitly return the initial state. The initial state may ' + 'not be undefined. If you don\\'t want to set a value for this reducer, ' + 'you can use null instead of undefined.');\n    }\n\n    var type = '@@redux/PROBE_UNKNOWN_ACTION_' + Math.random().toString(36).substring(7).split('').join('.');\n    if (typeof reducer(undefined, { type: type }) === 'undefined') {\n      throw new Error('Reducer \"' + key + '\" returned undefined when probed with a random type. ' + ('Don\\'t try to handle ' + ActionTypes.INIT + ' or other actions in \"redux/*\" ') + 'namespace. They are considered private. Instead, you must return the ' + 'current state for any unknown actions, unless it is undefined, ' + 'in which case you must return the initial state, regardless of the ' + 'action type. The initial state may not be undefined, but can be null.');\n    }\n  });\n}\n\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\nexport default function combineReducers(reducers) {\n  var reducerKeys = Object.keys(reducers);\n  var finalReducers = {};\n  for (var i = 0; i < reducerKeys.length; i++) {\n    var key = reducerKeys[i];\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (typeof reducers[key] === 'undefined') {\n        warning('No reducer provided for key \"' + key + '\"');\n      }\n    }\n\n    if (typeof reducers[key] === 'function') {\n      finalReducers[key] = reducers[key];\n    }\n  }\n  var finalReducerKeys = Object.keys(finalReducers);\n\n  var unexpectedKeyCache = void 0;\n  if (process.env.NODE_ENV !== 'production') {\n    unexpectedKeyCache = {};\n  }\n\n  var shapeAssertionError = void 0;\n  try {\n    assertReducerShape(finalReducers);\n  } catch (e) {\n    shapeAssertionError = e;\n  }\n\n  return function combination() {\n    var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var action = arguments[1];\n\n    if (shapeAssertionError) {\n      throw shapeAssertionError;\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n      if (warningMessage) {\n        warning(warningMessage);\n      }\n    }\n\n    var hasChanged = false;\n    var nextState = {};\n    for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n      var _key = finalReducerKeys[_i];\n      var reducer = finalReducers[_key];\n      var previousStateForKey = state[_key];\n      var nextStateForKey = reducer(previousStateForKey, action);\n      if (typeof nextStateForKey === 'undefined') {\n        var errorMessage = getUndefinedStateErrorMessage(_key, action);\n        throw new Error(errorMessage);\n      }\n      nextState[_key] = nextStateForKey;\n      hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n    }\n    return hasChanged ? nextState : state;\n  };\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/redux/es/combineReducers.js\n// module id = 391\n// module chunks = 0","function bindActionCreator(actionCreator, dispatch) {\n  return function () {\n    return dispatch(actionCreator.apply(undefined, arguments));\n  };\n}\n\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass a single function as the first argument,\n * and get a function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\nexport default function bindActionCreators(actionCreators, dispatch) {\n  if (typeof actionCreators === 'function') {\n    return bindActionCreator(actionCreators, dispatch);\n  }\n\n  if (typeof actionCreators !== 'object' || actionCreators === null) {\n    throw new Error('bindActionCreators expected an object or a function, instead received ' + (actionCreators === null ? 'null' : typeof actionCreators) + '. ' + 'Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?');\n  }\n\n  var keys = Object.keys(actionCreators);\n  var boundActionCreators = {};\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    var actionCreator = actionCreators[key];\n    if (typeof actionCreator === 'function') {\n      boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n    }\n  }\n  return boundActionCreators;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/redux/es/bindActionCreators.js\n// module id = 392\n// module chunks = 0","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport compose from './compose';\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\nexport default function applyMiddleware() {\n  for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {\n    middlewares[_key] = arguments[_key];\n  }\n\n  return function (createStore) {\n    return function (reducer, preloadedState, enhancer) {\n      var store = createStore(reducer, preloadedState, enhancer);\n      var _dispatch = store.dispatch;\n      var chain = [];\n\n      var middlewareAPI = {\n        getState: store.getState,\n        dispatch: function dispatch(action) {\n          return _dispatch(action);\n        }\n      };\n      chain = middlewares.map(function (middleware) {\n        return middleware(middlewareAPI);\n      });\n      _dispatch = compose.apply(undefined, chain)(store.dispatch);\n\n      return _extends({}, store, {\n        dispatch: _dispatch\n      });\n    };\n  };\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/redux/es/applyMiddleware.js\n// module id = 393\n// module chunks = 0","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\n\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n  return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\n\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n  return !mapStateToProps ? wrapMapToPropsConstant(function () {\n    return {};\n  }) : undefined;\n}\n\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-redux/es/connect/mapStateToProps.js\n// module id = 394\n// module chunks = 0","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport verifyPlainObject from '../utils/verifyPlainObject';\n\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n  return _extends({}, ownProps, stateProps, dispatchProps);\n}\n\nexport function wrapMergePropsFunc(mergeProps) {\n  return function initMergePropsProxy(dispatch, _ref) {\n    var displayName = _ref.displayName,\n        pure = _ref.pure,\n        areMergedPropsEqual = _ref.areMergedPropsEqual;\n\n    var hasRunOnce = false;\n    var mergedProps = void 0;\n\n    return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n      var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n      if (hasRunOnce) {\n        if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n      } else {\n        hasRunOnce = true;\n        mergedProps = nextMergedProps;\n\n        if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n      }\n\n      return mergedProps;\n    };\n  };\n}\n\nexport function whenMergePropsIsFunction(mergeProps) {\n  return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\n\nexport function whenMergePropsIsOmitted(mergeProps) {\n  return !mergeProps ? function () {\n    return defaultMergeProps;\n  } : undefined;\n}\n\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-redux/es/connect/mergeProps.js\n// module id = 395\n// module chunks = 0","function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nimport verifySubselectors from './verifySubselectors';\n\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n  return function impureFinalPropsSelector(state, ownProps) {\n    return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n  };\n}\n\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n  var areStatesEqual = _ref.areStatesEqual,\n      areOwnPropsEqual = _ref.areOwnPropsEqual,\n      areStatePropsEqual = _ref.areStatePropsEqual;\n\n  var hasRunAtLeastOnce = false;\n  var state = void 0;\n  var ownProps = void 0;\n  var stateProps = void 0;\n  var dispatchProps = void 0;\n  var mergedProps = void 0;\n\n  function handleFirstCall(firstState, firstOwnProps) {\n    state = firstState;\n    ownProps = firstOwnProps;\n    stateProps = mapStateToProps(state, ownProps);\n    dispatchProps = mapDispatchToProps(dispatch, ownProps);\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    hasRunAtLeastOnce = true;\n    return mergedProps;\n  }\n\n  function handleNewPropsAndNewState() {\n    stateProps = mapStateToProps(state, ownProps);\n\n    if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    return mergedProps;\n  }\n\n  function handleNewProps() {\n    if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n\n    if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    return mergedProps;\n  }\n\n  function handleNewState() {\n    var nextStateProps = mapStateToProps(state, ownProps);\n    var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n    stateProps = nextStateProps;\n\n    if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n    return mergedProps;\n  }\n\n  function handleSubsequentCalls(nextState, nextOwnProps) {\n    var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n    var stateChanged = !areStatesEqual(nextState, state);\n    state = nextState;\n    ownProps = nextOwnProps;\n\n    if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n    if (propsChanged) return handleNewProps();\n    if (stateChanged) return handleNewState();\n    return mergedProps;\n  }\n\n  return function pureFinalPropsSelector(nextState, nextOwnProps) {\n    return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n  };\n}\n\n// TODO: Add more comments\n\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n  var initMapStateToProps = _ref2.initMapStateToProps,\n      initMapDispatchToProps = _ref2.initMapDispatchToProps,\n      initMergeProps = _ref2.initMergeProps,\n      options = _objectWithoutProperties(_ref2, ['initMapStateToProps', 'initMapDispatchToProps', 'initMergeProps']);\n\n  var mapStateToProps = initMapStateToProps(dispatch, options);\n  var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n  var mergeProps = initMergeProps(dispatch, options);\n\n  if (process.env.NODE_ENV !== 'production') {\n    verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n  }\n\n  var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n\n  return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-redux/es/connect/selectorFactory.js\n// module id = 396\n// module chunks = 0","import warning from '../utils/warning';\n\nfunction verify(selector, methodName, displayName) {\n  if (!selector) {\n    throw new Error('Unexpected value for ' + methodName + ' in ' + displayName + '.');\n  } else if (methodName === 'mapStateToProps' || methodName === 'mapDispatchToProps') {\n    if (!selector.hasOwnProperty('dependsOnOwnProps')) {\n      warning('The selector for ' + methodName + ' of ' + displayName + ' did not specify a value for dependsOnOwnProps.');\n    }\n  }\n}\n\nexport default function verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, displayName) {\n  verify(mapStateToProps, 'mapStateToProps', displayName);\n  verify(mapDispatchToProps, 'mapDispatchToProps', displayName);\n  verify(mergeProps, 'mergeProps', displayName);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-redux/es/connect/verifySubselectors.js\n// module id = 397\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\nfunction createThunkMiddleware(extraArgument) {\n  return function (_ref) {\n    var dispatch = _ref.dispatch,\n        getState = _ref.getState;\n    return function (next) {\n      return function (action) {\n        if (typeof action === 'function') {\n          return action(dispatch, getState, extraArgument);\n        }\n\n        return next(action);\n      };\n    };\n  };\n}\n\nvar thunk = createThunkMiddleware();\nthunk.withExtraArgument = createThunkMiddleware;\n\nexports['default'] = thunk;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/redux-thunk/lib/index.js\n// module id = 398\n// module chunks = 0","// removed by extract-text-webpack-plugin\nmodule.exports = {\"ag-rtl\":\"ag-rtl\",\"ag-ltr\":\"ag-ltr\",\"ag-select-agg-func-popup\":\"ag-select-agg-func-popup\",\"ag-body-no-select\":\"ag-body-no-select\",\"ag-root\":\"ag-root\",\"ag-layout-normal\":\"ag-layout-normal\",\"ag-font-style\":\"ag-font-style\",\"ag-layout-for-print\":\"ag-layout-for-print\",\"ag-popup-backdrop\":\"ag-popup-backdrop\",\"ag-header\":\"ag-header\",\"ag-pinned-left-header\":\"ag-pinned-left-header\",\"ag-pinned-right-header\":\"ag-pinned-right-header\",\"ag-header-viewport\":\"ag-header-viewport\",\"ag-header-row\":\"ag-header-row\",\"ag-header-container\":\"ag-header-container\",\"ag-layout-auto-height\":\"ag-layout-auto-height\",\"ag-header-overlay\":\"ag-header-overlay\",\"ag-header-cell\":\"ag-header-cell\",\"ag-floating-filter\":\"ag-floating-filter\",\"ag-floating-filter-body\":\"ag-floating-filter-body\",\"ag-floating-filter-full-body\":\"ag-floating-filter-full-body\",\"ag-floating-filter-input\":\"ag-floating-filter-input\",\"ag-floating-filter-menu\":\"ag-floating-filter-menu\",\"ag-dnd-ghost\":\"ag-dnd-ghost\",\"ag-dnd-ghost-icon\":\"ag-dnd-ghost-icon\",\"ag-dnd-ghost-label\":\"ag-dnd-ghost-label\",\"ag-header-group-cell\":\"ag-header-group-cell\",\"ag-header-group-cell-label\":\"ag-header-group-cell-label\",\"ag-header-cell-label\":\"ag-header-cell-label\",\"ag-header-cell-resize\":\"ag-header-cell-resize\",\"ag-header-select-all\":\"ag-header-select-all\",\"ag-header-expand-icon\":\"ag-header-expand-icon\",\"ag-header-cell-menu-button\":\"ag-header-cell-menu-button\",\"ag-overlay-panel\":\"ag-overlay-panel\",\"ag-overlay-wrapper\":\"ag-overlay-wrapper\",\"ag-bl-overlay\":\"ag-bl-overlay\",\"ag-bl-full-height\":\"ag-bl-full-height\",\"ag-bl-west\":\"ag-bl-west\",\"ag-bl-full-height-west\":\"ag-bl-full-height-west\",\"ag-bl-east\":\"ag-bl-east\",\"ag-bl-full-height-east\":\"ag-bl-full-height-east\",\"ag-bl-full-height-center\":\"ag-bl-full-height-center\",\"ag-bl-normal\":\"ag-bl-normal\",\"ag-bl-normal-center-row\":\"ag-bl-normal-center-row\",\"ag-bl-normal-west\":\"ag-bl-normal-west\",\"ag-bl-normal-east\":\"ag-bl-normal-east\",\"ag-bl-normal-center\":\"ag-bl-normal-center\",\"ag-bl-dont-fill\":\"ag-bl-dont-fill\",\"ag-body\":\"ag-body\",\"ag-floating-top\":\"ag-floating-top\",\"ag-pinned-left-floating-top\":\"ag-pinned-left-floating-top\",\"ag-pinned-right-floating-top\":\"ag-pinned-right-floating-top\",\"ag-floating-top-viewport\":\"ag-floating-top-viewport\",\"ag-floating-top-container\":\"ag-floating-top-container\",\"ag-floating-bottom\":\"ag-floating-bottom\",\"ag-pinned-left-floating-bottom\":\"ag-pinned-left-floating-bottom\",\"ag-pinned-right-floating-bottom\":\"ag-pinned-right-floating-bottom\",\"ag-floating-bottom-viewport\":\"ag-floating-bottom-viewport\",\"ag-floating-bottom-container\":\"ag-floating-bottom-container\",\"ag-pinned-left-cols-viewport\":\"ag-pinned-left-cols-viewport\",\"ag-pinned-left-cols-container\":\"ag-pinned-left-cols-container\",\"ag-pinned-right-cols-viewport\":\"ag-pinned-right-cols-viewport\",\"ag-pinned-right-cols-container\":\"ag-pinned-right-cols-container\",\"ag-body-viewport-wrapper\":\"ag-body-viewport-wrapper\",\"ag-body-viewport\":\"ag-body-viewport\",\"ag-full-width-viewport\":\"ag-full-width-viewport\",\"ag-full-width-container\":\"ag-full-width-container\",\"ag-floating-bottom-full-width-container\":\"ag-floating-bottom-full-width-container\",\"ag-floating-top-full-width-container\":\"ag-floating-top-full-width-container\",\"ag-full-width-row\":\"ag-full-width-row\",\"ag-body-container\":\"ag-body-container\",\"ag-row-animation\":\"ag-row-animation\",\"ag-row-no-animation\":\"ag-row-no-animation\",\"ag-row\":\"ag-row\",\"ag-column-moving\":\"ag-column-moving\",\"ag-cell\":\"ag-cell\",\"ag-column-drop\":\"ag-column-drop\",\"ag-column-drop-vertical\":\"ag-column-drop-vertical\",\"ag-column-drop-cell\":\"ag-column-drop-cell\",\"ag-column-drop-empty-message\":\"ag-column-drop-empty-message\",\"ag-column-drop-cell-button\":\"ag-column-drop-cell-button\",\"ag-column-drop-horizontal\":\"ag-column-drop-horizontal\",\"ag-value-slide-out\":\"ag-value-slide-out\",\"ag-value-slide-out-end\":\"ag-value-slide-out-end\",\"ag-opacity-zero\":\"ag-opacity-zero\",\"ag-cell-edit-input\":\"ag-cell-edit-input\",\"ag-group-cell-entire-row\":\"ag-group-cell-entire-row\",\"ag-footer-cell-entire-row\":\"ag-footer-cell-entire-row\",\"ag-large\":\"ag-large\",\"ag-popup-editor\":\"ag-popup-editor\",\"ag-menu\":\"ag-menu\",\"ag-menu-column-select-wrapper\":\"ag-menu-column-select-wrapper\",\"ag-menu-list\":\"ag-menu-list\",\"ag-menu-option\":\"ag-menu-option\",\"ag-menu-option-text\":\"ag-menu-option-text\",\"ag-menu-option-shortcut\":\"ag-menu-option-shortcut\",\"ag-menu-option-icon\":\"ag-menu-option-icon\",\"ag-menu-option-popup-pointer\":\"ag-menu-option-popup-pointer\",\"ag-menu-separator\":\"ag-menu-separator\",\"ag-menu-separator-cell\":\"ag-menu-separator-cell\",\"ag-virtual-list-viewport\":\"ag-virtual-list-viewport\",\"ag-virtual-list-container\":\"ag-virtual-list-container\",\"ag-rich-select\":\"ag-rich-select\",\"ag-rich-select-row\":\"ag-rich-select-row\",\"ag-rich-select-list\":\"ag-rich-select-list\",\"ag-set-filter-list\":\"ag-set-filter-list\",\"ag-set-filter-item\":\"ag-set-filter-item\",\"ag-virtual-list-item\":\"ag-virtual-list-item\",\"ag-icon\":\"ag-icon\",\"ag-filter-filter\":\"ag-filter-filter\",\"ag-filter-select\":\"ag-filter-select\",\"ag-list-selection\":\"ag-list-selection\",\"ag-tool-panel\":\"ag-tool-panel\",\"ag-column-select-indent\":\"ag-column-select-indent\",\"ag-column-select-column\":\"ag-column-select-column\",\"ag-column-select-column-group\":\"ag-column-select-column-group\",\"ag-hidden\":\"ag-hidden\",\"ag-visibility-hidden\":\"ag-visibility-hidden\",\"ag-faded\":\"ag-faded\",\"ag-width-half\":\"ag-width-half\",\"ag-shake-left-to-right\":\"ag-shake-left-to-right\",\"ag-icon-aggregation\":\"ag-icon-aggregation\",\"ag-icon-arrows\":\"ag-icon-arrows\",\"ag-icon-asc\":\"ag-icon-asc\",\"ag-icon-checkbox-checked-readonly\":\"ag-icon-checkbox-checked-readonly\",\"ag-icon-checkbox-checked\":\"ag-icon-checkbox-checked\",\"ag-icon-checkbox-indeterminate-readonly\":\"ag-icon-checkbox-indeterminate-readonly\",\"ag-icon-checkbox-indeterminate\":\"ag-icon-checkbox-indeterminate\",\"ag-icon-checkbox-unchecked-readonly\":\"ag-icon-checkbox-unchecked-readonly\",\"ag-icon-checkbox-unchecked\":\"ag-icon-checkbox-unchecked\",\"ag-icon-column\":\"ag-icon-column\",\"ag-icon-columns\":\"ag-icon-columns\",\"ag-icon-contracted\":\"ag-icon-contracted\",\"ag-icon-copy\":\"ag-icon-copy\",\"ag-icon-cut\":\"ag-icon-cut\",\"ag-icon-desc\":\"ag-icon-desc\",\"ag-icon-expanded\":\"ag-icon-expanded\",\"ag-icon-eye-slash\":\"ag-icon-eye-slash\",\"ag-icon-eye\":\"ag-icon-eye\",\"ag-icon-filter\":\"ag-icon-filter\",\"ag-icon-folder-open\":\"ag-icon-folder-open\",\"ag-icon-folder\":\"ag-icon-folder\",\"ag-icon-group\":\"ag-icon-group\",\"ag-icon-indeterminate\":\"ag-icon-indeterminate\",\"ag-icon-left\":\"ag-icon-left\",\"ag-icon-loading\":\"ag-icon-loading\",\"ag-icon-menu\":\"ag-icon-menu\",\"ag-icon-minus\":\"ag-icon-minus\",\"ag-icon-none\":\"ag-icon-none\",\"ag-icon-not-allowed\":\"ag-icon-not-allowed\",\"ag-icon-paste\":\"ag-icon-paste\",\"ag-icon-pin\":\"ag-icon-pin\",\"ag-icon-pivot\":\"ag-icon-pivot\",\"ag-icon-plus\":\"ag-icon-plus\",\"ag-icon-right\":\"ag-icon-right\",\"ag-icon-small-left\":\"ag-icon-small-left\",\"ag-icon-small-right\":\"ag-icon-small-right\",\"ag-icon-small-up\":\"ag-icon-small-up\",\"ag-icon-small-down\":\"ag-icon-small-down\",\"ag-icon-tick\":\"ag-icon-tick\",\"ag-icon-cross\":\"ag-icon-cross\",\"ag-icon-tree-open\":\"ag-icon-tree-open\",\"ag-icon-tree-closed\":\"ag-icon-tree-closed\",\"loading-filter\":\"loading-filter\",\"ag-details-row\":\"ag-details-row\",\"ag-details-grid\":\"ag-details-grid\",\"ag-toolpanel-indent-1\":\"ag-toolpanel-indent-1\",\"ag-row-group-indent-1\":\"ag-row-group-indent-1\",\"ag-toolpanel-indent-2\":\"ag-toolpanel-indent-2\",\"ag-row-group-indent-2\":\"ag-row-group-indent-2\",\"ag-toolpanel-indent-3\":\"ag-toolpanel-indent-3\",\"ag-row-group-indent-3\":\"ag-row-group-indent-3\",\"ag-toolpanel-indent-4\":\"ag-toolpanel-indent-4\",\"ag-row-group-indent-4\":\"ag-row-group-indent-4\",\"ag-toolpanel-indent-5\":\"ag-toolpanel-indent-5\",\"ag-row-group-indent-5\":\"ag-row-group-indent-5\",\"ag-toolpanel-indent-6\":\"ag-toolpanel-indent-6\",\"ag-row-group-indent-6\":\"ag-row-group-indent-6\",\"ag-toolpanel-indent-7\":\"ag-toolpanel-indent-7\",\"ag-row-group-indent-7\":\"ag-row-group-indent-7\",\"ag-toolpanel-indent-8\":\"ag-toolpanel-indent-8\",\"ag-row-group-indent-8\":\"ag-row-group-indent-8\",\"ag-toolpanel-indent-9\":\"ag-toolpanel-indent-9\",\"ag-row-group-indent-9\":\"ag-row-group-indent-9\",\"ag-toolpanel-indent-10\":\"ag-toolpanel-indent-10\",\"ag-row-group-indent-10\":\"ag-row-group-indent-10\",\"ag-toolpanel-indent-11\":\"ag-toolpanel-indent-11\",\"ag-row-group-indent-11\":\"ag-row-group-indent-11\",\"ag-toolpanel-indent-12\":\"ag-toolpanel-indent-12\",\"ag-row-group-indent-12\":\"ag-row-group-indent-12\",\"ag-toolpanel-indent-13\":\"ag-toolpanel-indent-13\",\"ag-row-group-indent-13\":\"ag-row-group-indent-13\",\"ag-toolpanel-indent-14\":\"ag-toolpanel-indent-14\",\"ag-row-group-indent-14\":\"ag-row-group-indent-14\",\"ag-toolpanel-indent-15\":\"ag-toolpanel-indent-15\",\"ag-row-group-indent-15\":\"ag-row-group-indent-15\",\"ag-toolpanel-indent-16\":\"ag-toolpanel-indent-16\",\"ag-row-group-indent-16\":\"ag-row-group-indent-16\",\"ag-toolpanel-indent-17\":\"ag-toolpanel-indent-17\",\"ag-row-group-indent-17\":\"ag-row-group-indent-17\",\"ag-toolpanel-indent-18\":\"ag-toolpanel-indent-18\",\"ag-row-group-indent-18\":\"ag-row-group-indent-18\",\"ag-toolpanel-indent-19\":\"ag-toolpanel-indent-19\",\"ag-row-group-indent-19\":\"ag-row-group-indent-19\",\"ag-toolpanel-indent-20\":\"ag-toolpanel-indent-20\",\"ag-row-group-indent-20\":\"ag-row-group-indent-20\",\"ag-toolpanel-indent-21\":\"ag-toolpanel-indent-21\",\"ag-row-group-indent-21\":\"ag-row-group-indent-21\",\"ag-toolpanel-indent-22\":\"ag-toolpanel-indent-22\",\"ag-row-group-indent-22\":\"ag-row-group-indent-22\",\"ag-toolpanel-indent-23\":\"ag-toolpanel-indent-23\",\"ag-row-group-indent-23\":\"ag-row-group-indent-23\",\"ag-toolpanel-indent-24\":\"ag-toolpanel-indent-24\",\"ag-row-group-indent-24\":\"ag-row-group-indent-24\",\"ag-toolpanel-indent-25\":\"ag-toolpanel-indent-25\",\"ag-row-group-indent-25\":\"ag-row-group-indent-25\",\"ag-toolpanel-indent-26\":\"ag-toolpanel-indent-26\",\"ag-row-group-indent-26\":\"ag-row-group-indent-26\",\"ag-toolpanel-indent-27\":\"ag-toolpanel-indent-27\",\"ag-row-group-indent-27\":\"ag-row-group-indent-27\",\"ag-toolpanel-indent-28\":\"ag-toolpanel-indent-28\",\"ag-row-group-indent-28\":\"ag-row-group-indent-28\",\"ag-toolpanel-indent-29\":\"ag-toolpanel-indent-29\",\"ag-row-group-indent-29\":\"ag-row-group-indent-29\",\"ag-toolpanel-indent-30\":\"ag-toolpanel-indent-30\",\"ag-row-group-indent-30\":\"ag-row-group-indent-30\",\"ag-toolpanel-indent-31\":\"ag-toolpanel-indent-31\",\"ag-row-group-indent-31\":\"ag-row-group-indent-31\",\"ag-toolpanel-indent-32\":\"ag-toolpanel-indent-32\",\"ag-row-group-indent-32\":\"ag-row-group-indent-32\",\"ag-toolpanel-indent-33\":\"ag-toolpanel-indent-33\",\"ag-row-group-indent-33\":\"ag-row-group-indent-33\",\"ag-toolpanel-indent-34\":\"ag-toolpanel-indent-34\",\"ag-row-group-indent-34\":\"ag-row-group-indent-34\",\"ag-toolpanel-indent-35\":\"ag-toolpanel-indent-35\",\"ag-row-group-indent-35\":\"ag-row-group-indent-35\",\"ag-toolpanel-indent-36\":\"ag-toolpanel-indent-36\",\"ag-row-group-indent-36\":\"ag-row-group-indent-36\",\"ag-toolpanel-indent-37\":\"ag-toolpanel-indent-37\",\"ag-row-group-indent-37\":\"ag-row-group-indent-37\",\"ag-toolpanel-indent-38\":\"ag-toolpanel-indent-38\",\"ag-row-group-indent-38\":\"ag-row-group-indent-38\",\"ag-toolpanel-indent-39\":\"ag-toolpanel-indent-39\",\"ag-row-group-indent-39\":\"ag-row-group-indent-39\",\"ag-toolpanel-indent-40\":\"ag-toolpanel-indent-40\",\"ag-row-group-indent-40\":\"ag-row-group-indent-40\",\"ag-toolpanel-indent-41\":\"ag-toolpanel-indent-41\",\"ag-row-group-indent-41\":\"ag-row-group-indent-41\",\"ag-toolpanel-indent-42\":\"ag-toolpanel-indent-42\",\"ag-row-group-indent-42\":\"ag-row-group-indent-42\",\"ag-toolpanel-indent-43\":\"ag-toolpanel-indent-43\",\"ag-row-group-indent-43\":\"ag-row-group-indent-43\",\"ag-toolpanel-indent-44\":\"ag-toolpanel-indent-44\",\"ag-row-group-indent-44\":\"ag-row-group-indent-44\",\"ag-toolpanel-indent-45\":\"ag-toolpanel-indent-45\",\"ag-row-group-indent-45\":\"ag-row-group-indent-45\",\"ag-toolpanel-indent-46\":\"ag-toolpanel-indent-46\",\"ag-row-group-indent-46\":\"ag-row-group-indent-46\",\"ag-toolpanel-indent-47\":\"ag-toolpanel-indent-47\",\"ag-row-group-indent-47\":\"ag-row-group-indent-47\",\"ag-toolpanel-indent-48\":\"ag-toolpanel-indent-48\",\"ag-row-group-indent-48\":\"ag-row-group-indent-48\",\"ag-toolpanel-indent-49\":\"ag-toolpanel-indent-49\",\"ag-row-group-indent-49\":\"ag-row-group-indent-49\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/styles/ag-grid.css\n// module id = 399\n// module chunks = 0","// removed by extract-text-webpack-plugin\nmodule.exports = {\"ag-icon\":\"ag-icon\",\"ag-faded\":\"ag-faded\",\"ag-fresh\":\"ag-fresh\",\"ag-numeric-cell\":\"ag-numeric-cell\",\"ag-header-cell-label\":\"ag-header-cell-label\",\"ag-header-icon\":\"ag-header-icon\",\"ag-header-cell-text\":\"ag-header-cell-text\",\"ag-numeric-header\":\"ag-numeric-header\",\"ag-header-cell-menu-button\":\"ag-header-cell-menu-button\",\"ag-header-cell-resize\":\"ag-header-cell-resize\",\"ag-rtl\":\"ag-rtl\",\"ag-root\":\"ag-root\",\"ag-cell-data-changed\":\"ag-cell-data-changed\",\"ag-cell-data-changed-animation\":\"ag-cell-data-changed-animation\",\"ag-cell-not-inline-editing\":\"ag-cell-not-inline-editing\",\"ag-cell-range-selected-1\":\"ag-cell-range-selected-1\",\"ag-cell-focus\":\"ag-cell-focus\",\"ag-cell-range-selected-2\":\"ag-cell-range-selected-2\",\"ag-cell-range-selected-3\":\"ag-cell-range-selected-3\",\"ag-cell-range-selected-4\":\"ag-cell-range-selected-4\",\"ag-cell-no-focus\":\"ag-cell-no-focus\",\"ag-ltr\":\"ag-ltr\",\"ag-toolpanel-indent-1\":\"ag-toolpanel-indent-1\",\"ag-row-group-indent-1\":\"ag-row-group-indent-1\",\"ag-toolpanel-indent-2\":\"ag-toolpanel-indent-2\",\"ag-row-group-indent-2\":\"ag-row-group-indent-2\",\"ag-toolpanel-indent-3\":\"ag-toolpanel-indent-3\",\"ag-row-group-indent-3\":\"ag-row-group-indent-3\",\"ag-toolpanel-indent-4\":\"ag-toolpanel-indent-4\",\"ag-row-group-indent-4\":\"ag-row-group-indent-4\",\"ag-toolpanel-indent-5\":\"ag-toolpanel-indent-5\",\"ag-row-group-indent-5\":\"ag-row-group-indent-5\",\"ag-toolpanel-indent-6\":\"ag-toolpanel-indent-6\",\"ag-row-group-indent-6\":\"ag-row-group-indent-6\",\"ag-toolpanel-indent-7\":\"ag-toolpanel-indent-7\",\"ag-row-group-indent-7\":\"ag-row-group-indent-7\",\"ag-toolpanel-indent-8\":\"ag-toolpanel-indent-8\",\"ag-row-group-indent-8\":\"ag-row-group-indent-8\",\"ag-toolpanel-indent-9\":\"ag-toolpanel-indent-9\",\"ag-row-group-indent-9\":\"ag-row-group-indent-9\",\"ag-toolpanel-indent-10\":\"ag-toolpanel-indent-10\",\"ag-row-group-indent-10\":\"ag-row-group-indent-10\",\"ag-toolpanel-indent-11\":\"ag-toolpanel-indent-11\",\"ag-row-group-indent-11\":\"ag-row-group-indent-11\",\"ag-toolpanel-indent-12\":\"ag-toolpanel-indent-12\",\"ag-row-group-indent-12\":\"ag-row-group-indent-12\",\"ag-toolpanel-indent-13\":\"ag-toolpanel-indent-13\",\"ag-row-group-indent-13\":\"ag-row-group-indent-13\",\"ag-toolpanel-indent-14\":\"ag-toolpanel-indent-14\",\"ag-row-group-indent-14\":\"ag-row-group-indent-14\",\"ag-toolpanel-indent-15\":\"ag-toolpanel-indent-15\",\"ag-row-group-indent-15\":\"ag-row-group-indent-15\",\"ag-toolpanel-indent-16\":\"ag-toolpanel-indent-16\",\"ag-row-group-indent-16\":\"ag-row-group-indent-16\",\"ag-toolpanel-indent-17\":\"ag-toolpanel-indent-17\",\"ag-row-group-indent-17\":\"ag-row-group-indent-17\",\"ag-toolpanel-indent-18\":\"ag-toolpanel-indent-18\",\"ag-row-group-indent-18\":\"ag-row-group-indent-18\",\"ag-toolpanel-indent-19\":\"ag-toolpanel-indent-19\",\"ag-row-group-indent-19\":\"ag-row-group-indent-19\",\"ag-toolpanel-indent-20\":\"ag-toolpanel-indent-20\",\"ag-row-group-indent-20\":\"ag-row-group-indent-20\",\"ag-toolpanel-indent-21\":\"ag-toolpanel-indent-21\",\"ag-row-group-indent-21\":\"ag-row-group-indent-21\",\"ag-toolpanel-indent-22\":\"ag-toolpanel-indent-22\",\"ag-row-group-indent-22\":\"ag-row-group-indent-22\",\"ag-toolpanel-indent-23\":\"ag-toolpanel-indent-23\",\"ag-row-group-indent-23\":\"ag-row-group-indent-23\",\"ag-toolpanel-indent-24\":\"ag-toolpanel-indent-24\",\"ag-row-group-indent-24\":\"ag-row-group-indent-24\",\"ag-toolpanel-indent-25\":\"ag-toolpanel-indent-25\",\"ag-row-group-indent-25\":\"ag-row-group-indent-25\",\"ag-toolpanel-indent-26\":\"ag-toolpanel-indent-26\",\"ag-row-group-indent-26\":\"ag-row-group-indent-26\",\"ag-toolpanel-indent-27\":\"ag-toolpanel-indent-27\",\"ag-row-group-indent-27\":\"ag-row-group-indent-27\",\"ag-toolpanel-indent-28\":\"ag-toolpanel-indent-28\",\"ag-row-group-indent-28\":\"ag-row-group-indent-28\",\"ag-toolpanel-indent-29\":\"ag-toolpanel-indent-29\",\"ag-row-group-indent-29\":\"ag-row-group-indent-29\",\"ag-toolpanel-indent-30\":\"ag-toolpanel-indent-30\",\"ag-row-group-indent-30\":\"ag-row-group-indent-30\",\"ag-toolpanel-indent-31\":\"ag-toolpanel-indent-31\",\"ag-row-group-indent-31\":\"ag-row-group-indent-31\",\"ag-toolpanel-indent-32\":\"ag-toolpanel-indent-32\",\"ag-row-group-indent-32\":\"ag-row-group-indent-32\",\"ag-toolpanel-indent-33\":\"ag-toolpanel-indent-33\",\"ag-row-group-indent-33\":\"ag-row-group-indent-33\",\"ag-toolpanel-indent-34\":\"ag-toolpanel-indent-34\",\"ag-row-group-indent-34\":\"ag-row-group-indent-34\",\"ag-toolpanel-indent-35\":\"ag-toolpanel-indent-35\",\"ag-row-group-indent-35\":\"ag-row-group-indent-35\",\"ag-toolpanel-indent-36\":\"ag-toolpanel-indent-36\",\"ag-row-group-indent-36\":\"ag-row-group-indent-36\",\"ag-toolpanel-indent-37\":\"ag-toolpanel-indent-37\",\"ag-row-group-indent-37\":\"ag-row-group-indent-37\",\"ag-toolpanel-indent-38\":\"ag-toolpanel-indent-38\",\"ag-row-group-indent-38\":\"ag-row-group-indent-38\",\"ag-toolpanel-indent-39\":\"ag-toolpanel-indent-39\",\"ag-row-group-indent-39\":\"ag-row-group-indent-39\",\"ag-toolpanel-indent-40\":\"ag-toolpanel-indent-40\",\"ag-row-group-indent-40\":\"ag-row-group-indent-40\",\"ag-toolpanel-indent-41\":\"ag-toolpanel-indent-41\",\"ag-row-group-indent-41\":\"ag-row-group-indent-41\",\"ag-toolpanel-indent-42\":\"ag-toolpanel-indent-42\",\"ag-row-group-indent-42\":\"ag-row-group-indent-42\",\"ag-toolpanel-indent-43\":\"ag-toolpanel-indent-43\",\"ag-row-group-indent-43\":\"ag-row-group-indent-43\",\"ag-toolpanel-indent-44\":\"ag-toolpanel-indent-44\",\"ag-row-group-indent-44\":\"ag-row-group-indent-44\",\"ag-toolpanel-indent-45\":\"ag-toolpanel-indent-45\",\"ag-row-group-indent-45\":\"ag-row-group-indent-45\",\"ag-toolpanel-indent-46\":\"ag-toolpanel-indent-46\",\"ag-row-group-indent-46\":\"ag-row-group-indent-46\",\"ag-toolpanel-indent-47\":\"ag-toolpanel-indent-47\",\"ag-row-group-indent-47\":\"ag-row-group-indent-47\",\"ag-toolpanel-indent-48\":\"ag-toolpanel-indent-48\",\"ag-row-group-indent-48\":\"ag-row-group-indent-48\",\"ag-toolpanel-indent-49\":\"ag-toolpanel-indent-49\",\"ag-row-group-indent-49\":\"ag-row-group-indent-49\",\"ag-cell-first-right-pinned\":\"ag-cell-first-right-pinned\",\"ag-cell-last-left-pinned\":\"ag-cell-last-left-pinned\",\"ag-cell-highlight\":\"ag-cell-highlight\",\"ag-cell-highlight-animation\":\"ag-cell-highlight-animation\",\"ag-value-change-delta\":\"ag-value-change-delta\",\"ag-value-change-delta-up\":\"ag-value-change-delta-up\",\"ag-value-change-delta-down\":\"ag-value-change-delta-down\",\"ag-value-change-value\":\"ag-value-change-value\",\"ag-value-change-value-highlight\":\"ag-value-change-value-highlight\",\"ag-rich-select\":\"ag-rich-select\",\"ag-rich-select-value\":\"ag-rich-select-value\",\"ag-rich-select-list\":\"ag-rich-select-list\",\"ag-rich-select-row\":\"ag-rich-select-row\",\"ag-rich-select-row-selected\":\"ag-rich-select-row-selected\",\"ag-large-text\":\"ag-large-text\",\"ag-header-select-all\":\"ag-header-select-all\",\"ag-filter-header-container\":\"ag-filter-header-container\",\"ag-header-cell\":\"ag-header-cell\",\"ag-header\":\"ag-header\",\"ag-filter-icon\":\"ag-filter-icon\",\"ag-sort-ascending-icon\":\"ag-sort-ascending-icon\",\"ag-sort-descending-icon\":\"ag-sort-descending-icon\",\"ag-sort-none-icon\":\"ag-sort-none-icon\",\"ag-layout-for-print\":\"ag-layout-for-print\",\"ag-header-container\":\"ag-header-container\",\"ag-header-cell-moving\":\"ag-header-cell-moving\",\"ag-header-group-cell\":\"ag-header-group-cell\",\"ag-header-group-cell-with-group\":\"ag-header-group-cell-with-group\",\"ag-header-group-cell-label\":\"ag-header-group-cell-label\",\"ag-header-group-text\":\"ag-header-group-text\",\"ag-pinned-right-header\":\"ag-pinned-right-header\",\"ag-pinned-left-header\":\"ag-pinned-left-header\",\"ag-body\":\"ag-body\",\"ag-row-odd\":\"ag-row-odd\",\"ag-row-even\":\"ag-row-even\",\"ag-row-selected\":\"ag-row-selected\",\"ag-row-stub\":\"ag-row-stub\",\"ag-stub-cell\":\"ag-stub-cell\",\"ag-floating-top\":\"ag-floating-top\",\"ag-row\":\"ag-row\",\"ag-floating-bottom\":\"ag-floating-bottom\",\"ag-overlay-loading-wrapper\":\"ag-overlay-loading-wrapper\",\"ag-overlay-loading-center\":\"ag-overlay-loading-center\",\"ag-overlay-no-rows-center\":\"ag-overlay-no-rows-center\",\"ag-group-cell-entire-row\":\"ag-group-cell-entire-row\",\"ag-footer-cell-entire-row\":\"ag-footer-cell-entire-row\",\"ag-group-cell\":\"ag-group-cell\",\"ag-group-expanded\":\"ag-group-expanded\",\"ag-group-contracted\":\"ag-group-contracted\",\"ag-group-loading\":\"ag-group-loading\",\"ag-group-value\":\"ag-group-value\",\"ag-group-checkbox\":\"ag-group-checkbox\",\"ag-group-child-count\":\"ag-group-child-count\",\"ag-footer-cell\":\"ag-footer-cell\",\"ag-menu\":\"ag-menu\",\"ag-tab-header\":\"ag-tab-header\",\"ag-tab\":\"ag-tab\",\"ag-tab-selected\":\"ag-tab-selected\",\"ag-menu-separator\":\"ag-menu-separator\",\"ag-menu-option-active\":\"ag-menu-option-active\",\"ag-menu-option-icon\":\"ag-menu-option-icon\",\"ag-menu-option-text\":\"ag-menu-option-text\",\"ag-menu-option-shortcut\":\"ag-menu-option-shortcut\",\"ag-menu-option-popup-pointer\":\"ag-menu-option-popup-pointer\",\"ag-menu-option-disabled\":\"ag-menu-option-disabled\",\"ag-menu-column-select-wrapper\":\"ag-menu-column-select-wrapper\",\"ag-filter-checkbox\":\"ag-filter-checkbox\",\"ag-filter-apply-panel\":\"ag-filter-apply-panel\",\"ag-virtual-list-container\":\"ag-virtual-list-container\",\"ag-selection-checkbox\":\"ag-selection-checkbox\",\"ag-paging-panel\":\"ag-paging-panel\",\"ag-paging-button\":\"ag-paging-button\",\"ag-paging-row-summary-panel\":\"ag-paging-row-summary-panel\",\"ag-tool-panel\":\"ag-tool-panel\",\"ltr\":\"ltr\",\"rtl\":\"rtl\",\"ag-status-bar\":\"ag-status-bar\",\"ag-status-bar-aggregations\":\"ag-status-bar-aggregations\",\"ag-status-bar-item\":\"ag-status-bar-item\",\"ag-column-drop-cell\":\"ag-column-drop-cell\",\"ag-column-drop-cell-ghost\":\"ag-column-drop-cell-ghost\",\"ag-column-drop-cell-text\":\"ag-column-drop-cell-text\",\"ag-column-drop-cell-button\":\"ag-column-drop-cell-button\",\"ag-column-drop-empty-message\":\"ag-column-drop-empty-message\",\"ag-column-drop-icon\":\"ag-column-drop-icon\",\"ag-column-drop\":\"ag-column-drop\",\"ag-column-drop-horizontal\":\"ag-column-drop-horizontal\",\"ag-column-drop-vertical\":\"ag-column-drop-vertical\",\"ag-pivot-mode\":\"ag-pivot-mode\",\"ag-column-select-panel\":\"ag-column-select-panel\",\"ag-select-agg-func-popup\":\"ag-select-agg-func-popup\",\"ag-select-agg-func-item\":\"ag-select-agg-func-item\",\"ag-floating-filter-body\":\"ag-floating-filter-body\",\"ag-floating-filter-button\":\"ag-floating-filter-button\",\"ag-sort-order\":\"ag-sort-order\",\"ag-details-row\":\"ag-details-row\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/styles/theme-fresh.css\n// module id = 400\n// module chunks = 0","// removed by extract-text-webpack-plugin\nmodule.exports = {\"gray-bg\":\"gray-bg\",\"form-control\":\"form-control\",\"has-error\":\"has-error\",\"navbar-default\":\"navbar-default\",\"panel-body\":\"panel-body\",\"panel-footer\":\"panel-footer\",\"panel-primary\":\"panel-primary\",\"panel-heading\":\"panel-heading\",\"nav\":\"nav\",\"navbar-right\":\"navbar-right\",\"active\":\"active\",\"open\":\"open\",\"navbar-top-links\":\"navbar-top-links\",\"navbar\":\"navbar\",\"body-small\":\"body-small\",\"dropdown-menu\":\"dropdown-menu\",\"font-bold\":\"font-bold\",\"dropdown-messages\":\"dropdown-messages\",\"dropdown-tasks\":\"dropdown-tasks\",\"dropdown-alerts\":\"dropdown-alerts\",\"dropdown-user\":\"dropdown-user\",\"nav-header\":\"nav-header\",\"pace-done\":\"pace-done\",\"nav-second-level\":\"nav-second-level\",\"collapse\":\"collapse\",\"text-muted\":\"text-muted\",\"minimalize-styl-2\":\"minimalize-styl-2\",\"navbar-form-custom\":\"navbar-form-custom\",\"form-group\":\"form-group\",\"count-info\":\"count-info\",\"label\":\"label\",\"arrow\":\"arrow\",\"fa\":\"fa\",\"nav-third-level\":\"nav-third-level\",\"fixed-sidebar\":\"fixed-sidebar\",\"canvas-menu\":\"canvas-menu\",\"mini-navbar\":\"mini-navbar\",\"fixed-nav\":\"fixed-nav\",\"slimScrollDiv\":\"slimScrollDiv\",\"side-menu\":\"side-menu\",\"special_link\":\"special_link\",\"landing_link\":\"landing_link\",\"logo-element\":\"logo-element\",\"navbar-static-side\":\"navbar-static-side\",\"page-wrapper\":\"page-wrapper\",\"footer\":\"footer\",\"navbar-fixed-top\":\"navbar-fixed-top\",\"navbar-static-top\":\"navbar-static-top\",\"wrapper\":\"wrapper\",\"nav-tabs\":\"nav-tabs\",\"top-navigation\":\"top-navigation\",\"fixed-nav-basic\":\"fixed-nav-basic\",\"profile-element\":\"profile-element\",\"nav-label\":\"nav-label\",\"navbar-nav\":\"navbar-nav\",\"white-bg\":\"white-bg\",\"navbar-brand\":\"navbar-brand\",\"fixed\":\"fixed\",\"wrapper-content\":\"wrapper-content\",\"navbar-toggle\":\"navbar-toggle\",\"dropdown-header\":\"dropdown-header\",\"navbar-header\":\"navbar-header\",\"menu-visible-lg\":\"menu-visible-lg\",\"menu-visible-md\":\"menu-visible-md\",\"btn\":\"btn\",\"float-e-margins\":\"float-e-margins\",\"btn-w-m\":\"btn-w-m\",\"btn-primary\":\"btn-primary\",\"btn-outline\":\"btn-outline\",\"btn-success\":\"btn-success\",\"btn-info\":\"btn-info\",\"btn-warning\":\"btn-warning\",\"btn-danger\":\"btn-danger\",\"dropdown-toggle\":\"dropdown-toggle\",\"disabled\":\"disabled\",\"btn-default\":\"btn-default\",\"btn-link\":\"btn-link\",\"btn-white\":\"btn-white\",\"has-success\":\"has-success\",\"has-warning\":\"has-warning\",\"navbar-collapse\":\"navbar-collapse\",\"navbar-form\":\"navbar-form\",\"panel\":\"panel\",\"popover\":\"popover\",\"progress\":\"progress\",\"progress-bar\":\"progress-bar\",\"btn-rounded\":\"btn-rounded\",\"btn-large-dim\":\"btn-large-dim\",\"dim\":\"dim\",\"ibox\":\"ibox\",\"badge\":\"badge\",\"label-primary\":\"label-primary\",\"badge-primary\":\"badge-primary\",\"label-success\":\"label-success\",\"badge-success\":\"badge-success\",\"label-warning\":\"label-warning\",\"badge-warning\":\"badge-warning\",\"label-warning-light\":\"label-warning-light\",\"badge-warning-light\":\"badge-warning-light\",\"label-danger\":\"label-danger\",\"badge-danger\":\"badge-danger\",\"label-info\":\"label-info\",\"badge-info\":\"badge-info\",\"label-inverse\":\"label-inverse\",\"badge-inverse\":\"badge-inverse\",\"label-white\":\"label-white\",\"badge-white\":\"badge-white\",\"badge-disable\":\"badge-disable\",\"onoffswitch\":\"onoffswitch\",\"onoffswitch-checkbox\":\"onoffswitch-checkbox\",\"onoffswitch-label\":\"onoffswitch-label\",\"onoffswitch-inner\":\"onoffswitch-inner\",\"onoffswitch-switch\":\"onoffswitch-switch\",\"chosen-container-single\":\"chosen-container-single\",\"chosen-single\":\"chosen-single\",\"chosen-container-multi\":\"chosen-container-multi\",\"chosen-choices\":\"chosen-choices\",\"search-choice\":\"search-choice\",\"bootstrap-tagsinput\":\"bootstrap-tagsinput\",\"pagination\":\"pagination\",\"tooltip-inner\":\"tooltip-inner\",\"tooltip\":\"tooltip\",\"top\":\"top\",\"tooltip-arrow\":\"tooltip-arrow\",\"right\":\"right\",\"bottom\":\"bottom\",\"left\":\"left\",\"easypiechart\":\"easypiechart\",\"h2\":\"h2\",\"easypie-text\":\"easypie-text\",\"jqstooltip\":\"jqstooltip\",\"fc-state-default\":\"fc-state-default\",\"fc-button\":\"fc-button\",\"fc-state-active\":\"fc-state-active\",\"fc-header-title\":\"fc-header-title\",\"fc-content\":\"fc-content\",\"fc-widget-header\":\"fc-widget-header\",\"fc-widget-content\":\"fc-widget-content\",\"fc-border-separate\":\"fc-border-separate\",\"fc-state-highlight\":\"fc-state-highlight\",\"external-event\":\"external-event\",\"fc-ltr\":\"fc-ltr\",\"fc-event-hori\":\"fc-event-hori\",\"fc-event-end\":\"fc-event-end\",\"fc-rtl\":\"fc-rtl\",\"fc-event-start\":\"fc-event-start\",\"fc-event\":\"fc-event\",\"fc-agenda\":\"fc-agenda\",\"fc-event-time\":\"fc-event-time\",\"fc-event-title\":\"fc-event-title\",\"ui-calendar\":\"ui-calendar\",\"chat-activity-list\":\"chat-activity-list\",\"chat-element\":\"chat-element\",\"media\":\"media\",\"media-body\":\"media-body\",\"pull-left\":\"pull-left\",\"img-circle\":\"img-circle\",\"dropdown-messages-box\":\"dropdown-messages-box\",\"well\":\"well\",\"actions\":\"actions\",\"photos\":\"photos\",\"pull-right\":\"pull-right\",\"chat-photo\":\"chat-photo\",\"chat\":\"chat\",\"chat-body\":\"chat-body\",\"slidedown\":\"slidedown\",\"glyphicon\":\"glyphicon\",\"chat-panel\":\"chat-panel\",\"list-group-item\":\"list-group-item\",\"list-group-item-heading\":\"list-group-item-heading\",\"list-group-item-text\":\"list-group-item-text\",\"no-padding\":\"no-padding\",\"list-group\":\"list-group\",\"elements-list\":\"elements-list\",\"element-detail-box\":\"element-detail-box\",\"flot-chart\":\"flot-chart\",\"widget\":\"widget\",\"dashboard-chart\":\"dashboard-chart\",\"flot-chart-content\":\"flot-chart-content\",\"flot-chart-pie-content\":\"flot-chart-pie-content\",\"jqsfield\":\"jqsfield\",\"fh-150\":\"fh-150\",\"fh-200\":\"fh-200\",\"h-150\":\"h-150\",\"h-200\":\"h-200\",\"h-300\":\"h-300\",\"w-150\":\"w-150\",\"w-200\":\"w-200\",\"w-300\":\"w-300\",\"legendLabel\":\"legendLabel\",\"stat-list\":\"stat-list\",\"stat-percent\":\"stat-percent\",\"dataTable\":\"dataTable\",\"sorting\":\"sorting\",\"sorting_asc\":\"sorting_asc\",\"sorting_desc\":\"sorting_desc\",\"sorting_asc_disabled\":\"sorting_asc_disabled\",\"sorting_desc_disabled\":\"sorting_desc_disabled\",\"dataTables_wrapper\":\"dataTables_wrapper\",\"dataTables_length\":\"dataTables_length\",\"dataTables_filter\":\"dataTables_filter\",\"html5buttons\":\"html5buttons\",\"dt-button-info\":\"dt-button-info\",\"btn-circle\":\"btn-circle\",\"btn-lg\":\"btn-lg\",\"btn-xl\":\"btn-xl\",\"show-grid\":\"show-grid\",\"css-animation-box\":\"css-animation-box\",\"animation-efect-links\":\"animation-efect-links\",\"animation_box\":\"animation_box\",\"animation-text-box\":\"animation-text-box\",\"animation-text-info\":\"animation-text-info\",\"pace\":\"pace\",\"pace-inactive\":\"pace-inactive\",\"pace-progress\":\"pace-progress\",\"style1\":\"style1\",\"widget-text-box\":\"widget-text-box\",\"widget-head-color-box\":\"widget-head-color-box\",\"vertical-align\":\"vertical-align\",\"todo-list\":\"todo-list\",\"small-list\":\"small-list\",\"btn-xs\":\"btn-xs\",\"btn-group-xs\":\"btn-group-xs\",\"handle\":\"handle\",\"check-link\":\"check-link\",\"todo-completed\":\"todo-completed\",\"geo-statistic\":\"geo-statistic\",\"inline\":\"inline\",\"input-s-sm\":\"input-s-sm\",\"input-s\":\"input-s\",\"input-s-lg\":\"input-s-lg\",\"i-checks\":\"i-checks\",\"single-line\":\"single-line\",\"control-label\":\"control-label\",\"input-group-addon\":\"input-group-addon\",\"spinner-buttons\":\"spinner-buttons\",\"input-group-btn\":\"input-group-btn\",\"noUi-connect\":\"noUi-connect\",\"slider_red\":\"slider_red\",\"ui-sortable\":\"ui-sortable\",\"ibox-title\":\"ibox-title\",\"ui-sortable-placeholder\":\"ui-sortable-placeholder\",\"ui-jqgrid\":\"ui-jqgrid\",\"ui-jqgrid-btable\":\"ui-jqgrid-btable\",\"ui-jqgrid-htable\":\"ui-jqgrid-htable\",\"ui-jqgrid-titlebar\":\"ui-jqgrid-titlebar\",\"ui-jqgrid-title\":\"ui-jqgrid-title\",\"ui-widget-header\":\"ui-widget-header\",\"ui-row-ltr\":\"ui-row-ltr\",\"ui-search-toolbar\":\"ui-search-toolbar\",\"ui-state-default\":\"ui-state-default\",\"ui-widget-content\":\"ui-widget-content\",\"ui-icon-triangle-1-n\":\"ui-icon-triangle-1-n\",\"ui-state-hover\":\"ui-state-hover\",\"ui-state-focus\":\"ui-state-focus\",\"ui-state-highlight\":\"ui-state-highlight\",\"ui-state-active\":\"ui-state-active\",\"ui-pg-input\":\"ui-pg-input\",\"ui-pg-selbox\":\"ui-pg-selbox\",\"ui-pager-control\":\"ui-pager-control\",\"ui-jqgrid-pager\":\"ui-jqgrid-pager\",\"ui-pg-table\":\"ui-pg-table\",\"navtable\":\"navtable\",\"ui-corner-all\":\"ui-corner-all\",\"ui-pg-button\":\"ui-pg-button\",\"loading\":\"loading\",\"ui-corner-top\":\"ui-corner-top\",\"ui-corner-left\":\"ui-corner-left\",\"ui-corner-tl\":\"ui-corner-tl\",\"ui-corner-right\":\"ui-corner-right\",\"ui-corner-tr\":\"ui-corner-tr\",\"ui-corner-bottom\":\"ui-corner-bottom\",\"ui-corner-bl\":\"ui-corner-bl\",\"ui-corner-br\":\"ui-corner-br\",\"jqgrow\":\"jqgrow\",\"ui-jqdialog\":\"ui-jqdialog\",\"ui-jqdialog-titlebar\":\"ui-jqdialog-titlebar\",\"ui-jqdialog-title\":\"ui-jqdialog-title\",\"ui-resizable-se\":\"ui-resizable-se\",\"dd\":\"dd\",\"dd-list\":\"dd-list\",\"dd-collapsed\":\"dd-collapsed\",\"dd-item\":\"dd-item\",\"dd-empty\":\"dd-empty\",\"dd-placeholder\":\"dd-placeholder\",\"dd-handle\":\"dd-handle\",\"nestable2\":\"nestable2\",\"dd-dragel\":\"dd-dragel\",\"nestable-lists\":\"nestable-lists\",\"nestable-menu\":\"nestable-menu\",\"nestable-output\":\"nestable-output\",\"nestable2-output\":\"nestable2-output\",\"CodeMirror\":\"CodeMirror\",\"CodeMirror-scroll\":\"CodeMirror-scroll\",\"google-map\":\"google-map\",\"error\":\"error\",\"gridStyle\":\"gridStyle\",\"gridStyle2\":\"gridStyle2\",\"ngH\":\"ngH\",\"ngCell\":\"ngCell\",\"ngTopPanel\":\"ngTopPanel\",\"ngRow\":\"ngRow\",\"even\":\"even\",\"selected\":\"selected\",\"ngHeaderCell\":\"ngHeaderCell\",\"toast-container\":\"toast-container\",\"toast\":\"toast\",\"toast-warning\":\"toast-warning\",\"toast-error\":\"toast-error\",\"toast-info\":\"toast-info\",\"toast-success\":\"toast-success\",\"toast-top-full-width\":\"toast-top-full-width\",\"toast-bottom-full-width\":\"toast-bottom-full-width\",\"cg-notify-message\":\"cg-notify-message\",\"inspinia-notify\":\"inspinia-notify\",\"alert-warning\":\"alert-warning\",\"alert-success\":\"alert-success\",\"alert-danger\":\"alert-danger\",\"alert-info\":\"alert-info\",\"img-container\":\"img-container\",\"img-preview\":\"img-preview\",\"img-preview-sm\":\"img-preview-sm\",\"forum-post-container\":\"forum-post-container\",\"forum-avatar\":\"forum-avatar\",\"author-info\":\"author-info\",\"forum-post-info\":\"forum-post-info\",\"forum-photo\":\"forum-photo\",\"mid-icon\":\"mid-icon\",\"forum-item\":\"forum-item\",\"views-number\":\"views-number\",\"forum-container\":\"forum-container\",\"forum-sub-title\":\"forum-sub-title\",\"forum-title\":\"forum-title\",\"forum-info\":\"forum-info\",\"forum-desc\":\"forum-desc\",\"forum-icon\":\"forum-icon\",\"forum-item-title\":\"forum-item-title\",\"vertical-container\":\"vertical-container\",\"vertical-timeline\":\"vertical-timeline\",\"vertical-timeline-content\":\"vertical-timeline-content\",\"light-timeline\":\"light-timeline\",\"dark-timeline\":\"dark-timeline\",\"center-orientation\":\"center-orientation\",\"vertical-timeline-block\":\"vertical-timeline-block\",\"vertical-timeline-icon\":\"vertical-timeline-icon\",\"cssanimations\":\"cssanimations\",\"is-hidden\":\"is-hidden\",\"vertical-date\":\"vertical-date\",\"tabs-container\":\"tabs-container\",\"tab-pane\":\"tab-pane\",\"tabs-left\":\"tabs-left\",\"tabs-right\":\"tabs-right\",\"tabs-below\":\"tabs-below\",\"tab-content\":\"tab-content\",\"pill-content\":\"pill-content\",\"pill-pane\":\"pill-pane\",\"jvectormap-container\":\"jvectormap-container\",\"jvectormap-tip\":\"jvectormap-tip\",\"jvectormap-zoomin\":\"jvectormap-zoomin\",\"jvectormap-zoomout\":\"jvectormap-zoomout\",\"jvectormap-goback\":\"jvectormap-goback\",\"jvectormap-spinner\":\"jvectormap-spinner\",\"jvectormap-legend-title\":\"jvectormap-legend-title\",\"jvectormap-legend-cnt\":\"jvectormap-legend-cnt\",\"jvectormap-legend-cnt-h\":\"jvectormap-legend-cnt-h\",\"jvectormap-legend-cnt-v\":\"jvectormap-legend-cnt-v\",\"jvectormap-legend\":\"jvectormap-legend\",\"jvectormap-legend-tick\":\"jvectormap-legend-tick\",\"jvectormap-legend-tick-sample\":\"jvectormap-legend-tick-sample\",\"jvectormap-legend-tick-text\":\"jvectormap-legend-tick-text\",\"slick-prev\":\"slick-prev\",\"slick-next\":\"slick-next\",\"payment-card\":\"payment-card\",\"payment-icon-big\":\"payment-icon-big\",\"payments-method\":\"payments-method\",\"panel-group\":\"panel-group\",\"select2-container--default\":\"select2-container--default\",\"select2-selection--single\":\"select2-selection--single\",\"select2-selection--multiple\":\"select2-selection--multiple\",\"select2-container--focus\":\"select2-container--focus\",\"select2-results__option--highlighted\":\"select2-results__option--highlighted\",\"select2-search--dropdown\":\"select2-search--dropdown\",\"select2-search__field\":\"select2-search__field\",\"select2-dropdown\":\"select2-dropdown\",\"select2-selection\":\"select2-selection\",\"ui-select-container\":\"ui-select-container\",\"ui-select-bootstrap\":\"ui-select-bootstrap\",\"ui-select-choices-row\":\"ui-select-choices-row\",\"tour-tour\":\"tour-tour\",\"tour-step-backdrop\":\"tour-step-backdrop\",\"tour-backdrop\":\"tour-backdrop\",\"tour-open\":\"tour-open\",\"animated\":\"animated\",\"resizable-panels\":\"resizable-panels\",\"ibox-content\":\"ibox-content\",\"ui-resizable-helper\":\"ui-resizable-helper\",\"wizard\":\"wizard\",\"content\":\"content\",\"body\":\"body\",\"pdf-toolbar\":\"pdf-toolbar\",\"dropzone\":\"dropzone\",\"dz-message\":\"dz-message\",\"stream\":\"stream\",\"stream-badge\":\"stream-badge\",\"fa-circle\":\"fa-circle\",\"bg-success\":\"bg-success\",\"bg-primary\":\"bg-primary\",\"bg-warning\":\"bg-warning\",\"bg-info\":\"bg-info\",\"bg-danger\":\"bg-danger\",\"stream-info\":\"stream-info\",\"date\":\"date\",\"stream-panel\":\"stream-panel\",\"stream-small\":\"stream-small\",\"sidebar-panel\":\"sidebar-panel\",\"feed-element\":\"feed-element\",\"sidebar-content\":\"sidebar-content\",\"right-sidebar\":\"right-sidebar\",\"sidebar-open\":\"sidebar-open\",\"sidebar-top\":\"sidebar-top\",\"sidebar-container\":\"sidebar-container\",\"navs-4\":\"navs-4\",\"navs-3\":\"navs-3\",\"navs-2\":\"navs-2\",\"sidebar-list\":\"sidebar-list\",\"sidebar-message\":\"sidebar-message\",\"sidebar-title\":\"sidebar-title\",\"message-avatar\":\"message-avatar\",\"setings-item\":\"setings-item\",\"full-height-layout\":\"full-height-layout\",\"boxed-layout\":\"boxed-layout\",\"block\":\"block\",\"clear\":\"clear\",\"border-bottom\":\"border-bottom\",\"font-normal\":\"font-normal\",\"text-uppercase\":\"text-uppercase\",\"font-italic\":\"font-italic\",\"b-r\":\"b-r\",\"hr-line-dashed\":\"hr-line-dashed\",\"hr-line-solid\":\"hr-line-solid\",\"gallery\":\"gallery\",\"row\":\"row\",\"fancybox\":\"fancybox\",\"note-editor\":\"note-editor\",\"fullscreen\":\"fullscreen\",\"note-frame\":\"note-frame\",\"note-editing-area\":\"note-editing-area\",\"note-editable\":\"note-editable\",\"modal-content\":\"modal-content\",\"modal-dialog\":\"modal-dialog\",\"modal-body\":\"modal-body\",\"inmodal\":\"inmodal\",\"modal-header\":\"modal-header\",\"modal\":\"modal\",\"fade\":\"fade\",\"modal-title\":\"modal-title\",\"modal-icon\":\"modal-icon\",\"modal-footer\":\"modal-footer\",\"title-action\":\"title-action\",\"unstyled\":\"unstyled\",\"big-icon\":\"big-icon\",\"fixed_full\":\"fixed_full\",\"page-heading\":\"page-heading\",\"table-bordered\":\"table-bordered\",\"table\":\"table\",\"blank-panel\":\"blank-panel\",\"ui-tab\":\"ui-tab\",\"no-borders\":\"no-borders\",\"no-margins\":\"no-margins\",\"no-top-border\":\"no-top-border\",\"text-box\":\"text-box\",\"border-left-right\":\"border-left-right\",\"border-top-bottom\":\"border-top-bottom\",\"border-left\":\"border-left\",\"border-right\":\"border-right\",\"border-top\":\"border-top\",\"border-size-sm\":\"border-size-sm\",\"border-size-md\":\"border-size-md\",\"border-size-lg\":\"border-size-lg\",\"border-size-xl\":\"border-size-xl\",\"full-width\":\"full-width\",\"link-block\":\"link-block\",\"branding\":\"branding\",\"circle-border\":\"circle-border\",\"login-panel\":\"login-panel\",\"icons-box\":\"icons-box\",\"infont\":\"infont\",\"ui-draggable\":\"ui-draggable\",\"breadcrumb\":\"breadcrumb\",\"collapsed\":\"collapsed\",\"fa-chevron-up\":\"fa-chevron-up\",\"fa-chevron-down\":\"fa-chevron-down\",\"ibox-footer\":\"ibox-footer\",\"table-mail\":\"table-mail\",\"check-mail\":\"check-mail\",\"mail-date\":\"mail-date\",\"star-mail\":\"star-mail\",\"unread\":\"unread\",\"read\":\"read\",\"ibox-heading\":\"ibox-heading\",\"ibox-tools\":\"ibox-tools\",\"bg-muted\":\"bg-muted\",\"blue-bg\":\"blue-bg\",\"navy-bg\":\"navy-bg\",\"lazur-bg\":\"lazur-bg\",\"yellow-bg\":\"yellow-bg\",\"red-bg\":\"red-bg\",\"black-bg\":\"black-bg\",\"panel-success\":\"panel-success\",\"panel-info\":\"panel-info\",\"panel-warning\":\"panel-warning\",\"panel-danger\":\"panel-danger\",\"progress-small\":\"progress-small\",\"progress-mini\":\"progress-mini\",\"progress-bar-navy-light\":\"progress-bar-navy-light\",\"progress-bar-success\":\"progress-bar-success\",\"progress-bar-info\":\"progress-bar-info\",\"progress-bar-warning\":\"progress-bar-warning\",\"progress-bar-danger\":\"progress-bar-danger\",\"panel-title\":\"panel-title\",\"jumbotron\":\"jumbotron\",\"text-navy\":\"text-navy\",\"text-primary\":\"text-primary\",\"text-success\":\"text-success\",\"text-info\":\"text-info\",\"text-warning\":\"text-warning\",\"text-danger\":\"text-danger\",\"text-white\":\"text-white\",\"simple_tag\":\"simple_tag\",\"img-shadow\":\"img-shadow\",\"dashboards.dashboard_2\":\"dashboards-dashboard_2\",\"dashboards.dashboard_3\":\"dashboards-dashboard_3\",\"mailbox.inbox\":\"mailbox-inbox\",\"mailbox.email_view\":\"mailbox-email_view\",\"mailbox.email_compose\":\"mailbox-email_compose\",\"dashboards.dashboard_4_1\":\"dashboards-dashboard_4_1\",\"metrics\":\"metrics\",\"metrics.index\":\"metrics-index\",\"dashboards.dashboard_5\":\"dashboards-dashboard_5\",\"Dashboard_2\":\"Dashboard_2\",\"Dashboard_3\":\"Dashboard_3\",\"Dashboard_4_1\":\"Dashboard_4_1\",\"ComposeEmail\":\"ComposeEmail\",\"EmailView\":\"EmailView\",\"Inbox\":\"Inbox\",\"Metrics\":\"Metrics\",\"Dashboard_5\":\"Dashboard_5\",\"close-canvas-menu\":\"close-canvas-menu\",\"light-navbar\":\"light-navbar\",\"full-height\":\"full-height\",\"fh-breadcrumb\":\"fh-breadcrumb\",\"fh-no-breadcrumb\":\"fh-no-breadcrumb\",\"fh-column\":\"fh-column\",\"modal-backdrop\":\"modal-backdrop\",\"spiner-example\":\"spiner-example\",\"p-xxs\":\"p-xxs\",\"p-xs\":\"p-xs\",\"p-sm\":\"p-sm\",\"p-m\":\"p-m\",\"p-md\":\"p-md\",\"p-lg\":\"p-lg\",\"p-xl\":\"p-xl\",\"p-w-xs\":\"p-w-xs\",\"p-w-sm\":\"p-w-sm\",\"p-w-m\":\"p-w-m\",\"p-w-md\":\"p-w-md\",\"p-w-lg\":\"p-w-lg\",\"p-w-xl\":\"p-w-xl\",\"p-h-xs\":\"p-h-xs\",\"p-h-sm\":\"p-h-sm\",\"p-h-m\":\"p-h-m\",\"p-h-md\":\"p-h-md\",\"p-h-lg\":\"p-h-lg\",\"p-h-xl\":\"p-h-xl\",\"m-xxs\":\"m-xxs\",\"m\":\"m\",\"m-xs\":\"m-xs\",\"m-sm\":\"m-sm\",\"m-md\":\"m-md\",\"m-lg\":\"m-lg\",\"m-xl\":\"m-xl\",\"m-n\":\"m-n\",\"m-l-none\":\"m-l-none\",\"m-l-xs\":\"m-l-xs\",\"m-l-sm\":\"m-l-sm\",\"m-l\":\"m-l\",\"m-l-md\":\"m-l-md\",\"m-l-lg\":\"m-l-lg\",\"m-l-xl\":\"m-l-xl\",\"m-l-n-xxs\":\"m-l-n-xxs\",\"m-l-n-xs\":\"m-l-n-xs\",\"m-l-n-sm\":\"m-l-n-sm\",\"m-l-n\":\"m-l-n\",\"m-l-n-md\":\"m-l-n-md\",\"m-l-n-lg\":\"m-l-n-lg\",\"m-l-n-xl\":\"m-l-n-xl\",\"m-t-none\":\"m-t-none\",\"m-t-xxs\":\"m-t-xxs\",\"m-t-xs\":\"m-t-xs\",\"m-t-sm\":\"m-t-sm\",\"m-t\":\"m-t\",\"m-t-md\":\"m-t-md\",\"m-t-lg\":\"m-t-lg\",\"m-t-xl\":\"m-t-xl\",\"m-t-n-xxs\":\"m-t-n-xxs\",\"m-t-n-xs\":\"m-t-n-xs\",\"m-t-n-sm\":\"m-t-n-sm\",\"m-t-n\":\"m-t-n\",\"m-t-n-md\":\"m-t-n-md\",\"m-t-n-lg\":\"m-t-n-lg\",\"m-t-n-xl\":\"m-t-n-xl\",\"m-r-none\":\"m-r-none\",\"m-r-xxs\":\"m-r-xxs\",\"m-r-xs\":\"m-r-xs\",\"m-r-sm\":\"m-r-sm\",\"m-r\":\"m-r\",\"m-r-md\":\"m-r-md\",\"m-r-lg\":\"m-r-lg\",\"m-r-xl\":\"m-r-xl\",\"m-r-n-xxs\":\"m-r-n-xxs\",\"m-r-n-xs\":\"m-r-n-xs\",\"m-r-n-sm\":\"m-r-n-sm\",\"m-r-n\":\"m-r-n\",\"m-r-n-md\":\"m-r-n-md\",\"m-r-n-lg\":\"m-r-n-lg\",\"m-r-n-xl\":\"m-r-n-xl\",\"m-b-none\":\"m-b-none\",\"m-b-xxs\":\"m-b-xxs\",\"m-b-xs\":\"m-b-xs\",\"m-b-sm\":\"m-b-sm\",\"m-b\":\"m-b\",\"m-b-md\":\"m-b-md\",\"m-b-lg\":\"m-b-lg\",\"m-b-xl\":\"m-b-xl\",\"m-b-n-xxs\":\"m-b-n-xxs\",\"m-b-n-xs\":\"m-b-n-xs\",\"m-b-n-sm\":\"m-b-n-sm\",\"m-b-n\":\"m-b-n\",\"m-b-n-md\":\"m-b-n-md\",\"m-b-n-lg\":\"m-b-n-lg\",\"m-b-n-xl\":\"m-b-n-xl\",\"space-15\":\"space-15\",\"space-20\":\"space-20\",\"space-25\":\"space-25\",\"space-30\":\"space-30\",\"img-sm\":\"img-sm\",\"img-md\":\"img-md\",\"img-lg\":\"img-lg\",\"b-r-xs\":\"b-r-xs\",\"b-r-sm\":\"b-r-sm\",\"b-r-md\":\"b-r-md\",\"b-r-lg\":\"b-r-lg\",\"b-r-xl\":\"b-r-xl\",\"fullscreen-ibox-mode\":\"fullscreen-ibox-mode\",\"collapse-link\":\"collapse-link\",\"modal-open\":\"modal-open\",\"fullscreen-video\":\"fullscreen-video\",\"search-form\":\"search-form\",\"search-result\":\"search-result\",\"search-link\":\"search-link\",\"contact-box\":\"contact-box\",\"center-version\":\"center-version\",\"contact-box-footer\":\"contact-box-footer\",\"invoice-table\":\"invoice-table\",\"invoice-total\":\"invoice-total\",\"middle-box\":\"middle-box\",\"lockscreen\":\"lockscreen\",\"loginscreen\":\"loginscreen\",\"loginColumns\":\"loginColumns\",\"passwordBox\":\"passwordBox\",\"logo-name\":\"logo-name\",\"lock-word\":\"lock-word\",\"first-word\":\"first-word\",\"dashboard-header\":\"dashboard-header\",\"fist-item\":\"fist-item\",\"statistic-box\":\"statistic-box\",\"clear-list\":\"clear-list\",\"timeline-item\":\"timeline-item\",\"notes\":\"notes\",\"tag-list\":\"tag-list\",\"file-box\":\"file-box\",\"file-manager\":\"file-manager\",\"folder-list\":\"folder-list\",\"category-list\":\"category-list\",\"tag-title\":\"tag-title\",\"file\":\"file\",\"icon\":\"icon\",\"image\":\"image\",\"file-control\":\"file-control\",\"file-name\":\"file-name\",\"corner\":\"corner\",\"compose-mail\":\"compose-mail\",\"mail-search\":\"mail-search\",\"profile-content\":\"profile-content\",\"profile-stats\":\"profile-stats\",\"profile-image\":\"profile-image\",\"profile-info\":\"profile-info\",\"feed-activity-list\":\"feed-activity-list\",\"feed-photo\":\"feed-photo\",\"file-list\":\"file-list\",\"user-friends\":\"user-friends\",\"mail-box\":\"mail-box\",\"mail-box-header\":\"mail-box-header\",\"mailbox-content\":\"mailbox-content\",\"mail-body\":\"mail-body\",\"mail-text\":\"mail-text\",\"note-toolbar\":\"note-toolbar\",\"mail-attachment\":\"mail-attachment\",\"mail-ontact\":\"mail-ontact\",\"project-people\":\"project-people\",\"project-actions\":\"project-actions\",\"project-title\":\"project-title\",\"project-list\":\"project-list\",\"project-manager\":\"project-manager\",\"project-files\":\"project-files\",\"faq-item\":\"faq-item\",\"faq-question\":\"faq-question\",\"faq-answer\":\"faq-answer\",\"tag-item\":\"tag-item\",\"message-input\":\"message-input\",\"chat-avatar\":\"chat-avatar\",\"chat-user-name\":\"chat-user-name\",\"chat-user\":\"chat-user\",\"chat-view\":\"chat-view\",\"chat-users\":\"chat-users\",\"chat-statistic\":\"chat-statistic\",\"chat-message\":\"chat-message\",\"chat-discussion\":\"chat-discussion\",\"message\":\"message\",\"message-date\":\"message-date\",\"message-content\":\"message-content\",\"chat-message-form\":\"chat-message-form\",\"jstree-open\":\"jstree-open\",\"jstree-anchor\":\"jstree-anchor\",\"fa-folder\":\"fa-folder\",\"jstree-default\":\"jstree-default\",\"jstree-icon\":\"jstree-icon\",\"none\":\"none\",\"clients-list\":\"clients-list\",\"client-detail\":\"client-detail\",\"client-link\":\"client-link\",\"client-avatar\":\"client-avatar\",\"contact-type\":\"contact-type\",\"client-status\":\"client-status\",\"blog\":\"blog\",\"article\":\"article\",\"article-title\":\"article-title\",\"issue-tracker\":\"issue-tracker\",\"issue-info\":\"issue-info\",\"team-members\":\"team-members\",\"sortable-list\":\"sortable-list\",\"agile-list\":\"agile-list\",\"warning-element\":\"warning-element\",\"danger-element\":\"danger-element\",\"info-element\":\"info-element\",\"success-element\":\"success-element\",\"agile-detail\":\"agile-detail\",\"product-box\":\"product-box\",\"product-imitation\":\"product-imitation\",\"cart-product-imitation\":\"cart-product-imitation\",\"xl\":\"xl\",\"product-desc\":\"product-desc\",\"ecommerce\":\"ecommerce\",\"fa-star\":\"fa-star\",\"shoping-cart-table\":\"shoping-cart-table\",\"desc\":\"desc\",\"product-name\":\"product-name\",\"product-price\":\"product-price\",\"product-detail\":\"product-detail\",\"image-imitation\":\"image-imitation\",\"product-main-price\":\"product-main-price\",\"product-images\":\"product-images\",\"social-feed-separated\":\"social-feed-separated\",\"social-feed-box\":\"social-feed-box\",\"social-avatar\":\"social-avatar\",\"social-action\":\"social-action\",\"social-comment\":\"social-comment\",\"social-body\":\"social-body\",\"social-footer\":\"social-footer\",\"vote-item\":\"vote-item\",\"vote-actions\":\"vote-actions\",\"vote-title\":\"vote-title\",\"vote-info\":\"vote-info\",\"vote-icon\":\"vote-icon\",\"lightBoxGallery\":\"lightBoxGallery\",\"small-chat\":\"small-chat\",\"open-small-chat\":\"open-small-chat\",\"small-chat-box\":\"small-chat-box\",\"ng-small-chat\":\"ng-small-chat\",\"heading\":\"heading\",\"chat-date\":\"chat-date\",\"author-name\":\"author-name\",\"form-chat\":\"form-chat\",\"metismenu\":\"metismenu\",\"plus-minus\":\"plus-minus\",\"plus-times\":\"plus-times\",\"ion\":\"ion\",\"in\":\"in\",\"collapsing\":\"collapsing\",\"sk-spinner-rotating-plane\":\"sk-spinner-rotating-plane\",\"sk-spinner\":\"sk-spinner\",\"sk-rotatePlane\":\"sk-rotatePlane\",\"sk-spinner-double-bounce\":\"sk-spinner-double-bounce\",\"sk-double-bounce1\":\"sk-double-bounce1\",\"sk-double-bounce2\":\"sk-double-bounce2\",\"sk-doubleBounce\":\"sk-doubleBounce\",\"sk-spinner-wave\":\"sk-spinner-wave\",\"sk-waveStretchDelay\":\"sk-waveStretchDelay\",\"sk-rect2\":\"sk-rect2\",\"sk-rect3\":\"sk-rect3\",\"sk-rect4\":\"sk-rect4\",\"sk-rect5\":\"sk-rect5\",\"sk-spinner-wandering-cubes\":\"sk-spinner-wandering-cubes\",\"sk-cube1\":\"sk-cube1\",\"sk-cube2\":\"sk-cube2\",\"sk-wanderingCubeMove\":\"sk-wanderingCubeMove\",\"sk-spinner-pulse\":\"sk-spinner-pulse\",\"sk-pulseScaleOut\":\"sk-pulseScaleOut\",\"sk-spinner-chasing-dots\":\"sk-spinner-chasing-dots\",\"sk-chasingDotsRotate\":\"sk-chasingDotsRotate\",\"sk-dot1\":\"sk-dot1\",\"sk-dot2\":\"sk-dot2\",\"sk-chasingDotsBounce\":\"sk-chasingDotsBounce\",\"sk-spinner-three-bounce\":\"sk-spinner-three-bounce\",\"sk-threeBounceDelay\":\"sk-threeBounceDelay\",\"sk-bounce1\":\"sk-bounce1\",\"sk-bounce2\":\"sk-bounce2\",\"sk-spinner-circle\":\"sk-spinner-circle\",\"sk-circle\":\"sk-circle\",\"sk-circleBounceDelay\":\"sk-circleBounceDelay\",\"sk-circle2\":\"sk-circle2\",\"sk-circle3\":\"sk-circle3\",\"sk-circle4\":\"sk-circle4\",\"sk-circle5\":\"sk-circle5\",\"sk-circle6\":\"sk-circle6\",\"sk-circle7\":\"sk-circle7\",\"sk-circle8\":\"sk-circle8\",\"sk-circle9\":\"sk-circle9\",\"sk-circle10\":\"sk-circle10\",\"sk-circle11\":\"sk-circle11\",\"sk-circle12\":\"sk-circle12\",\"sk-spinner-cube-grid\":\"sk-spinner-cube-grid\",\"sk-cube\":\"sk-cube\",\"sk-cubeGridScaleDelay\":\"sk-cubeGridScaleDelay\",\"sk-spinner-wordpress\":\"sk-spinner-wordpress\",\"sk-innerCircle\":\"sk-innerCircle\",\"sk-inner-circle\":\"sk-inner-circle\",\"sk-spinner-fading-circle\":\"sk-spinner-fading-circle\",\"sk-circleFadeDelay\":\"sk-circleFadeDelay\",\"sk-loading\":\"sk-loading\",\"landing-page\":\"landing-page\",\"container\":\"container\",\"navy\":\"navy\",\"text-color\":\"text-color\",\"navy-link\":\"navy-link\",\"navy-line\":\"navy-line\",\"navbar-wrapper\":\"navbar-wrapper\",\"navbar-scroll\":\"navbar-scroll\",\"header-back\":\"header-back\",\"one\":\"one\",\"two\":\"two\",\"three\":\"three\",\"four\":\"four\",\"carousel\":\"carousel\",\"carousel-caption\":\"carousel-caption\",\"item\":\"item\",\"carousel-inner\":\"carousel-inner\",\"carousel-fade\":\"carousel-fade\",\"next\":\"next\",\"prev\":\"prev\",\"carousel-control\":\"carousel-control\",\"blank\":\"blank\",\"carousel-image\":\"carousel-image\",\"carousel-indicators\":\"carousel-indicators\",\"caption-link\":\"caption-link\",\"services\":\"services\",\"features-block\":\"features-block\",\"features-text\":\"features-text\",\"features\":\"features\",\"features-text-alone\":\"features-text-alone\",\"features-icon\":\"features-icon\",\"navy-section\":\"navy-section\",\"gray-section\":\"gray-section\",\"team-member\":\"team-member\",\"social-icon\":\"social-icon\",\"img-small\":\"img-small\",\"pricing-plan\":\"pricing-plan\",\"pricing-price\":\"pricing-price\",\"pricing-desc\":\"pricing-desc\",\"pricing-title\":\"pricing-title\",\"testimonials\":\"testimonials\",\"contact\":\"contact\",\"timeline\":\"timeline\",\"comments\":\"comments\",\"comments-avatar\":\"comments-avatar\",\"commens-name\":\"commens-name\",\"bubble\":\"bubble\",\"featurette-heading\":\"featurette-heading\",\"rtls\":\"rtls\",\"theme-config\":\"theme-config\",\"spin-icon\":\"spin-icon\",\"toast-close-button\":\"toast-close-button\",\"theme-config-box\":\"theme-config-box\",\"show\":\"show\",\"skin-settings\":\"skin-settings\",\"ltr-support\":\"ltr-support\",\"title\":\"title\",\"skin\":\"skin\",\"switch\":\"switch\",\"skin-name\":\"skin-name\",\"default-skin\":\"default-skin\",\"blue-skin\":\"blue-skin\",\"ultra-skin\":\"ultra-skin\",\"yellow-skin\":\"yellow-skin\",\"skin-1\":\"skin-1\",\"navbar-minimalize\":\"navbar-minimalize\",\"skin-2\":\"skin-2\",\"welcome-message\":\"welcome-message\",\"top-search\":\"top-search\",\"dashoard-1\":\"dashoard-1\",\"skin-3\":\"skin-3\",\"md-skin\":\"md-skin\",\"dropdown\":\"dropdown\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/index.css\n// module id = 401\n// module chunks = 0","import React, { Component } from 'react';\nimport { BrowserRouter, Route, Switch, withRouter } from 'react-router-dom';\nimport { connect } from 'react-redux';\n\n\n\nimport Home from './components/Home/Home';\nimport Friends from './components/Friends/Friends';\nimport Landing from './components/Landing/Landing';\nimport Register from './components/Register/Register';\nimport Login from './containers/Login/Login';\nimport CbLogin from './Callback/CbLogin';\nimport Admin_WalmartCategories from './containers/Admin/Admin_WalmartCategories';\n\n\nclass App extends Component {\n    render() {\n        return (\n            <Switch>\n                <Route exact path='/friends' component={Friends} />\n                <Route exact path='/home' component={Home} />\n                <Route exact path='/login' component={Login} />\n                <Route exact path='/register' component={Register} />\n                <Route path=\"/cblogin\" component={CbLogin} />\n                <Route exact path=\"/admin-walmart-categories\" component={Admin_WalmartCategories} />\n                <Route exact path='/' component={Landing} />\n            </Switch>\n\n\n        );\n    }\n}\n\n\n\nexport default withRouter(App);\n\n\n\n\n// WEBPACK FOOTER //\n// src/App.js","import React, { Component } from 'react';\nimport { Location, withRouter } from 'react-router-dom';\nimport { connect } from 'react-redux';\n\nimport Layout from '../Layouts/Layout';\nimport GroceryList from '../../containers/GroceryList/GroceryList';\n\n\nimport classes from './Home.css'\nimport * as actions from '../../store/actions/index';\n\nclass Home extends Component {\n\n    constructor(props) {\n        super(props);\n        console.log('constructor() -- Home.js');\n\n        const expirationDate = new Date(parseInt(localStorage.getItem('expires_at')));\n        console.log('Expires:  ', expirationDate);\n\n        if (this.props.onCheckTimeout()) {\n            // make sure we have a profile and if not get it\n            if( this.props.user === '') {\n                console.log('no user data');\n                this.props.onSetProfile();\n            }\n        } // this will logout from the action so no need for logout condition here\n    }\n\n    componentWillMount() {\n\n        // check authentication for validity\n        console.log('componentWillMount() -- Home.js');\n\n\n\n    }\n\n\n\n    render() {\n\n        return (\n            <Layout>\n                <div className={classes.homeContainer}>\n                    <GroceryList></GroceryList>\n                </div>\n            </Layout>\n\n        )\n    }\n\n\n\n}\n\n\n\n\nconst mapStateToProps = state => {\n    return {\n        hasProfile: state.auth.hasProfile,\n        isAuthenticated: state.auth.isAuthenticated,\n        user: state.auth.user\n    }\n};\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        onAuth: (email) => dispatch(actions.auth(email)),\n        onCheckTimeout: () => dispatch(actions.checkAuthTimeout()),\n        onSetProfile: () => dispatch(actions.authSetProfile()),\n    }\n};\n\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(Home));\n\n\n\n// WEBPACK FOOTER //\n// src/components/Home/Home.js","import React, { Component } from 'react';\nimport {Link, NavLink} from 'react-router-dom';\n\nimport { connect } from 'react-redux';\n\n\nimport Aux from '../../hoc/Aux/Aux'\nimport './Navigation.css';\n\nclass Navigation extends Component {\n\n\n    componentDidMount() {\n        const { menu } = this.refs;\n        $(menu).metisMenu();\n    }\n\n    render() {\n        let userFullName = this.props.user.firstName + ' ' + this.props.user.lastName;\n\n        return (\n            <nav className=\"navbar-default navbar-static-side\" role=\"navigation\">\n                <div className=\"sidebar-collapse\">\n                <ul className=\"nav metismenu\" id=\"side-menu\" ref=\"menu\">\n                    <li className=\"nav-header\">\n                        <div className=\"dropdown profile-element\"> <span>\n                             </span>\n                            <a data-toggle=\"dropdown\" className=\"dropdown-toggle\" href=\"#\">\n                            <span className=\"clear\"> <span className=\"block m-t-xs\"> <strong className=\"font-bold\">{userFullName}</strong>\n                             </span> <span className=\"text-muted text-xs block\">User Options<b className=\"caret\"></b></span> </span> </a>\n                            <ul className=\"dropdown-menu animated fadeInRight m-t-xs\">\n                                <li><a href=\"#\"> Logout</a></li>\n                            </ul>\n                        </div>\n                        <div className=\"logo-element\">\n                            GL+\n                        </div>\n                    </li>\n                    <li>\n                        <NavLink to=\"/home\" exact><i className=\"fa fa-home fa-lg\"></i> <span className=\"nav-label\">Home</span></NavLink>\n                        {/*\n                        <ul className=\"nav nav-second-level\">\n                            <li><a href=\"index.html\">Dashboard v.1</a></li>\n                            <li><a href=\"dashboard_2.html\">Dashboard v.2</a></li>\n                            <li className=\"active\"><a href=\"dashboard_3.html\">Dashboard v.3</a></li>\n                            <li><a href=\"dashboard_4_1.html\">Dashboard v.4</a></li>\n                            <li><a href=\"dashboard_5.html\">Dashboard v.5 </a></li>\n                        </ul>\n                        */}\n                    </li>\n                    <li>\n                        <NavLink to=\"/friends\"><i className=\"fa fa-user fa-lg\"></i> <span className=\"nav-label\">Friends</span></NavLink>\n                    </li>\n                    <li>\n                        <NavLink to=\"/glists\"><i className=\"fa fa-files-o fa-lg\"></i> <span className=\"nav-label\">Grocery Lists</span></NavLink>\n                    </li>\n                    <li>\n                        <NavLink to=\"/groups\"><i className=\"fa fa-users fa-lg\"></i> <span className=\"nav-label\">Groups</span></NavLink>\n                    </li>\n                    <li>\n                        <NavLink to=\"/history\"><i className=\"fa fa-history fa-lg\"></i> <span className=\"nav-label\">History</span></NavLink>\n                    </li>\n                    <li>\n                        <NavLink to=\"/maker\"><i className=\"fa fa-shopping-basket fa-lg\"></i> <span className=\"nav-label\">Meal Maker</span></NavLink>\n                    </li>\n                    <li>\n                        <NavLink to=\"/planner\"><i className=\"fa fa-calendar fa-lg\"></i> <span className=\"nav-label\">Meal Planner</span></NavLink>\n                    </li>\n                    <li>\n                        <NavLink to=\"/gitems\"><i className=\"fa fa-list-ol fa-lg\"></i> <span className=\"nav-label\">My Items</span></NavLink>\n                    </li>\n                    <li>\n                        <NavLink to=\"/recipes\"><i className=\"fa fa-newspaper-o fa-lg\"></i> <span className=\"nav-label\">Recipes</span></NavLink>\n                    </li>\n                    <li>\n                        <NavLink to=\"/reports\"><i className=\"fa fa-line-chart fa-lg\"></i> <span className=\"nav-label\">Reports</span></NavLink>\n                    </li>\n                    <li>\n                        <NavLink to=\"/search\"><i className=\"fa fa-search fa-lg\"></i> <span className=\"nav-label\">Search</span></NavLink>\n                    </li>\n                    <li>\n                        <NavLink to=\"/suggested\"><i className=\"fa fa-lightbulb-o fa-lg\"></i> <span className=\"nav-label\">Suggested Items</span></NavLink>\n                    </li>\n                    <li>\n                        <NavLink to=\"/settings\"><i className=\"fa fa-cogs fa-lg\"></i> <span className=\"nav-label\">Settings</span></NavLink>\n                    </li>\n\n\n                </ul>\n                </div>\n            </nav>\n            \n        )\n    }\n}\n\n\nconst mapStateToProps = state => {\n    return {\n        user: state.auth.user\n    }\n};\n\nexport default connect(mapStateToProps)(Navigation);\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/Navigation/Navigation.js","// removed by extract-text-webpack-plugin\nmodule.exports = {\"nav\":\"nav\",\"active\":\"active\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Navigation/Navigation.css\n// module id = 405\n// module chunks = 0","//\n// Modified by @casesandberg to work via Node exports\n//\n// Copyright (c) 2013 HubSpot, Inc.\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n//\n\nvar AjaxMonitor, Bar, DocumentMonitor, ElementMonitor, ElementTracker,\n    EventLagMonitor, Evented, Events, NoTargetError, Pace, RequestIntercept,\n    SOURCE_KEYS, Scaler, SocketRequestTracker, XHRRequestTracker, animation,\n    avgAmplitude, bar, cancelAnimation, cancelAnimationFrame, defaultOptions,\n    extend, extendNative, getFromDOM, getIntercept, handlePushState, ignoreStack,\n    init, now, options, requestAnimationFrame, result, runAnimation, scalers,\n    shouldIgnoreURL, shouldTrack, source, sources, uniScaler, _WebSocket,\n    _XDomainRequest, _XMLHttpRequest, _i, _intercept, _len, _pushState, _ref,\n    _ref1, _replaceState,\n    __slice = [].slice,\n    __hasProp = {}.hasOwnProperty,\n    __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n    __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };\n\ndefaultOptions = {\n    catchupTime: 100,\n    initialRate: .03,\n    minTime: 250,\n    ghostTime: 100,\n    maxProgressPerFrame: 20,\n    easeFactor: 1.25,\n    startOnPageLoad: true,\n    restartOnPushState: true,\n    restartOnRequestAfter: 500,\n    target: 'body',\n    elements: {\n        checkInterval: 100,\n        selectors: ['body']\n    },\n    eventLag: {\n        minSamples: 10,\n        sampleCount: 3,\n        lagThreshold: 3\n    },\n    ajax: {\n        trackMethods: ['GET'],\n        trackWebSockets: true,\n        ignoreURLs: []\n    }\n};\n\nnow = function() {\n    var _ref;\n    return (_ref = typeof performance !== \"undefined\" && performance !== null ? typeof performance.now === \"function\" ? performance.now() : void 0 : void 0) != null ? _ref : +(new Date);\n};\n\nrequestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame;\n\ncancelAnimationFrame = window.cancelAnimationFrame || window.mozCancelAnimationFrame;\n\nif (requestAnimationFrame == null) {\n    requestAnimationFrame = function(fn) {\n        return setTimeout(fn, 50);\n    };\n    cancelAnimationFrame = function(id) {\n        return clearTimeout(id);\n    };\n}\n\nrunAnimation = function(fn) {\n    var last, tick;\n    last = now();\n    tick = function() {\n        var diff;\n        diff = now() - last;\n        if (diff >= 33) {\n            last = now();\n            return fn(diff, function() {\n                return requestAnimationFrame(tick);\n            });\n        } else {\n            return setTimeout(tick, 33 - diff);\n        }\n    };\n    return tick();\n};\n\nresult = function() {\n    var args, key, obj;\n    obj = arguments[0], key = arguments[1], args = 3 <= arguments.length ? __slice.call(arguments, 2) : [];\n    if (typeof obj[key] === 'function') {\n        return obj[key].apply(obj, args);\n    } else {\n        return obj[key];\n    }\n};\n\nextend = function() {\n    var key, out, source, sources, val, _i, _len;\n    out = arguments[0], sources = 2 <= arguments.length ? __slice.call(arguments, 1) : [];\n    for (_i = 0, _len = sources.length; _i < _len; _i++) {\n        source = sources[_i];\n        if (source) {\n            for (key in source) {\n                if (!__hasProp.call(source, key)) continue;\n                val = source[key];\n                if ((out[key] != null) && typeof out[key] === 'object' && (val != null) && typeof val === 'object') {\n                    extend(out[key], val);\n                } else {\n                    out[key] = val;\n                }\n            }\n        }\n    }\n    return out;\n};\n\navgAmplitude = function(arr) {\n    var count, sum, v, _i, _len;\n    sum = count = 0;\n    for (_i = 0, _len = arr.length; _i < _len; _i++) {\n        v = arr[_i];\n        sum += Math.abs(v);\n        count++;\n    }\n    return sum / count;\n};\n\ngetFromDOM = function(key, json) {\n    var data, e, el;\n    if (key == null) {\n        key = 'options';\n    }\n    if (json == null) {\n        json = true;\n    }\n    el = document.querySelector(\"[data-pace-\" + key + \"]\");\n    if (!el) {\n        return;\n    }\n    data = el.getAttribute(\"data-pace-\" + key);\n    if (!json) {\n        return data;\n    }\n    try {\n        return JSON.parse(data);\n    } catch (_error) {\n        e = _error;\n        return typeof console !== \"undefined\" && console !== null ? console.error(\"Error parsing inline pace options\", e) : void 0;\n    }\n};\n\nEvented = (function() {\n    function Evented() {}\n\n    Evented.prototype.on = function(event, handler, ctx, once) {\n        var _base;\n        if (once == null) {\n            once = false;\n        }\n        if (this.bindings == null) {\n            this.bindings = {};\n        }\n        if ((_base = this.bindings)[event] == null) {\n            _base[event] = [];\n        }\n        return this.bindings[event].push({\n            handler: handler,\n            ctx: ctx,\n            once: once\n        });\n    };\n\n    Evented.prototype.once = function(event, handler, ctx) {\n        return this.on(event, handler, ctx, true);\n    };\n\n    Evented.prototype.off = function(event, handler) {\n        var i, _ref, _results;\n        if (((_ref = this.bindings) != null ? _ref[event] : void 0) == null) {\n            return;\n        }\n        if (handler == null) {\n            return delete this.bindings[event];\n        } else {\n            i = 0;\n            _results = [];\n            while (i < this.bindings[event].length) {\n                if (this.bindings[event][i].handler === handler) {\n                    _results.push(this.bindings[event].splice(i, 1));\n                } else {\n                    _results.push(i++);\n                }\n            }\n            return _results;\n        }\n    };\n\n    Evented.prototype.trigger = function() {\n        var args, ctx, event, handler, i, once, _ref, _ref1, _results;\n        event = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];\n        if ((_ref = this.bindings) != null ? _ref[event] : void 0) {\n            i = 0;\n            _results = [];\n            while (i < this.bindings[event].length) {\n                _ref1 = this.bindings[event][i], handler = _ref1.handler, ctx = _ref1.ctx, once = _ref1.once;\n                handler.apply(ctx != null ? ctx : this, args);\n                if (once) {\n                    _results.push(this.bindings[event].splice(i, 1));\n                } else {\n                    _results.push(i++);\n                }\n            }\n            return _results;\n        }\n    };\n\n    return Evented;\n\n})();\n\nPace = {}; // window.Pace || {};\n\n// window.Pace = Pace;\n\nextend(Pace, Evented.prototype);\n\noptions = Pace.options = extend({}, defaultOptions, window.paceOptions, getFromDOM());\n\n_ref = ['ajax', 'document', 'eventLag', 'elements'];\nfor (_i = 0, _len = _ref.length; _i < _len; _i++) {\n    source = _ref[_i];\n    if (options[source] === true) {\n        options[source] = defaultOptions[source];\n    }\n}\n\nNoTargetError = (function(_super) {\n    __extends(NoTargetError, _super);\n\n    function NoTargetError() {\n        _ref1 = NoTargetError.__super__.constructor.apply(this, arguments);\n        return _ref1;\n    }\n\n    return NoTargetError;\n\n})(Error);\n\nBar = (function() {\n    function Bar() {\n        this.progress = 0;\n    }\n\n    Bar.prototype.getElement = function() {\n        var targetElement;\n        if (this.el == null) {\n            targetElement = document.querySelector(options.target);\n            if (!targetElement) {\n                throw new NoTargetError;\n            }\n            this.el = document.createElement('div');\n            this.el.className = \"pace pace-active\";\n            document.body.className = document.body.className.replace(/pace-done/g, '');\n            document.body.className += ' pace-running';\n            this.el.innerHTML = '<div class=\"pace-progress\">\\n  <div class=\"pace-progress-inner\"></div>\\n</div>\\n<div class=\"pace-activity\"></div>';\n            if (targetElement.firstChild != null) {\n                targetElement.insertBefore(this.el, targetElement.firstChild);\n            } else {\n                targetElement.appendChild(this.el);\n            }\n        }\n        return this.el;\n    };\n\n    Bar.prototype.finish = function() {\n        var el;\n        el = this.getElement();\n        el.className = el.className.replace('pace-active', '');\n        el.className += ' pace-inactive';\n        document.body.className = document.body.className.replace('pace-running', '');\n        return document.body.className += ' pace-done';\n    };\n\n    Bar.prototype.update = function(prog) {\n        this.progress = prog;\n        return this.render();\n    };\n\n    Bar.prototype.destroy = function() {\n        try {\n            this.getElement().parentNode.removeChild(this.getElement());\n        } catch (_error) {\n            NoTargetError = _error;\n        }\n        return this.el = void 0;\n    };\n\n    Bar.prototype.render = function() {\n        var el, key, progressStr, transform, _j, _len1, _ref2;\n        if (document.querySelector(options.target) == null) {\n            return false;\n        }\n        el = this.getElement();\n        transform = \"translate3d(\" + this.progress + \"%, 0, 0)\";\n        _ref2 = ['webkitTransform', 'msTransform', 'transform'];\n        for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) {\n            key = _ref2[_j];\n            el.children[0].style[key] = transform;\n        }\n        if (!this.lastRenderedProgress || this.lastRenderedProgress | 0 !== this.progress | 0) {\n            el.children[0].setAttribute('data-progress-text', \"\" + (this.progress | 0) + \"%\");\n            if (this.progress >= 100) {\n                progressStr = '99';\n            } else {\n                progressStr = this.progress < 10 ? \"0\" : \"\";\n                progressStr += this.progress | 0;\n            }\n            el.children[0].setAttribute('data-progress', \"\" + progressStr);\n        }\n        return this.lastRenderedProgress = this.progress;\n    };\n\n    Bar.prototype.done = function() {\n        return this.progress >= 100;\n    };\n\n    return Bar;\n\n})();\n\nEvents = (function() {\n    function Events() {\n        this.bindings = {};\n    }\n\n    Events.prototype.trigger = function(name, val) {\n        var binding, _j, _len1, _ref2, _results;\n        if (this.bindings[name] != null) {\n            _ref2 = this.bindings[name];\n            _results = [];\n            for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) {\n                binding = _ref2[_j];\n                _results.push(binding.call(this, val));\n            }\n            return _results;\n        }\n    };\n\n    Events.prototype.on = function(name, fn) {\n        var _base;\n        if ((_base = this.bindings)[name] == null) {\n            _base[name] = [];\n        }\n        return this.bindings[name].push(fn);\n    };\n\n    return Events;\n\n})();\n\n_XMLHttpRequest = window.XMLHttpRequest;\n\n_XDomainRequest = window.XDomainRequest;\n\n_WebSocket = window.WebSocket;\n\nextendNative = function(to, from) {\n    var e, key, _results;\n    _results = [];\n    for (key in from.prototype) {\n        try {\n            if ((to[key] == null) && typeof from[key] !== 'function') {\n                if (typeof Object.defineProperty === 'function') {\n                    _results.push(Object.defineProperty(to, key, {\n                        get: function() {\n                            return from.prototype[key];\n                        },\n                        configurable: true,\n                        enumerable: true\n                    }));\n                } else {\n                    _results.push(to[key] = from.prototype[key]);\n                }\n            } else {\n                _results.push(void 0);\n            }\n        } catch (_error) {\n            e = _error;\n        }\n    }\n    return _results;\n};\n\nignoreStack = [];\n\nPace.ignore = function() {\n    var args, fn, ret;\n    fn = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];\n    ignoreStack.unshift('ignore');\n    ret = fn.apply(null, args);\n    ignoreStack.shift();\n    return ret;\n};\n\nPace.track = function() {\n    var args, fn, ret;\n    fn = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];\n    ignoreStack.unshift('track');\n    ret = fn.apply(null, args);\n    ignoreStack.shift();\n    return ret;\n};\n\nshouldTrack = function(method) {\n    var _ref2;\n    if (method == null) {\n        method = 'GET';\n    }\n    if (ignoreStack[0] === 'track') {\n        return 'force';\n    }\n    if (!ignoreStack.length && options.ajax) {\n        if (method === 'socket' && options.ajax.trackWebSockets) {\n            return true;\n        } else if (_ref2 = method.toUpperCase(), __indexOf.call(options.ajax.trackMethods, _ref2) >= 0) {\n            return true;\n        }\n    }\n    return false;\n};\n\nRequestIntercept = (function(_super) {\n    __extends(RequestIntercept, _super);\n\n    function RequestIntercept() {\n        var monitorXHR,\n            _this = this;\n        RequestIntercept.__super__.constructor.apply(this, arguments);\n        monitorXHR = function(req) {\n            var _open;\n            _open = req.open;\n            return req.open = function(type, url, async) {\n                if (shouldTrack(type)) {\n                    _this.trigger('request', {\n                        type: type,\n                        url: url,\n                        request: req\n                    });\n                }\n                return _open.apply(req, arguments);\n            };\n        };\n        window.XMLHttpRequest = function(flags) {\n            var req;\n            req = new _XMLHttpRequest(flags);\n            monitorXHR(req);\n            return req;\n        };\n        try {\n            extendNative(window.XMLHttpRequest, _XMLHttpRequest);\n        } catch (_error) {}\n        if (_XDomainRequest != null) {\n            window.XDomainRequest = function() {\n                var req;\n                req = new _XDomainRequest;\n                monitorXHR(req);\n                return req;\n            };\n            try {\n                extendNative(window.XDomainRequest, _XDomainRequest);\n            } catch (_error) {}\n        }\n        if ((_WebSocket != null) && options.ajax.trackWebSockets) {\n            window.WebSocket = function(url, protocols) {\n                var req;\n                if (protocols != null) {\n                    req = new _WebSocket(url, protocols);\n                } else {\n                    req = new _WebSocket(url);\n                }\n                if (shouldTrack('socket')) {\n                    _this.trigger('request', {\n                        type: 'socket',\n                        url: url,\n                        protocols: protocols,\n                        request: req\n                    });\n                }\n                return req;\n            };\n            try {\n                extendNative(window.WebSocket, _WebSocket);\n            } catch (_error) {}\n        }\n    }\n\n    return RequestIntercept;\n\n})(Events);\n\n_intercept = null;\n\ngetIntercept = function() {\n    if (_intercept == null) {\n        _intercept = new RequestIntercept;\n    }\n    return _intercept;\n};\n\nshouldIgnoreURL = function(url) {\n    var pattern, _j, _len1, _ref2;\n    _ref2 = options.ajax.ignoreURLs;\n    for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) {\n        pattern = _ref2[_j];\n        if (typeof pattern === 'string') {\n            if (url.indexOf(pattern) !== -1) {\n                return true;\n            }\n        } else {\n            if (pattern.test(url)) {\n                return true;\n            }\n        }\n    }\n    return false;\n};\n\ngetIntercept().on('request', function(_arg) {\n    var after, args, request, type, url;\n    type = _arg.type, request = _arg.request, url = _arg.url;\n    if (shouldIgnoreURL(url)) {\n        return;\n    }\n    if (!Pace.running && (options.restartOnRequestAfter !== false || shouldTrack(type) === 'force')) {\n        args = arguments;\n        after = options.restartOnRequestAfter || 0;\n        if (typeof after === 'boolean') {\n            after = 0;\n        }\n        return setTimeout(function() {\n            var stillActive, _j, _len1, _ref2, _ref3, _results;\n            if (type === 'socket') {\n                stillActive = request.readyState < 2;\n            } else {\n                stillActive = (0 < (_ref2 = request.readyState) && _ref2 < 4);\n            }\n            if (stillActive) {\n                Pace.restart();\n                _ref3 = Pace.sources;\n                _results = [];\n                for (_j = 0, _len1 = _ref3.length; _j < _len1; _j++) {\n                    source = _ref3[_j];\n                    if (source instanceof AjaxMonitor) {\n                        source.watch.apply(source, args);\n                        break;\n                    } else {\n                        _results.push(void 0);\n                    }\n                }\n                return _results;\n            }\n        }, after);\n    }\n});\n\nAjaxMonitor = (function() {\n    function AjaxMonitor() {\n        var _this = this;\n        this.elements = [];\n        getIntercept().on('request', function() {\n            return _this.watch.apply(_this, arguments);\n        });\n    }\n\n    AjaxMonitor.prototype.watch = function(_arg) {\n        var request, tracker, type, url;\n        type = _arg.type, request = _arg.request, url = _arg.url;\n        if (shouldIgnoreURL(url)) {\n            return;\n        }\n        if (type === 'socket') {\n            tracker = new SocketRequestTracker(request);\n        } else {\n            tracker = new XHRRequestTracker(request);\n        }\n        return this.elements.push(tracker);\n    };\n\n    return AjaxMonitor;\n\n})();\n\nXHRRequestTracker = (function() {\n    function XHRRequestTracker(request) {\n        var event, size, _j, _len1, _onreadystatechange, _ref2,\n            _this = this;\n        this.progress = 0;\n        if (window.ProgressEvent != null) {\n            size = null;\n            request.addEventListener('progress', function(evt) {\n                if (evt.lengthComputable) {\n                    return _this.progress = 100 * evt.loaded / evt.total;\n                } else {\n                    return _this.progress = _this.progress + (100 - _this.progress) / 2;\n                }\n            }, false);\n            _ref2 = ['load', 'abort', 'timeout', 'error'];\n            for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) {\n                event = _ref2[_j];\n                request.addEventListener(event, function() {\n                    return _this.progress = 100;\n                }, false);\n            }\n        } else {\n            _onreadystatechange = request.onreadystatechange;\n            request.onreadystatechange = function() {\n                var _ref3;\n                if ((_ref3 = request.readyState) === 0 || _ref3 === 4) {\n                    _this.progress = 100;\n                } else if (request.readyState === 3) {\n                    _this.progress = 50;\n                }\n                return typeof _onreadystatechange === \"function\" ? _onreadystatechange.apply(null, arguments) : void 0;\n            };\n        }\n    }\n\n    return XHRRequestTracker;\n\n})();\n\nSocketRequestTracker = (function() {\n    function SocketRequestTracker(request) {\n        var event, _j, _len1, _ref2,\n            _this = this;\n        this.progress = 0;\n        _ref2 = ['error', 'open'];\n        for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) {\n            event = _ref2[_j];\n            request.addEventListener(event, function() {\n                return _this.progress = 100;\n            }, false);\n        }\n    }\n\n    return SocketRequestTracker;\n\n})();\n\nElementMonitor = (function() {\n    function ElementMonitor(options) {\n        var selector, _j, _len1, _ref2;\n        if (options == null) {\n            options = {};\n        }\n        this.elements = [];\n        if (options.selectors == null) {\n            options.selectors = [];\n        }\n        _ref2 = options.selectors;\n        for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) {\n            selector = _ref2[_j];\n            this.elements.push(new ElementTracker(selector));\n        }\n    }\n\n    return ElementMonitor;\n\n})();\n\nElementTracker = (function() {\n    function ElementTracker(selector) {\n        this.selector = selector;\n        this.progress = 0;\n        this.check();\n    }\n\n    ElementTracker.prototype.check = function() {\n        var _this = this;\n        if (document.querySelector(this.selector)) {\n            return this.done();\n        } else {\n            return setTimeout((function() {\n                return _this.check();\n            }), options.elements.checkInterval);\n        }\n    };\n\n    ElementTracker.prototype.done = function() {\n        return this.progress = 100;\n    };\n\n    return ElementTracker;\n\n})();\n\nDocumentMonitor = (function() {\n    DocumentMonitor.prototype.states = {\n        loading: 0,\n        interactive: 50,\n        complete: 100\n    };\n\n    function DocumentMonitor() {\n        var _onreadystatechange, _ref2,\n            _this = this;\n        this.progress = (_ref2 = this.states[document.readyState]) != null ? _ref2 : 100;\n        _onreadystatechange = document.onreadystatechange;\n        document.onreadystatechange = function() {\n            if (_this.states[document.readyState] != null) {\n                _this.progress = _this.states[document.readyState];\n            }\n            return typeof _onreadystatechange === \"function\" ? _onreadystatechange.apply(null, arguments) : void 0;\n        };\n    }\n\n    return DocumentMonitor;\n\n})();\n\nEventLagMonitor = (function() {\n    function EventLagMonitor() {\n        var avg, interval, last, points, samples,\n            _this = this;\n        this.progress = 0;\n        avg = 0;\n        samples = [];\n        points = 0;\n        last = now();\n        interval = setInterval(function() {\n            var diff;\n            diff = now() - last - 50;\n            last = now();\n            samples.push(diff);\n            if (samples.length > options.eventLag.sampleCount) {\n                samples.shift();\n            }\n            avg = avgAmplitude(samples);\n            if (++points >= options.eventLag.minSamples && avg < options.eventLag.lagThreshold) {\n                _this.progress = 100;\n                return clearInterval(interval);\n            } else {\n                return _this.progress = 100 * (3 / (avg + 3));\n            }\n        }, 50);\n    }\n\n    return EventLagMonitor;\n\n})();\n\nScaler = (function() {\n    function Scaler(source) {\n        this.source = source;\n        this.last = this.sinceLastUpdate = 0;\n        this.rate = options.initialRate;\n        this.catchup = 0;\n        this.progress = this.lastProgress = 0;\n        if (this.source != null) {\n            this.progress = result(this.source, 'progress');\n        }\n    }\n\n    Scaler.prototype.tick = function(frameTime, val) {\n        var scaling;\n        if (val == null) {\n            val = result(this.source, 'progress');\n        }\n        if (val >= 100) {\n            this.done = true;\n        }\n        if (val === this.last) {\n            this.sinceLastUpdate += frameTime;\n        } else {\n            if (this.sinceLastUpdate) {\n                this.rate = (val - this.last) / this.sinceLastUpdate;\n            }\n            this.catchup = (val - this.progress) / options.catchupTime;\n            this.sinceLastUpdate = 0;\n            this.last = val;\n        }\n        if (val > this.progress) {\n            this.progress += this.catchup * frameTime;\n        }\n        scaling = 1 - Math.pow(this.progress / 100, options.easeFactor);\n        this.progress += scaling * this.rate * frameTime;\n        this.progress = Math.min(this.lastProgress + options.maxProgressPerFrame, this.progress);\n        this.progress = Math.max(0, this.progress);\n        this.progress = Math.min(100, this.progress);\n        this.lastProgress = this.progress;\n        return this.progress;\n    };\n\n    return Scaler;\n\n})();\n\nsources = null;\n\nscalers = null;\n\nbar = null;\n\nuniScaler = null;\n\nanimation = null;\n\ncancelAnimation = null;\n\nPace.running = false;\n\nhandlePushState = function() {\n    if (options.restartOnPushState) {\n        return Pace.restart();\n    }\n};\n\nif (window.history.pushState != null) {\n    _pushState = window.history.pushState;\n    window.history.pushState = function() {\n        handlePushState();\n        return _pushState.apply(window.history, arguments);\n    };\n}\n\nif (window.history.replaceState != null) {\n    _replaceState = window.history.replaceState;\n    window.history.replaceState = function() {\n        handlePushState();\n        return _replaceState.apply(window.history, arguments);\n    };\n}\n\nSOURCE_KEYS = {\n    ajax: AjaxMonitor,\n    elements: ElementMonitor,\n    document: DocumentMonitor,\n    eventLag: EventLagMonitor\n};\n\n(init = function() {\n    var type, _j, _k, _len1, _len2, _ref2, _ref3, _ref4;\n    Pace.sources = sources = [];\n    _ref2 = ['ajax', 'elements', 'document', 'eventLag'];\n    for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) {\n        type = _ref2[_j];\n        if (options[type] !== false) {\n            sources.push(new SOURCE_KEYS[type](options[type]));\n        }\n    }\n    _ref4 = (_ref3 = options.extraSources) != null ? _ref3 : [];\n    for (_k = 0, _len2 = _ref4.length; _k < _len2; _k++) {\n        source = _ref4[_k];\n        sources.push(new source(options));\n    }\n    Pace.bar = bar = new Bar;\n    scalers = [];\n    return uniScaler = new Scaler;\n})();\n\nPace.stop = function() {\n    Pace.trigger('stop');\n    Pace.running = false;\n    bar.destroy();\n    cancelAnimation = true;\n    if (animation != null) {\n        if (typeof cancelAnimationFrame === \"function\") {\n            cancelAnimationFrame(animation);\n        }\n        animation = null;\n    }\n    return init();\n};\n\nPace.restart = function() {\n    Pace.trigger('restart');\n    Pace.stop();\n    return Pace.start();\n};\n\nPace.go = function() {\n    var start;\n    Pace.running = true;\n    bar.render();\n    start = now();\n    cancelAnimation = false;\n    return animation = runAnimation(function(frameTime, enqueueNextFrame) {\n        var avg, count, done, element, elements, i, j, remaining, scaler, scalerList, sum, _j, _k, _len1, _len2, _ref2;\n        remaining = 100 - bar.progress;\n        count = sum = 0;\n        done = true;\n        for (i = _j = 0, _len1 = sources.length; _j < _len1; i = ++_j) {\n            source = sources[i];\n            scalerList = scalers[i] != null ? scalers[i] : scalers[i] = [];\n            elements = (_ref2 = source.elements) != null ? _ref2 : [source];\n            for (j = _k = 0, _len2 = elements.length; _k < _len2; j = ++_k) {\n                element = elements[j];\n                scaler = scalerList[j] != null ? scalerList[j] : scalerList[j] = new Scaler(element);\n                done &= scaler.done;\n                if (scaler.done) {\n                    continue;\n                }\n                count++;\n                sum += scaler.tick(frameTime);\n            }\n        }\n        avg = sum / count;\n        bar.update(uniScaler.tick(frameTime, avg));\n        if (bar.done() || done || cancelAnimation) {\n            bar.update(100);\n            Pace.trigger('done');\n            return setTimeout(function() {\n                bar.finish();\n                Pace.running = false;\n                return Pace.trigger('hide');\n            }, Math.max(options.ghostTime, Math.max(options.minTime - (now() - start), 0)));\n        } else {\n            return enqueueNextFrame();\n        }\n    });\n};\n\nPace.start = function(_options) {\n    extend(options, _options);\n    Pace.running = true;\n    try {\n        bar.render();\n    } catch (_error) {\n        NoTargetError = _error;\n    }\n    if (!document.querySelector('.pace')) {\n        return setTimeout(Pace.start, 50);\n    } else {\n        Pace.trigger('start');\n        return Pace.go();\n    }\n};\n\n// if (typeof define === 'function' && define.amd) {\n//   define(['pace'], function() {\n//     return Pace;\n//   });\n// } else if (typeof exports === 'object') {\n//   module.exports = Pace;\n// } else {\n//   if (options.startOnPageLoad) {\n//     Pace.start();\n//   }\n// }\n\nmodule.exports = Pace;\n\n\n// WEBPACK FOOTER //\n// src/vendor/pace/pace.js","import React from 'react';\nimport { Dropdown } from 'react-bootstrap';\nimport CategoryDropdown from '../CategoryDropdown/CategoryDropdown';\nimport { smoothlyMenu } from '../Layouts/Helpers';\nimport Auth from '../../Auth/Auth.js';\n\n\nclass TopHeader extends React.Component {\n\n    toggleNavigation(e) {\n        e.preventDefault();\n        $(\"body\").toggleClass(\"mini-navbar\");\n        smoothlyMenu();\n    }\n\n    logout(e) {\n        e.preventDefault();\n        const auth = new Auth();\n        auth.logout();\n    }\n\n    render() {\n        return (\n            <div className=\"row border-bottom\">\n                <nav className=\"navbar navbar-static-top white-bg\" role=\"navigation\" style={{marginBottom: 0}}>\n                    <div className=\"navbar-header\">\n                        <a className=\"navbar-minimalize minimalize-styl-2 btn btn-primary \" onClick={this.toggleNavigation} href=\"#\"><i className=\"fa fa-bars\"></i> </a>\n                    </div>\n                    <div>\n                        <CategoryDropdown />\n                    </div>\n\n                    <ul className=\"nav navbar-top-links navbar-right\">\n                        <li>\n                            <a href=\"#\" onClick={this.logout}>\n                                <i className=\"fa fa-sign-out\"></i> Log Out\n                            </a>\n                        </li>\n                    </ul>\n                </nav>\n            </div>\n        )\n    }\n}\n\nexport default TopHeader\n\n\n// WEBPACK FOOTER //\n// src/components/common/TopHeader.js","import _extends from 'babel-runtime/helpers/extends';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport React from 'react';\n\nimport PanelGroup from './PanelGroup';\n\nvar Accordion = function (_React$Component) {\n  _inherits(Accordion, _React$Component);\n\n  function Accordion() {\n    _classCallCheck(this, Accordion);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  Accordion.prototype.render = function render() {\n    return React.createElement(\n      PanelGroup,\n      _extends({}, this.props, { accordion: true }),\n      this.props.children\n    );\n  };\n\n  return Accordion;\n}(React.Component);\n\nexport default Accordion;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/Accordion.js\n// module id = 408\n// module chunks = 0","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/fn/object/assign.js\n// module id = 409\n// module chunks = 0","// 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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.object.assign.js\n// module id = 410\n// module chunks = 0","module.exports = function (it) {\n  if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n  return it;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_a-function.js\n// module id = 411\n// module chunks = 0","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\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) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n  } return T;\n} : $assign;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-assign.js\n// module id = 412\n// module chunks = 0","// 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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_array-includes.js\n// module id = 413\n// module chunks = 0","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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-absolute-index.js\n// module id = 414\n// module chunks = 0","module.exports = { \"default\": require(\"core-js/library/fn/symbol/iterator\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/core-js/symbol/iterator.js\n// module id = 415\n// module chunks = 0","require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/fn/symbol/iterator.js\n// module id = 416\n// module chunks = 0","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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_string-at.js\n// module id = 417\n// module chunks = 0","'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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_iter-create.js\n// module id = 418\n// module chunks = 0","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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-dps.js\n// module id = 419\n// module chunks = 0","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_html.js\n// module id = 420\n// module chunks = 0","// 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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gpo.js\n// module id = 421\n// module chunks = 0","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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/web.dom.iterable.js\n// module id = 422\n// module chunks = 0","'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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.array.iterator.js\n// module id = 423\n// module chunks = 0","module.exports = function () { /* empty */ };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_add-to-unscopables.js\n// module id = 424\n// module chunks = 0","module.exports = function (done, value) {\n  return { value: value, done: !!done };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_iter-step.js\n// module id = 425\n// module chunks = 0","module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/core-js/symbol.js\n// module id = 426\n// module chunks = 0","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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/fn/symbol/index.js\n// module id = 427\n// module chunks = 0","'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 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 $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';\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  require('./_object-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// 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    if (it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n    var args = [it];\n    var i = 1;\n    var replacer, $replacer;\n    while (arguments.length > i) args.push(arguments[i++]);\n    replacer = args[1];\n    if (typeof replacer == 'function') $replacer = replacer;\n    if ($replacer || !isArray(replacer)) replacer = function (key, value) {\n      if ($replacer) 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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.symbol.js\n// module id = 428\n// module chunks = 0","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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_meta.js\n// module id = 429\n// module chunks = 0","// 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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_enum-keys.js\n// module id = 430\n// module chunks = 0","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n  return cof(arg) == 'Array';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_is-array.js\n// module id = 431\n// module chunks = 0","// 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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gopn-ext.js\n// module id = 432\n// module chunks = 0","require('./_wks-define')('asyncIterator');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/es7.symbol.async-iterator.js\n// module id = 434\n// module chunks = 0","require('./_wks-define')('observable');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/es7.symbol.observable.js\n// module id = 435\n// module chunks = 0","module.exports = { \"default\": require(\"core-js/library/fn/object/set-prototype-of\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/core-js/object/set-prototype-of.js\n// module id = 436\n// module chunks = 0","require('../../modules/es6.object.set-prototype-of');\nmodule.exports = require('../../modules/_core').Object.setPrototypeOf;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/fn/object/set-prototype-of.js\n// module id = 437\n// module chunks = 0","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.object.set-prototype-of.js\n// module id = 438\n// module chunks = 0","// 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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_set-proto.js\n// module id = 439\n// module chunks = 0","module.exports = { \"default\": require(\"core-js/library/fn/object/create\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/core-js/object/create.js\n// module id = 440\n// module chunks = 0","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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/fn/object/create.js\n// module id = 441\n// module chunks = 0","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\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.object.create.js\n// module id = 442\n// module chunks = 0","require('../../modules/es7.object.entries');\nmodule.exports = require('../../modules/_core').Object.entries;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/fn/object/entries.js\n// module id = 443\n// module chunks = 0","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n  entries: function entries(it) {\n    return $entries(it);\n  }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/es7.object.entries.js\n// module id = 444\n// module chunks = 0","import _Object$values from 'babel-runtime/core-js/object/values';\nimport _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { bsClass, bsStyles, getClassSet, prefix, splitBsProps } from './utils/bootstrapUtils';\nimport { State } from './utils/StyleConfig';\nimport CloseButton from './CloseButton';\n\nvar propTypes = {\n  onDismiss: PropTypes.func,\n  closeLabel: PropTypes.string\n};\n\nvar defaultProps = {\n  closeLabel: 'Close alert'\n};\n\nvar Alert = function (_React$Component) {\n  _inherits(Alert, _React$Component);\n\n  function Alert() {\n    _classCallCheck(this, Alert);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  Alert.prototype.render = function render() {\n    var _extends2;\n\n    var _props = this.props,\n        onDismiss = _props.onDismiss,\n        closeLabel = _props.closeLabel,\n        className = _props.className,\n        children = _props.children,\n        props = _objectWithoutProperties(_props, ['onDismiss', 'closeLabel', 'className', 'children']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var dismissable = !!onDismiss;\n    var classes = _extends({}, getClassSet(bsProps), (_extends2 = {}, _extends2[prefix(bsProps, 'dismissable')] = dismissable, _extends2));\n\n    return React.createElement(\n      'div',\n      _extends({}, elementProps, {\n        role: 'alert',\n        className: classNames(className, classes)\n      }),\n      dismissable && React.createElement(CloseButton, {\n        onClick: onDismiss,\n        label: closeLabel\n      }),\n      children\n    );\n  };\n\n  return Alert;\n}(React.Component);\n\nAlert.propTypes = propTypes;\nAlert.defaultProps = defaultProps;\n\nexport default bsStyles(_Object$values(State), State.INFO, bsClass('alert', Alert));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/Alert.js\n// module id = 445\n// module chunks = 0","require('../../modules/es7.object.values');\nmodule.exports = require('../../modules/_core').Object.values;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/fn/object/values.js\n// module id = 446\n// module chunks = 0","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $values = require('./_object-to-array')(false);\n\n$export($export.S, 'Object', {\n  values: function values(it) {\n    return $values(it);\n  }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/es7.object.values.js\n// module id = 447\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { bsClass, getClassSet, splitBsProps } from './utils/bootstrapUtils';\n\n// TODO: `pullRight` doesn't belong here. There's no special handling here.\n\nvar propTypes = {\n  pullRight: PropTypes.bool\n};\n\nvar defaultProps = {\n  pullRight: false\n};\n\nvar Badge = function (_React$Component) {\n  _inherits(Badge, _React$Component);\n\n  function Badge() {\n    _classCallCheck(this, Badge);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  Badge.prototype.hasContent = function hasContent(children) {\n    var result = false;\n\n    React.Children.forEach(children, function (child) {\n      if (result) {\n        return;\n      }\n\n      if (child || child === 0) {\n        result = true;\n      }\n    });\n\n    return result;\n  };\n\n  Badge.prototype.render = function render() {\n    var _props = this.props,\n        pullRight = _props.pullRight,\n        className = _props.className,\n        children = _props.children,\n        props = _objectWithoutProperties(_props, ['pullRight', 'className', 'children']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = _extends({}, getClassSet(bsProps), {\n      'pull-right': pullRight,\n\n      // Hack for collapsing on IE8.\n      hidden: !this.hasContent(children)\n    });\n\n    return React.createElement(\n      'span',\n      _extends({}, elementProps, {\n        className: classNames(className, classes)\n      }),\n      children\n    );\n  };\n\n  return Badge;\n}(React.Component);\n\nBadge.propTypes = propTypes;\nBadge.defaultProps = defaultProps;\n\nexport default bsClass('badge', Badge);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/Badge.js\n// module id = 448\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\n\nimport BreadcrumbItem from './BreadcrumbItem';\nimport { bsClass, getClassSet, splitBsProps } from './utils/bootstrapUtils';\n\nvar Breadcrumb = function (_React$Component) {\n  _inherits(Breadcrumb, _React$Component);\n\n  function Breadcrumb() {\n    _classCallCheck(this, Breadcrumb);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  Breadcrumb.prototype.render = function render() {\n    var _props = this.props,\n        className = _props.className,\n        props = _objectWithoutProperties(_props, ['className']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = getClassSet(bsProps);\n\n    return React.createElement('ol', _extends({}, elementProps, {\n      role: 'navigation',\n      'aria-label': 'breadcrumbs',\n      className: classNames(className, classes)\n    }));\n  };\n\n  return Breadcrumb;\n}(React.Component);\n\nBreadcrumb.Item = BreadcrumbItem;\n\nexport default bsClass('breadcrumb', Breadcrumb);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/Breadcrumb.js\n// module id = 449\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\n\nimport { bsClass, getClassSet, splitBsProps } from './utils/bootstrapUtils';\n\nvar ButtonToolbar = function (_React$Component) {\n  _inherits(ButtonToolbar, _React$Component);\n\n  function ButtonToolbar() {\n    _classCallCheck(this, ButtonToolbar);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  ButtonToolbar.prototype.render = function render() {\n    var _props = this.props,\n        className = _props.className,\n        props = _objectWithoutProperties(_props, ['className']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = getClassSet(bsProps);\n\n    return React.createElement('div', _extends({}, elementProps, {\n      role: 'toolbar',\n      className: classNames(className, classes)\n    }));\n  };\n\n  return ButtonToolbar;\n}(React.Component);\n\nexport default bsClass('btn-toolbar', ButtonToolbar);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/ButtonToolbar.js\n// module id = 450\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React, { cloneElement } from 'react';\nimport PropTypes from 'prop-types';\n\nimport CarouselCaption from './CarouselCaption';\nimport CarouselItem from './CarouselItem';\nimport Glyphicon from './Glyphicon';\nimport SafeAnchor from './SafeAnchor';\nimport { bsClass, getClassSet, prefix, splitBsPropsAndOmit } from './utils/bootstrapUtils';\nimport ValidComponentChildren from './utils/ValidComponentChildren';\n\n// TODO: `slide` should be `animate`.\n\n// TODO: Use uncontrollable.\n\nvar propTypes = {\n  slide: PropTypes.bool,\n  indicators: PropTypes.bool,\n  /**\n   * The amount of time to delay between automatically cycling an item.\n   * If `null`, carousel will not automatically cycle.\n   */\n  interval: PropTypes.number,\n  controls: PropTypes.bool,\n  pauseOnHover: PropTypes.bool,\n  wrap: PropTypes.bool,\n  /**\n   * Callback fired when the active item changes.\n   *\n   * ```js\n   * (eventKey: any) => any | (eventKey: any, event: Object) => any\n   * ```\n   *\n   * If this callback takes two or more arguments, the second argument will\n   * be a persisted event object with `direction` set to the direction of the\n   * transition.\n   */\n  onSelect: PropTypes.func,\n  onSlideEnd: PropTypes.func,\n  activeIndex: PropTypes.number,\n  defaultActiveIndex: PropTypes.number,\n  direction: PropTypes.oneOf(['prev', 'next']),\n  prevIcon: PropTypes.node,\n  /**\n   * Label shown to screen readers only, can be used to show the previous element\n   * in the carousel.\n   * Set to null to deactivate.\n   */\n  prevLabel: PropTypes.string,\n  nextIcon: PropTypes.node,\n  /**\n   * Label shown to screen readers only, can be used to show the next element\n   * in the carousel.\n   * Set to null to deactivate.\n   */\n  nextLabel: PropTypes.string\n};\n\nvar defaultProps = {\n  slide: true,\n  interval: 5000,\n  pauseOnHover: true,\n  wrap: true,\n  indicators: true,\n  controls: true,\n  prevIcon: React.createElement(Glyphicon, { glyph: 'chevron-left' }),\n  prevLabel: 'Previous',\n  nextIcon: React.createElement(Glyphicon, { glyph: 'chevron-right' }),\n  nextLabel: 'Next'\n};\n\nvar Carousel = function (_React$Component) {\n  _inherits(Carousel, _React$Component);\n\n  function Carousel(props, context) {\n    _classCallCheck(this, Carousel);\n\n    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n\n    _this.handleMouseOver = _this.handleMouseOver.bind(_this);\n    _this.handleMouseOut = _this.handleMouseOut.bind(_this);\n    _this.handlePrev = _this.handlePrev.bind(_this);\n    _this.handleNext = _this.handleNext.bind(_this);\n    _this.handleItemAnimateOutEnd = _this.handleItemAnimateOutEnd.bind(_this);\n\n    var defaultActiveIndex = props.defaultActiveIndex;\n\n\n    _this.state = {\n      activeIndex: defaultActiveIndex != null ? defaultActiveIndex : 0,\n      previousActiveIndex: null,\n      direction: null\n    };\n\n    _this.isUnmounted = false;\n    return _this;\n  }\n\n  Carousel.prototype.componentDidMount = function componentDidMount() {\n    this.waitForNext();\n  };\n\n  Carousel.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n    var activeIndex = this.getActiveIndex();\n\n    if (nextProps.activeIndex != null && nextProps.activeIndex !== activeIndex) {\n      clearTimeout(this.timeout);\n\n      this.setState({\n        previousActiveIndex: activeIndex,\n        direction: nextProps.direction != null ? nextProps.direction : this.getDirection(activeIndex, nextProps.activeIndex)\n      });\n    }\n\n    if (nextProps.activeIndex == null && this.state.activeIndex >= nextProps.children.length) {\n      this.setState({\n        activeIndex: 0,\n        previousActiveIndex: null,\n        direction: null\n      });\n    }\n  };\n\n  Carousel.prototype.componentWillUnmount = function componentWillUnmount() {\n    clearTimeout(this.timeout);\n    this.isUnmounted = true;\n  };\n\n  Carousel.prototype.getActiveIndex = function getActiveIndex() {\n    var activeIndexProp = this.props.activeIndex;\n    return activeIndexProp != null ? activeIndexProp : this.state.activeIndex;\n  };\n\n  Carousel.prototype.getDirection = function getDirection(prevIndex, index) {\n    if (prevIndex === index) {\n      return null;\n    }\n\n    return prevIndex > index ? 'prev' : 'next';\n  };\n\n  Carousel.prototype.handleItemAnimateOutEnd = function handleItemAnimateOutEnd() {\n    var _this2 = this;\n\n    this.setState({\n      previousActiveIndex: null,\n      direction: null\n    }, function () {\n      _this2.waitForNext();\n\n      if (_this2.props.onSlideEnd) {\n        _this2.props.onSlideEnd();\n      }\n    });\n  };\n\n  Carousel.prototype.handleMouseOut = function handleMouseOut() {\n    if (this.isPaused) {\n      this.play();\n    }\n  };\n\n  Carousel.prototype.handleMouseOver = function handleMouseOver() {\n    if (this.props.pauseOnHover) {\n      this.pause();\n    }\n  };\n\n  Carousel.prototype.handleNext = function handleNext(e) {\n    var index = this.getActiveIndex() + 1;\n    var count = ValidComponentChildren.count(this.props.children);\n\n    if (index > count - 1) {\n      if (!this.props.wrap) {\n        return;\n      }\n      index = 0;\n    }\n\n    this.select(index, e, 'next');\n  };\n\n  Carousel.prototype.handlePrev = function handlePrev(e) {\n    var index = this.getActiveIndex() - 1;\n\n    if (index < 0) {\n      if (!this.props.wrap) {\n        return;\n      }\n      index = ValidComponentChildren.count(this.props.children) - 1;\n    }\n\n    this.select(index, e, 'prev');\n  };\n\n  // This might be a public API.\n\n\n  Carousel.prototype.pause = function pause() {\n    this.isPaused = true;\n    clearTimeout(this.timeout);\n  };\n\n  // This might be a public API.\n\n\n  Carousel.prototype.play = function play() {\n    this.isPaused = false;\n    this.waitForNext();\n  };\n\n  Carousel.prototype.select = function select(index, e, direction) {\n    clearTimeout(this.timeout);\n\n    // TODO: Is this necessary? Seems like the only risk is if the component\n    // unmounts while handleItemAnimateOutEnd fires.\n    if (this.isUnmounted) {\n      return;\n    }\n\n    var previousActiveIndex = this.props.slide ? this.getActiveIndex() : null;\n    direction = direction || this.getDirection(previousActiveIndex, index);\n\n    var onSelect = this.props.onSelect;\n\n\n    if (onSelect) {\n      if (onSelect.length > 1) {\n        // React SyntheticEvents are pooled, so we need to remove this event\n        // from the pool to add a custom property. To avoid unnecessarily\n        // removing objects from the pool, only do this when the listener\n        // actually wants the event.\n        if (e) {\n          e.persist();\n          e.direction = direction;\n        } else {\n          e = { direction: direction };\n        }\n\n        onSelect(index, e);\n      } else {\n        onSelect(index);\n      }\n    }\n\n    if (this.props.activeIndex == null && index !== previousActiveIndex) {\n      if (this.state.previousActiveIndex != null) {\n        // If currently animating don't activate the new index.\n        // TODO: look into queueing this canceled call and\n        // animating after the current animation has ended.\n        return;\n      }\n\n      this.setState({\n        activeIndex: index,\n        previousActiveIndex: previousActiveIndex,\n        direction: direction\n      });\n    }\n  };\n\n  Carousel.prototype.waitForNext = function waitForNext() {\n    var _props = this.props,\n        slide = _props.slide,\n        interval = _props.interval,\n        activeIndexProp = _props.activeIndex;\n\n\n    if (!this.isPaused && slide && interval && activeIndexProp == null) {\n      this.timeout = setTimeout(this.handleNext, interval);\n    }\n  };\n\n  Carousel.prototype.renderControls = function renderControls(properties) {\n    var wrap = properties.wrap,\n        children = properties.children,\n        activeIndex = properties.activeIndex,\n        prevIcon = properties.prevIcon,\n        nextIcon = properties.nextIcon,\n        bsProps = properties.bsProps,\n        prevLabel = properties.prevLabel,\n        nextLabel = properties.nextLabel;\n\n    var controlClassName = prefix(bsProps, 'control');\n    var count = ValidComponentChildren.count(children);\n\n    return [(wrap || activeIndex !== 0) && React.createElement(\n      SafeAnchor,\n      {\n        key: 'prev',\n        className: classNames(controlClassName, 'left'),\n        onClick: this.handlePrev\n      },\n      prevIcon,\n      prevLabel && React.createElement(\n        'span',\n        { className: 'sr-only' },\n        prevLabel\n      )\n    ), (wrap || activeIndex !== count - 1) && React.createElement(\n      SafeAnchor,\n      {\n        key: 'next',\n        className: classNames(controlClassName, 'right'),\n        onClick: this.handleNext\n      },\n      nextIcon,\n      nextLabel && React.createElement(\n        'span',\n        { className: 'sr-only' },\n        nextLabel\n      )\n    )];\n  };\n\n  Carousel.prototype.renderIndicators = function renderIndicators(children, activeIndex, bsProps) {\n    var _this3 = this;\n\n    var indicators = [];\n\n    ValidComponentChildren.forEach(children, function (child, index) {\n      indicators.push(React.createElement('li', {\n        key: index,\n        className: index === activeIndex ? 'active' : null,\n        onClick: function onClick(e) {\n          return _this3.select(index, e);\n        }\n      }),\n\n      // Force whitespace between indicator elements. Bootstrap requires\n      // this for correct spacing of elements.\n      ' ');\n    });\n\n    return React.createElement(\n      'ol',\n      { className: prefix(bsProps, 'indicators') },\n      indicators\n    );\n  };\n\n  Carousel.prototype.render = function render() {\n    var _this4 = this;\n\n    var _props2 = this.props,\n        slide = _props2.slide,\n        indicators = _props2.indicators,\n        controls = _props2.controls,\n        wrap = _props2.wrap,\n        prevIcon = _props2.prevIcon,\n        prevLabel = _props2.prevLabel,\n        nextIcon = _props2.nextIcon,\n        nextLabel = _props2.nextLabel,\n        className = _props2.className,\n        children = _props2.children,\n        props = _objectWithoutProperties(_props2, ['slide', 'indicators', 'controls', 'wrap', 'prevIcon', 'prevLabel', 'nextIcon', 'nextLabel', 'className', 'children']);\n\n    var _state = this.state,\n        previousActiveIndex = _state.previousActiveIndex,\n        direction = _state.direction;\n\n    var _splitBsPropsAndOmit = splitBsPropsAndOmit(props, ['interval', 'pauseOnHover', 'onSelect', 'onSlideEnd', 'activeIndex', // Accessed via this.getActiveIndex().\n    'defaultActiveIndex', 'direction']),\n        bsProps = _splitBsPropsAndOmit[0],\n        elementProps = _splitBsPropsAndOmit[1];\n\n    var activeIndex = this.getActiveIndex();\n\n    var classes = _extends({}, getClassSet(bsProps), {\n      slide: slide\n    });\n\n    return React.createElement(\n      'div',\n      _extends({}, elementProps, {\n        className: classNames(className, classes),\n        onMouseOver: this.handleMouseOver,\n        onMouseOut: this.handleMouseOut\n      }),\n      indicators && this.renderIndicators(children, activeIndex, bsProps),\n      React.createElement(\n        'div',\n        { className: prefix(bsProps, 'inner') },\n        ValidComponentChildren.map(children, function (child, index) {\n          var active = index === activeIndex;\n          var previousActive = slide && index === previousActiveIndex;\n\n          return cloneElement(child, {\n            active: active,\n            index: index,\n            animateOut: previousActive,\n            animateIn: active && previousActiveIndex != null && slide,\n            direction: direction,\n            onAnimateOutEnd: previousActive ? _this4.handleItemAnimateOutEnd : null\n          });\n        })\n      ),\n      controls && this.renderControls({\n        wrap: wrap,\n        children: children,\n        activeIndex: activeIndex,\n        prevIcon: prevIcon,\n        prevLabel: prevLabel,\n        nextIcon: nextIcon,\n        nextLabel: nextLabel,\n        bsProps: bsProps\n      })\n    );\n  };\n\n  return Carousel;\n}(React.Component);\n\nCarousel.propTypes = propTypes;\nCarousel.defaultProps = defaultProps;\n\nCarousel.Caption = CarouselCaption;\nCarousel.Item = CarouselItem;\n\nexport default bsClass('carousel', Carousel);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/Carousel.js\n// module id = 451\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport elementType from 'prop-types-extra/lib/elementType';\n\nimport { bsClass, getClassSet, splitBsProps } from './utils/bootstrapUtils';\n\nvar propTypes = {\n  componentClass: elementType\n};\n\nvar defaultProps = {\n  componentClass: 'div'\n};\n\nvar CarouselCaption = function (_React$Component) {\n  _inherits(CarouselCaption, _React$Component);\n\n  function CarouselCaption() {\n    _classCallCheck(this, CarouselCaption);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  CarouselCaption.prototype.render = function render() {\n    var _props = this.props,\n        Component = _props.componentClass,\n        className = _props.className,\n        props = _objectWithoutProperties(_props, ['componentClass', 'className']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = getClassSet(bsProps);\n\n    return React.createElement(Component, _extends({}, elementProps, {\n      className: classNames(className, classes)\n    }));\n  };\n\n  return CarouselCaption;\n}(React.Component);\n\nCarouselCaption.propTypes = propTypes;\nCarouselCaption.defaultProps = defaultProps;\n\nexport default bsClass('carousel-caption', CarouselCaption);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/CarouselCaption.js\n// module id = 452\n// module chunks = 0","/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n *\n * This file contains a modified version of:\n * https://github.com/facebook/react/blob/v0.12.0/src/addons/transitions/ReactTransitionEvents.js\n *\n * This source code is licensed under the BSD-style license found here:\n * https://github.com/facebook/react/blob/v0.12.0/LICENSE\n * An additional grant of patent rights can be found here:\n * https://github.com/facebook/react/blob/v0.12.0/PATENTS\n */\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\n/**\n * EVENT_NAME_MAP is used to determine which event fired when a\n * transition/animation ends, based on the style property used to\n * define that event.\n */\nvar EVENT_NAME_MAP = {\n  transitionend: {\n    transition: 'transitionend',\n    WebkitTransition: 'webkitTransitionEnd',\n    MozTransition: 'mozTransitionEnd',\n    OTransition: 'oTransitionEnd',\n    msTransition: 'MSTransitionEnd'\n  },\n\n  animationend: {\n    animation: 'animationend',\n    WebkitAnimation: 'webkitAnimationEnd',\n    MozAnimation: 'mozAnimationEnd',\n    OAnimation: 'oAnimationEnd',\n    msAnimation: 'MSAnimationEnd'\n  }\n};\n\nvar endEvents = [];\n\nfunction detectEvents() {\n  var testEl = document.createElement('div');\n  var style = testEl.style;\n\n  // On some platforms, in particular some releases of Android 4.x,\n  // the un-prefixed \"animation\" and \"transition\" properties are defined on the\n  // style object but the events that fire will still be prefixed, so we need\n  // to check if the un-prefixed events are useable, and if not remove them\n  // from the map\n  if (!('AnimationEvent' in window)) {\n    delete EVENT_NAME_MAP.animationend.animation;\n  }\n\n  if (!('TransitionEvent' in window)) {\n    delete EVENT_NAME_MAP.transitionend.transition;\n  }\n\n  for (var baseEventName in EVENT_NAME_MAP) {\n    // eslint-disable-line guard-for-in\n    var baseEvents = EVENT_NAME_MAP[baseEventName];\n    for (var styleName in baseEvents) {\n      // eslint-disable-line guard-for-in\n      if (styleName in style) {\n        endEvents.push(baseEvents[styleName]);\n        break;\n      }\n    }\n  }\n}\n\nif (canUseDOM) {\n  detectEvents();\n}\n\n// We use the raw {add|remove}EventListener() call because EventListener\n// does not know how to remove event listeners and we really should\n// clean up. Also, these events are not triggered in older browsers\n// so we should be A-OK here.\n\nfunction addEventListener(node, eventName, eventListener) {\n  node.addEventListener(eventName, eventListener, false);\n}\n\nfunction removeEventListener(node, eventName, eventListener) {\n  node.removeEventListener(eventName, eventListener, false);\n}\n\nvar ReactTransitionEvents = {\n  addEndEventListener: function addEndEventListener(node, eventListener) {\n    if (endEvents.length === 0) {\n      // If CSS transitions are not supported, trigger an \"end animation\"\n      // event immediately.\n      window.setTimeout(eventListener, 0);\n      return;\n    }\n    endEvents.forEach(function (endEvent) {\n      addEventListener(node, endEvent, eventListener);\n    });\n  },\n  removeEndEventListener: function removeEndEventListener(node, eventListener) {\n    if (endEvents.length === 0) {\n      return;\n    }\n    endEvents.forEach(function (endEvent) {\n      removeEventListener(node, endEvent, eventListener);\n    });\n  }\n};\n\nexport default ReactTransitionEvents;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/utils/TransitionEvents.js\n// module id = 453\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\n/* eslint-disable jsx-a11y/label-has-for */\n\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport warning from 'warning';\n\nimport { bsClass, getClassSet, prefix, splitBsProps } from './utils/bootstrapUtils';\n\nvar propTypes = {\n  inline: PropTypes.bool,\n  disabled: PropTypes.bool,\n  title: PropTypes.string,\n  /**\n   * Only valid if `inline` is not set.\n   */\n  validationState: PropTypes.oneOf(['success', 'warning', 'error', null]),\n  /**\n   * Attaches a ref to the `<input>` element. Only functions can be used here.\n   *\n   * ```js\n   * <Checkbox inputRef={ref => { this.input = ref; }} />\n   * ```\n   */\n  inputRef: PropTypes.func\n};\n\nvar defaultProps = {\n  inline: false,\n  disabled: false,\n  title: ''\n};\n\nvar Checkbox = function (_React$Component) {\n  _inherits(Checkbox, _React$Component);\n\n  function Checkbox() {\n    _classCallCheck(this, Checkbox);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  Checkbox.prototype.render = function render() {\n    var _props = this.props,\n        inline = _props.inline,\n        disabled = _props.disabled,\n        validationState = _props.validationState,\n        inputRef = _props.inputRef,\n        className = _props.className,\n        style = _props.style,\n        title = _props.title,\n        children = _props.children,\n        props = _objectWithoutProperties(_props, ['inline', 'disabled', 'validationState', 'inputRef', 'className', 'style', 'title', 'children']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var input = React.createElement('input', _extends({}, elementProps, {\n      ref: inputRef,\n      type: 'checkbox',\n      disabled: disabled\n    }));\n\n    if (inline) {\n      var _classes2;\n\n      var _classes = (_classes2 = {}, _classes2[prefix(bsProps, 'inline')] = true, _classes2.disabled = disabled, _classes2);\n\n      // Use a warning here instead of in propTypes to get better-looking\n      // generated documentation.\n      process.env.NODE_ENV !== 'production' ? warning(!validationState, '`validationState` is ignored on `<Checkbox inline>`. To display ' + 'validation state on an inline checkbox, set `validationState` on a ' + 'parent `<FormGroup>` or other element instead.') : void 0;\n\n      return React.createElement(\n        'label',\n        { className: classNames(className, _classes), style: style, title: title },\n        input,\n        children\n      );\n    }\n\n    var classes = _extends({}, getClassSet(bsProps), {\n      disabled: disabled\n    });\n    if (validationState) {\n      classes['has-' + validationState] = true;\n    }\n\n    return React.createElement(\n      'div',\n      { className: classNames(className, classes), style: style },\n      React.createElement(\n        'label',\n        { title: title },\n        input,\n        children\n      )\n    );\n  };\n\n  return Checkbox;\n}(React.Component);\n\nCheckbox.propTypes = propTypes;\nCheckbox.defaultProps = defaultProps;\n\nexport default bsClass('checkbox', Checkbox);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/Checkbox.js\n// module id = 454\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport elementType from 'prop-types-extra/lib/elementType';\n\nimport { bsClass, getClassSet, splitBsProps } from './utils/bootstrapUtils';\nimport capitalize from './utils/capitalize';\nimport { DEVICE_SIZES } from './utils/StyleConfig';\n\nvar propTypes = {\n  componentClass: elementType,\n\n  /**\n   * Apply clearfix\n   *\n   * on Extra small devices Phones\n   *\n   * adds class `visible-xs-block`\n   */\n  visibleXsBlock: PropTypes.bool,\n  /**\n   * Apply clearfix\n   *\n   * on Small devices Tablets\n   *\n   * adds class `visible-sm-block`\n   */\n  visibleSmBlock: PropTypes.bool,\n  /**\n   * Apply clearfix\n   *\n   * on Medium devices Desktops\n   *\n   * adds class `visible-md-block`\n   */\n  visibleMdBlock: PropTypes.bool,\n  /**\n   * Apply clearfix\n   *\n   * on Large devices Desktops\n   *\n   * adds class `visible-lg-block`\n   */\n  visibleLgBlock: PropTypes.bool\n};\n\nvar defaultProps = {\n  componentClass: 'div'\n};\n\nvar Clearfix = function (_React$Component) {\n  _inherits(Clearfix, _React$Component);\n\n  function Clearfix() {\n    _classCallCheck(this, Clearfix);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  Clearfix.prototype.render = function render() {\n    var _props = this.props,\n        Component = _props.componentClass,\n        className = _props.className,\n        props = _objectWithoutProperties(_props, ['componentClass', 'className']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = getClassSet(bsProps);\n\n    DEVICE_SIZES.forEach(function (size) {\n      var propName = 'visible' + capitalize(size) + 'Block';\n      if (elementProps[propName]) {\n        classes['visible-' + size + '-block'] = true;\n      }\n\n      delete elementProps[propName];\n    });\n\n    return React.createElement(Component, _extends({}, elementProps, {\n      className: classNames(className, classes)\n    }));\n  };\n\n  return Clearfix;\n}(React.Component);\n\nClearfix.propTypes = propTypes;\nClearfix.defaultProps = defaultProps;\n\nexport default bsClass('clearfix', Clearfix);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/Clearfix.js\n// module id = 455\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport warning from 'warning';\n\nimport { bsClass, getClassSet, splitBsProps } from './utils/bootstrapUtils';\n\nvar propTypes = {\n  /**\n   * Uses `controlId` from `<FormGroup>` if not explicitly specified.\n   */\n  htmlFor: PropTypes.string,\n  srOnly: PropTypes.bool\n};\n\nvar defaultProps = {\n  srOnly: false\n};\n\nvar contextTypes = {\n  $bs_formGroup: PropTypes.object\n};\n\nvar ControlLabel = function (_React$Component) {\n  _inherits(ControlLabel, _React$Component);\n\n  function ControlLabel() {\n    _classCallCheck(this, ControlLabel);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  ControlLabel.prototype.render = function render() {\n    var formGroup = this.context.$bs_formGroup;\n    var controlId = formGroup && formGroup.controlId;\n\n    var _props = this.props,\n        _props$htmlFor = _props.htmlFor,\n        htmlFor = _props$htmlFor === undefined ? controlId : _props$htmlFor,\n        srOnly = _props.srOnly,\n        className = _props.className,\n        props = _objectWithoutProperties(_props, ['htmlFor', 'srOnly', 'className']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    process.env.NODE_ENV !== 'production' ? warning(controlId == null || htmlFor === controlId, '`controlId` is ignored on `<ControlLabel>` when `htmlFor` is specified.') : void 0;\n\n    var classes = _extends({}, getClassSet(bsProps), {\n      'sr-only': srOnly\n    });\n\n    return React.createElement('label', _extends({}, elementProps, {\n      htmlFor: htmlFor,\n      className: classNames(className, classes)\n    }));\n  };\n\n  return ControlLabel;\n}(React.Component);\n\nControlLabel.propTypes = propTypes;\nControlLabel.defaultProps = defaultProps;\nControlLabel.contextTypes = contextTypes;\n\nexport default bsClass('control-label', ControlLabel);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/ControlLabel.js\n// module id = 456\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport elementType from 'prop-types-extra/lib/elementType';\n\nimport { bsClass, prefix, splitBsProps } from './utils/bootstrapUtils';\nimport { DEVICE_SIZES } from './utils/StyleConfig';\n\nvar propTypes = {\n  componentClass: elementType,\n\n  /**\n   * The number of columns you wish to span\n   *\n   * for Extra small devices Phones (<768px)\n   *\n   * class-prefix `col-xs-`\n   */\n  xs: PropTypes.number,\n  /**\n   * The number of columns you wish to span\n   *\n   * for Small devices Tablets (≥768px)\n   *\n   * class-prefix `col-sm-`\n   */\n  sm: PropTypes.number,\n  /**\n   * The number of columns you wish to span\n   *\n   * for Medium devices Desktops (≥992px)\n   *\n   * class-prefix `col-md-`\n   */\n  md: PropTypes.number,\n  /**\n   * The number of columns you wish to span\n   *\n   * for Large devices Desktops (≥1200px)\n   *\n   * class-prefix `col-lg-`\n   */\n  lg: PropTypes.number,\n  /**\n   * Hide column\n   *\n   * on Extra small devices Phones\n   *\n   * adds class `hidden-xs`\n   */\n  xsHidden: PropTypes.bool,\n  /**\n   * Hide column\n   *\n   * on Small devices Tablets\n   *\n   * adds class `hidden-sm`\n   */\n  smHidden: PropTypes.bool,\n  /**\n   * Hide column\n   *\n   * on Medium devices Desktops\n   *\n   * adds class `hidden-md`\n   */\n  mdHidden: PropTypes.bool,\n  /**\n   * Hide column\n   *\n   * on Large devices Desktops\n   *\n   * adds class `hidden-lg`\n   */\n  lgHidden: PropTypes.bool,\n  /**\n   * Move columns to the right\n   *\n   * for Extra small devices Phones\n   *\n   * class-prefix `col-xs-offset-`\n   */\n  xsOffset: PropTypes.number,\n  /**\n   * Move columns to the right\n   *\n   * for Small devices Tablets\n   *\n   * class-prefix `col-sm-offset-`\n   */\n  smOffset: PropTypes.number,\n  /**\n   * Move columns to the right\n   *\n   * for Medium devices Desktops\n   *\n   * class-prefix `col-md-offset-`\n   */\n  mdOffset: PropTypes.number,\n  /**\n   * Move columns to the right\n   *\n   * for Large devices Desktops\n   *\n   * class-prefix `col-lg-offset-`\n   */\n  lgOffset: PropTypes.number,\n  /**\n   * Change the order of grid columns to the right\n   *\n   * for Extra small devices Phones\n   *\n   * class-prefix `col-xs-push-`\n   */\n  xsPush: PropTypes.number,\n  /**\n   * Change the order of grid columns to the right\n   *\n   * for Small devices Tablets\n   *\n   * class-prefix `col-sm-push-`\n   */\n  smPush: PropTypes.number,\n  /**\n   * Change the order of grid columns to the right\n   *\n   * for Medium devices Desktops\n   *\n   * class-prefix `col-md-push-`\n   */\n  mdPush: PropTypes.number,\n  /**\n   * Change the order of grid columns to the right\n   *\n   * for Large devices Desktops\n   *\n   * class-prefix `col-lg-push-`\n   */\n  lgPush: PropTypes.number,\n  /**\n   * Change the order of grid columns to the left\n   *\n   * for Extra small devices Phones\n   *\n   * class-prefix `col-xs-pull-`\n   */\n  xsPull: PropTypes.number,\n  /**\n   * Change the order of grid columns to the left\n   *\n   * for Small devices Tablets\n   *\n   * class-prefix `col-sm-pull-`\n   */\n  smPull: PropTypes.number,\n  /**\n   * Change the order of grid columns to the left\n   *\n   * for Medium devices Desktops\n   *\n   * class-prefix `col-md-pull-`\n   */\n  mdPull: PropTypes.number,\n  /**\n   * Change the order of grid columns to the left\n   *\n   * for Large devices Desktops\n   *\n   * class-prefix `col-lg-pull-`\n   */\n  lgPull: PropTypes.number\n};\n\nvar defaultProps = {\n  componentClass: 'div'\n};\n\nvar Col = function (_React$Component) {\n  _inherits(Col, _React$Component);\n\n  function Col() {\n    _classCallCheck(this, Col);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  Col.prototype.render = function render() {\n    var _props = this.props,\n        Component = _props.componentClass,\n        className = _props.className,\n        props = _objectWithoutProperties(_props, ['componentClass', 'className']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = [];\n\n    DEVICE_SIZES.forEach(function (size) {\n      function popProp(propSuffix, modifier) {\n        var propName = '' + size + propSuffix;\n        var propValue = elementProps[propName];\n\n        if (propValue != null) {\n          classes.push(prefix(bsProps, '' + size + modifier + '-' + propValue));\n        }\n\n        delete elementProps[propName];\n      }\n\n      popProp('', '');\n      popProp('Offset', '-offset');\n      popProp('Push', '-push');\n      popProp('Pull', '-pull');\n\n      var hiddenPropName = size + 'Hidden';\n      if (elementProps[hiddenPropName]) {\n        classes.push('hidden-' + size);\n      }\n      delete elementProps[hiddenPropName];\n    });\n\n    return React.createElement(Component, _extends({}, elementProps, {\n      className: classNames(className, classes)\n    }));\n  };\n\n  return Col;\n}(React.Component);\n\nCol.propTypes = propTypes;\nCol.defaultProps = defaultProps;\n\nexport default bsClass('col', Col);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/Col.js\n// module id = 457\n// module chunks = 0","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = camelize;\nvar rHyphen = /-(.)/g;\n\nfunction camelize(string) {\n  return string.replace(rHyphen, function (_, chr) {\n    return chr.toUpperCase();\n  });\n}\nmodule.exports = exports[\"default\"];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-helpers/util/camelize.js\n// module id = 458\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = hyphenateStyleName;\n\nvar _hyphenate = require('./hyphenate');\n\nvar _hyphenate2 = _interopRequireDefault(_hyphenate);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar msPattern = /^ms-/; /**\n                         * Copyright 2013-2014, Facebook, Inc.\n                         * All rights reserved.\n                         * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/hyphenateStyleName.js\n                         */\n\nfunction hyphenateStyleName(string) {\n  return (0, _hyphenate2.default)(string).replace(msPattern, '-ms-');\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-helpers/util/hyphenateStyle.js\n// module id = 459\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = hyphenate;\n\nvar rUpper = /([A-Z])/g;\n\nfunction hyphenate(string) {\n  return string.replace(rUpper, '-$1').toLowerCase();\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-helpers/util/hyphenate.js\n// module id = 460\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = _getComputedStyle;\n\nvar _camelizeStyle = require('../util/camelizeStyle');\n\nvar _camelizeStyle2 = _interopRequireDefault(_camelizeStyle);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar rposition = /^(top|right|bottom|left)$/;\nvar rnumnonpx = /^([+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|))(?!px)[a-z%]+$/i;\n\nfunction _getComputedStyle(node) {\n  if (!node) throw new TypeError('No Element passed to `getComputedStyle()`');\n  var doc = node.ownerDocument;\n\n  return 'defaultView' in doc ? doc.defaultView.opener ? node.ownerDocument.defaultView.getComputedStyle(node, null) : window.getComputedStyle(node, null) : {\n    //ie 8 \"magic\" from: https://github.com/jquery/jquery/blob/1.11-stable/src/css/curCSS.js#L72\n    getPropertyValue: function getPropertyValue(prop) {\n      var style = node.style;\n\n      prop = (0, _camelizeStyle2.default)(prop);\n\n      if (prop == 'float') prop = 'styleFloat';\n\n      var current = node.currentStyle[prop] || null;\n\n      if (current == null && style && style[prop]) current = style[prop];\n\n      if (rnumnonpx.test(current) && !rposition.test(prop)) {\n        // Remember the original values\n        var left = style.left;\n        var runStyle = node.runtimeStyle;\n        var rsLeft = runStyle && runStyle.left;\n\n        // Put in the new values to get a computed value out\n        if (rsLeft) runStyle.left = node.currentStyle.left;\n\n        style.left = prop === 'fontSize' ? '1em' : current;\n        current = style.pixelLeft + 'px';\n\n        // Revert the changed values\n        style.left = left;\n        if (rsLeft) runStyle.left = rsLeft;\n      }\n\n      return current;\n    }\n  };\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-helpers/style/getComputedStyle.js\n// module id = 461\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = removeStyle;\nfunction removeStyle(node, key) {\n  return 'removeProperty' in node.style ? node.style.removeProperty(key) : node.style.removeAttribute(key);\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-helpers/style/removeStyle.js\n// module id = 462\n// module chunks = 0","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = isTransform;\nvar supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;\n\nfunction isTransform(property) {\n  return !!(property && supportedTransforms.test(property));\n}\nmodule.exports = exports[\"default\"];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-helpers/transition/isTransform.js\n// module id = 463\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.default = createUncontrollable;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _utils = require('./utils');\n\nvar utils = _interopRequireWildcard(_utils);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction createUncontrollable(mixin, set) {\n\n  return uncontrollable;\n\n  function uncontrollable(Component, controlledValues) {\n    var _class, _temp;\n\n    var methods = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\n    var displayName = Component.displayName || Component.name || 'Component',\n        basePropTypes = utils.getType(Component).propTypes,\n        isCompositeComponent = utils.isReactComponent(Component),\n        controlledProps = Object.keys(controlledValues),\n        propTypes;\n\n    var OMIT_PROPS = ['valueLink', 'checkedLink'].concat(controlledProps.map(utils.defaultKey));\n\n    propTypes = utils.uncontrolledPropTypes(controlledValues, basePropTypes, displayName);\n\n    (0, _invariant2.default)(isCompositeComponent || !methods.length, '[uncontrollable] stateless function components cannot pass through methods ' + 'because they have no associated instances. Check component: ' + displayName + ', ' + 'attempting to pass through methods: ' + methods.join(', '));\n\n    methods = utils.transform(methods, function (obj, method) {\n      obj[method] = function () {\n        var _refs$inner;\n\n        return (_refs$inner = this.refs.inner)[method].apply(_refs$inner, arguments);\n      };\n    }, {});\n\n    var component = (_temp = _class = function (_React$Component) {\n      _inherits(component, _React$Component);\n\n      function component() {\n        _classCallCheck(this, component);\n\n        return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n      }\n\n      component.prototype.shouldComponentUpdate = function shouldComponentUpdate() {\n        for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n          args[_key] = arguments[_key];\n        }\n\n        return !mixin.shouldComponentUpdate || mixin.shouldComponentUpdate.apply(this, args);\n      };\n\n      component.prototype.componentWillMount = function componentWillMount() {\n        var _this2 = this;\n\n        var props = this.props;\n\n        this._values = {};\n\n        controlledProps.forEach(function (key) {\n          _this2._values[key] = props[utils.defaultKey(key)];\n        });\n      };\n\n      /**\n       * If a prop switches from controlled to Uncontrolled\n       * reset its value to the defaultValue\n       */\n\n\n      component.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n        var _this3 = this;\n\n        var props = this.props;\n\n        if (mixin.componentWillReceiveProps) {\n          mixin.componentWillReceiveProps.call(this, nextProps);\n        }\n\n        controlledProps.forEach(function (key) {\n          if (utils.getValue(nextProps, key) === undefined && utils.getValue(props, key) !== undefined) {\n            _this3._values[key] = nextProps[utils.defaultKey(key)];\n          }\n        });\n      };\n\n      component.prototype.componentWillUnmount = function componentWillUnmount() {\n        this.unmounted = true;\n      };\n\n      component.prototype.getControlledInstance = function getControlledInstance() {\n        return this.refs.inner;\n      };\n\n      component.prototype.render = function render() {\n        var _this4 = this;\n\n        var newProps = {},\n            props = omitProps(this.props);\n\n        utils.each(controlledValues, function (handle, propName) {\n          var linkPropName = utils.getLinkName(propName),\n              prop = _this4.props[propName];\n\n          if (linkPropName && !isProp(_this4.props, propName) && isProp(_this4.props, linkPropName)) {\n            prop = _this4.props[linkPropName].value;\n          }\n\n          newProps[propName] = prop !== undefined ? prop : _this4._values[propName];\n\n          newProps[handle] = setAndNotify.bind(_this4, propName);\n        });\n\n        newProps = _extends({}, props, newProps, {\n          ref: isCompositeComponent ? 'inner' : null\n        });\n\n        return _react2.default.createElement(Component, newProps);\n      };\n\n      return component;\n    }(_react2.default.Component), _class.displayName = 'Uncontrolled(' + displayName + ')', _class.propTypes = propTypes, _temp);\n\n    _extends(component.prototype, methods);\n\n    component.ControlledComponent = Component;\n\n    /**\n     * useful when wrapping a Component and you want to control\n     * everything\n     */\n    component.deferControlTo = function (newComponent) {\n      var additions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var nextMethods = arguments[2];\n\n      return uncontrollable(newComponent, _extends({}, controlledValues, additions), nextMethods);\n    };\n\n    return component;\n\n    function setAndNotify(propName, value) {\n      var linkName = utils.getLinkName(propName),\n          handler = this.props[controlledValues[propName]];\n\n      if (linkName && isProp(this.props, linkName) && !handler) {\n        handler = this.props[linkName].requestChange;\n      }\n\n      for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n        args[_key2 - 2] = arguments[_key2];\n      }\n\n      set(this, propName, handler, value, args);\n    }\n\n    function isProp(props, prop) {\n      return props[prop] !== undefined;\n    }\n\n    function omitProps(props) {\n      var result = {};\n\n      utils.each(props, function (value, key) {\n        if (OMIT_PROPS.indexOf(key) === -1) result[key] = value;\n      });\n\n      return result;\n    }\n  }\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/uncontrollable/createUncontrollable.js\n// module id = 464\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\nexports.version = undefined;\nexports.uncontrolledPropTypes = uncontrolledPropTypes;\nexports.getType = getType;\nexports.getValue = getValue;\nexports.getLinkName = getLinkName;\nexports.defaultKey = defaultKey;\nexports.chain = chain;\nexports.transform = transform;\nexports.each = each;\nexports.has = has;\nexports.isReactComponent = isReactComponent;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction readOnlyPropType(handler, name) {\n  return function (props, propName) {\n    if (props[propName] !== undefined) {\n      if (!props[handler]) {\n        return new Error('You have provided a `' + propName + '` prop to ' + '`' + name + '` without an `' + handler + '` handler. This will render a read-only field. ' + 'If the field should be mutable use `' + defaultKey(propName) + '`. Otherwise, set `' + handler + '`');\n      }\n    }\n  };\n}\n\nfunction uncontrolledPropTypes(controlledValues, basePropTypes, displayName) {\n  var propTypes = {};\n\n  if (process.env.NODE_ENV !== 'production' && basePropTypes) {\n    transform(controlledValues, function (obj, handler, prop) {\n      (0, _invariant2.default)(typeof handler === 'string' && handler.trim().length, 'Uncontrollable - [%s]: the prop `%s` needs a valid handler key name in order to make it uncontrollable', displayName, prop);\n\n      obj[prop] = readOnlyPropType(handler, displayName);\n    }, propTypes);\n  }\n\n  return propTypes;\n}\n\nvar version = exports.version = _react2.default.version.split('.').map(parseFloat);\n\nfunction getType(component) {\n  if (version[0] >= 15 || version[0] === 0 && version[1] >= 13) return component;\n\n  return component.type;\n}\n\nfunction getValue(props, name) {\n  var linkPropName = getLinkName(name);\n\n  if (linkPropName && !isProp(props, name) && isProp(props, linkPropName)) return props[linkPropName].value;\n\n  return props[name];\n}\n\nfunction isProp(props, prop) {\n  return props[prop] !== undefined;\n}\n\nfunction getLinkName(name) {\n  return name === 'value' ? 'valueLink' : name === 'checked' ? 'checkedLink' : null;\n}\n\nfunction defaultKey(key) {\n  return 'default' + key.charAt(0).toUpperCase() + key.substr(1);\n}\n\nfunction chain(thisArg, a, b) {\n  return function chainedFunction() {\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    a && a.call.apply(a, [thisArg].concat(args));\n    b && b.call.apply(b, [thisArg].concat(args));\n  };\n}\n\nfunction transform(obj, cb, seed) {\n  each(obj, cb.bind(null, seed = seed || (Array.isArray(obj) ? [] : {})));\n  return seed;\n}\n\nfunction each(obj, cb, thisArg) {\n  if (Array.isArray(obj)) return obj.forEach(cb, thisArg);\n\n  for (var key in obj) {\n    if (has(obj, key)) cb.call(thisArg, obj[key], key, obj);\n  }\n}\n\nfunction has(o, k) {\n  return o ? Object.prototype.hasOwnProperty.call(o, k) : false;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\nfunction isReactComponent(component) {\n  return !!(component && component.prototype && component.prototype.isReactComponent);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/uncontrollable/utils.js\n// module id = 465\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _Array$from from 'babel-runtime/core-js/array/from';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport keycode from 'keycode';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport RootCloseWrapper from 'react-overlays/lib/RootCloseWrapper';\n\nimport { bsClass, getClassSet, prefix, splitBsPropsAndOmit } from './utils/bootstrapUtils';\nimport createChainedFunction from './utils/createChainedFunction';\nimport ValidComponentChildren from './utils/ValidComponentChildren';\n\nvar propTypes = {\n  open: PropTypes.bool,\n  pullRight: PropTypes.bool,\n  onClose: PropTypes.func,\n  labelledBy: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n  onSelect: PropTypes.func,\n  rootCloseEvent: PropTypes.oneOf(['click', 'mousedown'])\n};\n\nvar defaultProps = {\n  bsRole: 'menu',\n  pullRight: false\n};\n\nvar DropdownMenu = function (_React$Component) {\n  _inherits(DropdownMenu, _React$Component);\n\n  function DropdownMenu(props) {\n    _classCallCheck(this, DropdownMenu);\n\n    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props));\n\n    _this.handleRootClose = _this.handleRootClose.bind(_this);\n    _this.handleKeyDown = _this.handleKeyDown.bind(_this);\n    return _this;\n  }\n\n  DropdownMenu.prototype.getFocusableMenuItems = function getFocusableMenuItems() {\n    var node = ReactDOM.findDOMNode(this);\n    if (!node) {\n      return [];\n    }\n\n    return _Array$from(node.querySelectorAll('[tabIndex=\"-1\"]'));\n  };\n\n  DropdownMenu.prototype.getItemsAndActiveIndex = function getItemsAndActiveIndex() {\n    var items = this.getFocusableMenuItems();\n    var activeIndex = items.indexOf(document.activeElement);\n\n    return { items: items, activeIndex: activeIndex };\n  };\n\n  DropdownMenu.prototype.focusNext = function focusNext() {\n    var _getItemsAndActiveInd = this.getItemsAndActiveIndex(),\n        items = _getItemsAndActiveInd.items,\n        activeIndex = _getItemsAndActiveInd.activeIndex;\n\n    if (items.length === 0) {\n      return;\n    }\n\n    var nextIndex = activeIndex === items.length - 1 ? 0 : activeIndex + 1;\n    items[nextIndex].focus();\n  };\n\n  DropdownMenu.prototype.focusPrevious = function focusPrevious() {\n    var _getItemsAndActiveInd2 = this.getItemsAndActiveIndex(),\n        items = _getItemsAndActiveInd2.items,\n        activeIndex = _getItemsAndActiveInd2.activeIndex;\n\n    if (items.length === 0) {\n      return;\n    }\n\n    var prevIndex = activeIndex === 0 ? items.length - 1 : activeIndex - 1;\n    items[prevIndex].focus();\n  };\n\n  DropdownMenu.prototype.handleKeyDown = function handleKeyDown(event) {\n    switch (event.keyCode) {\n      case keycode.codes.down:\n        this.focusNext();\n        event.preventDefault();\n        break;\n      case keycode.codes.up:\n        this.focusPrevious();\n        event.preventDefault();\n        break;\n      case keycode.codes.esc:\n      case keycode.codes.tab:\n        this.props.onClose(event, { source: 'keydown' });\n        break;\n      default:\n    }\n  };\n\n  DropdownMenu.prototype.handleRootClose = function handleRootClose(event) {\n    this.props.onClose(event, { source: 'rootClose' });\n  };\n\n  DropdownMenu.prototype.render = function render() {\n    var _extends2,\n        _this2 = this;\n\n    var _props = this.props,\n        open = _props.open,\n        pullRight = _props.pullRight,\n        labelledBy = _props.labelledBy,\n        onSelect = _props.onSelect,\n        className = _props.className,\n        rootCloseEvent = _props.rootCloseEvent,\n        children = _props.children,\n        props = _objectWithoutProperties(_props, ['open', 'pullRight', 'labelledBy', 'onSelect', 'className', 'rootCloseEvent', 'children']);\n\n    var _splitBsPropsAndOmit = splitBsPropsAndOmit(props, ['onClose']),\n        bsProps = _splitBsPropsAndOmit[0],\n        elementProps = _splitBsPropsAndOmit[1];\n\n    var classes = _extends({}, getClassSet(bsProps), (_extends2 = {}, _extends2[prefix(bsProps, 'right')] = pullRight, _extends2));\n\n    return React.createElement(\n      RootCloseWrapper,\n      {\n        disabled: !open,\n        onRootClose: this.handleRootClose,\n        event: rootCloseEvent\n      },\n      React.createElement(\n        'ul',\n        _extends({}, elementProps, {\n          role: 'menu',\n          className: classNames(className, classes),\n          'aria-labelledby': labelledBy\n        }),\n        ValidComponentChildren.map(children, function (child) {\n          return React.cloneElement(child, {\n            onKeyDown: createChainedFunction(child.props.onKeyDown, _this2.handleKeyDown),\n            onSelect: createChainedFunction(child.props.onSelect, onSelect)\n          });\n        })\n      )\n    );\n  };\n\n  return DropdownMenu;\n}(React.Component);\n\nDropdownMenu.propTypes = propTypes;\nDropdownMenu.defaultProps = defaultProps;\n\nexport default bsClass('dropdown-menu', DropdownMenu);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/DropdownMenu.js\n// module id = 466\n// module chunks = 0","module.exports = { \"default\": require(\"core-js/library/fn/array/from\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/core-js/array/from.js\n// module id = 467\n// module chunks = 0","require('../../modules/es6.string.iterator');\nrequire('../../modules/es6.array.from');\nmodule.exports = require('../../modules/_core').Array.from;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/fn/array/from.js\n// module id = 468\n// module chunks = 0","'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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.array.from.js\n// module id = 469\n// module chunks = 0","// 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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_iter-call.js\n// module id = 470\n// module chunks = 0","// 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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_is-array-iter.js\n// module id = 471\n// module chunks = 0","'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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_create-property.js\n// module id = 472\n// module chunks = 0","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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/core.get-iterator-method.js\n// module id = 473\n// module chunks = 0","// 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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_classof.js\n// module id = 474\n// module chunks = 0","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\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/node_modules/core-js/library/modules/_iter-detect.js\n// module id = 475\n// module chunks = 0","import createChainableTypeChecker from 'prop-types-extra/lib/utils/createChainableTypeChecker';\n\nimport ValidComponentChildren from './ValidComponentChildren';\n\nexport function requiredRoles() {\n  for (var _len = arguments.length, roles = Array(_len), _key = 0; _key < _len; _key++) {\n    roles[_key] = arguments[_key];\n  }\n\n  return createChainableTypeChecker(function (props, propName, component) {\n    var missing = void 0;\n\n    roles.every(function (role) {\n      if (!ValidComponentChildren.some(props.children, function (child) {\n        return child.props.bsRole === role;\n      })) {\n        missing = role;\n        return false;\n      }\n\n      return true;\n    });\n\n    if (missing) {\n      return new Error('(children) ' + component + ' - Missing a required child with bsRole: ' + (missing + '. ' + component + ' must have at least one child of each of ') + ('the following bsRoles: ' + roles.join(', ')));\n    }\n\n    return null;\n  });\n}\n\nexport function exclusiveRoles() {\n  for (var _len2 = arguments.length, roles = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n    roles[_key2] = arguments[_key2];\n  }\n\n  return createChainableTypeChecker(function (props, propName, component) {\n    var duplicate = void 0;\n\n    roles.every(function (role) {\n      var childrenWithRole = ValidComponentChildren.filter(props.children, function (child) {\n        return child.props.bsRole === role;\n      });\n\n      if (childrenWithRole.length > 1) {\n        duplicate = role;\n        return false;\n      }\n\n      return true;\n    });\n\n    if (duplicate) {\n      return new Error('(children) ' + component + ' - Duplicate children detected of bsRole: ' + (duplicate + '. Only one child each allowed with the following ') + ('bsRoles: ' + roles.join(', ')));\n    }\n\n    return null;\n  });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/utils/PropTypes.js\n// module id = 476\n// module chunks = 0","import _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport _extends from 'babel-runtime/helpers/extends';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Dropdown from './Dropdown';\nimport splitComponentProps from './utils/splitComponentProps';\n\nvar propTypes = _extends({}, Dropdown.propTypes, {\n\n  // Toggle props.\n  bsStyle: PropTypes.string,\n  bsSize: PropTypes.string,\n  title: PropTypes.node.isRequired,\n  noCaret: PropTypes.bool,\n\n  // Override generated docs from <Dropdown>.\n  /**\n   * @private\n   */\n  children: PropTypes.node\n});\n\nvar DropdownButton = function (_React$Component) {\n  _inherits(DropdownButton, _React$Component);\n\n  function DropdownButton() {\n    _classCallCheck(this, DropdownButton);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  DropdownButton.prototype.render = function render() {\n    var _props = this.props,\n        bsSize = _props.bsSize,\n        bsStyle = _props.bsStyle,\n        title = _props.title,\n        children = _props.children,\n        props = _objectWithoutProperties(_props, ['bsSize', 'bsStyle', 'title', 'children']);\n\n    var _splitComponentProps = splitComponentProps(props, Dropdown.ControlledComponent),\n        dropdownProps = _splitComponentProps[0],\n        toggleProps = _splitComponentProps[1];\n\n    return React.createElement(\n      Dropdown,\n      _extends({}, dropdownProps, {\n        bsSize: bsSize,\n        bsStyle: bsStyle\n      }),\n      React.createElement(\n        Dropdown.Toggle,\n        _extends({}, toggleProps, {\n          bsSize: bsSize,\n          bsStyle: bsStyle\n        }),\n        title\n      ),\n      React.createElement(\n        Dropdown.Menu,\n        null,\n        children\n      )\n    );\n  };\n\n  return DropdownButton;\n}(React.Component);\n\nDropdownButton.propTypes = propTypes;\n\nexport default DropdownButton;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/DropdownButton.js\n// module id = 477\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport elementType from 'prop-types-extra/lib/elementType';\n\nimport { bsClass, prefix, splitBsProps } from './utils/bootstrapUtils';\n\nvar propTypes = {\n  horizontal: PropTypes.bool,\n  inline: PropTypes.bool,\n  componentClass: elementType\n};\n\nvar defaultProps = {\n  horizontal: false,\n  inline: false,\n  componentClass: 'form'\n};\n\nvar Form = function (_React$Component) {\n  _inherits(Form, _React$Component);\n\n  function Form() {\n    _classCallCheck(this, Form);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  Form.prototype.render = function render() {\n    var _props = this.props,\n        horizontal = _props.horizontal,\n        inline = _props.inline,\n        Component = _props.componentClass,\n        className = _props.className,\n        props = _objectWithoutProperties(_props, ['horizontal', 'inline', 'componentClass', 'className']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = [];\n    if (horizontal) {\n      classes.push(prefix(bsProps, 'horizontal'));\n    }\n    if (inline) {\n      classes.push(prefix(bsProps, 'inline'));\n    }\n\n    return React.createElement(Component, _extends({}, elementProps, {\n      className: classNames(className, classes)\n    }));\n  };\n\n  return Form;\n}(React.Component);\n\nForm.propTypes = propTypes;\nForm.defaultProps = defaultProps;\n\nexport default bsClass('form', Form);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/Form.js\n// module id = 478\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport elementType from 'prop-types-extra/lib/elementType';\nimport warning from 'warning';\n\nimport FormControlFeedback from './FormControlFeedback';\nimport FormControlStatic from './FormControlStatic';\nimport { prefix, bsClass, getClassSet, splitBsProps, bsSizes } from './utils/bootstrapUtils';\nimport { SIZE_MAP, Size } from './utils/StyleConfig';\n\nvar propTypes = {\n  componentClass: elementType,\n  /**\n   * Only relevant if `componentClass` is `'input'`.\n   */\n  type: PropTypes.string,\n  /**\n   * Uses `controlId` from `<FormGroup>` if not explicitly specified.\n   */\n  id: PropTypes.string,\n  /**\n   * Attaches a ref to the `<input>` element. Only functions can be used here.\n   *\n   * ```js\n   * <FormControl inputRef={ref => { this.input = ref; }} />\n   * ```\n   */\n  inputRef: PropTypes.func\n};\n\nvar defaultProps = {\n  componentClass: 'input'\n};\n\nvar contextTypes = {\n  $bs_formGroup: PropTypes.object\n};\n\nvar FormControl = function (_React$Component) {\n  _inherits(FormControl, _React$Component);\n\n  function FormControl() {\n    _classCallCheck(this, FormControl);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  FormControl.prototype.render = function render() {\n    var formGroup = this.context.$bs_formGroup;\n    var controlId = formGroup && formGroup.controlId;\n\n    var _props = this.props,\n        Component = _props.componentClass,\n        type = _props.type,\n        _props$id = _props.id,\n        id = _props$id === undefined ? controlId : _props$id,\n        inputRef = _props.inputRef,\n        className = _props.className,\n        bsSize = _props.bsSize,\n        props = _objectWithoutProperties(_props, ['componentClass', 'type', 'id', 'inputRef', 'className', 'bsSize']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    process.env.NODE_ENV !== 'production' ? warning(controlId == null || id === controlId, '`controlId` is ignored on `<FormControl>` when `id` is specified.') : void 0;\n\n    // input[type=\"file\"] should not have .form-control.\n    var classes = void 0;\n    if (type !== 'file') {\n      classes = getClassSet(bsProps);\n    }\n\n    // If user provides a size, make sure to append it to classes as input-\n    // e.g. if bsSize is small, it will append input-sm\n    if (bsSize) {\n      var size = SIZE_MAP[bsSize] || bsSize;\n      classes[prefix({ bsClass: 'input' }, size)] = true;\n    }\n\n    return React.createElement(Component, _extends({}, elementProps, {\n      type: type,\n      id: id,\n      ref: inputRef,\n      className: classNames(className, classes)\n    }));\n  };\n\n  return FormControl;\n}(React.Component);\n\nFormControl.propTypes = propTypes;\nFormControl.defaultProps = defaultProps;\nFormControl.contextTypes = contextTypes;\n\nFormControl.Feedback = FormControlFeedback;\nFormControl.Static = FormControlStatic;\n\nexport default bsClass('form-control', bsSizes([Size.SMALL, Size.LARGE], FormControl));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/FormControl.js\n// module id = 479\n// module chunks = 0","import _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _extends from 'babel-runtime/helpers/extends';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Glyphicon from './Glyphicon';\nimport { bsClass, getClassSet, splitBsProps } from './utils/bootstrapUtils';\n\nvar defaultProps = {\n  bsRole: 'feedback'\n};\n\nvar contextTypes = {\n  $bs_formGroup: PropTypes.object\n};\n\nvar FormControlFeedback = function (_React$Component) {\n  _inherits(FormControlFeedback, _React$Component);\n\n  function FormControlFeedback() {\n    _classCallCheck(this, FormControlFeedback);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  FormControlFeedback.prototype.getGlyph = function getGlyph(validationState) {\n    switch (validationState) {\n      case 'success':\n        return 'ok';\n      case 'warning':\n        return 'warning-sign';\n      case 'error':\n        return 'remove';\n      default:\n        return null;\n    }\n  };\n\n  FormControlFeedback.prototype.renderDefaultFeedback = function renderDefaultFeedback(formGroup, className, classes, elementProps) {\n    var glyph = this.getGlyph(formGroup && formGroup.validationState);\n    if (!glyph) {\n      return null;\n    }\n\n    return React.createElement(Glyphicon, _extends({}, elementProps, {\n      glyph: glyph,\n      className: classNames(className, classes)\n    }));\n  };\n\n  FormControlFeedback.prototype.render = function render() {\n    var _props = this.props,\n        className = _props.className,\n        children = _props.children,\n        props = _objectWithoutProperties(_props, ['className', 'children']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = getClassSet(bsProps);\n\n    if (!children) {\n      return this.renderDefaultFeedback(this.context.$bs_formGroup, className, classes, elementProps);\n    }\n\n    var child = React.Children.only(children);\n    return React.cloneElement(child, _extends({}, elementProps, {\n      className: classNames(child.props.className, className, classes)\n    }));\n  };\n\n  return FormControlFeedback;\n}(React.Component);\n\nFormControlFeedback.defaultProps = defaultProps;\nFormControlFeedback.contextTypes = contextTypes;\n\nexport default bsClass('form-control-feedback', FormControlFeedback);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/FormControlFeedback.js\n// module id = 480\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport elementType from 'prop-types-extra/lib/elementType';\n\nimport { bsClass, getClassSet, splitBsProps } from './utils/bootstrapUtils';\n\nvar propTypes = {\n  componentClass: elementType\n};\n\nvar defaultProps = {\n  componentClass: 'p'\n};\n\nvar FormControlStatic = function (_React$Component) {\n  _inherits(FormControlStatic, _React$Component);\n\n  function FormControlStatic() {\n    _classCallCheck(this, FormControlStatic);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  FormControlStatic.prototype.render = function render() {\n    var _props = this.props,\n        Component = _props.componentClass,\n        className = _props.className,\n        props = _objectWithoutProperties(_props, ['componentClass', 'className']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = getClassSet(bsProps);\n\n    return React.createElement(Component, _extends({}, elementProps, {\n      className: classNames(className, classes)\n    }));\n  };\n\n  return FormControlStatic;\n}(React.Component);\n\nFormControlStatic.propTypes = propTypes;\nFormControlStatic.defaultProps = defaultProps;\n\nexport default bsClass('form-control-static', FormControlStatic);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/FormControlStatic.js\n// module id = 481\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { bsClass, bsSizes, getClassSet, splitBsPropsAndOmit } from './utils/bootstrapUtils';\nimport { Size } from './utils/StyleConfig';\nimport ValidComponentChildren from './utils/ValidComponentChildren';\n\nvar propTypes = {\n  /**\n   * Sets `id` on `<FormControl>` and `htmlFor` on `<FormGroup.Label>`.\n   */\n  controlId: PropTypes.string,\n  validationState: PropTypes.oneOf(['success', 'warning', 'error', null])\n};\n\nvar childContextTypes = {\n  $bs_formGroup: PropTypes.object.isRequired\n};\n\nvar FormGroup = function (_React$Component) {\n  _inherits(FormGroup, _React$Component);\n\n  function FormGroup() {\n    _classCallCheck(this, FormGroup);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  FormGroup.prototype.getChildContext = function getChildContext() {\n    var _props = this.props,\n        controlId = _props.controlId,\n        validationState = _props.validationState;\n\n\n    return {\n      $bs_formGroup: {\n        controlId: controlId,\n        validationState: validationState\n      }\n    };\n  };\n\n  FormGroup.prototype.hasFeedback = function hasFeedback(children) {\n    var _this2 = this;\n\n    return ValidComponentChildren.some(children, function (child) {\n      return child.props.bsRole === 'feedback' || child.props.children && _this2.hasFeedback(child.props.children);\n    });\n  };\n\n  FormGroup.prototype.render = function render() {\n    var _props2 = this.props,\n        validationState = _props2.validationState,\n        className = _props2.className,\n        children = _props2.children,\n        props = _objectWithoutProperties(_props2, ['validationState', 'className', 'children']);\n\n    var _splitBsPropsAndOmit = splitBsPropsAndOmit(props, ['controlId']),\n        bsProps = _splitBsPropsAndOmit[0],\n        elementProps = _splitBsPropsAndOmit[1];\n\n    var classes = _extends({}, getClassSet(bsProps), {\n      'has-feedback': this.hasFeedback(children)\n    });\n    if (validationState) {\n      classes['has-' + validationState] = true;\n    }\n\n    return React.createElement(\n      'div',\n      _extends({}, elementProps, {\n        className: classNames(className, classes)\n      }),\n      children\n    );\n  };\n\n  return FormGroup;\n}(React.Component);\n\nFormGroup.propTypes = propTypes;\nFormGroup.childContextTypes = childContextTypes;\n\nexport default bsClass('form-group', bsSizes([Size.LARGE, Size.SMALL], FormGroup));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/FormGroup.js\n// module id = 482\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\n\nimport { bsClass, getClassSet, splitBsProps } from './utils/bootstrapUtils';\n\nvar HelpBlock = function (_React$Component) {\n  _inherits(HelpBlock, _React$Component);\n\n  function HelpBlock() {\n    _classCallCheck(this, HelpBlock);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  HelpBlock.prototype.render = function render() {\n    var _props = this.props,\n        className = _props.className,\n        props = _objectWithoutProperties(_props, ['className']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = getClassSet(bsProps);\n\n    return React.createElement('span', _extends({}, elementProps, {\n      className: classNames(className, classes)\n    }));\n  };\n\n  return HelpBlock;\n}(React.Component);\n\nexport default bsClass('help-block', HelpBlock);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/HelpBlock.js\n// module id = 483\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { bsClass, prefix, splitBsProps } from './utils/bootstrapUtils';\n\nvar propTypes = {\n  /**\n   * Sets image as responsive image\n   */\n  responsive: PropTypes.bool,\n\n  /**\n   * Sets image shape as rounded\n   */\n  rounded: PropTypes.bool,\n\n  /**\n   * Sets image shape as circle\n   */\n  circle: PropTypes.bool,\n\n  /**\n   * Sets image shape as thumbnail\n   */\n  thumbnail: PropTypes.bool\n};\n\nvar defaultProps = {\n  responsive: false,\n  rounded: false,\n  circle: false,\n  thumbnail: false\n};\n\nvar Image = function (_React$Component) {\n  _inherits(Image, _React$Component);\n\n  function Image() {\n    _classCallCheck(this, Image);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  Image.prototype.render = function render() {\n    var _classes;\n\n    var _props = this.props,\n        responsive = _props.responsive,\n        rounded = _props.rounded,\n        circle = _props.circle,\n        thumbnail = _props.thumbnail,\n        className = _props.className,\n        props = _objectWithoutProperties(_props, ['responsive', 'rounded', 'circle', 'thumbnail', 'className']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = (_classes = {}, _classes[prefix(bsProps, 'responsive')] = responsive, _classes[prefix(bsProps, 'rounded')] = rounded, _classes[prefix(bsProps, 'circle')] = circle, _classes[prefix(bsProps, 'thumbnail')] = thumbnail, _classes);\n\n    return React.createElement('img', _extends({}, elementProps, {\n      className: classNames(className, classes)\n    }));\n  };\n\n  return Image;\n}(React.Component);\n\nImage.propTypes = propTypes;\nImage.defaultProps = defaultProps;\n\nexport default bsClass('img', Image);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/Image.js\n// module id = 484\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\n\nimport InputGroupAddon from './InputGroupAddon';\nimport InputGroupButton from './InputGroupButton';\nimport { bsClass, bsSizes, getClassSet, splitBsProps } from './utils/bootstrapUtils';\nimport { Size } from './utils/StyleConfig';\n\nvar InputGroup = function (_React$Component) {\n  _inherits(InputGroup, _React$Component);\n\n  function InputGroup() {\n    _classCallCheck(this, InputGroup);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  InputGroup.prototype.render = function render() {\n    var _props = this.props,\n        className = _props.className,\n        props = _objectWithoutProperties(_props, ['className']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = getClassSet(bsProps);\n\n    return React.createElement('span', _extends({}, elementProps, {\n      className: classNames(className, classes)\n    }));\n  };\n\n  return InputGroup;\n}(React.Component);\n\nInputGroup.Addon = InputGroupAddon;\nInputGroup.Button = InputGroupButton;\n\nexport default bsClass('input-group', bsSizes([Size.LARGE, Size.SMALL], InputGroup));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/InputGroup.js\n// module id = 485\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\n\nimport { bsClass, getClassSet, splitBsProps } from './utils/bootstrapUtils';\n\nvar InputGroupAddon = function (_React$Component) {\n  _inherits(InputGroupAddon, _React$Component);\n\n  function InputGroupAddon() {\n    _classCallCheck(this, InputGroupAddon);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  InputGroupAddon.prototype.render = function render() {\n    var _props = this.props,\n        className = _props.className,\n        props = _objectWithoutProperties(_props, ['className']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = getClassSet(bsProps);\n\n    return React.createElement('span', _extends({}, elementProps, {\n      className: classNames(className, classes)\n    }));\n  };\n\n  return InputGroupAddon;\n}(React.Component);\n\nexport default bsClass('input-group-addon', InputGroupAddon);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/InputGroupAddon.js\n// module id = 486\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\n\nimport { bsClass, getClassSet, splitBsProps } from './utils/bootstrapUtils';\n\nvar InputGroupButton = function (_React$Component) {\n  _inherits(InputGroupButton, _React$Component);\n\n  function InputGroupButton() {\n    _classCallCheck(this, InputGroupButton);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  InputGroupButton.prototype.render = function render() {\n    var _props = this.props,\n        className = _props.className,\n        props = _objectWithoutProperties(_props, ['className']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = getClassSet(bsProps);\n\n    return React.createElement('span', _extends({}, elementProps, {\n      className: classNames(className, classes)\n    }));\n  };\n\n  return InputGroupButton;\n}(React.Component);\n\nexport default bsClass('input-group-btn', InputGroupButton);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/InputGroupButton.js\n// module id = 487\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport React from 'react';\nimport classNames from 'classnames';\nimport elementType from 'prop-types-extra/lib/elementType';\n\nimport { bsClass, getClassSet, splitBsProps } from './utils/bootstrapUtils';\n\nvar propTypes = {\n  componentClass: elementType\n};\n\nvar defaultProps = {\n  componentClass: 'div'\n};\n\nvar Jumbotron = function (_React$Component) {\n  _inherits(Jumbotron, _React$Component);\n\n  function Jumbotron() {\n    _classCallCheck(this, Jumbotron);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  Jumbotron.prototype.render = function render() {\n    var _props = this.props,\n        Component = _props.componentClass,\n        className = _props.className,\n        props = _objectWithoutProperties(_props, ['componentClass', 'className']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = getClassSet(bsProps);\n\n    return React.createElement(Component, _extends({}, elementProps, {\n      className: classNames(className, classes)\n    }));\n  };\n\n  return Jumbotron;\n}(React.Component);\n\nJumbotron.propTypes = propTypes;\nJumbotron.defaultProps = defaultProps;\n\nexport default bsClass('jumbotron', Jumbotron);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/Jumbotron.js\n// module id = 488\n// module chunks = 0","import _Object$values from 'babel-runtime/core-js/object/values';\nimport _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\n\nimport { bsClass, bsStyles, getClassSet, splitBsProps } from './utils/bootstrapUtils';\nimport { State, Style } from './utils/StyleConfig';\n\nvar Label = function (_React$Component) {\n  _inherits(Label, _React$Component);\n\n  function Label() {\n    _classCallCheck(this, Label);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  Label.prototype.hasContent = function hasContent(children) {\n    var result = false;\n\n    React.Children.forEach(children, function (child) {\n      if (result) {\n        return;\n      }\n\n      if (child || child === 0) {\n        result = true;\n      }\n    });\n\n    return result;\n  };\n\n  Label.prototype.render = function render() {\n    var _props = this.props,\n        className = _props.className,\n        children = _props.children,\n        props = _objectWithoutProperties(_props, ['className', 'children']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = _extends({}, getClassSet(bsProps), {\n\n      // Hack for collapsing on IE8.\n      hidden: !this.hasContent(children)\n    });\n\n    return React.createElement(\n      'span',\n      _extends({}, elementProps, {\n        className: classNames(className, classes)\n      }),\n      children\n    );\n  };\n\n  return Label;\n}(React.Component);\n\nexport default bsClass('label', bsStyles([].concat(_Object$values(State), [Style.DEFAULT, Style.PRIMARY]), Style.DEFAULT, Label));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/Label.js\n// module id = 489\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React, { cloneElement } from 'react';\nimport elementType from 'prop-types-extra/lib/elementType';\n\nimport ListGroupItem from './ListGroupItem';\nimport { bsClass, getClassSet, splitBsProps } from './utils/bootstrapUtils';\nimport ValidComponentChildren from './utils/ValidComponentChildren';\n\nvar propTypes = {\n  /**\n   * You can use a custom element type for this component.\n   *\n   * If not specified, it will be treated as `'li'` if every child is a\n   * non-actionable `<ListGroupItem>`, and `'div'` otherwise.\n   */\n  componentClass: elementType\n};\n\nfunction getDefaultComponent(children) {\n  if (!children) {\n    // FIXME: This is the old behavior. Is this right?\n    return 'div';\n  }\n\n  if (ValidComponentChildren.some(children, function (child) {\n    return child.type !== ListGroupItem || child.props.href || child.props.onClick;\n  })) {\n    return 'div';\n  }\n\n  return 'ul';\n}\n\nvar ListGroup = function (_React$Component) {\n  _inherits(ListGroup, _React$Component);\n\n  function ListGroup() {\n    _classCallCheck(this, ListGroup);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  ListGroup.prototype.render = function render() {\n    var _props = this.props,\n        children = _props.children,\n        _props$componentClass = _props.componentClass,\n        Component = _props$componentClass === undefined ? getDefaultComponent(children) : _props$componentClass,\n        className = _props.className,\n        props = _objectWithoutProperties(_props, ['children', 'componentClass', 'className']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = getClassSet(bsProps);\n\n    var useListItem = Component === 'ul' && ValidComponentChildren.every(children, function (child) {\n      return child.type === ListGroupItem;\n    });\n\n    return React.createElement(\n      Component,\n      _extends({}, elementProps, {\n        className: classNames(className, classes)\n      }),\n      useListItem ? ValidComponentChildren.map(children, function (child) {\n        return cloneElement(child, { listItem: true });\n      }) : children\n    );\n  };\n\n  return ListGroup;\n}(React.Component);\n\nListGroup.propTypes = propTypes;\n\nexport default bsClass('list-group', ListGroup);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/ListGroup.js\n// module id = 490\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport elementType from 'prop-types-extra/lib/elementType';\n\nimport Media from './Media';\nimport { bsClass, getClassSet, prefix, splitBsProps } from './utils/bootstrapUtils';\n\nvar propTypes = {\n  /**\n   * Align the media to the top, middle, or bottom of the media object.\n   */\n  align: PropTypes.oneOf(['top', 'middle', 'bottom']),\n\n  componentClass: elementType\n};\n\nvar defaultProps = {\n  componentClass: 'div'\n};\n\nvar MediaBody = function (_React$Component) {\n  _inherits(MediaBody, _React$Component);\n\n  function MediaBody() {\n    _classCallCheck(this, MediaBody);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  MediaBody.prototype.render = function render() {\n    var _props = this.props,\n        Component = _props.componentClass,\n        align = _props.align,\n        className = _props.className,\n        props = _objectWithoutProperties(_props, ['componentClass', 'align', 'className']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = getClassSet(bsProps);\n\n    if (align) {\n      // The class is e.g. `media-top`, not `media-left-top`.\n      classes[prefix(Media.defaultProps, align)] = true;\n    }\n\n    return React.createElement(Component, _extends({}, elementProps, {\n      className: classNames(className, classes)\n    }));\n  };\n\n  return MediaBody;\n}(React.Component);\n\nMediaBody.propTypes = propTypes;\nMediaBody.defaultProps = defaultProps;\n\nexport default bsClass('media-body', MediaBody);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/MediaBody.js\n// module id = 491\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport elementType from 'prop-types-extra/lib/elementType';\n\nimport { bsClass, getClassSet, splitBsProps } from './utils/bootstrapUtils';\n\nvar propTypes = {\n  componentClass: elementType\n};\n\nvar defaultProps = {\n  componentClass: 'h4'\n};\n\nvar MediaHeading = function (_React$Component) {\n  _inherits(MediaHeading, _React$Component);\n\n  function MediaHeading() {\n    _classCallCheck(this, MediaHeading);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  MediaHeading.prototype.render = function render() {\n    var _props = this.props,\n        Component = _props.componentClass,\n        className = _props.className,\n        props = _objectWithoutProperties(_props, ['componentClass', 'className']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = getClassSet(bsProps);\n\n    return React.createElement(Component, _extends({}, elementProps, {\n      className: classNames(className, classes)\n    }));\n  };\n\n  return MediaHeading;\n}(React.Component);\n\nMediaHeading.propTypes = propTypes;\nMediaHeading.defaultProps = defaultProps;\n\nexport default bsClass('media-heading', MediaHeading);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/MediaHeading.js\n// module id = 492\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Media from './Media';\nimport { bsClass, getClassSet, prefix, splitBsProps } from './utils/bootstrapUtils';\n\nvar propTypes = {\n  /**\n   * Align the media to the top, middle, or bottom of the media object.\n   */\n  align: PropTypes.oneOf(['top', 'middle', 'bottom'])\n};\n\nvar MediaLeft = function (_React$Component) {\n  _inherits(MediaLeft, _React$Component);\n\n  function MediaLeft() {\n    _classCallCheck(this, MediaLeft);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  MediaLeft.prototype.render = function render() {\n    var _props = this.props,\n        align = _props.align,\n        className = _props.className,\n        props = _objectWithoutProperties(_props, ['align', 'className']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = getClassSet(bsProps);\n\n    if (align) {\n      // The class is e.g. `media-top`, not `media-left-top`.\n      classes[prefix(Media.defaultProps, align)] = true;\n    }\n\n    return React.createElement('div', _extends({}, elementProps, {\n      className: classNames(className, classes)\n    }));\n  };\n\n  return MediaLeft;\n}(React.Component);\n\nMediaLeft.propTypes = propTypes;\n\nexport default bsClass('media-left', MediaLeft);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/MediaLeft.js\n// module id = 493\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\n\nimport { bsClass, getClassSet, splitBsProps } from './utils/bootstrapUtils';\n\nvar MediaList = function (_React$Component) {\n  _inherits(MediaList, _React$Component);\n\n  function MediaList() {\n    _classCallCheck(this, MediaList);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  MediaList.prototype.render = function render() {\n    var _props = this.props,\n        className = _props.className,\n        props = _objectWithoutProperties(_props, ['className']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = getClassSet(bsProps);\n\n    return React.createElement('ul', _extends({}, elementProps, {\n      className: classNames(className, classes)\n    }));\n  };\n\n  return MediaList;\n}(React.Component);\n\nexport default bsClass('media-list', MediaList);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/MediaList.js\n// module id = 494\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\n\nimport { bsClass, getClassSet, splitBsProps } from './utils/bootstrapUtils';\n\nvar MediaListItem = function (_React$Component) {\n  _inherits(MediaListItem, _React$Component);\n\n  function MediaListItem() {\n    _classCallCheck(this, MediaListItem);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  MediaListItem.prototype.render = function render() {\n    var _props = this.props,\n        className = _props.className,\n        props = _objectWithoutProperties(_props, ['className']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = getClassSet(bsProps);\n\n    return React.createElement('li', _extends({}, elementProps, {\n      className: classNames(className, classes)\n    }));\n  };\n\n  return MediaListItem;\n}(React.Component);\n\nexport default bsClass('media', MediaListItem);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/MediaListItem.js\n// module id = 495\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Media from './Media';\nimport { bsClass, getClassSet, prefix, splitBsProps } from './utils/bootstrapUtils';\n\nvar propTypes = {\n  /**\n   * Align the media to the top, middle, or bottom of the media object.\n   */\n  align: PropTypes.oneOf(['top', 'middle', 'bottom'])\n};\n\nvar MediaRight = function (_React$Component) {\n  _inherits(MediaRight, _React$Component);\n\n  function MediaRight() {\n    _classCallCheck(this, MediaRight);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  MediaRight.prototype.render = function render() {\n    var _props = this.props,\n        align = _props.align,\n        className = _props.className,\n        props = _objectWithoutProperties(_props, ['align', 'className']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = getClassSet(bsProps);\n\n    if (align) {\n      // The class is e.g. `media-top`, not `media-right-top`.\n      classes[prefix(Media.defaultProps, align)] = true;\n    }\n\n    return React.createElement('div', _extends({}, elementProps, {\n      className: classNames(className, classes)\n    }));\n  };\n\n  return MediaRight;\n}(React.Component);\n\nMediaRight.propTypes = propTypes;\n\nexport default bsClass('media-right', MediaRight);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/MediaRight.js\n// module id = 496\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport all from 'prop-types-extra/lib/all';\n\nimport SafeAnchor from './SafeAnchor';\nimport { bsClass, prefix, splitBsPropsAndOmit } from './utils/bootstrapUtils';\nimport createChainedFunction from './utils/createChainedFunction';\n\nvar propTypes = {\n  /**\n   * Highlight the menu item as active.\n   */\n  active: PropTypes.bool,\n\n  /**\n   * Disable the menu item, making it unselectable.\n   */\n  disabled: PropTypes.bool,\n\n  /**\n   * Styles the menu item as a horizontal rule, providing visual separation between\n   * groups of menu items.\n   */\n  divider: all(PropTypes.bool, function (_ref) {\n    var divider = _ref.divider,\n        children = _ref.children;\n    return divider && children ? new Error('Children will not be rendered for dividers') : null;\n  }),\n\n  /**\n   * Value passed to the `onSelect` handler, useful for identifying the selected menu item.\n   */\n  eventKey: PropTypes.any,\n\n  /**\n   * Styles the menu item as a header label, useful for describing a group of menu items.\n   */\n  header: PropTypes.bool,\n\n  /**\n   * HTML `href` attribute corresponding to `a.href`.\n   */\n  href: PropTypes.string,\n\n  /**\n   * Callback fired when the menu item is clicked.\n   */\n  onClick: PropTypes.func,\n\n  /**\n   * Callback fired when the menu item is selected.\n   *\n   * ```js\n   * (eventKey: any, event: Object) => any\n   * ```\n   */\n  onSelect: PropTypes.func\n};\n\nvar defaultProps = {\n  divider: false,\n  disabled: false,\n  header: false\n};\n\nvar MenuItem = function (_React$Component) {\n  _inherits(MenuItem, _React$Component);\n\n  function MenuItem(props, context) {\n    _classCallCheck(this, MenuItem);\n\n    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n\n    _this.handleClick = _this.handleClick.bind(_this);\n    return _this;\n  }\n\n  MenuItem.prototype.handleClick = function handleClick(event) {\n    var _props = this.props,\n        href = _props.href,\n        disabled = _props.disabled,\n        onSelect = _props.onSelect,\n        eventKey = _props.eventKey;\n\n\n    if (!href || disabled) {\n      event.preventDefault();\n    }\n\n    if (disabled) {\n      return;\n    }\n\n    if (onSelect) {\n      onSelect(eventKey, event);\n    }\n  };\n\n  MenuItem.prototype.render = function render() {\n    var _props2 = this.props,\n        active = _props2.active,\n        disabled = _props2.disabled,\n        divider = _props2.divider,\n        header = _props2.header,\n        onClick = _props2.onClick,\n        className = _props2.className,\n        style = _props2.style,\n        props = _objectWithoutProperties(_props2, ['active', 'disabled', 'divider', 'header', 'onClick', 'className', 'style']);\n\n    var _splitBsPropsAndOmit = splitBsPropsAndOmit(props, ['eventKey', 'onSelect']),\n        bsProps = _splitBsPropsAndOmit[0],\n        elementProps = _splitBsPropsAndOmit[1];\n\n    if (divider) {\n      // Forcibly blank out the children; separators shouldn't render any.\n      elementProps.children = undefined;\n\n      return React.createElement('li', _extends({}, elementProps, {\n        role: 'separator',\n        className: classNames(className, 'divider'),\n        style: style\n      }));\n    }\n\n    if (header) {\n      return React.createElement('li', _extends({}, elementProps, {\n        role: 'heading',\n        className: classNames(className, prefix(bsProps, 'header')),\n        style: style\n      }));\n    }\n\n    return React.createElement(\n      'li',\n      {\n        role: 'presentation',\n        className: classNames(className, { active: active, disabled: disabled }),\n        style: style\n      },\n      React.createElement(SafeAnchor, _extends({}, elementProps, {\n        role: 'menuitem',\n        tabIndex: '-1',\n        onClick: createChainedFunction(onClick, this.handleClick)\n      }))\n    );\n  };\n\n  return MenuItem;\n}(React.Component);\n\nMenuItem.propTypes = propTypes;\nMenuItem.defaultProps = defaultProps;\n\nexport default bsClass('dropdown', MenuItem);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/MenuItem.js\n// module id = 497\n// module chunks = 0","import _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport _extends from 'babel-runtime/helpers/extends';\nimport classNames from 'classnames';\nimport events from 'dom-helpers/events';\nimport ownerDocument from 'dom-helpers/ownerDocument';\nimport canUseDOM from 'dom-helpers/util/inDOM';\nimport getScrollbarSize from 'dom-helpers/util/scrollbarSize';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport BaseModal from 'react-overlays/lib/Modal';\nimport isOverflowing from 'react-overlays/lib/utils/isOverflowing';\nimport elementType from 'prop-types-extra/lib/elementType';\n\nimport Fade from './Fade';\nimport Body from './ModalBody';\nimport ModalDialog from './ModalDialog';\nimport Footer from './ModalFooter';\nimport Header from './ModalHeader';\nimport Title from './ModalTitle';\nimport { bsClass, bsSizes, prefix } from './utils/bootstrapUtils';\nimport createChainedFunction from './utils/createChainedFunction';\nimport splitComponentProps from './utils/splitComponentProps';\nimport { Size } from './utils/StyleConfig';\n\nvar propTypes = _extends({}, BaseModal.propTypes, ModalDialog.propTypes, {\n\n  /**\n   * Include a backdrop component. Specify 'static' for a backdrop that doesn't\n   * trigger an \"onHide\" when clicked.\n   */\n  backdrop: PropTypes.oneOf(['static', true, false]),\n\n  /**\n   * Add an optional extra class name to .modal-backdrop\n   * It could end up looking like class=\"modal-backdrop foo-modal-backdrop in\".\n   */\n  backdropClassName: PropTypes.string,\n\n  /**\n   * Close the modal when escape key is pressed\n   */\n  keyboard: PropTypes.bool,\n\n  /**\n   * Open and close the Modal with a slide and fade animation.\n   */\n  animation: PropTypes.bool,\n\n  /**\n   * A Component type that provides the modal content Markup. This is a useful\n   * prop when you want to use your own styles and markup to create a custom\n   * modal component.\n   */\n  dialogComponentClass: elementType,\n\n  /**\n   * When `true` The modal will automatically shift focus to itself when it\n   * opens, and replace it to the last focused element when it closes.\n   * Generally this should never be set to false as it makes the Modal less\n   * accessible to assistive technologies, like screen-readers.\n   */\n  autoFocus: PropTypes.bool,\n\n  /**\n   * When `true` The modal will prevent focus from leaving the Modal while\n   * open. Consider leaving the default value here, as it is necessary to make\n   * the Modal work well with assistive technologies, such as screen readers.\n   */\n  enforceFocus: PropTypes.bool,\n\n  /**\n   * When `true` The modal will restore focus to previously focused element once\n   * modal is hidden\n   */\n  restoreFocus: PropTypes.bool,\n\n  /**\n   * When `true` The modal will show itself.\n   */\n  show: PropTypes.bool,\n\n  /**\n   * A callback fired when the header closeButton or non-static backdrop is\n   * clicked. Required if either are specified.\n   */\n  onHide: PropTypes.func,\n\n  /**\n   * Callback fired before the Modal transitions in\n   */\n  onEnter: PropTypes.func,\n\n  /**\n   * Callback fired as the Modal begins to transition in\n   */\n  onEntering: PropTypes.func,\n\n  /**\n   * Callback fired after the Modal finishes transitioning in\n   */\n  onEntered: PropTypes.func,\n\n  /**\n   * Callback fired right before the Modal transitions out\n   */\n  onExit: PropTypes.func,\n\n  /**\n   * Callback fired as the Modal begins to transition out\n   */\n  onExiting: PropTypes.func,\n\n  /**\n   * Callback fired after the Modal finishes transitioning out\n   */\n  onExited: PropTypes.func,\n\n  /**\n   * @private\n   */\n  container: BaseModal.propTypes.container\n});\n\nvar defaultProps = _extends({}, BaseModal.defaultProps, {\n  animation: true,\n  dialogComponentClass: ModalDialog\n});\n\nvar childContextTypes = {\n  $bs_modal: PropTypes.shape({\n    onHide: PropTypes.func\n  })\n};\n\nvar Modal = function (_React$Component) {\n  _inherits(Modal, _React$Component);\n\n  function Modal(props, context) {\n    _classCallCheck(this, Modal);\n\n    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n\n    _this.handleEntering = _this.handleEntering.bind(_this);\n    _this.handleExited = _this.handleExited.bind(_this);\n    _this.handleWindowResize = _this.handleWindowResize.bind(_this);\n    _this.handleDialogClick = _this.handleDialogClick.bind(_this);\n    _this.setModalRef = _this.setModalRef.bind(_this);\n\n    _this.state = {\n      style: {}\n    };\n    return _this;\n  }\n\n  Modal.prototype.getChildContext = function getChildContext() {\n    return {\n      $bs_modal: {\n        onHide: this.props.onHide\n      }\n    };\n  };\n\n  Modal.prototype.componentWillUnmount = function componentWillUnmount() {\n    // Clean up the listener if we need to.\n    this.handleExited();\n  };\n\n  Modal.prototype.setModalRef = function setModalRef(ref) {\n    this._modal = ref;\n  };\n\n  Modal.prototype.handleDialogClick = function handleDialogClick(e) {\n    if (e.target !== e.currentTarget) {\n      return;\n    }\n\n    this.props.onHide();\n  };\n\n  Modal.prototype.handleEntering = function handleEntering() {\n    // FIXME: This should work even when animation is disabled.\n    events.on(window, 'resize', this.handleWindowResize);\n    this.updateStyle();\n  };\n\n  Modal.prototype.handleExited = function handleExited() {\n    // FIXME: This should work even when animation is disabled.\n    events.off(window, 'resize', this.handleWindowResize);\n  };\n\n  Modal.prototype.handleWindowResize = function handleWindowResize() {\n    this.updateStyle();\n  };\n\n  Modal.prototype.updateStyle = function updateStyle() {\n    if (!canUseDOM) {\n      return;\n    }\n\n    var dialogNode = this._modal.getDialogElement();\n    var dialogHeight = dialogNode.scrollHeight;\n\n    var document = ownerDocument(dialogNode);\n    var bodyIsOverflowing = isOverflowing(ReactDOM.findDOMNode(this.props.container || document.body));\n    var modalIsOverflowing = dialogHeight > document.documentElement.clientHeight;\n\n    this.setState({\n      style: {\n        paddingRight: bodyIsOverflowing && !modalIsOverflowing ? getScrollbarSize() : undefined,\n        paddingLeft: !bodyIsOverflowing && modalIsOverflowing ? getScrollbarSize() : undefined\n      }\n    });\n  };\n\n  Modal.prototype.render = function render() {\n    var _props = this.props,\n        backdrop = _props.backdrop,\n        backdropClassName = _props.backdropClassName,\n        animation = _props.animation,\n        show = _props.show,\n        Dialog = _props.dialogComponentClass,\n        className = _props.className,\n        style = _props.style,\n        children = _props.children,\n        onEntering = _props.onEntering,\n        onExited = _props.onExited,\n        props = _objectWithoutProperties(_props, ['backdrop', 'backdropClassName', 'animation', 'show', 'dialogComponentClass', 'className', 'style', 'children', 'onEntering', 'onExited']);\n\n    var _splitComponentProps = splitComponentProps(props, BaseModal),\n        baseModalProps = _splitComponentProps[0],\n        dialogProps = _splitComponentProps[1];\n\n    var inClassName = show && !animation && 'in';\n\n    return React.createElement(\n      BaseModal,\n      _extends({}, baseModalProps, {\n        ref: this.setModalRef,\n        show: show,\n        onEntering: createChainedFunction(onEntering, this.handleEntering),\n        onExited: createChainedFunction(onExited, this.handleExited),\n        backdrop: backdrop,\n        backdropClassName: classNames(prefix(props, 'backdrop'), backdropClassName, inClassName),\n        containerClassName: prefix(props, 'open'),\n        transition: animation ? Fade : undefined,\n        dialogTransitionTimeout: Modal.TRANSITION_DURATION,\n        backdropTransitionTimeout: Modal.BACKDROP_TRANSITION_DURATION\n      }),\n      React.createElement(\n        Dialog,\n        _extends({}, dialogProps, {\n          style: _extends({}, this.state.style, style),\n          className: classNames(className, inClassName),\n          onClick: backdrop === true ? this.handleDialogClick : null\n        }),\n        children\n      )\n    );\n  };\n\n  return Modal;\n}(React.Component);\n\nModal.propTypes = propTypes;\nModal.defaultProps = defaultProps;\nModal.childContextTypes = childContextTypes;\n\nModal.Body = Body;\nModal.Header = Header;\nModal.Title = Title;\nModal.Footer = Footer;\n\nModal.Dialog = ModalDialog;\n\nModal.TRANSITION_DURATION = 300;\nModal.BACKDROP_TRANSITION_DURATION = 150;\n\nexport default bsClass('modal', bsSizes([Size.LARGE, Size.SMALL], Modal));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/Modal.js\n// module id = 498\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.listen = exports.filter = exports.off = exports.on = undefined;\n\nvar _on = require('./on');\n\nvar _on2 = _interopRequireDefault(_on);\n\nvar _off = require('./off');\n\nvar _off2 = _interopRequireDefault(_off);\n\nvar _filter = require('./filter');\n\nvar _filter2 = _interopRequireDefault(_filter);\n\nvar _listen = require('./listen');\n\nvar _listen2 = _interopRequireDefault(_listen);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.on = _on2.default;\nexports.off = _off2.default;\nexports.filter = _filter2.default;\nexports.listen = _listen2.default;\nexports.default = { on: _on2.default, off: _off2.default, filter: _filter2.default, listen: _listen2.default };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-helpers/events/index.js\n// module id = 499\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = filterEvents;\n\nvar _contains = require('../query/contains');\n\nvar _contains2 = _interopRequireDefault(_contains);\n\nvar _querySelectorAll = require('../query/querySelectorAll');\n\nvar _querySelectorAll2 = _interopRequireDefault(_querySelectorAll);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction filterEvents(selector, handler) {\n  return function filterHandler(e) {\n    var top = e.currentTarget,\n        target = e.target,\n        matches = (0, _querySelectorAll2.default)(top, selector);\n\n    if (matches.some(function (match) {\n      return (0, _contains2.default)(match, target);\n    })) handler.call(this, e);\n  };\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-helpers/events/filter.js\n// module id = 500\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = qsa;\n// Zepto.js\n// (c) 2010-2015 Thomas Fuchs\n// Zepto.js may be freely distributed under the MIT license.\nvar simpleSelectorRE = /^[\\w-]*$/;\nvar toArray = Function.prototype.bind.call(Function.prototype.call, [].slice);\n\nfunction qsa(element, selector) {\n  var maybeID = selector[0] === '#',\n      maybeClass = selector[0] === '.',\n      nameOnly = maybeID || maybeClass ? selector.slice(1) : selector,\n      isSimple = simpleSelectorRE.test(nameOnly),\n      found;\n\n  if (isSimple) {\n    if (maybeID) {\n      element = element.getElementById ? element : document;\n      return (found = element.getElementById(nameOnly)) ? [found] : [];\n    }\n\n    if (element.getElementsByClassName && maybeClass) return toArray(element.getElementsByClassName(nameOnly));\n\n    return toArray(element.getElementsByTagName(selector));\n  }\n\n  return toArray(element.querySelectorAll(selector));\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-helpers/query/querySelectorAll.js\n// module id = 501\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _inDOM = require('../util/inDOM');\n\nvar _inDOM2 = _interopRequireDefault(_inDOM);\n\nvar _on = require('./on');\n\nvar _on2 = _interopRequireDefault(_on);\n\nvar _off = require('./off');\n\nvar _off2 = _interopRequireDefault(_off);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar listen = function listen() {};\n\nif (_inDOM2.default) {\n  listen = function listen(node, eventName, handler, capture) {\n    (0, _on2.default)(node, eventName, handler, capture);\n    return function () {\n      (0, _off2.default)(node, eventName, handler, capture);\n    };\n  };\n}\n\nexports.default = listen;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-helpers/events/listen.js\n// module id = 502\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _activeElement = require('dom-helpers/activeElement');\n\nvar _activeElement2 = _interopRequireDefault(_activeElement);\n\nvar _contains = require('dom-helpers/query/contains');\n\nvar _contains2 = _interopRequireDefault(_contains);\n\nvar _inDOM = require('dom-helpers/util/inDOM');\n\nvar _inDOM2 = _interopRequireDefault(_inDOM);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _componentOrElement = require('prop-types-extra/lib/componentOrElement');\n\nvar _componentOrElement2 = _interopRequireDefault(_componentOrElement);\n\nvar _deprecated = require('prop-types-extra/lib/deprecated');\n\nvar _deprecated2 = _interopRequireDefault(_deprecated);\n\nvar _elementType = require('prop-types-extra/lib/elementType');\n\nvar _elementType2 = _interopRequireDefault(_elementType);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _ModalManager = require('./ModalManager');\n\nvar _ModalManager2 = _interopRequireDefault(_ModalManager);\n\nvar _Portal = require('./Portal');\n\nvar _Portal2 = _interopRequireDefault(_Portal);\n\nvar _RefHolder = require('./RefHolder');\n\nvar _RefHolder2 = _interopRequireDefault(_RefHolder);\n\nvar _addEventListener = require('./utils/addEventListener');\n\nvar _addEventListener2 = _interopRequireDefault(_addEventListener);\n\nvar _addFocusListener = require('./utils/addFocusListener');\n\nvar _addFocusListener2 = _interopRequireDefault(_addFocusListener);\n\nvar _getContainer = require('./utils/getContainer');\n\nvar _getContainer2 = _interopRequireDefault(_getContainer);\n\nvar _ownerDocument = require('./utils/ownerDocument');\n\nvar _ownerDocument2 = _interopRequireDefault(_ownerDocument);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* eslint-disable react/prop-types */\n\nvar modalManager = new _ModalManager2.default();\n\n/**\n * Love them or hate them, `<Modal/>` provides a solid foundation for creating dialogs, lightboxes, or whatever else.\n * The Modal component renders its `children` node in front of a backdrop component.\n *\n * The Modal offers a few helpful features over using just a `<Portal/>` component and some styles:\n *\n * - Manages dialog stacking when one-at-a-time just isn't enough.\n * - Creates a backdrop, for disabling interaction below the modal.\n * - It properly manages focus; moving to the modal content, and keeping it there until the modal is closed.\n * - It disables scrolling of the page content while open.\n * - Adds the appropriate ARIA roles are automatically.\n * - Easily pluggable animations via a `<Transition/>` component.\n *\n * Note that, in the same way the backdrop element prevents users from clicking or interacting\n * with the page content underneath the Modal, Screen readers also need to be signaled to not to\n * interact with page content while the Modal is open. To do this, we use a common technique of applying\n * the `aria-hidden='true'` attribute to the non-Modal elements in the Modal `container`. This means that for\n * a Modal to be truly modal, it should have a `container` that is _outside_ your app's\n * React hierarchy (such as the default: document.body).\n */\n\nvar Modal = function (_React$Component) {\n  _inherits(Modal, _React$Component);\n\n  function Modal() {\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, Modal);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _initialiseProps.call(_this), _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  Modal.prototype.omitProps = function omitProps(props, propTypes) {\n\n    var keys = Object.keys(props);\n    var newProps = {};\n    keys.map(function (prop) {\n      if (!Object.prototype.hasOwnProperty.call(propTypes, prop)) {\n        newProps[prop] = props[prop];\n      }\n    });\n\n    return newProps;\n  };\n\n  Modal.prototype.render = function render() {\n    var _props = this.props,\n        show = _props.show,\n        container = _props.container,\n        children = _props.children,\n        Transition = _props.transition,\n        backdrop = _props.backdrop,\n        dialogTransitionTimeout = _props.dialogTransitionTimeout,\n        className = _props.className,\n        style = _props.style,\n        onExit = _props.onExit,\n        onExiting = _props.onExiting,\n        onEnter = _props.onEnter,\n        onEntering = _props.onEntering,\n        onEntered = _props.onEntered;\n\n\n    var dialog = _react2.default.Children.only(children);\n    var filteredProps = this.omitProps(this.props, Modal.propTypes);\n\n    var mountModal = show || Transition && !this.state.exited;\n    if (!mountModal) {\n      return null;\n    }\n\n    var _dialog$props = dialog.props,\n        role = _dialog$props.role,\n        tabIndex = _dialog$props.tabIndex;\n\n\n    if (role === undefined || tabIndex === undefined) {\n      dialog = (0, _react.cloneElement)(dialog, {\n        role: role === undefined ? 'document' : role,\n        tabIndex: tabIndex == null ? '-1' : tabIndex\n      });\n    }\n\n    if (Transition) {\n      dialog = _react2.default.createElement(\n        Transition,\n        {\n          transitionAppear: true,\n          unmountOnExit: true,\n          'in': show,\n          timeout: dialogTransitionTimeout,\n          onExit: onExit,\n          onExiting: onExiting,\n          onExited: this.handleHidden,\n          onEnter: onEnter,\n          onEntering: onEntering,\n          onEntered: onEntered\n        },\n        dialog\n      );\n    }\n\n    return _react2.default.createElement(\n      _Portal2.default,\n      {\n        ref: this.setMountNode,\n        container: container,\n        onRendered: this.onPortalRendered\n      },\n      _react2.default.createElement(\n        'div',\n        _extends({\n          ref: this.setModalNodeRef,\n          role: role || 'dialog'\n        }, filteredProps, {\n          style: style,\n          className: className\n        }),\n        backdrop && this.renderBackdrop(),\n        _react2.default.createElement(\n          _RefHolder2.default,\n          { ref: this.setDialogRef },\n          dialog\n        )\n      )\n    );\n  };\n\n  Modal.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n    if (nextProps.show) {\n      this.setState({ exited: false });\n    } else if (!nextProps.transition) {\n      // Otherwise let handleHidden take care of marking exited.\n      this.setState({ exited: true });\n    }\n  };\n\n  Modal.prototype.componentWillUpdate = function componentWillUpdate(nextProps) {\n    if (!this.props.show && nextProps.show) {\n      this.checkForFocus();\n    }\n  };\n\n  Modal.prototype.componentDidMount = function componentDidMount() {\n    this._isMounted = true;\n    if (this.props.show) {\n      this.onShow();\n    }\n  };\n\n  Modal.prototype.componentDidUpdate = function componentDidUpdate(prevProps) {\n    var transition = this.props.transition;\n\n\n    if (prevProps.show && !this.props.show && !transition) {\n      // Otherwise handleHidden will call this.\n      this.onHide();\n    } else if (!prevProps.show && this.props.show) {\n      this.onShow();\n    }\n  };\n\n  Modal.prototype.componentWillUnmount = function componentWillUnmount() {\n    var _props2 = this.props,\n        show = _props2.show,\n        transition = _props2.transition;\n\n\n    this._isMounted = false;\n\n    if (show || transition && !this.state.exited) {\n      this.onHide();\n    }\n  };\n\n  Modal.prototype.autoFocus = function autoFocus() {\n    if (!this.props.autoFocus) {\n      return;\n    }\n\n    var dialogElement = this.getDialogElement();\n    var currentActiveElement = (0, _activeElement2.default)((0, _ownerDocument2.default)(this));\n\n    if (dialogElement && !(0, _contains2.default)(dialogElement, currentActiveElement)) {\n      this.lastFocus = currentActiveElement;\n\n      if (!dialogElement.hasAttribute('tabIndex')) {\n        (0, _warning2.default)(false, 'The modal content node does not accept focus. For the benefit of ' + 'assistive technologies, the tabIndex of the node is being set ' + 'to \"-1\".');\n\n        dialogElement.setAttribute('tabIndex', -1);\n      }\n\n      dialogElement.focus();\n    }\n  };\n\n  Modal.prototype.restoreLastFocus = function restoreLastFocus() {\n    // Support: <=IE11 doesn't support `focus()` on svg elements (RB: #917)\n    if (this.lastFocus && this.lastFocus.focus) {\n      this.lastFocus.focus();\n      this.lastFocus = null;\n    }\n  };\n\n  Modal.prototype.getDialogElement = function getDialogElement() {\n    return _reactDom2.default.findDOMNode(this.dialog);\n  };\n\n  Modal.prototype.isTopModal = function isTopModal() {\n    return this.props.manager.isTopModal(this);\n  };\n\n  return Modal;\n}(_react2.default.Component);\n\nModal.propTypes = _extends({}, _Portal2.default.propTypes, {\n\n  /**\n   * Set the visibility of the Modal\n   */\n  show: _propTypes2.default.bool,\n\n  /**\n   * A Node, Component instance, or function that returns either. The Modal is appended to it's container element.\n   *\n   * For the sake of assistive technologies, the container should usually be the document body, so that the rest of the\n   * page content can be placed behind a virtual backdrop as well as a visual one.\n   */\n  container: _propTypes2.default.oneOfType([_componentOrElement2.default, _propTypes2.default.func]),\n\n  /**\n   * A callback fired when the Modal is opening.\n   */\n  onShow: _propTypes2.default.func,\n\n  /**\n   * A callback fired when either the backdrop is clicked, or the escape key is pressed.\n   *\n   * The `onHide` callback only signals intent from the Modal,\n   * you must actually set the `show` prop to `false` for the Modal to close.\n   */\n  onHide: _propTypes2.default.func,\n\n  /**\n   * Include a backdrop component.\n   */\n  backdrop: _propTypes2.default.oneOfType([_propTypes2.default.bool, _propTypes2.default.oneOf(['static'])]),\n\n  /**\n   * A function that returns a backdrop component. Useful for custom\n   * backdrop rendering.\n   *\n   * ```js\n   *  renderBackdrop={props => <MyBackdrop {...props} />}\n   * ```\n   */\n  renderBackdrop: _propTypes2.default.func,\n\n  /**\n   * A callback fired when the escape key, if specified in `keyboard`, is pressed.\n   */\n  onEscapeKeyDown: _propTypes2.default.func,\n\n  /**\n   * Support for this function will be deprecated. Please use `onEscapeKeyDown` instead\n   * A callback fired when the escape key, if specified in `keyboard`, is pressed.\n   * @deprecated\n   */\n  onEscapeKeyUp: (0, _deprecated2.default)(_propTypes2.default.func, 'Please use onEscapeKeyDown instead for consistency'),\n\n  /**\n   * A callback fired when the backdrop, if specified, is clicked.\n   */\n  onBackdropClick: _propTypes2.default.func,\n\n  /**\n   * A style object for the backdrop component.\n   */\n  backdropStyle: _propTypes2.default.object,\n\n  /**\n   * A css class or classes for the backdrop component.\n   */\n  backdropClassName: _propTypes2.default.string,\n\n  /**\n   * A css class or set of classes applied to the modal container when the modal is open,\n   * and removed when it is closed.\n   */\n  containerClassName: _propTypes2.default.string,\n\n  /**\n   * Close the modal when escape key is pressed\n   */\n  keyboard: _propTypes2.default.bool,\n\n  /**\n   * A `<Transition/>` component to use for the dialog and backdrop components.\n   */\n  transition: _elementType2.default,\n\n  /**\n   * The `timeout` of the dialog transition if specified. This number is used to ensure that\n   * transition callbacks are always fired, even if browser transition events are canceled.\n   *\n   * See the Transition `timeout` prop for more infomation.\n   */\n  dialogTransitionTimeout: _propTypes2.default.number,\n\n  /**\n   * The `timeout` of the backdrop transition if specified. This number is used to\n   * ensure that transition callbacks are always fired, even if browser transition events are canceled.\n   *\n   * See the Transition `timeout` prop for more infomation.\n   */\n  backdropTransitionTimeout: _propTypes2.default.number,\n\n  /**\n   * When `true` The modal will automatically shift focus to itself when it opens, and\n   * replace it to the last focused element when it closes. This also\n   * works correctly with any Modal children that have the `autoFocus` prop.\n   *\n   * Generally this should never be set to `false` as it makes the Modal less\n   * accessible to assistive technologies, like screen readers.\n   */\n  autoFocus: _propTypes2.default.bool,\n\n  /**\n   * When `true` The modal will prevent focus from leaving the Modal while open.\n   *\n   * Generally this should never be set to `false` as it makes the Modal less\n   * accessible to assistive technologies, like screen readers.\n   */\n  enforceFocus: _propTypes2.default.bool,\n\n  /**\n   * When `true` The modal will restore focus to previously focused element once\n   * modal is hidden\n   */\n  restoreFocus: _propTypes2.default.bool,\n\n  /**\n   * Callback fired before the Modal transitions in\n   */\n  onEnter: _propTypes2.default.func,\n\n  /**\n   * Callback fired as the Modal begins to transition in\n   */\n  onEntering: _propTypes2.default.func,\n\n  /**\n   * Callback fired after the Modal finishes transitioning in\n   */\n  onEntered: _propTypes2.default.func,\n\n  /**\n   * Callback fired right before the Modal transitions out\n   */\n  onExit: _propTypes2.default.func,\n\n  /**\n   * Callback fired as the Modal begins to transition out\n   */\n  onExiting: _propTypes2.default.func,\n\n  /**\n   * Callback fired after the Modal finishes transitioning out\n   */\n  onExited: _propTypes2.default.func,\n\n  /**\n   * A ModalManager instance used to track and manage the state of open\n   * Modals. Useful when customizing how modals interact within a container\n   */\n  manager: _propTypes2.default.object.isRequired\n});\nModal.defaultProps = {\n  show: false,\n  backdrop: true,\n  keyboard: true,\n  autoFocus: true,\n  enforceFocus: true,\n  restoreFocus: true,\n  onHide: function onHide() {},\n  manager: modalManager,\n  renderBackdrop: function renderBackdrop(props) {\n    return _react2.default.createElement('div', props);\n  }\n};\n\nvar _initialiseProps = function _initialiseProps() {\n  var _this2 = this;\n\n  this.state = { exited: !this.props.show };\n\n  this.renderBackdrop = function () {\n    var _props3 = _this2.props,\n        backdropStyle = _props3.backdropStyle,\n        backdropClassName = _props3.backdropClassName,\n        renderBackdrop = _props3.renderBackdrop,\n        Transition = _props3.transition,\n        backdropTransitionTimeout = _props3.backdropTransitionTimeout;\n\n\n    var backdropRef = function backdropRef(ref) {\n      return _this2.backdrop = ref;\n    };\n\n    var backdrop = renderBackdrop({\n      ref: backdropRef,\n      style: backdropStyle,\n      className: backdropClassName,\n      onClick: _this2.handleBackdropClick\n    });\n\n    if (Transition) {\n      backdrop = _react2.default.createElement(\n        Transition,\n        { transitionAppear: true,\n          'in': _this2.props.show,\n          timeout: backdropTransitionTimeout\n        },\n        backdrop\n      );\n    }\n\n    return backdrop;\n  };\n\n  this.onPortalRendered = function () {\n    _this2.autoFocus();\n\n    if (_this2.props.onShow) {\n      _this2.props.onShow();\n    }\n  };\n\n  this.onShow = function () {\n    var doc = (0, _ownerDocument2.default)(_this2);\n    var container = (0, _getContainer2.default)(_this2.props.container, doc.body);\n\n    _this2.props.manager.add(_this2, container, _this2.props.containerClassName);\n\n    _this2._onDocumentKeydownListener = (0, _addEventListener2.default)(doc, 'keydown', _this2.handleDocumentKeyDown);\n\n    _this2._onDocumentKeyupListener = (0, _addEventListener2.default)(doc, 'keyup', _this2.handleDocumentKeyUp);\n\n    _this2._onFocusinListener = (0, _addFocusListener2.default)(_this2.enforceFocus);\n  };\n\n  this.onHide = function () {\n    _this2.props.manager.remove(_this2);\n\n    _this2._onDocumentKeydownListener.remove();\n\n    _this2._onDocumentKeyupListener.remove();\n\n    _this2._onFocusinListener.remove();\n\n    if (_this2.props.restoreFocus) {\n      _this2.restoreLastFocus();\n    }\n  };\n\n  this.setMountNode = function (ref) {\n    _this2.mountNode = ref ? ref.getMountNode() : ref;\n  };\n\n  this.setModalNodeRef = function (ref) {\n    _this2.modalNode = ref;\n  };\n\n  this.setDialogRef = function (ref) {\n    _this2.dialog = ref;\n  };\n\n  this.handleHidden = function () {\n    _this2.setState({ exited: true });\n    _this2.onHide();\n\n    if (_this2.props.onExited) {\n      var _props4;\n\n      (_props4 = _this2.props).onExited.apply(_props4, arguments);\n    }\n  };\n\n  this.handleBackdropClick = function (e) {\n    if (e.target !== e.currentTarget) {\n      return;\n    }\n\n    if (_this2.props.onBackdropClick) {\n      _this2.props.onBackdropClick(e);\n    }\n\n    if (_this2.props.backdrop === true) {\n      _this2.props.onHide();\n    }\n  };\n\n  this.handleDocumentKeyDown = function (e) {\n    if (_this2.props.keyboard && e.keyCode === 27 && _this2.isTopModal()) {\n      if (_this2.props.onEscapeKeyDown) {\n        _this2.props.onEscapeKeyDown(e);\n      }\n\n      _this2.props.onHide();\n    }\n  };\n\n  this.handleDocumentKeyUp = function (e) {\n    if (_this2.props.keyboard && e.keyCode === 27 && _this2.isTopModal()) {\n      if (_this2.props.onEscapeKeyUp) {\n        _this2.props.onEscapeKeyUp(e);\n      }\n    }\n  };\n\n  this.checkForFocus = function () {\n    if (_inDOM2.default) {\n      _this2.lastFocus = (0, _activeElement2.default)();\n    }\n  };\n\n  this.enforceFocus = function () {\n    if (!_this2.props.enforceFocus || !_this2._isMounted || !_this2.isTopModal()) {\n      return;\n    }\n\n    var dialogElement = _this2.getDialogElement();\n    var currentActiveElement = (0, _activeElement2.default)((0, _ownerDocument2.default)(_this2));\n\n    if (dialogElement && !(0, _contains2.default)(dialogElement, currentActiveElement)) {\n      dialogElement.focus();\n    }\n  };\n};\n\nModal.Manager = _ModalManager2.default;\n\nexports.default = Modal;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-overlays/lib/Modal.js\n// module id = 503\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = deprecated;\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar warned = {};\n\nfunction deprecated(validator, reason) {\n  return function validate(props, propName, componentName, location, propFullName) {\n    var componentNameSafe = componentName || '<<anonymous>>';\n    var propFullNameSafe = propFullName || propName;\n\n    if (props[propName] != null) {\n      var messageKey = componentName + '.' + propName;\n\n      (0, _warning2.default)(warned[messageKey], 'The ' + location + ' `' + propFullNameSafe + '` of ' + ('`' + componentNameSafe + '` is deprecated. ' + reason + '.'));\n\n      warned[messageKey] = true;\n    }\n\n    for (var _len = arguments.length, args = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n      args[_key - 5] = arguments[_key];\n    }\n\n    return validator.apply(undefined, [props, propName, componentName, location, propFullName].concat(args));\n  };\n}\n\n/* eslint-disable no-underscore-dangle */\nfunction _resetWarned() {\n  warned = {};\n}\n\ndeprecated._resetWarned = _resetWarned;\n/* eslint-enable no-underscore-dangle */\n\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types-extra/lib/deprecated.js\n// module id = 504\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _class = require('dom-helpers/class');\n\nvar _class2 = _interopRequireDefault(_class);\n\nvar _style = require('dom-helpers/style');\n\nvar _style2 = _interopRequireDefault(_style);\n\nvar _scrollbarSize = require('dom-helpers/util/scrollbarSize');\n\nvar _scrollbarSize2 = _interopRequireDefault(_scrollbarSize);\n\nvar _isOverflowing = require('./utils/isOverflowing');\n\nvar _isOverflowing2 = _interopRequireDefault(_isOverflowing);\n\nvar _manageAriaHidden = require('./utils/manageAriaHidden');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction findIndexOf(arr, cb) {\n  var idx = -1;\n  arr.some(function (d, i) {\n    if (cb(d, i)) {\n      idx = i;\n      return true;\n    }\n  });\n  return idx;\n}\n\nfunction findContainer(data, modal) {\n  return findIndexOf(data, function (d) {\n    return d.modals.indexOf(modal) !== -1;\n  });\n}\n\nfunction setContainerStyle(state, container) {\n  var style = { overflow: 'hidden' };\n\n  // we are only interested in the actual `style` here\n  // becasue we will override it\n  state.style = {\n    overflow: container.style.overflow,\n    paddingRight: container.style.paddingRight\n  };\n\n  if (state.overflowing) {\n    // use computed style, here to get the real padding\n    // to add our scrollbar width\n    style.paddingRight = parseInt((0, _style2.default)(container, 'paddingRight') || 0, 10) + (0, _scrollbarSize2.default)() + 'px';\n  }\n\n  (0, _style2.default)(container, style);\n}\n\nfunction removeContainerStyle(_ref, container) {\n  var style = _ref.style;\n\n\n  Object.keys(style).forEach(function (key) {\n    return container.style[key] = style[key];\n  });\n}\n/**\n * Proper state managment for containers and the modals in those containers.\n *\n * @internal Used by the Modal to ensure proper styling of containers.\n */\n\nvar ModalManager = function ModalManager() {\n  var _this = this;\n\n  var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n      _ref2$hideSiblingNode = _ref2.hideSiblingNodes,\n      hideSiblingNodes = _ref2$hideSiblingNode === undefined ? true : _ref2$hideSiblingNode,\n      _ref2$handleContainer = _ref2.handleContainerOverflow,\n      handleContainerOverflow = _ref2$handleContainer === undefined ? true : _ref2$handleContainer;\n\n  _classCallCheck(this, ModalManager);\n\n  this.add = function (modal, container, className) {\n    var modalIdx = _this.modals.indexOf(modal);\n    var containerIdx = _this.containers.indexOf(container);\n\n    if (modalIdx !== -1) {\n      return modalIdx;\n    }\n\n    modalIdx = _this.modals.length;\n    _this.modals.push(modal);\n\n    if (_this.hideSiblingNodes) {\n      (0, _manageAriaHidden.hideSiblings)(container, modal.mountNode);\n    }\n\n    if (containerIdx !== -1) {\n      _this.data[containerIdx].modals.push(modal);\n      return modalIdx;\n    }\n\n    var data = {\n      modals: [modal],\n      //right now only the first modal of a container will have its classes applied\n      classes: className ? className.split(/\\s+/) : [],\n\n      overflowing: (0, _isOverflowing2.default)(container)\n    };\n\n    if (_this.handleContainerOverflow) {\n      setContainerStyle(data, container);\n    }\n\n    data.classes.forEach(_class2.default.addClass.bind(null, container));\n\n    _this.containers.push(container);\n    _this.data.push(data);\n\n    return modalIdx;\n  };\n\n  this.remove = function (modal) {\n    var modalIdx = _this.modals.indexOf(modal);\n\n    if (modalIdx === -1) {\n      return;\n    }\n\n    var containerIdx = findContainer(_this.data, modal);\n    var data = _this.data[containerIdx];\n    var container = _this.containers[containerIdx];\n\n    data.modals.splice(data.modals.indexOf(modal), 1);\n\n    _this.modals.splice(modalIdx, 1);\n\n    // if that was the last modal in a container,\n    // clean up the container\n    if (data.modals.length === 0) {\n      data.classes.forEach(_class2.default.removeClass.bind(null, container));\n\n      if (_this.handleContainerOverflow) {\n        removeContainerStyle(data, container);\n      }\n\n      if (_this.hideSiblingNodes) {\n        (0, _manageAriaHidden.showSiblings)(container, modal.mountNode);\n      }\n      _this.containers.splice(containerIdx, 1);\n      _this.data.splice(containerIdx, 1);\n    } else if (_this.hideSiblingNodes) {\n      //otherwise make sure the next top modal is visible to a SR\n      (0, _manageAriaHidden.ariaHidden)(false, data.modals[data.modals.length - 1].mountNode);\n    }\n  };\n\n  this.isTopModal = function (modal) {\n    return !!_this.modals.length && _this.modals[_this.modals.length - 1] === modal;\n  };\n\n  this.hideSiblingNodes = hideSiblingNodes;\n  this.handleContainerOverflow = handleContainerOverflow;\n  this.modals = [];\n  this.containers = [];\n  this.data = [];\n};\n\nexports.default = ModalManager;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-overlays/lib/ModalManager.js\n// module id = 505\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.hasClass = exports.removeClass = exports.addClass = undefined;\n\nvar _addClass = require('./addClass');\n\nvar _addClass2 = _interopRequireDefault(_addClass);\n\nvar _removeClass = require('./removeClass');\n\nvar _removeClass2 = _interopRequireDefault(_removeClass);\n\nvar _hasClass = require('./hasClass');\n\nvar _hasClass2 = _interopRequireDefault(_hasClass);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.addClass = _addClass2.default;\nexports.removeClass = _removeClass2.default;\nexports.hasClass = _hasClass2.default;\nexports.default = { addClass: _addClass2.default, removeClass: _removeClass2.default, hasClass: _hasClass2.default };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-helpers/class/index.js\n// module id = 506\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = addClass;\n\nvar _hasClass = require('./hasClass');\n\nvar _hasClass2 = _interopRequireDefault(_hasClass);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction addClass(element, className) {\n  if (element.classList) element.classList.add(className);else if (!(0, _hasClass2.default)(element)) element.className = element.className + ' ' + className;\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-helpers/class/addClass.js\n// module id = 507\n// module chunks = 0","'use strict';\n\nmodule.exports = function removeClass(element, className) {\n  if (element.classList) element.classList.remove(className);else element.className = element.className.replace(new RegExp('(^|\\\\s)' + className + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-helpers/class/removeClass.js\n// module id = 508\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\nexports.ariaHidden = ariaHidden;\nexports.hideSiblings = hideSiblings;\nexports.showSiblings = showSiblings;\n\nvar BLACKLIST = ['template', 'script', 'style'];\n\nvar isHidable = function isHidable(_ref) {\n  var nodeType = _ref.nodeType,\n      tagName = _ref.tagName;\n  return nodeType === 1 && BLACKLIST.indexOf(tagName.toLowerCase()) === -1;\n};\n\nvar siblings = function siblings(container, mount, cb) {\n  mount = [].concat(mount);\n\n  [].forEach.call(container.children, function (node) {\n    if (mount.indexOf(node) === -1 && isHidable(node)) {\n      cb(node);\n    }\n  });\n};\n\nfunction ariaHidden(show, node) {\n  if (!node) {\n    return;\n  }\n  if (show) {\n    node.setAttribute('aria-hidden', 'true');\n  } else {\n    node.removeAttribute('aria-hidden');\n  }\n}\n\nfunction hideSiblings(container, mountNode) {\n  siblings(container, mountNode, function (node) {\n    return ariaHidden(true, node);\n  });\n}\n\nfunction showSiblings(container, mountNode) {\n  siblings(container, mountNode, function (node) {\n    return ariaHidden(false, node);\n  });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-overlays/lib/utils/manageAriaHidden.js\n// module id = 509\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _componentOrElement = require('prop-types-extra/lib/componentOrElement');\n\nvar _componentOrElement2 = _interopRequireDefault(_componentOrElement);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _getContainer = require('./utils/getContainer');\n\nvar _getContainer2 = _interopRequireDefault(_getContainer);\n\nvar _ownerDocument = require('./utils/ownerDocument');\n\nvar _ownerDocument2 = _interopRequireDefault(_ownerDocument);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * The `<Portal/>` component renders its children into a new \"subtree\" outside of current component hierarchy.\n * You can think of it as a declarative `appendChild()`, or jQuery's `$.fn.appendTo()`.\n * The children of `<Portal/>` component will be appended to the `container` specified.\n */\nvar Portal = function (_React$Component) {\n  _inherits(Portal, _React$Component);\n\n  function Portal() {\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, Portal);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this._mountOverlayTarget = function () {\n      if (!_this._overlayTarget) {\n        _this._overlayTarget = document.createElement('div');\n        _this._portalContainerNode = (0, _getContainer2.default)(_this.props.container, (0, _ownerDocument2.default)(_this).body);\n        _this._portalContainerNode.appendChild(_this._overlayTarget);\n      }\n    }, _this._unmountOverlayTarget = function () {\n      if (_this._overlayTarget) {\n        _this._portalContainerNode.removeChild(_this._overlayTarget);\n        _this._overlayTarget = null;\n      }\n      _this._portalContainerNode = null;\n    }, _this._renderOverlay = function () {\n      var overlay = !_this.props.children ? null : _react2.default.Children.only(_this.props.children);\n\n      // Save reference for future access.\n      if (overlay !== null) {\n        _this._mountOverlayTarget();\n\n        var initialRender = !_this._overlayInstance;\n\n        _this._overlayInstance = _reactDom2.default.unstable_renderSubtreeIntoContainer(_this, overlay, _this._overlayTarget, function () {\n          if (initialRender && _this.props.onRendered) {\n            _this.props.onRendered();\n          }\n        });\n      } else {\n        // Unrender if the component is null for transitions to null\n        _this._unrenderOverlay();\n        _this._unmountOverlayTarget();\n      }\n    }, _this._unrenderOverlay = function () {\n      if (_this._overlayTarget) {\n        _reactDom2.default.unmountComponentAtNode(_this._overlayTarget);\n        _this._overlayInstance = null;\n      }\n    }, _this.getMountNode = function () {\n      return _this._overlayTarget;\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  Portal.prototype.componentDidMount = function componentDidMount() {\n    this._isMounted = true;\n    this._renderOverlay();\n  };\n\n  Portal.prototype.componentDidUpdate = function componentDidUpdate() {\n    this._renderOverlay();\n  };\n\n  Portal.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n    if (this._overlayTarget && nextProps.container !== this.props.container) {\n      this._portalContainerNode.removeChild(this._overlayTarget);\n      this._portalContainerNode = (0, _getContainer2.default)(nextProps.container, (0, _ownerDocument2.default)(this).body);\n      this._portalContainerNode.appendChild(this._overlayTarget);\n    }\n  };\n\n  Portal.prototype.componentWillUnmount = function componentWillUnmount() {\n    this._isMounted = false;\n    this._unrenderOverlay();\n    this._unmountOverlayTarget();\n  };\n\n  Portal.prototype.render = function render() {\n    return null;\n  };\n\n  return Portal;\n}(_react2.default.Component);\n\nPortal.displayName = 'Portal';\nPortal.propTypes = {\n  /**\n   * A Node, Component instance, or function that returns either. The `container` will have the Portal children\n   * appended to it.\n   */\n  container: _propTypes2.default.oneOfType([_componentOrElement2.default, _propTypes2.default.func]),\n\n  onRendered: _propTypes2.default.func\n};\nexports.default = Portal;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-overlays/lib/LegacyPortal.js\n// module id = 510\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar propTypes = {\n  children: _propTypes2.default.node\n};\n\n/**\n * Internal helper component to allow attaching a non-conflicting ref to a\n * child element that may not accept refs.\n */\n\nvar RefHolder = function (_React$Component) {\n  _inherits(RefHolder, _React$Component);\n\n  function RefHolder() {\n    _classCallCheck(this, RefHolder);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  RefHolder.prototype.render = function render() {\n    return this.props.children;\n  };\n\n  return RefHolder;\n}(_react2.default.Component);\n\nRefHolder.propTypes = propTypes;\n\nexports.default = RefHolder;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-overlays/lib/RefHolder.js\n// module id = 511\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\nexports.default = addFocusListener;\n/**\n * Firefox doesn't have a focusin event so using capture is easiest way to get bubbling\n * IE8 can't do addEventListener, but does have onfocusin, so we use that in ie8\n *\n * We only allow one Listener at a time to avoid stack overflows\n */\nfunction addFocusListener(handler) {\n  var useFocusin = !document.addEventListener;\n  var remove = void 0;\n\n  if (useFocusin) {\n    document.attachEvent('onfocusin', handler);\n    remove = function remove() {\n      return document.detachEvent('onfocusin', handler);\n    };\n  } else {\n    document.addEventListener('focus', handler, true);\n    remove = function remove() {\n      return document.removeEventListener('focus', handler, true);\n    };\n  }\n\n  return { remove: remove };\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-overlays/lib/utils/addFocusListener.js\n// module id = 512\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { bsClass, bsSizes, getClassSet, prefix, splitBsProps } from './utils/bootstrapUtils';\nimport { Size } from './utils/StyleConfig';\n\nvar propTypes = {\n  /**\n   * A css class to apply to the Modal dialog DOM node.\n   */\n  dialogClassName: PropTypes.string\n};\n\nvar ModalDialog = function (_React$Component) {\n  _inherits(ModalDialog, _React$Component);\n\n  function ModalDialog() {\n    _classCallCheck(this, ModalDialog);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  ModalDialog.prototype.render = function render() {\n    var _extends2;\n\n    var _props = this.props,\n        dialogClassName = _props.dialogClassName,\n        className = _props.className,\n        style = _props.style,\n        children = _props.children,\n        props = _objectWithoutProperties(_props, ['dialogClassName', 'className', 'style', 'children']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var bsClassName = prefix(bsProps);\n\n    var modalStyle = _extends({ display: 'block' }, style);\n\n    var dialogClasses = _extends({}, getClassSet(bsProps), (_extends2 = {}, _extends2[bsClassName] = false, _extends2[prefix(bsProps, 'dialog')] = true, _extends2));\n\n    return React.createElement(\n      'div',\n      _extends({}, elementProps, {\n        tabIndex: '-1',\n        role: 'dialog',\n        style: modalStyle,\n        className: classNames(className, bsClassName)\n      }),\n      React.createElement(\n        'div',\n        { className: classNames(dialogClassName, dialogClasses) },\n        React.createElement(\n          'div',\n          { className: prefix(bsProps, 'content'), role: 'document' },\n          children\n        )\n      )\n    );\n  };\n\n  return ModalDialog;\n}(React.Component);\n\nModalDialog.propTypes = propTypes;\n\nexport default bsClass('modal', bsSizes([Size.LARGE, Size.SMALL], ModalDialog));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/ModalDialog.js\n// module id = 513\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\n// TODO: Remove this pragma once we upgrade eslint-config-airbnb.\n/* eslint-disable react/no-multi-comp */\n\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport elementType from 'prop-types-extra/lib/elementType';\nimport uncontrollable from 'uncontrollable';\n\nimport Grid from './Grid';\nimport NavbarBrand from './NavbarBrand';\nimport NavbarCollapse from './NavbarCollapse';\nimport NavbarHeader from './NavbarHeader';\nimport NavbarToggle from './NavbarToggle';\nimport { bsClass as setBsClass, bsStyles, getClassSet, prefix, splitBsPropsAndOmit } from './utils/bootstrapUtils';\nimport { Style } from './utils/StyleConfig';\nimport createChainedFunction from './utils/createChainedFunction';\n\nvar propTypes = {\n  /**\n   * Create a fixed navbar along the top of the screen, that scrolls with the\n   * page\n   */\n  fixedTop: PropTypes.bool,\n  /**\n   * Create a fixed navbar along the bottom of the screen, that scrolls with\n   * the page\n   */\n  fixedBottom: PropTypes.bool,\n  /**\n   * Create a full-width navbar that scrolls away with the page\n   */\n  staticTop: PropTypes.bool,\n  /**\n   * An alternative dark visual style for the Navbar\n   */\n  inverse: PropTypes.bool,\n  /**\n   * Allow the Navbar to fluidly adjust to the page or container width, instead\n   * of at the predefined screen breakpoints\n   */\n  fluid: PropTypes.bool,\n\n  /**\n   * Set a custom element for this component.\n   */\n  componentClass: elementType,\n  /**\n   * A callback fired when the `<Navbar>` body collapses or expands. Fired when\n   * a `<Navbar.Toggle>` is clicked and called with the new `expanded`\n   * boolean value.\n   *\n   * @controllable expanded\n   */\n  onToggle: PropTypes.func,\n  /**\n   * A callback fired when a descendant of a child `<Nav>` is selected. Should\n   * be used to execute complex closing or other miscellaneous actions desired\n   * after selecting a descendant of `<Nav>`. Does nothing if no `<Nav>` or `<Nav>`\n   * descendants exist. The callback is called with an eventKey, which is a\n   * prop from the selected `<Nav>` descendant, and an event.\n   *\n   * ```js\n   * function (\n   *  Any eventKey,\n   *  SyntheticEvent event?\n   * )\n   * ```\n   *\n   * For basic closing behavior after all `<Nav>` descendant onSelect events in\n   * mobile viewports, try using collapseOnSelect.\n   *\n   * Note: If you are manually closing the navbar using this `OnSelect` prop,\n   * ensure that you are setting `expanded` to false and not *toggling* between\n   * true and false.\n   */\n  onSelect: PropTypes.func,\n  /**\n   * Sets `expanded` to `false` after the onSelect event of a descendant of a\n   * child `<Nav>`. Does nothing if no `<Nav>` or `<Nav>` descendants exist.\n   *\n   * The onSelect callback should be used instead for more complex operations\n   * that need to be executed after the `select` event of `<Nav>` descendants.\n   */\n  collapseOnSelect: PropTypes.bool,\n  /**\n   * Explicitly set the visiblity of the navbar body\n   *\n   * @controllable onToggle\n   */\n  expanded: PropTypes.bool,\n\n  role: PropTypes.string\n};\n\nvar defaultProps = {\n  componentClass: 'nav',\n  fixedTop: false,\n  fixedBottom: false,\n  staticTop: false,\n  inverse: false,\n  fluid: false,\n  collapseOnSelect: false\n};\n\nvar childContextTypes = {\n  $bs_navbar: PropTypes.shape({\n    bsClass: PropTypes.string,\n    expanded: PropTypes.bool,\n    onToggle: PropTypes.func.isRequired,\n    onSelect: PropTypes.func\n  })\n};\n\nvar Navbar = function (_React$Component) {\n  _inherits(Navbar, _React$Component);\n\n  function Navbar(props, context) {\n    _classCallCheck(this, Navbar);\n\n    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n\n    _this.handleToggle = _this.handleToggle.bind(_this);\n    _this.handleCollapse = _this.handleCollapse.bind(_this);\n    return _this;\n  }\n\n  Navbar.prototype.getChildContext = function getChildContext() {\n    var _props = this.props,\n        bsClass = _props.bsClass,\n        expanded = _props.expanded,\n        onSelect = _props.onSelect,\n        collapseOnSelect = _props.collapseOnSelect;\n\n\n    return {\n      $bs_navbar: {\n        bsClass: bsClass,\n        expanded: expanded,\n        onToggle: this.handleToggle,\n        onSelect: createChainedFunction(onSelect, collapseOnSelect ? this.handleCollapse : null)\n      }\n    };\n  };\n\n  Navbar.prototype.handleCollapse = function handleCollapse() {\n    var _props2 = this.props,\n        onToggle = _props2.onToggle,\n        expanded = _props2.expanded;\n\n\n    if (expanded) {\n      onToggle(false);\n    }\n  };\n\n  Navbar.prototype.handleToggle = function handleToggle() {\n    var _props3 = this.props,\n        onToggle = _props3.onToggle,\n        expanded = _props3.expanded;\n\n\n    onToggle(!expanded);\n  };\n\n  Navbar.prototype.render = function render() {\n    var _extends2;\n\n    var _props4 = this.props,\n        Component = _props4.componentClass,\n        fixedTop = _props4.fixedTop,\n        fixedBottom = _props4.fixedBottom,\n        staticTop = _props4.staticTop,\n        inverse = _props4.inverse,\n        fluid = _props4.fluid,\n        className = _props4.className,\n        children = _props4.children,\n        props = _objectWithoutProperties(_props4, ['componentClass', 'fixedTop', 'fixedBottom', 'staticTop', 'inverse', 'fluid', 'className', 'children']);\n\n    var _splitBsPropsAndOmit = splitBsPropsAndOmit(props, ['expanded', 'onToggle', 'onSelect', 'collapseOnSelect']),\n        bsProps = _splitBsPropsAndOmit[0],\n        elementProps = _splitBsPropsAndOmit[1];\n\n    // will result in some false positives but that seems better\n    // than false negatives. strict `undefined` check allows explicit\n    // \"nulling\" of the role if the user really doesn't want one\n\n\n    if (elementProps.role === undefined && Component !== 'nav') {\n      elementProps.role = 'navigation';\n    }\n\n    if (inverse) {\n      bsProps.bsStyle = Style.INVERSE;\n    }\n\n    var classes = _extends({}, getClassSet(bsProps), (_extends2 = {}, _extends2[prefix(bsProps, 'fixed-top')] = fixedTop, _extends2[prefix(bsProps, 'fixed-bottom')] = fixedBottom, _extends2[prefix(bsProps, 'static-top')] = staticTop, _extends2));\n\n    return React.createElement(\n      Component,\n      _extends({}, elementProps, {\n        className: classNames(className, classes)\n      }),\n      React.createElement(\n        Grid,\n        { fluid: fluid },\n        children\n      )\n    );\n  };\n\n  return Navbar;\n}(React.Component);\n\nNavbar.propTypes = propTypes;\nNavbar.defaultProps = defaultProps;\nNavbar.childContextTypes = childContextTypes;\n\nsetBsClass('navbar', Navbar);\n\nvar UncontrollableNavbar = uncontrollable(Navbar, { expanded: 'onToggle' });\n\nfunction createSimpleWrapper(tag, suffix, displayName) {\n  var Wrapper = function Wrapper(_ref, _ref2) {\n    var _ref2$$bs_navbar = _ref2.$bs_navbar,\n        navbarProps = _ref2$$bs_navbar === undefined ? { bsClass: 'navbar' } : _ref2$$bs_navbar;\n\n    var Component = _ref.componentClass,\n        className = _ref.className,\n        pullRight = _ref.pullRight,\n        pullLeft = _ref.pullLeft,\n        props = _objectWithoutProperties(_ref, ['componentClass', 'className', 'pullRight', 'pullLeft']);\n\n    return React.createElement(Component, _extends({}, props, {\n      className: classNames(className, prefix(navbarProps, suffix), pullRight && prefix(navbarProps, 'right'), pullLeft && prefix(navbarProps, 'left'))\n    }));\n  };\n\n  Wrapper.displayName = displayName;\n\n  Wrapper.propTypes = {\n    componentClass: elementType,\n    pullRight: PropTypes.bool,\n    pullLeft: PropTypes.bool\n  };\n\n  Wrapper.defaultProps = {\n    componentClass: tag,\n    pullRight: false,\n    pullLeft: false\n  };\n\n  Wrapper.contextTypes = {\n    $bs_navbar: PropTypes.shape({\n      bsClass: PropTypes.string\n    })\n  };\n\n  return Wrapper;\n}\n\nUncontrollableNavbar.Brand = NavbarBrand;\nUncontrollableNavbar.Header = NavbarHeader;\nUncontrollableNavbar.Toggle = NavbarToggle;\nUncontrollableNavbar.Collapse = NavbarCollapse;\n\nUncontrollableNavbar.Form = createSimpleWrapper('div', 'form', 'NavbarForm');\nUncontrollableNavbar.Text = createSimpleWrapper('p', 'text', 'NavbarText');\nUncontrollableNavbar.Link = createSimpleWrapper('a', 'link', 'NavbarLink');\n\n// Set bsStyles here so they can be overridden.\nexport default bsStyles([Style.DEFAULT, Style.INVERSE], Style.DEFAULT, UncontrollableNavbar);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/Navbar.js\n// module id = 514\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Collapse from './Collapse';\nimport { prefix } from './utils/bootstrapUtils';\n\nvar contextTypes = {\n  $bs_navbar: PropTypes.shape({\n    bsClass: PropTypes.string,\n    expanded: PropTypes.bool\n  })\n};\n\nvar NavbarCollapse = function (_React$Component) {\n  _inherits(NavbarCollapse, _React$Component);\n\n  function NavbarCollapse() {\n    _classCallCheck(this, NavbarCollapse);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  NavbarCollapse.prototype.render = function render() {\n    var _props = this.props,\n        children = _props.children,\n        props = _objectWithoutProperties(_props, ['children']);\n\n    var navbarProps = this.context.$bs_navbar || { bsClass: 'navbar' };\n\n    var bsClassName = prefix(navbarProps, 'collapse');\n\n    return React.createElement(\n      Collapse,\n      _extends({ 'in': navbarProps.expanded }, props),\n      React.createElement(\n        'div',\n        { className: bsClassName },\n        children\n      )\n    );\n  };\n\n  return NavbarCollapse;\n}(React.Component);\n\nNavbarCollapse.contextTypes = contextTypes;\n\nexport default NavbarCollapse;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/NavbarCollapse.js\n// module id = 515\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { prefix } from './utils/bootstrapUtils';\n\nvar contextTypes = {\n  $bs_navbar: PropTypes.shape({\n    bsClass: PropTypes.string\n  })\n};\n\nvar NavbarHeader = function (_React$Component) {\n  _inherits(NavbarHeader, _React$Component);\n\n  function NavbarHeader() {\n    _classCallCheck(this, NavbarHeader);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  NavbarHeader.prototype.render = function render() {\n    var _props = this.props,\n        className = _props.className,\n        props = _objectWithoutProperties(_props, ['className']);\n\n    var navbarProps = this.context.$bs_navbar || { bsClass: 'navbar' };\n\n    var bsClassName = prefix(navbarProps, 'header');\n\n    return React.createElement('div', _extends({}, props, { className: classNames(className, bsClassName) }));\n  };\n\n  return NavbarHeader;\n}(React.Component);\n\nNavbarHeader.contextTypes = contextTypes;\n\nexport default NavbarHeader;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/NavbarHeader.js\n// module id = 516\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { prefix } from './utils/bootstrapUtils';\nimport createChainedFunction from './utils/createChainedFunction';\n\nvar propTypes = {\n  onClick: PropTypes.func,\n  /**\n   * The toggle content, if left empty it will render the default toggle (seen above).\n   */\n  children: PropTypes.node\n};\n\nvar contextTypes = {\n  $bs_navbar: PropTypes.shape({\n    bsClass: PropTypes.string,\n    expanded: PropTypes.bool,\n    onToggle: PropTypes.func.isRequired\n  })\n};\n\nvar NavbarToggle = function (_React$Component) {\n  _inherits(NavbarToggle, _React$Component);\n\n  function NavbarToggle() {\n    _classCallCheck(this, NavbarToggle);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  NavbarToggle.prototype.render = function render() {\n    var _props = this.props,\n        onClick = _props.onClick,\n        className = _props.className,\n        children = _props.children,\n        props = _objectWithoutProperties(_props, ['onClick', 'className', 'children']);\n\n    var navbarProps = this.context.$bs_navbar || { bsClass: 'navbar' };\n\n    var buttonProps = _extends({\n      type: 'button'\n    }, props, {\n      onClick: createChainedFunction(onClick, navbarProps.onToggle),\n      className: classNames(className, prefix(navbarProps, 'toggle'), !navbarProps.expanded && 'collapsed')\n    });\n\n    if (children) {\n      return React.createElement(\n        'button',\n        buttonProps,\n        children\n      );\n    }\n\n    return React.createElement(\n      'button',\n      buttonProps,\n      React.createElement(\n        'span',\n        { className: 'sr-only' },\n        'Toggle navigation'\n      ),\n      React.createElement('span', { className: 'icon-bar' }),\n      React.createElement('span', { className: 'icon-bar' }),\n      React.createElement('span', { className: 'icon-bar' })\n    );\n  };\n\n  return NavbarToggle;\n}(React.Component);\n\nNavbarToggle.propTypes = propTypes;\nNavbarToggle.contextTypes = contextTypes;\n\nexport default NavbarToggle;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/NavbarToggle.js\n// module id = 517\n// module chunks = 0","import _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport _extends from 'babel-runtime/helpers/extends';\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Dropdown from './Dropdown';\nimport splitComponentProps from './utils/splitComponentProps';\nimport ValidComponentChildren from './utils/ValidComponentChildren';\n\nvar propTypes = _extends({}, Dropdown.propTypes, {\n\n  // Toggle props.\n  title: PropTypes.node.isRequired,\n  noCaret: PropTypes.bool,\n  active: PropTypes.bool,\n\n  // Override generated docs from <Dropdown>.\n  /**\n   * @private\n   */\n  children: PropTypes.node\n});\n\nvar NavDropdown = function (_React$Component) {\n  _inherits(NavDropdown, _React$Component);\n\n  function NavDropdown() {\n    _classCallCheck(this, NavDropdown);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  NavDropdown.prototype.isActive = function isActive(_ref, activeKey, activeHref) {\n    var props = _ref.props;\n\n    var _this2 = this;\n\n    if (props.active || activeKey != null && props.eventKey === activeKey || activeHref && props.href === activeHref) {\n      return true;\n    }\n\n    if (ValidComponentChildren.some(props.children, function (child) {\n      return _this2.isActive(child, activeKey, activeHref);\n    })) {\n      return true;\n    }\n\n    return props.active;\n  };\n\n  NavDropdown.prototype.render = function render() {\n    var _this3 = this;\n\n    var _props = this.props,\n        title = _props.title,\n        activeKey = _props.activeKey,\n        activeHref = _props.activeHref,\n        className = _props.className,\n        style = _props.style,\n        children = _props.children,\n        props = _objectWithoutProperties(_props, ['title', 'activeKey', 'activeHref', 'className', 'style', 'children']);\n\n    var active = this.isActive(this, activeKey, activeHref);\n    delete props.active; // Accessed via this.isActive().\n    delete props.eventKey; // Accessed via this.isActive().\n\n    var _splitComponentProps = splitComponentProps(props, Dropdown.ControlledComponent),\n        dropdownProps = _splitComponentProps[0],\n        toggleProps = _splitComponentProps[1];\n\n    // Unlike for the other dropdowns, styling needs to go to the `<Dropdown>`\n    // rather than the `<Dropdown.Toggle>`.\n\n    return React.createElement(\n      Dropdown,\n      _extends({}, dropdownProps, {\n        componentClass: 'li',\n        className: classNames(className, { active: active }),\n        style: style\n      }),\n      React.createElement(\n        Dropdown.Toggle,\n        _extends({}, toggleProps, { useAnchor: true }),\n        title\n      ),\n      React.createElement(\n        Dropdown.Menu,\n        null,\n        ValidComponentChildren.map(children, function (child) {\n          return React.cloneElement(child, {\n            active: _this3.isActive(child, activeKey, activeHref)\n          });\n        })\n      )\n    );\n  };\n\n  return NavDropdown;\n}(React.Component);\n\nNavDropdown.propTypes = propTypes;\n\nexport default NavDropdown;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/NavDropdown.js\n// module id = 518\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _elementType = require('prop-types-extra/lib/elementType');\n\nvar _elementType2 = _interopRequireDefault(_elementType);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _Portal = require('./Portal');\n\nvar _Portal2 = _interopRequireDefault(_Portal);\n\nvar _Position = require('./Position');\n\nvar _Position2 = _interopRequireDefault(_Position);\n\nvar _RootCloseWrapper = require('./RootCloseWrapper');\n\nvar _RootCloseWrapper2 = _interopRequireDefault(_RootCloseWrapper);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * Built on top of `<Position/>` and `<Portal/>`, the overlay component is great for custom tooltip overlays.\n */\nvar Overlay = function (_React$Component) {\n  _inherits(Overlay, _React$Component);\n\n  function Overlay(props, context) {\n    _classCallCheck(this, Overlay);\n\n    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n\n    _this.handleHidden = function () {\n      _this.setState({ exited: true });\n\n      if (_this.props.onExited) {\n        var _this$props;\n\n        (_this$props = _this.props).onExited.apply(_this$props, arguments);\n      }\n    };\n\n    _this.state = { exited: !props.show };\n    _this.onHiddenListener = _this.handleHidden.bind(_this);\n    return _this;\n  }\n\n  Overlay.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n    if (nextProps.show) {\n      this.setState({ exited: false });\n    } else if (!nextProps.transition) {\n      // Otherwise let handleHidden take care of marking exited.\n      this.setState({ exited: true });\n    }\n  };\n\n  Overlay.prototype.render = function render() {\n    var _props = this.props,\n        container = _props.container,\n        containerPadding = _props.containerPadding,\n        target = _props.target,\n        placement = _props.placement,\n        shouldUpdatePosition = _props.shouldUpdatePosition,\n        rootClose = _props.rootClose,\n        children = _props.children,\n        Transition = _props.transition,\n        props = _objectWithoutProperties(_props, ['container', 'containerPadding', 'target', 'placement', 'shouldUpdatePosition', 'rootClose', 'children', 'transition']);\n\n    // Don't un-render the overlay while it's transitioning out.\n\n\n    var mountOverlay = props.show || Transition && !this.state.exited;\n    if (!mountOverlay) {\n      // Don't bother showing anything if we don't have to.\n      return null;\n    }\n\n    var child = children;\n\n    // Position is be inner-most because it adds inline styles into the child,\n    // which the other wrappers don't forward correctly.\n    child = _react2.default.createElement(\n      _Position2.default,\n      { container: container, containerPadding: containerPadding, target: target, placement: placement, shouldUpdatePosition: shouldUpdatePosition },\n      child\n    );\n\n    if (Transition) {\n      var onExit = props.onExit,\n          onExiting = props.onExiting,\n          onEnter = props.onEnter,\n          onEntering = props.onEntering,\n          onEntered = props.onEntered;\n\n      // This animates the child node by injecting props, so it must precede\n      // anything that adds a wrapping div.\n\n      child = _react2.default.createElement(\n        Transition,\n        {\n          'in': props.show,\n          transitionAppear: true,\n          onExit: onExit,\n          onExiting: onExiting,\n          onExited: this.onHiddenListener,\n          onEnter: onEnter,\n          onEntering: onEntering,\n          onEntered: onEntered\n        },\n        child\n      );\n    }\n\n    // This goes after everything else because it adds a wrapping div.\n    if (rootClose) {\n      child = _react2.default.createElement(\n        _RootCloseWrapper2.default,\n        { onRootClose: props.onHide },\n        child\n      );\n    }\n\n    return _react2.default.createElement(\n      _Portal2.default,\n      { container: container },\n      child\n    );\n  };\n\n  return Overlay;\n}(_react2.default.Component);\n\nOverlay.propTypes = _extends({}, _Portal2.default.propTypes, _Position2.default.propTypes, {\n\n  /**\n   * Set the visibility of the Overlay\n   */\n  show: _propTypes2.default.bool,\n\n  /**\n   * Specify whether the overlay should trigger `onHide` when the user clicks outside the overlay\n   */\n  rootClose: _propTypes2.default.bool,\n\n  /**\n   * A Callback fired by the Overlay when it wishes to be hidden.\n   *\n   * __required__ when `rootClose` is `true`.\n   *\n   * @type func\n   */\n  onHide: function onHide(props) {\n    var propType = _propTypes2.default.func;\n    if (props.rootClose) {\n      propType = propType.isRequired;\n    }\n\n    for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    return propType.apply(undefined, [props].concat(args));\n  },\n\n\n  /**\n   * A `<Transition/>` component used to animate the overlay changes visibility.\n   */\n  transition: _elementType2.default,\n\n  /**\n   * Callback fired before the Overlay transitions in\n   */\n  onEnter: _propTypes2.default.func,\n\n  /**\n   * Callback fired as the Overlay begins to transition in\n   */\n  onEntering: _propTypes2.default.func,\n\n  /**\n   * Callback fired after the Overlay finishes transitioning in\n   */\n  onEntered: _propTypes2.default.func,\n\n  /**\n   * Callback fired right before the Overlay transitions out\n   */\n  onExit: _propTypes2.default.func,\n\n  /**\n   * Callback fired as the Overlay begins to transition out\n   */\n  onExiting: _propTypes2.default.func,\n\n  /**\n   * Callback fired after the Overlay finishes transitioning out\n   */\n  onExited: _propTypes2.default.func\n});\n\nexports.default = Overlay;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-overlays/lib/Overlay.js\n// module id = 519\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _componentOrElement = require('prop-types-extra/lib/componentOrElement');\n\nvar _componentOrElement2 = _interopRequireDefault(_componentOrElement);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _calculatePosition = require('./utils/calculatePosition');\n\nvar _calculatePosition2 = _interopRequireDefault(_calculatePosition);\n\nvar _getContainer = require('./utils/getContainer');\n\nvar _getContainer2 = _interopRequireDefault(_getContainer);\n\nvar _ownerDocument = require('./utils/ownerDocument');\n\nvar _ownerDocument2 = _interopRequireDefault(_ownerDocument);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * The Position component calculates the coordinates for its child, to position\n * it relative to a `target` component or node. Useful for creating callouts\n * and tooltips, the Position component injects a `style` props with `left` and\n * `top` values for positioning your component.\n *\n * It also injects \"arrow\" `left`, and `top` values for styling callout arrows\n * for giving your components a sense of directionality.\n */\nvar Position = function (_React$Component) {\n  _inherits(Position, _React$Component);\n\n  function Position(props, context) {\n    _classCallCheck(this, Position);\n\n    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n\n    _this.getTarget = function () {\n      var target = _this.props.target;\n\n      var targetElement = typeof target === 'function' ? target() : target;\n      return targetElement && _reactDom2.default.findDOMNode(targetElement) || null;\n    };\n\n    _this.maybeUpdatePosition = function (placementChanged) {\n      var target = _this.getTarget();\n\n      if (!_this.props.shouldUpdatePosition && target === _this._lastTarget && !placementChanged) {\n        return;\n      }\n\n      _this.updatePosition(target);\n    };\n\n    _this.state = {\n      positionLeft: 0,\n      positionTop: 0,\n      arrowOffsetLeft: null,\n      arrowOffsetTop: null\n    };\n\n    _this._needsFlush = false;\n    _this._lastTarget = null;\n    return _this;\n  }\n\n  Position.prototype.componentDidMount = function componentDidMount() {\n    this.updatePosition(this.getTarget());\n  };\n\n  Position.prototype.componentWillReceiveProps = function componentWillReceiveProps() {\n    this._needsFlush = true;\n  };\n\n  Position.prototype.componentDidUpdate = function componentDidUpdate(prevProps) {\n    if (this._needsFlush) {\n      this._needsFlush = false;\n      this.maybeUpdatePosition(this.props.placement !== prevProps.placement);\n    }\n  };\n\n  Position.prototype.render = function render() {\n    var _props = this.props,\n        children = _props.children,\n        className = _props.className,\n        props = _objectWithoutProperties(_props, ['children', 'className']);\n\n    var _state = this.state,\n        positionLeft = _state.positionLeft,\n        positionTop = _state.positionTop,\n        arrowPosition = _objectWithoutProperties(_state, ['positionLeft', 'positionTop']);\n\n    // These should not be forwarded to the child.\n\n\n    delete props.target;\n    delete props.container;\n    delete props.containerPadding;\n    delete props.shouldUpdatePosition;\n\n    var child = _react2.default.Children.only(children);\n    return (0, _react.cloneElement)(child, _extends({}, props, arrowPosition, {\n      // FIXME: Don't forward `positionLeft` and `positionTop` via both props\n      // and `props.style`.\n      positionLeft: positionLeft,\n      positionTop: positionTop,\n      className: (0, _classnames2.default)(className, child.props.className),\n      style: _extends({}, child.props.style, {\n        left: positionLeft,\n        top: positionTop\n      })\n    }));\n  };\n\n  Position.prototype.updatePosition = function updatePosition(target) {\n    this._lastTarget = target;\n\n    if (!target) {\n      this.setState({\n        positionLeft: 0,\n        positionTop: 0,\n        arrowOffsetLeft: null,\n        arrowOffsetTop: null\n      });\n\n      return;\n    }\n\n    var overlay = _reactDom2.default.findDOMNode(this);\n    var container = (0, _getContainer2.default)(this.props.container, (0, _ownerDocument2.default)(this).body);\n\n    this.setState((0, _calculatePosition2.default)(this.props.placement, overlay, target, container, this.props.containerPadding));\n  };\n\n  return Position;\n}(_react2.default.Component);\n\nPosition.propTypes = {\n  /**\n   * A node, element, or function that returns either. The child will be\n   * be positioned next to the `target` specified.\n   */\n  target: _propTypes2.default.oneOfType([_componentOrElement2.default, _propTypes2.default.func]),\n\n  /**\n   * \"offsetParent\" of the component\n   */\n  container: _propTypes2.default.oneOfType([_componentOrElement2.default, _propTypes2.default.func]),\n  /**\n   * Minimum spacing in pixels between container border and component border\n   */\n  containerPadding: _propTypes2.default.number,\n  /**\n   * How to position the component relative to the target\n   */\n  placement: _propTypes2.default.oneOf(['top', 'right', 'bottom', 'left']),\n  /**\n   * Whether the position should be changed on each update\n   */\n  shouldUpdatePosition: _propTypes2.default.bool\n};\n\nPosition.displayName = 'Position';\n\nPosition.defaultProps = {\n  containerPadding: 0,\n  placement: 'right',\n  shouldUpdatePosition: false\n};\n\nexports.default = Position;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-overlays/lib/Position.js\n// module id = 520\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\nexports.default = calculatePosition;\n\nvar _offset = require('dom-helpers/query/offset');\n\nvar _offset2 = _interopRequireDefault(_offset);\n\nvar _position = require('dom-helpers/query/position');\n\nvar _position2 = _interopRequireDefault(_position);\n\nvar _scrollTop = require('dom-helpers/query/scrollTop');\n\nvar _scrollTop2 = _interopRequireDefault(_scrollTop);\n\nvar _ownerDocument = require('./ownerDocument');\n\nvar _ownerDocument2 = _interopRequireDefault(_ownerDocument);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getContainerDimensions(containerNode) {\n  var width = void 0,\n      height = void 0,\n      scroll = void 0;\n\n  if (containerNode.tagName === 'BODY') {\n    width = window.innerWidth;\n    height = window.innerHeight;\n\n    scroll = (0, _scrollTop2.default)((0, _ownerDocument2.default)(containerNode).documentElement) || (0, _scrollTop2.default)(containerNode);\n  } else {\n    var _getOffset = (0, _offset2.default)(containerNode);\n\n    width = _getOffset.width;\n    height = _getOffset.height;\n\n    scroll = (0, _scrollTop2.default)(containerNode);\n  }\n\n  return { width: width, height: height, scroll: scroll };\n}\n\nfunction getTopDelta(top, overlayHeight, container, padding) {\n  var containerDimensions = getContainerDimensions(container);\n  var containerScroll = containerDimensions.scroll;\n  var containerHeight = containerDimensions.height;\n\n  var topEdgeOffset = top - padding - containerScroll;\n  var bottomEdgeOffset = top + padding - containerScroll + overlayHeight;\n\n  if (topEdgeOffset < 0) {\n    return -topEdgeOffset;\n  } else if (bottomEdgeOffset > containerHeight) {\n    return containerHeight - bottomEdgeOffset;\n  } else {\n    return 0;\n  }\n}\n\nfunction getLeftDelta(left, overlayWidth, container, padding) {\n  var containerDimensions = getContainerDimensions(container);\n  var containerWidth = containerDimensions.width;\n\n  var leftEdgeOffset = left - padding;\n  var rightEdgeOffset = left + padding + overlayWidth;\n\n  if (leftEdgeOffset < 0) {\n    return -leftEdgeOffset;\n  } else if (rightEdgeOffset > containerWidth) {\n    return containerWidth - rightEdgeOffset;\n  }\n\n  return 0;\n}\n\nfunction calculatePosition(placement, overlayNode, target, container, padding) {\n  var childOffset = container.tagName === 'BODY' ? (0, _offset2.default)(target) : (0, _position2.default)(target, container);\n\n  var _getOffset2 = (0, _offset2.default)(overlayNode),\n      overlayHeight = _getOffset2.height,\n      overlayWidth = _getOffset2.width;\n\n  var positionLeft = void 0,\n      positionTop = void 0,\n      arrowOffsetLeft = void 0,\n      arrowOffsetTop = void 0;\n\n  if (placement === 'left' || placement === 'right') {\n    positionTop = childOffset.top + (childOffset.height - overlayHeight) / 2;\n\n    if (placement === 'left') {\n      positionLeft = childOffset.left - overlayWidth;\n    } else {\n      positionLeft = childOffset.left + childOffset.width;\n    }\n\n    var topDelta = getTopDelta(positionTop, overlayHeight, container, padding);\n\n    positionTop += topDelta;\n    arrowOffsetTop = 50 * (1 - 2 * topDelta / overlayHeight) + '%';\n    arrowOffsetLeft = void 0;\n  } else if (placement === 'top' || placement === 'bottom') {\n    positionLeft = childOffset.left + (childOffset.width - overlayWidth) / 2;\n\n    if (placement === 'top') {\n      positionTop = childOffset.top - overlayHeight;\n    } else {\n      positionTop = childOffset.top + childOffset.height;\n    }\n\n    var leftDelta = getLeftDelta(positionLeft, overlayWidth, container, padding);\n\n    positionLeft += leftDelta;\n    arrowOffsetLeft = 50 * (1 - 2 * leftDelta / overlayWidth) + '%';\n    arrowOffsetTop = void 0;\n  } else {\n    throw new Error('calcOverlayPosition(): No such placement of \"' + placement + '\" found.');\n  }\n\n  return { positionLeft: positionLeft, positionTop: positionTop, arrowOffsetLeft: arrowOffsetLeft, arrowOffsetTop: arrowOffsetTop };\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-overlays/lib/utils/calculatePosition.js\n// module id = 521\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.default = position;\n\nvar _offset = require('./offset');\n\nvar _offset2 = _interopRequireDefault(_offset);\n\nvar _offsetParent = require('./offsetParent');\n\nvar _offsetParent2 = _interopRequireDefault(_offsetParent);\n\nvar _scrollTop = require('./scrollTop');\n\nvar _scrollTop2 = _interopRequireDefault(_scrollTop);\n\nvar _scrollLeft = require('./scrollLeft');\n\nvar _scrollLeft2 = _interopRequireDefault(_scrollLeft);\n\nvar _style = require('../style');\n\nvar _style2 = _interopRequireDefault(_style);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction nodeName(node) {\n  return node.nodeName && node.nodeName.toLowerCase();\n}\n\nfunction position(node, offsetParent) {\n  var parentOffset = { top: 0, left: 0 },\n      offset;\n\n  // Fixed elements are offset from window (parentOffset = {top:0, left: 0},\n  // because it is its only offset parent\n  if ((0, _style2.default)(node, 'position') === 'fixed') {\n    offset = node.getBoundingClientRect();\n  } else {\n    offsetParent = offsetParent || (0, _offsetParent2.default)(node);\n    offset = (0, _offset2.default)(node);\n\n    if (nodeName(offsetParent) !== 'html') parentOffset = (0, _offset2.default)(offsetParent);\n\n    parentOffset.top += parseInt((0, _style2.default)(offsetParent, 'borderTopWidth'), 10) - (0, _scrollTop2.default)(offsetParent) || 0;\n    parentOffset.left += parseInt((0, _style2.default)(offsetParent, 'borderLeftWidth'), 10) - (0, _scrollLeft2.default)(offsetParent) || 0;\n  }\n\n  // Subtract parent offsets and node margins\n  return _extends({}, offset, {\n    top: offset.top - parentOffset.top - (parseInt((0, _style2.default)(node, 'marginTop'), 10) || 0),\n    left: offset.left - parentOffset.left - (parseInt((0, _style2.default)(node, 'marginLeft'), 10) || 0)\n  });\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-helpers/query/position.js\n// module id = 522\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = offsetParent;\n\nvar _ownerDocument = require('../ownerDocument');\n\nvar _ownerDocument2 = _interopRequireDefault(_ownerDocument);\n\nvar _style = require('../style');\n\nvar _style2 = _interopRequireDefault(_style);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction nodeName(node) {\n  return node.nodeName && node.nodeName.toLowerCase();\n}\n\nfunction offsetParent(node) {\n  var doc = (0, _ownerDocument2.default)(node),\n      offsetParent = node && node.offsetParent;\n\n  while (offsetParent && nodeName(node) !== 'html' && (0, _style2.default)(offsetParent, 'position') === 'static') {\n    offsetParent = offsetParent.offsetParent;\n  }\n\n  return offsetParent || doc.documentElement;\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-helpers/query/offsetParent.js\n// module id = 523\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = scrollTop;\n\nvar _isWindow = require('./isWindow');\n\nvar _isWindow2 = _interopRequireDefault(_isWindow);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction scrollTop(node, val) {\n  var win = (0, _isWindow2.default)(node);\n\n  if (val === undefined) return win ? 'pageXOffset' in win ? win.pageXOffset : win.document.documentElement.scrollLeft : node.scrollLeft;\n\n  if (win) win.scrollTo(val, 'pageYOffset' in win ? win.pageYOffset : win.document.documentElement.scrollTop);else node.scrollLeft = val;\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-helpers/query/scrollLeft.js\n// module id = 524\n// module chunks = 0","import _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport _extends from 'babel-runtime/helpers/extends';\nimport contains from 'dom-helpers/query/contains';\nimport React, { cloneElement } from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport warning from 'warning';\n\nimport Overlay from './Overlay';\n\nimport createChainedFunction from './utils/createChainedFunction';\n\n/**\n * Check if value one is inside or equal to the of value\n *\n * @param {string} one\n * @param {string|array} of\n * @returns {boolean}\n */\nfunction isOneOf(one, of) {\n  if (Array.isArray(of)) {\n    return of.indexOf(one) >= 0;\n  }\n  return one === of;\n}\n\nvar triggerType = PropTypes.oneOf(['click', 'hover', 'focus']);\n\nvar propTypes = _extends({}, Overlay.propTypes, {\n\n  /**\n   * Specify which action or actions trigger Overlay visibility\n   */\n  trigger: PropTypes.oneOfType([triggerType, PropTypes.arrayOf(triggerType)]),\n\n  /**\n   * A millisecond delay amount to show and hide the Overlay once triggered\n   */\n  delay: PropTypes.number,\n  /**\n   * A millisecond delay amount before showing the Overlay once triggered.\n   */\n  delayShow: PropTypes.number,\n  /**\n   * A millisecond delay amount before hiding the Overlay once triggered.\n   */\n  delayHide: PropTypes.number,\n\n  // FIXME: This should be `defaultShow`.\n  /**\n   * The initial visibility state of the Overlay. For more nuanced visibility\n   * control, consider using the Overlay component directly.\n   */\n  defaultOverlayShown: PropTypes.bool,\n\n  /**\n   * An element or text to overlay next to the target.\n   */\n  overlay: PropTypes.node.isRequired,\n\n  /**\n   * @private\n   */\n  onBlur: PropTypes.func,\n  /**\n   * @private\n   */\n  onClick: PropTypes.func,\n  /**\n   * @private\n   */\n  onFocus: PropTypes.func,\n  /**\n   * @private\n   */\n  onMouseOut: PropTypes.func,\n  /**\n   * @private\n   */\n  onMouseOver: PropTypes.func,\n\n  // Overridden props from `<Overlay>`.\n  /**\n   * @private\n   */\n  target: PropTypes.oneOf([null]),\n  /**\n   * @private\n   */\n  onHide: PropTypes.oneOf([null]),\n  /**\n   * @private\n   */\n  show: PropTypes.oneOf([null])\n});\n\nvar defaultProps = {\n  defaultOverlayShown: false,\n  trigger: ['hover', 'focus']\n};\n\nvar OverlayTrigger = function (_React$Component) {\n  _inherits(OverlayTrigger, _React$Component);\n\n  function OverlayTrigger(props, context) {\n    _classCallCheck(this, OverlayTrigger);\n\n    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n\n    _this.handleToggle = _this.handleToggle.bind(_this);\n    _this.handleDelayedShow = _this.handleDelayedShow.bind(_this);\n    _this.handleDelayedHide = _this.handleDelayedHide.bind(_this);\n    _this.handleHide = _this.handleHide.bind(_this);\n\n    _this.handleMouseOver = function (e) {\n      return _this.handleMouseOverOut(_this.handleDelayedShow, e);\n    };\n    _this.handleMouseOut = function (e) {\n      return _this.handleMouseOverOut(_this.handleDelayedHide, e);\n    };\n\n    _this._mountNode = null;\n\n    _this.state = {\n      show: props.defaultOverlayShown\n    };\n    return _this;\n  }\n\n  OverlayTrigger.prototype.componentDidMount = function componentDidMount() {\n    this._mountNode = document.createElement('div');\n    this.renderOverlay();\n  };\n\n  OverlayTrigger.prototype.componentDidUpdate = function componentDidUpdate() {\n    this.renderOverlay();\n  };\n\n  OverlayTrigger.prototype.componentWillUnmount = function componentWillUnmount() {\n    ReactDOM.unmountComponentAtNode(this._mountNode);\n    this._mountNode = null;\n\n    clearTimeout(this._hoverShowDelay);\n    clearTimeout(this._hoverHideDelay);\n  };\n\n  OverlayTrigger.prototype.handleDelayedHide = function handleDelayedHide() {\n    var _this2 = this;\n\n    if (this._hoverShowDelay != null) {\n      clearTimeout(this._hoverShowDelay);\n      this._hoverShowDelay = null;\n      return;\n    }\n\n    if (!this.state.show || this._hoverHideDelay != null) {\n      return;\n    }\n\n    var delay = this.props.delayHide != null ? this.props.delayHide : this.props.delay;\n\n    if (!delay) {\n      this.hide();\n      return;\n    }\n\n    this._hoverHideDelay = setTimeout(function () {\n      _this2._hoverHideDelay = null;\n      _this2.hide();\n    }, delay);\n  };\n\n  OverlayTrigger.prototype.handleDelayedShow = function handleDelayedShow() {\n    var _this3 = this;\n\n    if (this._hoverHideDelay != null) {\n      clearTimeout(this._hoverHideDelay);\n      this._hoverHideDelay = null;\n      return;\n    }\n\n    if (this.state.show || this._hoverShowDelay != null) {\n      return;\n    }\n\n    var delay = this.props.delayShow != null ? this.props.delayShow : this.props.delay;\n\n    if (!delay) {\n      this.show();\n      return;\n    }\n\n    this._hoverShowDelay = setTimeout(function () {\n      _this3._hoverShowDelay = null;\n      _this3.show();\n    }, delay);\n  };\n\n  OverlayTrigger.prototype.handleHide = function handleHide() {\n    this.hide();\n  };\n\n  // Simple implementation of mouseEnter and mouseLeave.\n  // React's built version is broken: https://github.com/facebook/react/issues/4251\n  // for cases when the trigger is disabled and mouseOut/Over can cause flicker\n  // moving from one child element to another.\n\n\n  OverlayTrigger.prototype.handleMouseOverOut = function handleMouseOverOut(handler, e) {\n    var target = e.currentTarget;\n    var related = e.relatedTarget || e.nativeEvent.toElement;\n\n    if ((!related || related !== target) && !contains(target, related)) {\n      handler(e);\n    }\n  };\n\n  OverlayTrigger.prototype.handleToggle = function handleToggle() {\n    if (this.state.show) {\n      this.hide();\n    } else {\n      this.show();\n    }\n  };\n\n  OverlayTrigger.prototype.hide = function hide() {\n    this.setState({ show: false });\n  };\n\n  OverlayTrigger.prototype.makeOverlay = function makeOverlay(overlay, props) {\n    return React.createElement(\n      Overlay,\n      _extends({}, props, {\n        show: this.state.show,\n        onHide: this.handleHide,\n        target: this\n      }),\n      overlay\n    );\n  };\n\n  OverlayTrigger.prototype.show = function show() {\n    this.setState({ show: true });\n  };\n\n  OverlayTrigger.prototype.renderOverlay = function renderOverlay() {\n    ReactDOM.unstable_renderSubtreeIntoContainer(this, this._overlay, this._mountNode);\n  };\n\n  OverlayTrigger.prototype.render = function render() {\n    var _props = this.props,\n        trigger = _props.trigger,\n        overlay = _props.overlay,\n        children = _props.children,\n        onBlur = _props.onBlur,\n        onClick = _props.onClick,\n        onFocus = _props.onFocus,\n        onMouseOut = _props.onMouseOut,\n        onMouseOver = _props.onMouseOver,\n        props = _objectWithoutProperties(_props, ['trigger', 'overlay', 'children', 'onBlur', 'onClick', 'onFocus', 'onMouseOut', 'onMouseOver']);\n\n    delete props.delay;\n    delete props.delayShow;\n    delete props.delayHide;\n    delete props.defaultOverlayShown;\n\n    var child = React.Children.only(children);\n    var childProps = child.props;\n    var triggerProps = {};\n\n    if (this.state.show) {\n      triggerProps['aria-describedby'] = overlay.props.id;\n    }\n\n    // FIXME: The logic here for passing through handlers on this component is\n    // inconsistent. We shouldn't be passing any of these props through.\n\n    triggerProps.onClick = createChainedFunction(childProps.onClick, onClick);\n\n    if (isOneOf('click', trigger)) {\n      triggerProps.onClick = createChainedFunction(triggerProps.onClick, this.handleToggle);\n    }\n\n    if (isOneOf('hover', trigger)) {\n      process.env.NODE_ENV !== 'production' ? warning(!(trigger === 'hover'), '[react-bootstrap] Specifying only the `\"hover\"` trigger limits the ' + 'visibility of the overlay to just mouse users. Consider also ' + 'including the `\"focus\"` trigger so that touch and keyboard only ' + 'users can see the overlay as well.') : void 0;\n\n      triggerProps.onMouseOver = createChainedFunction(childProps.onMouseOver, onMouseOver, this.handleMouseOver);\n      triggerProps.onMouseOut = createChainedFunction(childProps.onMouseOut, onMouseOut, this.handleMouseOut);\n    }\n\n    if (isOneOf('focus', trigger)) {\n      triggerProps.onFocus = createChainedFunction(childProps.onFocus, onFocus, this.handleDelayedShow);\n      triggerProps.onBlur = createChainedFunction(childProps.onBlur, onBlur, this.handleDelayedHide);\n    }\n\n    this._overlay = this.makeOverlay(overlay, props);\n\n    return cloneElement(child, triggerProps);\n  };\n\n  return OverlayTrigger;\n}(React.Component);\n\nOverlayTrigger.propTypes = propTypes;\nOverlayTrigger.defaultProps = defaultProps;\n\nexport default OverlayTrigger;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/OverlayTrigger.js\n// module id = 525\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\n\nimport { bsClass, getClassSet, splitBsProps } from './utils/bootstrapUtils';\n\nvar PageHeader = function (_React$Component) {\n  _inherits(PageHeader, _React$Component);\n\n  function PageHeader() {\n    _classCallCheck(this, PageHeader);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  PageHeader.prototype.render = function render() {\n    var _props = this.props,\n        className = _props.className,\n        children = _props.children,\n        props = _objectWithoutProperties(_props, ['className', 'children']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = getClassSet(bsProps);\n\n    return React.createElement(\n      'div',\n      _extends({}, elementProps, {\n        className: classNames(className, classes)\n      }),\n      React.createElement(\n        'h1',\n        null,\n        children\n      )\n    );\n  };\n\n  return PageHeader;\n}(React.Component);\n\nexport default bsClass('page-header', PageHeader);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/PageHeader.js\n// module id = 526\n// module chunks = 0","import PagerItem from './PagerItem';\nimport deprecationWarning from './utils/deprecationWarning';\n\nexport default deprecationWarning.wrapper(PagerItem, '`<PageItem>`', '`<Pager.Item>`');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/PageItem.js\n// module id = 527\n// module chunks = 0","import _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport _typeof from 'babel-runtime/helpers/typeof';\nimport warning from 'warning';\n\nvar warned = {};\n\nfunction deprecationWarning(oldname, newname, link) {\n  var message = void 0;\n\n  if ((typeof oldname === 'undefined' ? 'undefined' : _typeof(oldname)) === 'object') {\n    message = oldname.message;\n  } else {\n    message = oldname + ' is deprecated. Use ' + newname + ' instead.';\n\n    if (link) {\n      message += '\\nYou can read more about it at ' + link;\n    }\n  }\n\n  if (warned[message]) {\n    return;\n  }\n\n  process.env.NODE_ENV !== 'production' ? warning(false, message) : void 0;\n  warned[message] = true;\n}\n\ndeprecationWarning.wrapper = function (Component) {\n  for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    args[_key - 1] = arguments[_key];\n  }\n\n  return function (_Component) {\n    _inherits(DeprecatedComponent, _Component);\n\n    function DeprecatedComponent() {\n      _classCallCheck(this, DeprecatedComponent);\n\n      return _possibleConstructorReturn(this, _Component.apply(this, arguments));\n    }\n\n    DeprecatedComponent.prototype.componentWillMount = function componentWillMount() {\n      deprecationWarning.apply(undefined, args);\n\n      if (_Component.prototype.componentWillMount) {\n        var _Component$prototype$;\n\n        for (var _len2 = arguments.length, methodArgs = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n          methodArgs[_key2] = arguments[_key2];\n        }\n\n        (_Component$prototype$ = _Component.prototype.componentWillMount).call.apply(_Component$prototype$, [this].concat(methodArgs));\n      }\n    };\n\n    return DeprecatedComponent;\n  }(Component);\n};\n\nexport default deprecationWarning;\n\nexport function _resetWarned() {\n  warned = {};\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/utils/deprecationWarning.js\n// module id = 528\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React, { cloneElement } from 'react';\nimport PropTypes from 'prop-types';\n\nimport PagerItem from './PagerItem';\nimport { bsClass, getClassSet, splitBsProps } from './utils/bootstrapUtils';\nimport createChainedFunction from './utils/createChainedFunction';\nimport ValidComponentChildren from './utils/ValidComponentChildren';\n\nvar propTypes = {\n  onSelect: PropTypes.func\n};\n\nvar Pager = function (_React$Component) {\n  _inherits(Pager, _React$Component);\n\n  function Pager() {\n    _classCallCheck(this, Pager);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  Pager.prototype.render = function render() {\n    var _props = this.props,\n        onSelect = _props.onSelect,\n        className = _props.className,\n        children = _props.children,\n        props = _objectWithoutProperties(_props, ['onSelect', 'className', 'children']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = getClassSet(bsProps);\n\n    return React.createElement(\n      'ul',\n      _extends({}, elementProps, {\n        className: classNames(className, classes)\n      }),\n      ValidComponentChildren.map(children, function (child) {\n        return cloneElement(child, {\n          onSelect: createChainedFunction(child.props.onSelect, onSelect)\n        });\n      })\n    );\n  };\n\n  return Pager;\n}(React.Component);\n\nPager.propTypes = propTypes;\n\nPager.Item = PagerItem;\n\nexport default bsClass('pager', Pager);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/Pager.js\n// module id = 529\n// module chunks = 0","import _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _extends from 'babel-runtime/helpers/extends';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport elementType from 'prop-types-extra/lib/elementType';\n\nimport PaginationButton from './PaginationButton';\nimport { bsClass, getClassSet, splitBsProps } from './utils/bootstrapUtils';\n\nvar propTypes = {\n  activePage: PropTypes.number,\n  items: PropTypes.number,\n  maxButtons: PropTypes.number,\n\n  /**\n   * When `true`, will display the first and the last button page when\n   * displaying ellipsis.\n   */\n  boundaryLinks: PropTypes.bool,\n\n  /**\n   * When `true`, will display the default node value ('&hellip;').\n   * Otherwise, will display provided node (when specified).\n   */\n  ellipsis: PropTypes.oneOfType([PropTypes.bool, PropTypes.node]),\n\n  /**\n   * When `true`, will display the default node value ('&laquo;').\n   * Otherwise, will display provided node (when specified).\n   */\n  first: PropTypes.oneOfType([PropTypes.bool, PropTypes.node]),\n\n  /**\n   * When `true`, will display the default node value ('&raquo;').\n   * Otherwise, will display provided node (when specified).\n   */\n  last: PropTypes.oneOfType([PropTypes.bool, PropTypes.node]),\n\n  /**\n   * When `true`, will display the default node value ('&lsaquo;').\n   * Otherwise, will display provided node (when specified).\n   */\n  prev: PropTypes.oneOfType([PropTypes.bool, PropTypes.node]),\n\n  /**\n   * When `true`, will display the default node value ('&rsaquo;').\n   * Otherwise, will display provided node (when specified).\n   */\n  next: PropTypes.oneOfType([PropTypes.bool, PropTypes.node]),\n\n  onSelect: PropTypes.func,\n\n  /**\n   * You can use a custom element for the buttons\n   */\n  buttonComponentClass: elementType\n};\n\nvar defaultProps = {\n  activePage: 1,\n  items: 1,\n  maxButtons: 0,\n  first: false,\n  last: false,\n  prev: false,\n  next: false,\n  ellipsis: true,\n  boundaryLinks: false\n};\n\nvar Pagination = function (_React$Component) {\n  _inherits(Pagination, _React$Component);\n\n  function Pagination() {\n    _classCallCheck(this, Pagination);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  Pagination.prototype.renderPageButtons = function renderPageButtons(activePage, items, maxButtons, boundaryLinks, ellipsis, buttonProps) {\n    var pageButtons = [];\n\n    var startPage = void 0;\n    var endPage = void 0;\n\n    if (maxButtons && maxButtons < items) {\n      startPage = Math.max(Math.min(activePage - Math.floor(maxButtons / 2, 10), items - maxButtons + 1), 1);\n      endPage = startPage + maxButtons - 1;\n    } else {\n      startPage = 1;\n      endPage = items;\n    }\n\n    for (var page = startPage; page <= endPage; ++page) {\n      pageButtons.push(React.createElement(\n        PaginationButton,\n        _extends({}, buttonProps, {\n          key: page,\n          eventKey: page,\n          active: page === activePage\n        }),\n        page\n      ));\n    }\n\n    if (ellipsis && boundaryLinks && startPage > 1) {\n      if (startPage > 2) {\n        pageButtons.unshift(React.createElement(\n          PaginationButton,\n          {\n            key: 'ellipsisFirst',\n            disabled: true,\n            componentClass: buttonProps.componentClass\n          },\n          React.createElement(\n            'span',\n            { 'aria-label': 'More' },\n            ellipsis === true ? '\\u2026' : ellipsis\n          )\n        ));\n      }\n\n      pageButtons.unshift(React.createElement(\n        PaginationButton,\n        _extends({}, buttonProps, {\n          key: 1,\n          eventKey: 1,\n          active: false\n        }),\n        '1'\n      ));\n    }\n\n    if (ellipsis && endPage < items) {\n      if (!boundaryLinks || endPage < items - 1) {\n        pageButtons.push(React.createElement(\n          PaginationButton,\n          {\n            key: 'ellipsis',\n            disabled: true,\n            componentClass: buttonProps.componentClass\n          },\n          React.createElement(\n            'span',\n            { 'aria-label': 'More' },\n            ellipsis === true ? '\\u2026' : ellipsis\n          )\n        ));\n      }\n\n      if (boundaryLinks) {\n        pageButtons.push(React.createElement(\n          PaginationButton,\n          _extends({}, buttonProps, {\n            key: items,\n            eventKey: items,\n            active: false\n          }),\n          items\n        ));\n      }\n    }\n\n    return pageButtons;\n  };\n\n  Pagination.prototype.render = function render() {\n    var _props = this.props,\n        activePage = _props.activePage,\n        items = _props.items,\n        maxButtons = _props.maxButtons,\n        boundaryLinks = _props.boundaryLinks,\n        ellipsis = _props.ellipsis,\n        first = _props.first,\n        last = _props.last,\n        prev = _props.prev,\n        next = _props.next,\n        onSelect = _props.onSelect,\n        buttonComponentClass = _props.buttonComponentClass,\n        className = _props.className,\n        props = _objectWithoutProperties(_props, ['activePage', 'items', 'maxButtons', 'boundaryLinks', 'ellipsis', 'first', 'last', 'prev', 'next', 'onSelect', 'buttonComponentClass', 'className']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = getClassSet(bsProps);\n\n    var buttonProps = {\n      onSelect: onSelect,\n      componentClass: buttonComponentClass\n    };\n\n    return React.createElement(\n      'ul',\n      _extends({}, elementProps, {\n        className: classNames(className, classes)\n      }),\n      first && React.createElement(\n        PaginationButton,\n        _extends({}, buttonProps, {\n          eventKey: 1,\n          disabled: activePage === 1\n        }),\n        React.createElement(\n          'span',\n          { 'aria-label': 'First' },\n          first === true ? '\\xAB' : first\n        )\n      ),\n      prev && React.createElement(\n        PaginationButton,\n        _extends({}, buttonProps, {\n          eventKey: activePage - 1,\n          disabled: activePage === 1\n        }),\n        React.createElement(\n          'span',\n          { 'aria-label': 'Previous' },\n          prev === true ? '\\u2039' : prev\n        )\n      ),\n      this.renderPageButtons(activePage, items, maxButtons, boundaryLinks, ellipsis, buttonProps),\n      next && React.createElement(\n        PaginationButton,\n        _extends({}, buttonProps, {\n          eventKey: activePage + 1,\n          disabled: activePage >= items\n        }),\n        React.createElement(\n          'span',\n          { 'aria-label': 'Next' },\n          next === true ? '\\u203A' : next\n        )\n      ),\n      last && React.createElement(\n        PaginationButton,\n        _extends({}, buttonProps, {\n          eventKey: items,\n          disabled: activePage >= items\n        }),\n        React.createElement(\n          'span',\n          { 'aria-label': 'Last' },\n          last === true ? '\\xBB' : last\n        )\n      )\n    );\n  };\n\n  return Pagination;\n}(React.Component);\n\nPagination.propTypes = propTypes;\nPagination.defaultProps = defaultProps;\n\nexport default bsClass('pagination', Pagination);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/Pagination.js\n// module id = 530\n// module chunks = 0","import _Object$values from 'babel-runtime/core-js/object/values';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _extends from 'babel-runtime/helpers/extends';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React, { cloneElement } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Collapse from './Collapse';\nimport { bsStyles, bsClass, getClassSet, prefix, splitBsPropsAndOmit } from './utils/bootstrapUtils';\nimport { State, Style } from './utils/StyleConfig';\n\n// TODO: Use uncontrollable.\n\nvar propTypes = {\n  collapsible: PropTypes.bool,\n  onSelect: PropTypes.func,\n  header: PropTypes.node,\n  id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n  footer: PropTypes.node,\n  defaultExpanded: PropTypes.bool,\n  expanded: PropTypes.bool,\n  eventKey: PropTypes.any,\n  headerRole: PropTypes.string,\n  panelRole: PropTypes.string,\n\n  // From Collapse.\n  onEnter: PropTypes.func,\n  onEntering: PropTypes.func,\n  onEntered: PropTypes.func,\n  onExit: PropTypes.func,\n  onExiting: PropTypes.func,\n  onExited: PropTypes.func\n};\n\nvar defaultProps = {\n  defaultExpanded: false\n};\n\nvar Panel = function (_React$Component) {\n  _inherits(Panel, _React$Component);\n\n  function Panel(props, context) {\n    _classCallCheck(this, Panel);\n\n    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n\n    _this.handleClickTitle = _this.handleClickTitle.bind(_this);\n\n    _this.state = {\n      expanded: _this.props.defaultExpanded\n    };\n    return _this;\n  }\n\n  Panel.prototype.handleClickTitle = function handleClickTitle(e) {\n    // FIXME: What the heck? This API is horrible. This needs to go away!\n    e.persist();\n    e.selected = true;\n\n    if (this.props.onSelect) {\n      this.props.onSelect(this.props.eventKey, e);\n    } else {\n      e.preventDefault();\n    }\n\n    if (e.selected) {\n      this.setState({ expanded: !this.state.expanded });\n    }\n  };\n\n  Panel.prototype.renderAnchor = function renderAnchor(header, id, role, expanded) {\n    return React.createElement(\n      'a',\n      {\n        role: role,\n        href: id && '#' + id,\n        onClick: this.handleClickTitle,\n        'aria-controls': id,\n        'aria-expanded': expanded,\n        'aria-selected': expanded,\n        className: expanded ? null : 'collapsed'\n      },\n      header\n    );\n  };\n\n  Panel.prototype.renderBody = function renderBody(rawChildren, bsProps) {\n    var children = [];\n    var bodyChildren = [];\n\n    var bodyClassName = prefix(bsProps, 'body');\n\n    function maybeAddBody() {\n      if (!bodyChildren.length) {\n        return;\n      }\n\n      // Derive the key from the index here, since we need to make one up.\n      children.push(React.createElement(\n        'div',\n        { key: children.length, className: bodyClassName },\n        bodyChildren\n      ));\n\n      bodyChildren = [];\n    }\n\n    // Convert to array so we can re-use keys.\n    React.Children.toArray(rawChildren).forEach(function (child) {\n      if (React.isValidElement(child) && child.props.fill) {\n        maybeAddBody();\n\n        // Remove the child's unknown `fill` prop.\n        children.push(cloneElement(child, { fill: undefined }));\n\n        return;\n      }\n\n      bodyChildren.push(child);\n    });\n\n    maybeAddBody();\n\n    return children;\n  };\n\n  Panel.prototype.renderCollapsibleBody = function renderCollapsibleBody(id, expanded, role, children, bsProps, animationHooks) {\n    return React.createElement(\n      Collapse,\n      _extends({ 'in': expanded }, animationHooks),\n      React.createElement(\n        'div',\n        {\n          id: id,\n          role: role,\n          className: prefix(bsProps, 'collapse'),\n          'aria-hidden': !expanded\n        },\n        this.renderBody(children, bsProps)\n      )\n    );\n  };\n\n  Panel.prototype.renderHeader = function renderHeader(collapsible, header, id, role, expanded, bsProps) {\n    var titleClassName = prefix(bsProps, 'title');\n\n    if (!collapsible) {\n      if (!React.isValidElement(header)) {\n        return header;\n      }\n\n      return cloneElement(header, {\n        className: classNames(header.props.className, titleClassName)\n      });\n    }\n\n    if (!React.isValidElement(header)) {\n      return React.createElement(\n        'h4',\n        { role: 'presentation', className: titleClassName },\n        this.renderAnchor(header, id, role, expanded)\n      );\n    }\n\n    return cloneElement(header, {\n      className: classNames(header.props.className, titleClassName),\n      children: this.renderAnchor(header.props.children, id, role, expanded)\n    });\n  };\n\n  Panel.prototype.render = function render() {\n    var _props = this.props,\n        collapsible = _props.collapsible,\n        header = _props.header,\n        id = _props.id,\n        footer = _props.footer,\n        propsExpanded = _props.expanded,\n        headerRole = _props.headerRole,\n        panelRole = _props.panelRole,\n        className = _props.className,\n        children = _props.children,\n        onEnter = _props.onEnter,\n        onEntering = _props.onEntering,\n        onEntered = _props.onEntered,\n        onExit = _props.onExit,\n        onExiting = _props.onExiting,\n        onExited = _props.onExited,\n        props = _objectWithoutProperties(_props, ['collapsible', 'header', 'id', 'footer', 'expanded', 'headerRole', 'panelRole', 'className', 'children', 'onEnter', 'onEntering', 'onEntered', 'onExit', 'onExiting', 'onExited']);\n\n    var _splitBsPropsAndOmit = splitBsPropsAndOmit(props, ['defaultExpanded', 'eventKey', 'onSelect']),\n        bsProps = _splitBsPropsAndOmit[0],\n        elementProps = _splitBsPropsAndOmit[1];\n\n    var expanded = propsExpanded != null ? propsExpanded : this.state.expanded;\n\n    var classes = getClassSet(bsProps);\n\n    return React.createElement(\n      'div',\n      _extends({}, elementProps, {\n        className: classNames(className, classes),\n        id: collapsible ? null : id\n      }),\n      header && React.createElement(\n        'div',\n        { className: prefix(bsProps, 'heading') },\n        this.renderHeader(collapsible, header, id, headerRole, expanded, bsProps)\n      ),\n      collapsible ? this.renderCollapsibleBody(id, expanded, panelRole, children, bsProps, { onEnter: onEnter, onEntering: onEntering, onEntered: onEntered, onExit: onExit, onExiting: onExiting, onExited: onExited }) : this.renderBody(children, bsProps),\n      footer && React.createElement(\n        'div',\n        { className: prefix(bsProps, 'footer') },\n        footer\n      )\n    );\n  };\n\n  return Panel;\n}(React.Component);\n\nPanel.propTypes = propTypes;\nPanel.defaultProps = defaultProps;\n\nexport default bsClass('panel', bsStyles([].concat(_Object$values(State), [Style.DEFAULT, Style.PRIMARY]), Style.DEFAULT, Panel));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/Panel.js\n// module id = 531\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport isRequiredForA11y from 'prop-types-extra/lib/isRequiredForA11y';\n\nimport { bsClass, getClassSet, prefix, splitBsProps } from './utils/bootstrapUtils';\n\nvar propTypes = {\n  /**\n   * An html id attribute, necessary for accessibility\n   * @type {string}\n   * @required\n   */\n  id: isRequiredForA11y(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),\n\n  /**\n   * Sets the direction the Popover is positioned towards.\n   */\n  placement: PropTypes.oneOf(['top', 'right', 'bottom', 'left']),\n\n  /**\n   * The \"top\" position value for the Popover.\n   */\n  positionTop: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * The \"left\" position value for the Popover.\n   */\n  positionLeft: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n  /**\n   * The \"top\" position value for the Popover arrow.\n   */\n  arrowOffsetTop: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * The \"left\" position value for the Popover arrow.\n   */\n  arrowOffsetLeft: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n  /**\n   * Title content\n   */\n  title: PropTypes.node\n};\n\nvar defaultProps = {\n  placement: 'right'\n};\n\nvar Popover = function (_React$Component) {\n  _inherits(Popover, _React$Component);\n\n  function Popover() {\n    _classCallCheck(this, Popover);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  Popover.prototype.render = function render() {\n    var _extends2;\n\n    var _props = this.props,\n        placement = _props.placement,\n        positionTop = _props.positionTop,\n        positionLeft = _props.positionLeft,\n        arrowOffsetTop = _props.arrowOffsetTop,\n        arrowOffsetLeft = _props.arrowOffsetLeft,\n        title = _props.title,\n        className = _props.className,\n        style = _props.style,\n        children = _props.children,\n        props = _objectWithoutProperties(_props, ['placement', 'positionTop', 'positionLeft', 'arrowOffsetTop', 'arrowOffsetLeft', 'title', 'className', 'style', 'children']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = _extends({}, getClassSet(bsProps), (_extends2 = {}, _extends2[placement] = true, _extends2));\n\n    var outerStyle = _extends({\n      display: 'block',\n      top: positionTop,\n      left: positionLeft\n    }, style);\n\n    var arrowStyle = {\n      top: arrowOffsetTop,\n      left: arrowOffsetLeft\n    };\n\n    return React.createElement(\n      'div',\n      _extends({}, elementProps, {\n        role: 'tooltip',\n        className: classNames(className, classes),\n        style: outerStyle\n      }),\n      React.createElement('div', { className: 'arrow', style: arrowStyle }),\n      title && React.createElement(\n        'h3',\n        { className: prefix(bsProps, 'title') },\n        title\n      ),\n      React.createElement(\n        'div',\n        { className: prefix(bsProps, 'content') },\n        children\n      )\n    );\n  };\n\n  return Popover;\n}(React.Component);\n\nPopover.propTypes = propTypes;\nPopover.defaultProps = defaultProps;\n\nexport default bsClass('popover', Popover);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/Popover.js\n// module id = 532\n// module chunks = 0","import _Object$values from 'babel-runtime/core-js/object/values';\nimport _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React, { cloneElement } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { bsClass as setBsClass, bsStyles, getClassSet, prefix, splitBsProps } from './utils/bootstrapUtils';\nimport { State } from './utils/StyleConfig';\nimport ValidComponentChildren from './utils/ValidComponentChildren';\n\nvar ROUND_PRECISION = 1000;\n\n/**\n * Validate that children, if any, are instances of `<ProgressBar>`.\n */\nfunction onlyProgressBar(props, propName, componentName) {\n  var children = props[propName];\n  if (!children) {\n    return null;\n  }\n\n  var error = null;\n\n  React.Children.forEach(children, function (child) {\n    if (error) {\n      return;\n    }\n\n    if (child.type === ProgressBar) {\n      // eslint-disable-line no-use-before-define\n      return;\n    }\n\n    var childIdentifier = React.isValidElement(child) ? child.type.displayName || child.type.name || child.type : child;\n    error = new Error('Children of ' + componentName + ' can contain only ProgressBar ' + ('components. Found ' + childIdentifier + '.'));\n  });\n\n  return error;\n}\n\nvar propTypes = {\n  min: PropTypes.number,\n  now: PropTypes.number,\n  max: PropTypes.number,\n  label: PropTypes.node,\n  srOnly: PropTypes.bool,\n  striped: PropTypes.bool,\n  active: PropTypes.bool,\n  children: onlyProgressBar,\n\n  /**\n   * @private\n   */\n  isChild: PropTypes.bool\n};\n\nvar defaultProps = {\n  min: 0,\n  max: 100,\n  active: false,\n  isChild: false,\n  srOnly: false,\n  striped: false\n};\n\nfunction getPercentage(now, min, max) {\n  var percentage = (now - min) / (max - min) * 100;\n  return Math.round(percentage * ROUND_PRECISION) / ROUND_PRECISION;\n}\n\nvar ProgressBar = function (_React$Component) {\n  _inherits(ProgressBar, _React$Component);\n\n  function ProgressBar() {\n    _classCallCheck(this, ProgressBar);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  ProgressBar.prototype.renderProgressBar = function renderProgressBar(_ref) {\n    var _extends2;\n\n    var min = _ref.min,\n        now = _ref.now,\n        max = _ref.max,\n        label = _ref.label,\n        srOnly = _ref.srOnly,\n        striped = _ref.striped,\n        active = _ref.active,\n        className = _ref.className,\n        style = _ref.style,\n        props = _objectWithoutProperties(_ref, ['min', 'now', 'max', 'label', 'srOnly', 'striped', 'active', 'className', 'style']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = _extends({}, getClassSet(bsProps), (_extends2 = {\n      active: active\n    }, _extends2[prefix(bsProps, 'striped')] = active || striped, _extends2));\n\n    return React.createElement(\n      'div',\n      _extends({}, elementProps, {\n        role: 'progressbar',\n        className: classNames(className, classes),\n        style: _extends({ width: getPercentage(now, min, max) + '%' }, style),\n        'aria-valuenow': now,\n        'aria-valuemin': min,\n        'aria-valuemax': max\n      }),\n      srOnly ? React.createElement(\n        'span',\n        { className: 'sr-only' },\n        label\n      ) : label\n    );\n  };\n\n  ProgressBar.prototype.render = function render() {\n    var _props = this.props,\n        isChild = _props.isChild,\n        props = _objectWithoutProperties(_props, ['isChild']);\n\n    if (isChild) {\n      return this.renderProgressBar(props);\n    }\n\n    var min = props.min,\n        now = props.now,\n        max = props.max,\n        label = props.label,\n        srOnly = props.srOnly,\n        striped = props.striped,\n        active = props.active,\n        bsClass = props.bsClass,\n        bsStyle = props.bsStyle,\n        className = props.className,\n        children = props.children,\n        wrapperProps = _objectWithoutProperties(props, ['min', 'now', 'max', 'label', 'srOnly', 'striped', 'active', 'bsClass', 'bsStyle', 'className', 'children']);\n\n    return React.createElement(\n      'div',\n      _extends({}, wrapperProps, {\n        className: classNames(className, 'progress')\n      }),\n      children ? ValidComponentChildren.map(children, function (child) {\n        return cloneElement(child, { isChild: true });\n      }) : this.renderProgressBar({\n        min: min, now: now, max: max, label: label, srOnly: srOnly, striped: striped, active: active, bsClass: bsClass, bsStyle: bsStyle\n      })\n    );\n  };\n\n  return ProgressBar;\n}(React.Component);\n\nProgressBar.propTypes = propTypes;\nProgressBar.defaultProps = defaultProps;\n\nexport default setBsClass('progress-bar', bsStyles(_Object$values(State), ProgressBar));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/ProgressBar.js\n// module id = 533\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\n/* eslint-disable jsx-a11y/label-has-for */\n\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport warning from 'warning';\n\nimport { bsClass, getClassSet, prefix, splitBsProps } from './utils/bootstrapUtils';\n\nvar propTypes = {\n  inline: PropTypes.bool,\n  disabled: PropTypes.bool,\n  title: PropTypes.string,\n  /**\n   * Only valid if `inline` is not set.\n   */\n  validationState: PropTypes.oneOf(['success', 'warning', 'error', null]),\n  /**\n   * Attaches a ref to the `<input>` element. Only functions can be used here.\n   *\n   * ```js\n   * <Radio inputRef={ref => { this.input = ref; }} />\n   * ```\n   */\n  inputRef: PropTypes.func\n};\n\nvar defaultProps = {\n  inline: false,\n  disabled: false,\n  title: ''\n};\n\nvar Radio = function (_React$Component) {\n  _inherits(Radio, _React$Component);\n\n  function Radio() {\n    _classCallCheck(this, Radio);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  Radio.prototype.render = function render() {\n    var _props = this.props,\n        inline = _props.inline,\n        disabled = _props.disabled,\n        validationState = _props.validationState,\n        inputRef = _props.inputRef,\n        className = _props.className,\n        style = _props.style,\n        title = _props.title,\n        children = _props.children,\n        props = _objectWithoutProperties(_props, ['inline', 'disabled', 'validationState', 'inputRef', 'className', 'style', 'title', 'children']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var input = React.createElement('input', _extends({}, elementProps, {\n      ref: inputRef,\n      type: 'radio',\n      disabled: disabled\n    }));\n\n    if (inline) {\n      var _classes2;\n\n      var _classes = (_classes2 = {}, _classes2[prefix(bsProps, 'inline')] = true, _classes2.disabled = disabled, _classes2);\n\n      // Use a warning here instead of in propTypes to get better-looking\n      // generated documentation.\n      process.env.NODE_ENV !== 'production' ? warning(!validationState, '`validationState` is ignored on `<Radio inline>`. To display ' + 'validation state on an inline radio, set `validationState` on a ' + 'parent `<FormGroup>` or other element instead.') : void 0;\n\n      return React.createElement(\n        'label',\n        { className: classNames(className, _classes), style: style, title: title },\n        input,\n        children\n      );\n    }\n\n    var classes = _extends({}, getClassSet(bsProps), {\n      disabled: disabled\n    });\n    if (validationState) {\n      classes['has-' + validationState] = true;\n    }\n\n    return React.createElement(\n      'div',\n      { className: classNames(className, classes), style: style },\n      React.createElement(\n        'label',\n        { title: title },\n        input,\n        children\n      )\n    );\n  };\n\n  return Radio;\n}(React.Component);\n\nRadio.propTypes = propTypes;\nRadio.defaultProps = defaultProps;\n\nexport default bsClass('radio', Radio);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/Radio.js\n// module id = 534\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React, { cloneElement } from 'react';\nimport PropTypes from 'prop-types';\nimport warning from 'warning';\n\nimport { bsClass, getClassSet, prefix, splitBsProps } from './utils/bootstrapUtils';\n\n// TODO: This should probably take a single `aspectRatio` prop.\n\nvar propTypes = {\n  /**\n   * This component requires a single child element\n   */\n  children: PropTypes.element.isRequired,\n  /**\n   * 16by9 aspect ratio\n   */\n  a16by9: PropTypes.bool,\n  /**\n   * 4by3 aspect ratio\n   */\n  a4by3: PropTypes.bool\n};\n\nvar defaultProps = {\n  a16by9: false,\n  a4by3: false\n};\n\nvar ResponsiveEmbed = function (_React$Component) {\n  _inherits(ResponsiveEmbed, _React$Component);\n\n  function ResponsiveEmbed() {\n    _classCallCheck(this, ResponsiveEmbed);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  ResponsiveEmbed.prototype.render = function render() {\n    var _extends2;\n\n    var _props = this.props,\n        a16by9 = _props.a16by9,\n        a4by3 = _props.a4by3,\n        className = _props.className,\n        children = _props.children,\n        props = _objectWithoutProperties(_props, ['a16by9', 'a4by3', 'className', 'children']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    process.env.NODE_ENV !== 'production' ? warning(a16by9 || a4by3, 'Either `a16by9` or `a4by3` must be set.') : void 0;\n    process.env.NODE_ENV !== 'production' ? warning(!(a16by9 && a4by3), 'Only one of `a16by9` or `a4by3` can be set.') : void 0;\n\n    var classes = _extends({}, getClassSet(bsProps), (_extends2 = {}, _extends2[prefix(bsProps, '16by9')] = a16by9, _extends2[prefix(bsProps, '4by3')] = a4by3, _extends2));\n\n    return React.createElement(\n      'div',\n      { className: classNames(classes) },\n      cloneElement(children, _extends({}, elementProps, {\n        className: classNames(className, prefix(bsProps, 'item'))\n      }))\n    );\n  };\n\n  return ResponsiveEmbed;\n}(React.Component);\n\nResponsiveEmbed.propTypes = propTypes;\nResponsiveEmbed.defaultProps = defaultProps;\n\nexport default bsClass('embed-responsive', ResponsiveEmbed);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/ResponsiveEmbed.js\n// module id = 535\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport elementType from 'prop-types-extra/lib/elementType';\n\nimport { bsClass, getClassSet, splitBsProps } from './utils/bootstrapUtils';\n\nvar propTypes = {\n  componentClass: elementType\n};\n\nvar defaultProps = {\n  componentClass: 'div'\n};\n\nvar Row = function (_React$Component) {\n  _inherits(Row, _React$Component);\n\n  function Row() {\n    _classCallCheck(this, Row);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  Row.prototype.render = function render() {\n    var _props = this.props,\n        Component = _props.componentClass,\n        className = _props.className,\n        props = _objectWithoutProperties(_props, ['componentClass', 'className']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = getClassSet(bsProps);\n\n    return React.createElement(Component, _extends({}, elementProps, {\n      className: classNames(className, classes)\n    }));\n  };\n\n  return Row;\n}(React.Component);\n\nRow.propTypes = propTypes;\nRow.defaultProps = defaultProps;\n\nexport default bsClass('row', Row);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/Row.js\n// module id = 536\n// module chunks = 0","import _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport _extends from 'babel-runtime/helpers/extends';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Button from './Button';\nimport Dropdown from './Dropdown';\nimport SplitToggle from './SplitToggle';\nimport splitComponentProps from './utils/splitComponentProps';\n\nvar propTypes = _extends({}, Dropdown.propTypes, {\n\n  // Toggle props.\n  bsStyle: PropTypes.string,\n  bsSize: PropTypes.string,\n  href: PropTypes.string,\n  onClick: PropTypes.func,\n  /**\n   * The content of the split button.\n   */\n  title: PropTypes.node.isRequired,\n  /**\n   * Accessible label for the toggle; the value of `title` if not specified.\n   */\n  toggleLabel: PropTypes.string,\n\n  // Override generated docs from <Dropdown>.\n  /**\n   * @private\n   */\n  children: PropTypes.node\n});\n\nvar SplitButton = function (_React$Component) {\n  _inherits(SplitButton, _React$Component);\n\n  function SplitButton() {\n    _classCallCheck(this, SplitButton);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  SplitButton.prototype.render = function render() {\n    var _props = this.props,\n        bsSize = _props.bsSize,\n        bsStyle = _props.bsStyle,\n        title = _props.title,\n        toggleLabel = _props.toggleLabel,\n        children = _props.children,\n        props = _objectWithoutProperties(_props, ['bsSize', 'bsStyle', 'title', 'toggleLabel', 'children']);\n\n    var _splitComponentProps = splitComponentProps(props, Dropdown.ControlledComponent),\n        dropdownProps = _splitComponentProps[0],\n        buttonProps = _splitComponentProps[1];\n\n    return React.createElement(\n      Dropdown,\n      _extends({}, dropdownProps, {\n        bsSize: bsSize,\n        bsStyle: bsStyle\n      }),\n      React.createElement(\n        Button,\n        _extends({}, buttonProps, {\n          disabled: props.disabled,\n          bsSize: bsSize,\n          bsStyle: bsStyle\n        }),\n        title\n      ),\n      React.createElement(SplitToggle, {\n        'aria-label': toggleLabel || title,\n        bsSize: bsSize,\n        bsStyle: bsStyle\n      }),\n      React.createElement(\n        Dropdown.Menu,\n        null,\n        children\n      )\n    );\n  };\n\n  return SplitButton;\n}(React.Component);\n\nSplitButton.propTypes = propTypes;\n\nSplitButton.Toggle = SplitToggle;\n\nexport default SplitButton;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/SplitButton.js\n// module id = 537\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport React from 'react';\n\nimport DropdownToggle from './DropdownToggle';\n\nvar SplitToggle = function (_React$Component) {\n  _inherits(SplitToggle, _React$Component);\n\n  function SplitToggle() {\n    _classCallCheck(this, SplitToggle);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  SplitToggle.prototype.render = function render() {\n    return React.createElement(DropdownToggle, _extends({}, this.props, {\n      useAnchor: false,\n      noCaret: false\n    }));\n  };\n\n  return SplitToggle;\n}(React.Component);\n\nSplitToggle.defaultProps = DropdownToggle.defaultProps;\n\nexport default SplitToggle;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/SplitToggle.js\n// module id = 538\n// module chunks = 0","import _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport _extends from 'babel-runtime/helpers/extends';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport TabContainer from './TabContainer';\nimport TabContent from './TabContent';\nimport TabPane from './TabPane';\n\nvar propTypes = _extends({}, TabPane.propTypes, {\n\n  disabled: PropTypes.bool,\n\n  title: PropTypes.node,\n\n  /**\n   * tabClassName is used as className for the associated NavItem\n   */\n  tabClassName: PropTypes.string\n});\n\nvar Tab = function (_React$Component) {\n  _inherits(Tab, _React$Component);\n\n  function Tab() {\n    _classCallCheck(this, Tab);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  Tab.prototype.render = function render() {\n    var props = _extends({}, this.props);\n\n    // These props are for the parent `<Tabs>` rather than the `<TabPane>`.\n    delete props.title;\n    delete props.disabled;\n    delete props.tabClassName;\n\n    return React.createElement(TabPane, props);\n  };\n\n  return Tab;\n}(React.Component);\n\nTab.propTypes = propTypes;\n\nTab.Container = TabContainer;\nTab.Content = TabContent;\nTab.Pane = TabPane;\n\nexport default Tab;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/Tab.js\n// module id = 539\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { bsClass, getClassSet, prefix, splitBsProps } from './utils/bootstrapUtils';\n\nvar propTypes = {\n  striped: PropTypes.bool,\n  bordered: PropTypes.bool,\n  condensed: PropTypes.bool,\n  hover: PropTypes.bool,\n  responsive: PropTypes.bool\n};\n\nvar defaultProps = {\n  bordered: false,\n  condensed: false,\n  hover: false,\n  responsive: false,\n  striped: false\n};\n\nvar Table = function (_React$Component) {\n  _inherits(Table, _React$Component);\n\n  function Table() {\n    _classCallCheck(this, Table);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  Table.prototype.render = function render() {\n    var _extends2;\n\n    var _props = this.props,\n        striped = _props.striped,\n        bordered = _props.bordered,\n        condensed = _props.condensed,\n        hover = _props.hover,\n        responsive = _props.responsive,\n        className = _props.className,\n        props = _objectWithoutProperties(_props, ['striped', 'bordered', 'condensed', 'hover', 'responsive', 'className']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = _extends({}, getClassSet(bsProps), (_extends2 = {}, _extends2[prefix(bsProps, 'striped')] = striped, _extends2[prefix(bsProps, 'bordered')] = bordered, _extends2[prefix(bsProps, 'condensed')] = condensed, _extends2[prefix(bsProps, 'hover')] = hover, _extends2));\n\n    var table = React.createElement('table', _extends({}, elementProps, {\n      className: classNames(className, classes)\n    }));\n\n    if (responsive) {\n      return React.createElement(\n        'div',\n        { className: prefix(bsProps, 'responsive') },\n        table\n      );\n    }\n\n    return table;\n  };\n\n  return Table;\n}(React.Component);\n\nTable.propTypes = propTypes;\nTable.defaultProps = defaultProps;\n\nexport default bsClass('table', Table);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/Table.js\n// module id = 540\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport requiredForA11y from 'prop-types-extra/lib/isRequiredForA11y';\nimport uncontrollable from 'uncontrollable';\n\nimport Nav from './Nav';\nimport NavItem from './NavItem';\nimport UncontrolledTabContainer from './TabContainer';\nimport TabContent from './TabContent';\nimport { bsClass as setBsClass } from './utils/bootstrapUtils';\nimport ValidComponentChildren from './utils/ValidComponentChildren';\n\nvar TabContainer = UncontrolledTabContainer.ControlledComponent;\n\nvar propTypes = {\n  /**\n   * Mark the Tab with a matching `eventKey` as active.\n   *\n   * @controllable onSelect\n   */\n  activeKey: PropTypes.any,\n\n  /**\n   * Navigation style\n   */\n  bsStyle: PropTypes.oneOf(['tabs', 'pills']),\n\n  animation: PropTypes.bool,\n\n  id: requiredForA11y(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),\n\n  /**\n   * Callback fired when a Tab is selected.\n   *\n   * ```js\n   * function (\n   *   Any eventKey,\n   *   SyntheticEvent event?\n   * )\n   * ```\n   *\n   * @controllable activeKey\n   */\n  onSelect: PropTypes.func,\n\n  /**\n   * Wait until the first \"enter\" transition to mount tabs (add them to the DOM)\n   */\n  mountOnEnter: PropTypes.bool,\n\n  /**\n   * Unmount tabs (remove it from the DOM) when it is no longer visible\n   */\n  unmountOnExit: PropTypes.bool\n};\n\nvar defaultProps = {\n  bsStyle: 'tabs',\n  animation: true,\n  mountOnEnter: false,\n  unmountOnExit: false\n};\n\nfunction getDefaultActiveKey(children) {\n  var defaultActiveKey = void 0;\n  ValidComponentChildren.forEach(children, function (child) {\n    if (defaultActiveKey == null) {\n      defaultActiveKey = child.props.eventKey;\n    }\n  });\n\n  return defaultActiveKey;\n}\n\nvar Tabs = function (_React$Component) {\n  _inherits(Tabs, _React$Component);\n\n  function Tabs() {\n    _classCallCheck(this, Tabs);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  Tabs.prototype.renderTab = function renderTab(child) {\n    var _child$props = child.props,\n        title = _child$props.title,\n        eventKey = _child$props.eventKey,\n        disabled = _child$props.disabled,\n        tabClassName = _child$props.tabClassName;\n\n    if (title == null) {\n      return null;\n    }\n\n    return React.createElement(\n      NavItem,\n      {\n        eventKey: eventKey,\n        disabled: disabled,\n        className: tabClassName\n      },\n      title\n    );\n  };\n\n  Tabs.prototype.render = function render() {\n    var _props = this.props,\n        id = _props.id,\n        onSelect = _props.onSelect,\n        animation = _props.animation,\n        mountOnEnter = _props.mountOnEnter,\n        unmountOnExit = _props.unmountOnExit,\n        bsClass = _props.bsClass,\n        className = _props.className,\n        style = _props.style,\n        children = _props.children,\n        _props$activeKey = _props.activeKey,\n        activeKey = _props$activeKey === undefined ? getDefaultActiveKey(children) : _props$activeKey,\n        props = _objectWithoutProperties(_props, ['id', 'onSelect', 'animation', 'mountOnEnter', 'unmountOnExit', 'bsClass', 'className', 'style', 'children', 'activeKey']);\n\n    return React.createElement(\n      TabContainer,\n      {\n        id: id,\n        activeKey: activeKey,\n        onSelect: onSelect,\n        className: className,\n        style: style\n      },\n      React.createElement(\n        'div',\n        null,\n        React.createElement(\n          Nav,\n          _extends({}, props, {\n            role: 'tablist'\n          }),\n          ValidComponentChildren.map(children, this.renderTab)\n        ),\n        React.createElement(\n          TabContent,\n          {\n            bsClass: bsClass,\n            animation: animation,\n            mountOnEnter: mountOnEnter,\n            unmountOnExit: unmountOnExit\n          },\n          children\n        )\n      )\n    );\n  };\n\n  return Tabs;\n}(React.Component);\n\nTabs.propTypes = propTypes;\nTabs.defaultProps = defaultProps;\n\nsetBsClass('tab', Tabs);\n\nexport default uncontrollable(Tabs, { activeKey: 'onSelect' });\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/Tabs.js\n// module id = 541\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\n/* eslint-disable jsx-a11y/alt-text */\n\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport SafeAnchor from './SafeAnchor';\nimport { bsClass, getClassSet, splitBsProps } from './utils/bootstrapUtils';\n\nvar propTypes = {\n  /**\n   * src property that is passed down to the image inside this component\n   */\n  src: PropTypes.string,\n  /**\n   * alt property that is passed down to the image inside this component\n   */\n  alt: PropTypes.string,\n  /**\n   * href property that is passed down to the image inside this component\n   */\n  href: PropTypes.string,\n  /**\n   * onError callback that is passed down to the image inside this component\n   */\n  onError: PropTypes.func,\n  /**\n   * onLoad callback that is passed down to the image inside this component\n   */\n  onLoad: PropTypes.func\n};\n\nvar Thumbnail = function (_React$Component) {\n  _inherits(Thumbnail, _React$Component);\n\n  function Thumbnail() {\n    _classCallCheck(this, Thumbnail);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  Thumbnail.prototype.render = function render() {\n    var _props = this.props,\n        src = _props.src,\n        alt = _props.alt,\n        onError = _props.onError,\n        onLoad = _props.onLoad,\n        className = _props.className,\n        children = _props.children,\n        props = _objectWithoutProperties(_props, ['src', 'alt', 'onError', 'onLoad', 'className', 'children']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var Component = elementProps.href ? SafeAnchor : 'div';\n    var classes = getClassSet(bsProps);\n\n    return React.createElement(\n      Component,\n      _extends({}, elementProps, {\n        className: classNames(className, classes)\n      }),\n      React.createElement('img', { src: src, alt: alt, onError: onError, onLoad: onLoad }),\n      children && React.createElement(\n        'div',\n        { className: 'caption' },\n        children\n      )\n    );\n  };\n\n  return Thumbnail;\n}(React.Component);\n\nThumbnail.propTypes = propTypes;\n\nexport default bsClass('thumbnail', Thumbnail);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/Thumbnail.js\n// module id = 542\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport invariant from 'invariant';\nimport uncontrollable from 'uncontrollable';\n\nimport chainFunction from './utils/createChainedFunction';\nimport ValidChildren from './utils/ValidComponentChildren';\nimport ButtonGroup from './ButtonGroup';\nimport ToggleButton from './ToggleButton';\n\nvar propTypes = {\n  /**\n   * An HTML `<input>` name for each child button.\n   *\n   * __Required if `type` is set to `'radio'`__\n   */\n  name: PropTypes.string,\n\n  /**\n   * The value, or array of values, of the active (pressed) buttons\n   *\n   * @controllable onChange\n   */\n  value: PropTypes.any,\n\n  /**\n   * Callback fired when a button is pressed, depending on whether the `type`\n   * is `'radio'` or `'checkbox'`, `onChange` will be called with the value or\n   * array of active values\n   *\n   * @controllable values\n   */\n  onChange: PropTypes.func,\n\n  /**\n   * The input `type` of the rendered buttons, determines the toggle behavior\n   * of the buttons\n   */\n  type: PropTypes.oneOf(['checkbox', 'radio']).isRequired\n};\n\nvar defaultProps = {\n  type: 'radio'\n};\n\nvar ToggleButtonGroup = function (_React$Component) {\n  _inherits(ToggleButtonGroup, _React$Component);\n\n  function ToggleButtonGroup() {\n    _classCallCheck(this, ToggleButtonGroup);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  ToggleButtonGroup.prototype.getValues = function getValues() {\n    var value = this.props.value;\n\n    return value == null ? [] : [].concat(value);\n  };\n\n  ToggleButtonGroup.prototype.handleToggle = function handleToggle(value) {\n    var _props = this.props,\n        type = _props.type,\n        onChange = _props.onChange;\n\n    var values = this.getValues();\n    var isActive = values.indexOf(value) !== -1;\n\n    if (type === 'radio') {\n      if (!isActive) {\n        onChange(value);\n      }\n      return;\n    }\n\n    if (isActive) {\n      onChange(values.filter(function (n) {\n        return n !== value;\n      }));\n    } else {\n      onChange([].concat(values, [value]));\n    }\n  };\n\n  ToggleButtonGroup.prototype.render = function render() {\n    var _this2 = this;\n\n    var _props2 = this.props,\n        children = _props2.children,\n        type = _props2.type,\n        name = _props2.name,\n        props = _objectWithoutProperties(_props2, ['children', 'type', 'name']);\n\n    var values = this.getValues();\n\n    !(type !== 'radio' || !!name) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'A `name` is required to group the toggle buttons when the `type` ' + 'is set to \"radio\"') : invariant(false) : void 0;\n\n    delete props.onChange;\n    delete props.value;\n\n    // the data attribute is required b/c twbs css uses it in the selector\n    return React.createElement(\n      ButtonGroup,\n      _extends({}, props, { 'data-toggle': 'buttons' }),\n      ValidChildren.map(children, function (child) {\n        var _child$props = child.props,\n            value = _child$props.value,\n            onChange = _child$props.onChange;\n\n        var handler = function handler() {\n          return _this2.handleToggle(value);\n        };\n\n        return React.cloneElement(child, {\n          type: type,\n          name: child.name || name,\n          checked: values.indexOf(value) !== -1,\n          onChange: chainFunction(onChange, handler)\n        });\n      })\n    );\n  };\n\n  return ToggleButtonGroup;\n}(React.Component);\n\nToggleButtonGroup.propTypes = propTypes;\nToggleButtonGroup.defaultProps = defaultProps;\n\nvar UncontrolledToggleButtonGroup = uncontrollable(ToggleButtonGroup, {\n  value: 'onChange'\n});\n\nUncontrolledToggleButtonGroup.Button = ToggleButton;\n\nexport default UncontrolledToggleButtonGroup;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/ToggleButtonGroup.js\n// module id = 543\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport isRequiredForA11y from 'prop-types-extra/lib/isRequiredForA11y';\n\nimport { bsClass, getClassSet, prefix, splitBsProps } from './utils/bootstrapUtils';\n\nvar propTypes = {\n  /**\n   * An html id attribute, necessary for accessibility\n   * @type {string|number}\n   * @required\n   */\n  id: isRequiredForA11y(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),\n\n  /**\n   * Sets the direction the Tooltip is positioned towards.\n   */\n  placement: PropTypes.oneOf(['top', 'right', 'bottom', 'left']),\n\n  /**\n   * The \"top\" position value for the Tooltip.\n   */\n  positionTop: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * The \"left\" position value for the Tooltip.\n   */\n  positionLeft: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n  /**\n   * The \"top\" position value for the Tooltip arrow.\n   */\n  arrowOffsetTop: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * The \"left\" position value for the Tooltip arrow.\n   */\n  arrowOffsetLeft: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n};\n\nvar defaultProps = {\n  placement: 'right'\n};\n\nvar Tooltip = function (_React$Component) {\n  _inherits(Tooltip, _React$Component);\n\n  function Tooltip() {\n    _classCallCheck(this, Tooltip);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  Tooltip.prototype.render = function render() {\n    var _extends2;\n\n    var _props = this.props,\n        placement = _props.placement,\n        positionTop = _props.positionTop,\n        positionLeft = _props.positionLeft,\n        arrowOffsetTop = _props.arrowOffsetTop,\n        arrowOffsetLeft = _props.arrowOffsetLeft,\n        className = _props.className,\n        style = _props.style,\n        children = _props.children,\n        props = _objectWithoutProperties(_props, ['placement', 'positionTop', 'positionLeft', 'arrowOffsetTop', 'arrowOffsetLeft', 'className', 'style', 'children']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = _extends({}, getClassSet(bsProps), (_extends2 = {}, _extends2[placement] = true, _extends2));\n\n    var outerStyle = _extends({\n      top: positionTop,\n      left: positionLeft\n    }, style);\n\n    var arrowStyle = {\n      top: arrowOffsetTop,\n      left: arrowOffsetLeft\n    };\n\n    return React.createElement(\n      'div',\n      _extends({}, elementProps, {\n        role: 'tooltip',\n        className: classNames(className, classes),\n        style: outerStyle\n      }),\n      React.createElement('div', { className: prefix(bsProps, 'arrow'), style: arrowStyle }),\n      React.createElement(\n        'div',\n        { className: prefix(bsProps, 'inner') },\n        children\n      )\n    );\n  };\n\n  return Tooltip;\n}(React.Component);\n\nTooltip.propTypes = propTypes;\nTooltip.defaultProps = defaultProps;\n\nexport default bsClass('tooltip', Tooltip);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/Tooltip.js\n// module id = 544\n// module chunks = 0","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport classNames from 'classnames';\nimport React from 'react';\n\nimport { bsClass, bsSizes, getClassSet, splitBsProps } from './utils/bootstrapUtils';\nimport { Size } from './utils/StyleConfig';\n\nvar Well = function (_React$Component) {\n  _inherits(Well, _React$Component);\n\n  function Well() {\n    _classCallCheck(this, Well);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  Well.prototype.render = function render() {\n    var _props = this.props,\n        className = _props.className,\n        props = _objectWithoutProperties(_props, ['className']);\n\n    var _splitBsProps = splitBsProps(props),\n        bsProps = _splitBsProps[0],\n        elementProps = _splitBsProps[1];\n\n    var classes = getClassSet(bsProps);\n\n    return React.createElement('div', _extends({}, elementProps, {\n      className: classNames(className, classes)\n    }));\n  };\n\n  return Well;\n}(React.Component);\n\nexport default bsClass('well', bsSizes([Size.LARGE, Size.SMALL], Well));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/Well.js\n// module id = 545\n// module chunks = 0","import * as _bootstrapUtils from './bootstrapUtils';\nexport { _bootstrapUtils as bootstrapUtils };\nimport _createChainedFunction from './createChainedFunction';\nexport { _createChainedFunction as createChainedFunction };\nimport _ValidComponentChildren from './ValidComponentChildren';\nexport { _ValidComponentChildren as ValidComponentChildren };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-bootstrap/es/utils/index.js\n// module id = 546\n// module chunks = 0","import React, { Component } from 'react';\nimport { DropdownButton, MenuItem } from 'react-bootstrap';\n\nimport axios from 'axios';\nimport config from '../../../server/config';\n\n\nclass CategoryDropdown extends Component {\n\n    componentDidMount() {\n        {/* axios.get('./server/mock-data/categories.json')*/}\n        {/* axios.get(config.localPath + '/categories') */}\n        /*\n        axios.get(config.localPath + '/categories')\n            .then(response => {\n               // console.log(response.data);\n            })\n            */\n    }\n\n\n    render() {\n        return (\n            <div className=\"navbar-header\" style={{paddingTop: '14px'}}>\n                <DropdownButton title=\"Default button\" id=\"dropdown-size-medium\">\n                    <MenuItem eventKey=\"1\">Action</MenuItem>\n                    <MenuItem eventKey=\"2\">Another action</MenuItem>\n                    <MenuItem eventKey=\"3\">Something else here</MenuItem>\n                    <MenuItem divider />\n                    <MenuItem eventKey=\"4\">Separated link</MenuItem>\n                </DropdownButton>\n            </div>\n        )\n    }\n\n}\n\nexport default CategoryDropdown\n\n\n// WEBPACK FOOTER //\n// src/components/CategoryDropdown/CategoryDropdown.js","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n  var context = new Axios(defaultConfig);\n  var instance = bind(Axios.prototype.request, context);\n\n  // Copy axios.prototype to instance\n  utils.extend(instance, Axios.prototype, context);\n\n  // Copy context to instance\n  utils.extend(instance, context);\n\n  return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n  return createInstance(utils.merge(defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n  return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/axios.js\n// module id = 548\n// module chunks = 0","/*!\n * Determine if an object is a Buffer\n *\n * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license  MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n  return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n  return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n  return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/is-buffer/index.js\n// module id = 549\n// module chunks = 0","'use strict';\n\nvar defaults = require('./../defaults');\nvar utils = require('./../utils');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n  this.defaults = instanceConfig;\n  this.interceptors = {\n    request: new InterceptorManager(),\n    response: new InterceptorManager()\n  };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n  /*eslint no-param-reassign:0*/\n  // Allow for axios('example/url'[, config]) a la fetch API\n  if (typeof config === 'string') {\n    config = utils.merge({\n      url: arguments[0]\n    }, arguments[1]);\n  }\n\n  config = utils.merge(defaults, this.defaults, { method: 'get' }, config);\n  config.method = config.method.toLowerCase();\n\n  // Hook up interceptors middleware\n  var chain = [dispatchRequest, undefined];\n  var promise = Promise.resolve(config);\n\n  this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n    chain.unshift(interceptor.fulfilled, interceptor.rejected);\n  });\n\n  this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n    chain.push(interceptor.fulfilled, interceptor.rejected);\n  });\n\n  while (chain.length) {\n    promise = promise.then(chain.shift(), chain.shift());\n  }\n\n  return promise;\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n  /*eslint func-names:0*/\n  Axios.prototype[method] = function(url, config) {\n    return this.request(utils.merge(config || {}, {\n      method: method,\n      url: url\n    }));\n  };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n  /*eslint func-names:0*/\n  Axios.prototype[method] = function(url, data, config) {\n    return this.request(utils.merge(config || {}, {\n      method: method,\n      url: url,\n      data: data\n    }));\n  };\n});\n\nmodule.exports = Axios;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/core/Axios.js\n// module id = 550\n// module chunks = 0","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n  utils.forEach(headers, function processHeader(value, name) {\n    if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n      headers[normalizedName] = value;\n      delete headers[name];\n    }\n  });\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/helpers/normalizeHeaderName.js\n// module id = 551\n// module chunks = 0","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n  var validateStatus = response.config.validateStatus;\n  // Note: status is not exposed by XDomainRequest\n  if (!response.status || !validateStatus || validateStatus(response.status)) {\n    resolve(response);\n  } else {\n    reject(createError(\n      'Request failed with status code ' + response.status,\n      response.config,\n      null,\n      response.request,\n      response\n    ));\n  }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/core/settle.js\n// module id = 552\n// module chunks = 0","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n  error.config = config;\n  if (code) {\n    error.code = code;\n  }\n  error.request = request;\n  error.response = response;\n  return error;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/core/enhanceError.js\n// module id = 553\n// module chunks = 0","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n  return encodeURIComponent(val).\n    replace(/%40/gi, '@').\n    replace(/%3A/gi, ':').\n    replace(/%24/g, '$').\n    replace(/%2C/gi, ',').\n    replace(/%20/g, '+').\n    replace(/%5B/gi, '[').\n    replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n  /*eslint no-param-reassign:0*/\n  if (!params) {\n    return url;\n  }\n\n  var serializedParams;\n  if (paramsSerializer) {\n    serializedParams = paramsSerializer(params);\n  } else if (utils.isURLSearchParams(params)) {\n    serializedParams = params.toString();\n  } else {\n    var parts = [];\n\n    utils.forEach(params, function serialize(val, key) {\n      if (val === null || typeof val === 'undefined') {\n        return;\n      }\n\n      if (utils.isArray(val)) {\n        key = key + '[]';\n      }\n\n      if (!utils.isArray(val)) {\n        val = [val];\n      }\n\n      utils.forEach(val, function parseValue(v) {\n        if (utils.isDate(v)) {\n          v = v.toISOString();\n        } else if (utils.isObject(v)) {\n          v = JSON.stringify(v);\n        }\n        parts.push(encode(key) + '=' + encode(v));\n      });\n    });\n\n    serializedParams = parts.join('&');\n  }\n\n  if (serializedParams) {\n    url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n  }\n\n  return url;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/helpers/buildURL.js\n// module id = 554\n// module chunks = 0","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n  'age', 'authorization', 'content-length', 'content-type', 'etag',\n  'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n  'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n  'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n  var parsed = {};\n  var key;\n  var val;\n  var i;\n\n  if (!headers) { return parsed; }\n\n  utils.forEach(headers.split('\\n'), function parser(line) {\n    i = line.indexOf(':');\n    key = utils.trim(line.substr(0, i)).toLowerCase();\n    val = utils.trim(line.substr(i + 1));\n\n    if (key) {\n      if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n        return;\n      }\n      if (key === 'set-cookie') {\n        parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n      } else {\n        parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n      }\n    }\n  });\n\n  return parsed;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/helpers/parseHeaders.js\n// module id = 555\n// module chunks = 0","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n  utils.isStandardBrowserEnv() ?\n\n  // Standard browser envs have full support of the APIs needed to test\n  // whether the request URL is of the same origin as current location.\n  (function standardBrowserEnv() {\n    var msie = /(msie|trident)/i.test(navigator.userAgent);\n    var urlParsingNode = document.createElement('a');\n    var originURL;\n\n    /**\n    * Parse a URL to discover it's components\n    *\n    * @param {String} url The URL to be parsed\n    * @returns {Object}\n    */\n    function resolveURL(url) {\n      var href = url;\n\n      if (msie) {\n        // IE needs attribute set twice to normalize properties\n        urlParsingNode.setAttribute('href', href);\n        href = urlParsingNode.href;\n      }\n\n      urlParsingNode.setAttribute('href', href);\n\n      // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n      return {\n        href: urlParsingNode.href,\n        protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n        host: urlParsingNode.host,\n        search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n        hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n        hostname: urlParsingNode.hostname,\n        port: urlParsingNode.port,\n        pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n                  urlParsingNode.pathname :\n                  '/' + urlParsingNode.pathname\n      };\n    }\n\n    originURL = resolveURL(window.location.href);\n\n    /**\n    * Determine if a URL shares the same origin as the current location\n    *\n    * @param {String} requestURL The URL to test\n    * @returns {boolean} True if URL shares the same origin, otherwise false\n    */\n    return function isURLSameOrigin(requestURL) {\n      var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n      return (parsed.protocol === originURL.protocol &&\n            parsed.host === originURL.host);\n    };\n  })() :\n\n  // Non standard browser envs (web workers, react-native) lack needed support.\n  (function nonStandardBrowserEnv() {\n    return function isURLSameOrigin() {\n      return true;\n    };\n  })()\n);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/helpers/isURLSameOrigin.js\n// module id = 556\n// module chunks = 0","'use strict';\n\n// btoa polyfill for IE<10 courtesy https://github.com/davidchambers/Base64.js\n\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\nfunction E() {\n  this.message = 'String contains an invalid character';\n}\nE.prototype = new Error;\nE.prototype.code = 5;\nE.prototype.name = 'InvalidCharacterError';\n\nfunction btoa(input) {\n  var str = String(input);\n  var output = '';\n  for (\n    // initialize result and counter\n    var block, charCode, idx = 0, map = chars;\n    // if the next str index does not exist:\n    //   change the mapping table to \"=\"\n    //   check if d has no fractional digits\n    str.charAt(idx | 0) || (map = '=', idx % 1);\n    // \"8 - idx % 1 * 8\" generates the sequence 2, 4, 6, 8\n    output += map.charAt(63 & block >> 8 - idx % 1 * 8)\n  ) {\n    charCode = str.charCodeAt(idx += 3 / 4);\n    if (charCode > 0xFF) {\n      throw new E();\n    }\n    block = block << 8 | charCode;\n  }\n  return output;\n}\n\nmodule.exports = btoa;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/helpers/btoa.js\n// module id = 557\n// module chunks = 0","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n  utils.isStandardBrowserEnv() ?\n\n  // Standard browser envs support document.cookie\n  (function standardBrowserEnv() {\n    return {\n      write: function write(name, value, expires, path, domain, secure) {\n        var cookie = [];\n        cookie.push(name + '=' + encodeURIComponent(value));\n\n        if (utils.isNumber(expires)) {\n          cookie.push('expires=' + new Date(expires).toGMTString());\n        }\n\n        if (utils.isString(path)) {\n          cookie.push('path=' + path);\n        }\n\n        if (utils.isString(domain)) {\n          cookie.push('domain=' + domain);\n        }\n\n        if (secure === true) {\n          cookie.push('secure');\n        }\n\n        document.cookie = cookie.join('; ');\n      },\n\n      read: function read(name) {\n        var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n        return (match ? decodeURIComponent(match[3]) : null);\n      },\n\n      remove: function remove(name) {\n        this.write(name, '', Date.now() - 86400000);\n      }\n    };\n  })() :\n\n  // Non standard browser env (web workers, react-native) lack needed support.\n  (function nonStandardBrowserEnv() {\n    return {\n      write: function write() {},\n      read: function read() { return null; },\n      remove: function remove() {}\n    };\n  })()\n);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/helpers/cookies.js\n// module id = 558\n// module chunks = 0","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n  this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n  this.handlers.push({\n    fulfilled: fulfilled,\n    rejected: rejected\n  });\n  return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n  if (this.handlers[id]) {\n    this.handlers[id] = null;\n  }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n  utils.forEach(this.handlers, function forEachHandler(h) {\n    if (h !== null) {\n      fn(h);\n    }\n  });\n};\n\nmodule.exports = InterceptorManager;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/core/InterceptorManager.js\n// module id = 559\n// module chunks = 0","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar isAbsoluteURL = require('./../helpers/isAbsoluteURL');\nvar combineURLs = require('./../helpers/combineURLs');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n  if (config.cancelToken) {\n    config.cancelToken.throwIfRequested();\n  }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n  throwIfCancellationRequested(config);\n\n  // Support baseURL config\n  if (config.baseURL && !isAbsoluteURL(config.url)) {\n    config.url = combineURLs(config.baseURL, config.url);\n  }\n\n  // Ensure headers exist\n  config.headers = config.headers || {};\n\n  // Transform request data\n  config.data = transformData(\n    config.data,\n    config.headers,\n    config.transformRequest\n  );\n\n  // Flatten headers\n  config.headers = utils.merge(\n    config.headers.common || {},\n    config.headers[config.method] || {},\n    config.headers || {}\n  );\n\n  utils.forEach(\n    ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n    function cleanHeaderConfig(method) {\n      delete config.headers[method];\n    }\n  );\n\n  var adapter = config.adapter || defaults.adapter;\n\n  return adapter(config).then(function onAdapterResolution(response) {\n    throwIfCancellationRequested(config);\n\n    // Transform response data\n    response.data = transformData(\n      response.data,\n      response.headers,\n      config.transformResponse\n    );\n\n    return response;\n  }, function onAdapterRejection(reason) {\n    if (!isCancel(reason)) {\n      throwIfCancellationRequested(config);\n\n      // Transform response data\n      if (reason && reason.response) {\n        reason.response.data = transformData(\n          reason.response.data,\n          reason.response.headers,\n          config.transformResponse\n        );\n      }\n    }\n\n    return Promise.reject(reason);\n  });\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/core/dispatchRequest.js\n// module id = 560\n// module chunks = 0","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n  /*eslint no-param-reassign:0*/\n  utils.forEach(fns, function transform(fn) {\n    data = fn(data, headers);\n  });\n\n  return data;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/core/transformData.js\n// module id = 561\n// module chunks = 0","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n  // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n  // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n  // by any combination of letters, digits, plus, period, or hyphen.\n  return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/helpers/isAbsoluteURL.js\n// module id = 562\n// module chunks = 0","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n  return relativeURL\n    ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n    : baseURL;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/helpers/combineURLs.js\n// module id = 563\n// module chunks = 0","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n  if (typeof executor !== 'function') {\n    throw new TypeError('executor must be a function.');\n  }\n\n  var resolvePromise;\n  this.promise = new Promise(function promiseExecutor(resolve) {\n    resolvePromise = resolve;\n  });\n\n  var token = this;\n  executor(function cancel(message) {\n    if (token.reason) {\n      // Cancellation has already been requested\n      return;\n    }\n\n    token.reason = new Cancel(message);\n    resolvePromise(token.reason);\n  });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n  if (this.reason) {\n    throw this.reason;\n  }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n  var cancel;\n  var token = new CancelToken(function executor(c) {\n    cancel = c;\n  });\n  return {\n    token: token,\n    cancel: cancel\n  };\n};\n\nmodule.exports = CancelToken;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/cancel/CancelToken.js\n// module id = 564\n// module chunks = 0","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n *  ```js\n *  function f(x, y, z) {}\n *  var args = [1, 2, 3];\n *  f.apply(null, args);\n *  ```\n *\n * With `spread` this example can be re-written.\n *\n *  ```js\n *  spread(function(x, y, z) {})([1, 2, 3]);\n *  ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n  return function wrap(arr) {\n    return callback.apply(null, arr);\n  };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/helpers/spread.js\n// module id = 565\n// module chunks = 0","export function correctHeight() {\n\n    var pageWrapper = $('#page-wrapper');\n    var navbarHeight = $('nav.navbar-default').height();\n    var wrapperHeight = pageWrapper.height();\n\n    if (navbarHeight > wrapperHeight) {\n        pageWrapper.css(\"min-height\", navbarHeight + \"px\");\n    }\n\n    if (navbarHeight <= wrapperHeight) {\n        if (navbarHeight < $(window).height()) {\n            pageWrapper.css(\"min-height\", $(window).height() + \"px\");\n        } else {\n            pageWrapper.css(\"min-height\", navbarHeight + \"px\");\n        }\n    }\n\n    if ($('body').hasClass('fixed-nav')) {\n        if (navbarHeight > wrapperHeight) {\n            pageWrapper.css(\"min-height\", navbarHeight + \"px\");\n        } else {\n            pageWrapper.css(\"min-height\", $(window).height() - 60 + \"px\");\n        }\n    }\n}\n\nexport function detectBody() {\n    if ($(document).width() < 769) {\n        $('body').addClass('body-small')\n    } else {\n        $('body').removeClass('body-small')\n    }\n}\n\nexport function smoothlyMenu() {\n    if (!$('body').hasClass('mini-navbar') || $('body').hasClass('body-small')) {\n        // Hide menu in order to smoothly turn on when maximize menu\n        $('#side-menu').hide();\n        // For smoothly turn on menu\n        setTimeout(\n            function () {\n                $('#side-menu').fadeIn(400);\n            }, 200);\n    } else if ($('body').hasClass('fixed-sidebar')) {\n        $('#side-menu').hide();\n        setTimeout(\n            function () {\n                $('#side-menu').fadeIn(400);\n            }, 100);\n    } else {\n        // Remove all inline style from jquery fadeIn function to reset menu state\n        $('#side-menu').removeAttr('style');\n    }\n}\n\n\n\n// WEBPACK FOOTER //\n// src/components/Layouts/Helpers.js","var Authentication = require('./authentication');\nvar Management = require('./management');\nvar WebAuth = require('./web-auth');\nvar version = require('./version');\n\nmodule.exports = {\n  Authentication: Authentication,\n  Management: Management,\n  WebAuth: WebAuth,\n  version: version.raw\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/auth0-js/src/index.js\n// module id = 567\n// module chunks = 0","\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (typeof module !== 'undefined') {\r\n  module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n  if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n  for (var key in Emitter.prototype) {\r\n    obj[key] = Emitter.prototype[key];\r\n  }\r\n  return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n  this._callbacks = this._callbacks || {};\r\n  (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n    .push(fn);\r\n  return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n  function on() {\r\n    this.off(event, on);\r\n    fn.apply(this, arguments);\r\n  }\r\n\r\n  on.fn = fn;\r\n  this.on(event, on);\r\n  return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n  this._callbacks = this._callbacks || {};\r\n\r\n  // all\r\n  if (0 == arguments.length) {\r\n    this._callbacks = {};\r\n    return this;\r\n  }\r\n\r\n  // specific event\r\n  var callbacks = this._callbacks['$' + event];\r\n  if (!callbacks) return this;\r\n\r\n  // remove all handlers\r\n  if (1 == arguments.length) {\r\n    delete this._callbacks['$' + event];\r\n    return this;\r\n  }\r\n\r\n  // remove specific handler\r\n  var cb;\r\n  for (var i = 0; i < callbacks.length; i++) {\r\n    cb = callbacks[i];\r\n    if (cb === fn || cb.fn === fn) {\r\n      callbacks.splice(i, 1);\r\n      break;\r\n    }\r\n  }\r\n  return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n  this._callbacks = this._callbacks || {};\r\n  var args = [].slice.call(arguments, 1)\r\n    , callbacks = this._callbacks['$' + event];\r\n\r\n  if (callbacks) {\r\n    callbacks = callbacks.slice(0);\r\n    for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n      callbacks[i].apply(this, args);\r\n    }\r\n  }\r\n\r\n  return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n  this._callbacks = this._callbacks || {};\r\n  return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n  return !! this.listeners(event).length;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/component-emitter/index.js\n// module id = 568\n// module chunks = 0","'use strict';\n\n/**\n * Module of mixed-in functions shared between node and client code\n */\nvar isObject = require('./is-object');\n\n/**\n * Expose `RequestBase`.\n */\n\nmodule.exports = RequestBase;\n\n/**\n * Initialize a new `RequestBase`.\n *\n * @api public\n */\n\nfunction RequestBase(obj) {\n  if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the prototype properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n  for (var key in RequestBase.prototype) {\n    obj[key] = RequestBase.prototype[key];\n  }\n  return obj;\n}\n\n/**\n * Clear previous timeout.\n *\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.clearTimeout = function _clearTimeout(){\n  clearTimeout(this._timer);\n  clearTimeout(this._responseTimeoutTimer);\n  delete this._timer;\n  delete this._responseTimeoutTimer;\n  return this;\n};\n\n/**\n * Override default response body parser\n *\n * This function will be called to convert incoming data into request.body\n *\n * @param {Function}\n * @api public\n */\n\nRequestBase.prototype.parse = function parse(fn){\n  this._parser = fn;\n  return this;\n};\n\n/**\n * Set format of binary response body.\n * In browser valid formats are 'blob' and 'arraybuffer',\n * which return Blob and ArrayBuffer, respectively.\n *\n * In Node all values result in Buffer.\n *\n * Examples:\n *\n *      req.get('/')\n *        .responseType('blob')\n *        .end(callback);\n *\n * @param {String} val\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.responseType = function(val){\n  this._responseType = val;\n  return this;\n};\n\n/**\n * Override default request body serializer\n *\n * This function will be called to convert data set via .send or .attach into payload to send\n *\n * @param {Function}\n * @api public\n */\n\nRequestBase.prototype.serialize = function serialize(fn){\n  this._serializer = fn;\n  return this;\n};\n\n/**\n * Set timeouts.\n *\n * - response timeout is time between sending request and receiving the first byte of the response. Includes DNS and connection time.\n * - deadline is the time from start of the request to receiving response body in full. If the deadline is too short large files may not load at all on slow connections.\n *\n * Value of 0 or false means no timeout.\n *\n * @param {Number|Object} ms or {response, deadline}\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.timeout = function timeout(options){\n  if (!options || 'object' !== typeof options) {\n    this._timeout = options;\n    this._responseTimeout = 0;\n    return this;\n  }\n\n  for(var option in options) {\n    switch(option) {\n      case 'deadline':\n        this._timeout = options.deadline;\n        break;\n      case 'response':\n        this._responseTimeout = options.response;\n        break;\n      default:\n        console.warn(\"Unknown timeout option\", option);\n    }\n  }\n  return this;\n};\n\n/**\n * Set number of retry attempts on error.\n *\n * Failed requests will be retried 'count' times if timeout or err.code >= 500.\n *\n * @param {Number} count\n * @param {Function} [fn]\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.retry = function retry(count, fn){\n  // Default to 1 if no count passed or true\n  if (arguments.length === 0 || count === true) count = 1;\n  if (count <= 0) count = 0;\n  this._maxRetries = count;\n  this._retries = 0;\n  this._retryCallback = fn;\n  return this;\n};\n\nvar ERROR_CODES = [\n  'ECONNRESET',\n  'ETIMEDOUT',\n  'EADDRINFO',\n  'ESOCKETTIMEDOUT'\n];\n\n/**\n * Determine if a request should be retried.\n * (Borrowed from segmentio/superagent-retry)\n *\n * @param {Error} err\n * @param {Response} [res]\n * @returns {Boolean}\n */\nRequestBase.prototype._shouldRetry = function(err, res) {\n  if (!this._maxRetries || this._retries++ >= this._maxRetries) {\n    return false;\n  }\n  if (this._retryCallback) {\n    try {\n      var override = this._retryCallback(err, res);\n      if (override === true) return true;\n      if (override === false) return false;\n      // undefined falls back to defaults\n    } catch(e) {\n      console.error(e);\n    }\n  }\n  if (res && res.status && res.status >= 500 && res.status != 501) return true;\n  if (err) {\n    if (err.code && ~ERROR_CODES.indexOf(err.code)) return true;\n    // Superagent timeout\n    if (err.timeout && err.code == 'ECONNABORTED') return true;\n    if (err.crossDomain) return true;\n  }\n  return false;\n};\n\n/**\n * Retry request\n *\n * @return {Request} for chaining\n * @api private\n */\n\nRequestBase.prototype._retry = function() {\n\n  this.clearTimeout();\n\n  // node\n  if (this.req) {\n    this.req = null;\n    this.req = this.request();\n  }\n\n  this._aborted = false;\n  this.timedout = false;\n\n  return this._end();\n};\n\n/**\n * Promise support\n *\n * @param {Function} resolve\n * @param {Function} [reject]\n * @return {Request}\n */\n\nRequestBase.prototype.then = function then(resolve, reject) {\n  if (!this._fullfilledPromise) {\n    var self = this;\n    if (this._endCalled) {\n      console.warn(\"Warning: superagent request was sent twice, because both .end() and .then() were called. Never call .end() if you use promises\");\n    }\n    this._fullfilledPromise = new Promise(function(innerResolve, innerReject) {\n      self.end(function(err, res) {\n        if (err) innerReject(err);\n        else innerResolve(res);\n      });\n    });\n  }\n  return this._fullfilledPromise.then(resolve, reject);\n};\n\nRequestBase.prototype.catch = function(cb) {\n  return this.then(undefined, cb);\n};\n\n/**\n * Allow for extension\n */\n\nRequestBase.prototype.use = function use(fn) {\n  fn(this);\n  return this;\n};\n\nRequestBase.prototype.ok = function(cb) {\n  if ('function' !== typeof cb) throw Error(\"Callback required\");\n  this._okCallback = cb;\n  return this;\n};\n\nRequestBase.prototype._isResponseOK = function(res) {\n  if (!res) {\n    return false;\n  }\n\n  if (this._okCallback) {\n    return this._okCallback(res);\n  }\n\n  return res.status >= 200 && res.status < 300;\n};\n\n/**\n * Get request header `field`.\n * Case-insensitive.\n *\n * @param {String} field\n * @return {String}\n * @api public\n */\n\nRequestBase.prototype.get = function(field){\n  return this._header[field.toLowerCase()];\n};\n\n/**\n * Get case-insensitive header `field` value.\n * This is a deprecated internal API. Use `.get(field)` instead.\n *\n * (getHeader is no longer used internally by the superagent code base)\n *\n * @param {String} field\n * @return {String}\n * @api private\n * @deprecated\n */\n\nRequestBase.prototype.getHeader = RequestBase.prototype.get;\n\n/**\n * Set header `field` to `val`, or multiple fields with one object.\n * Case-insensitive.\n *\n * Examples:\n *\n *      req.get('/')\n *        .set('Accept', 'application/json')\n *        .set('X-API-Key', 'foobar')\n *        .end(callback);\n *\n *      req.get('/')\n *        .set({ Accept: 'application/json', 'X-API-Key': 'foobar' })\n *        .end(callback);\n *\n * @param {String|Object} field\n * @param {String} val\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.set = function(field, val){\n  if (isObject(field)) {\n    for (var key in field) {\n      this.set(key, field[key]);\n    }\n    return this;\n  }\n  this._header[field.toLowerCase()] = val;\n  this.header[field] = val;\n  return this;\n};\n\n/**\n * Remove header `field`.\n * Case-insensitive.\n *\n * Example:\n *\n *      req.get('/')\n *        .unset('User-Agent')\n *        .end(callback);\n *\n * @param {String} field\n */\nRequestBase.prototype.unset = function(field){\n  delete this._header[field.toLowerCase()];\n  delete this.header[field];\n  return this;\n};\n\n/**\n * Write the field `name` and `val`, or multiple fields with one object\n * for \"multipart/form-data\" request bodies.\n *\n * ``` js\n * request.post('/upload')\n *   .field('foo', 'bar')\n *   .end(callback);\n *\n * request.post('/upload')\n *   .field({ foo: 'bar', baz: 'qux' })\n *   .end(callback);\n * ```\n *\n * @param {String|Object} name\n * @param {String|Blob|File|Buffer|fs.ReadStream} val\n * @return {Request} for chaining\n * @api public\n */\nRequestBase.prototype.field = function(name, val) {\n  // name should be either a string or an object.\n  if (null === name || undefined === name) {\n    throw new Error('.field(name, val) name can not be empty');\n  }\n\n  if (this._data) {\n    console.error(\".field() can't be used if .send() is used. Please use only .send() or only .field() & .attach()\");\n  }\n\n  if (isObject(name)) {\n    for (var key in name) {\n      this.field(key, name[key]);\n    }\n    return this;\n  }\n\n  if (Array.isArray(val)) {\n    for (var i in val) {\n      this.field(name, val[i]);\n    }\n    return this;\n  }\n\n  // val should be defined now\n  if (null === val || undefined === val) {\n    throw new Error('.field(name, val) val can not be empty');\n  }\n  if ('boolean' === typeof val) {\n    val = '' + val;\n  }\n  this._getFormData().append(name, val);\n  return this;\n};\n\n/**\n * Abort the request, and clear potential timeout.\n *\n * @return {Request}\n * @api public\n */\nRequestBase.prototype.abort = function(){\n  if (this._aborted) {\n    return this;\n  }\n  this._aborted = true;\n  this.xhr && this.xhr.abort(); // browser\n  this.req && this.req.abort(); // node\n  this.clearTimeout();\n  this.emit('abort');\n  return this;\n};\n\nRequestBase.prototype._auth = function(user, pass, options, base64Encoder) {\n  switch (options.type) {\n    case 'basic':\n      this.set('Authorization', 'Basic ' + base64Encoder(user + ':' + pass));\n      break;\n\n    case 'auto':\n      this.username = user;\n      this.password = pass;\n      break;\n\n    case 'bearer': // usage would be .auth(accessToken, { type: 'bearer' })\n      this.set('Authorization', 'Bearer ' + user);\n      break;\n  }\n  return this;\n};\n\n/**\n * Enable transmission of cookies with x-domain requests.\n *\n * Note that for this to work the origin must not be\n * using \"Access-Control-Allow-Origin\" with a wildcard,\n * and also must set \"Access-Control-Allow-Credentials\"\n * to \"true\".\n *\n * @api public\n */\n\nRequestBase.prototype.withCredentials = function(on) {\n  // This is browser-only functionality. Node side is no-op.\n  if (on == undefined) on = true;\n  this._withCredentials = on;\n  return this;\n};\n\n/**\n * Set the max redirects to `n`. Does noting in browser XHR implementation.\n *\n * @param {Number} n\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.redirects = function(n){\n  this._maxRedirects = n;\n  return this;\n};\n\n/**\n * Maximum size of buffered response body, in bytes. Counts uncompressed size.\n * Default 200MB.\n *\n * @param {Number} n\n * @return {Request} for chaining\n */\nRequestBase.prototype.maxResponseSize = function(n){\n  if ('number' !== typeof n) {\n    throw TypeError(\"Invalid argument\");\n  }\n  this._maxResponseSize = n;\n  return this;\n};\n\n/**\n * Convert to a plain javascript object (not JSON string) of scalar properties.\n * Note as this method is designed to return a useful non-this value,\n * it cannot be chained.\n *\n * @return {Object} describing method, url, and data of this request\n * @api public\n */\n\nRequestBase.prototype.toJSON = function() {\n  return {\n    method: this.method,\n    url: this.url,\n    data: this._data,\n    headers: this._header,\n  };\n};\n\n/**\n * Send `data` as the request body, defaulting the `.type()` to \"json\" when\n * an object is given.\n *\n * Examples:\n *\n *       // manual json\n *       request.post('/user')\n *         .type('json')\n *         .send('{\"name\":\"tj\"}')\n *         .end(callback)\n *\n *       // auto json\n *       request.post('/user')\n *         .send({ name: 'tj' })\n *         .end(callback)\n *\n *       // manual x-www-form-urlencoded\n *       request.post('/user')\n *         .type('form')\n *         .send('name=tj')\n *         .end(callback)\n *\n *       // auto x-www-form-urlencoded\n *       request.post('/user')\n *         .type('form')\n *         .send({ name: 'tj' })\n *         .end(callback)\n *\n *       // defaults to x-www-form-urlencoded\n *      request.post('/user')\n *        .send('name=tobi')\n *        .send('species=ferret')\n *        .end(callback)\n *\n * @param {String|Object} data\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.send = function(data){\n  var isObj = isObject(data);\n  var type = this._header['content-type'];\n\n  if (this._formData) {\n    console.error(\".send() can't be used if .attach() or .field() is used. Please use only .send() or only .field() & .attach()\");\n  }\n\n  if (isObj && !this._data) {\n    if (Array.isArray(data)) {\n      this._data = [];\n    } else if (!this._isHost(data)) {\n      this._data = {};\n    }\n  } else if (data && this._data && this._isHost(this._data)) {\n    throw Error(\"Can't merge these send calls\");\n  }\n\n  // merge\n  if (isObj && isObject(this._data)) {\n    for (var key in data) {\n      this._data[key] = data[key];\n    }\n  } else if ('string' == typeof data) {\n    // default to x-www-form-urlencoded\n    if (!type) this.type('form');\n    type = this._header['content-type'];\n    if ('application/x-www-form-urlencoded' == type) {\n      this._data = this._data\n        ? this._data + '&' + data\n        : data;\n    } else {\n      this._data = (this._data || '') + data;\n    }\n  } else {\n    this._data = data;\n  }\n\n  if (!isObj || this._isHost(data)) {\n    return this;\n  }\n\n  // default to json\n  if (!type) this.type('json');\n  return this;\n};\n\n/**\n * Sort `querystring` by the sort function\n *\n *\n * Examples:\n *\n *       // default order\n *       request.get('/user')\n *         .query('name=Nick')\n *         .query('search=Manny')\n *         .sortQuery()\n *         .end(callback)\n *\n *       // customized sort function\n *       request.get('/user')\n *         .query('name=Nick')\n *         .query('search=Manny')\n *         .sortQuery(function(a, b){\n *           return a.length - b.length;\n *         })\n *         .end(callback)\n *\n *\n * @param {Function} sort\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.sortQuery = function(sort) {\n  // _sort default to true but otherwise can be a function or boolean\n  this._sort = typeof sort === 'undefined' ? true : sort;\n  return this;\n};\n\n/**\n * Compose querystring to append to req.url\n *\n * @api private\n */\nRequestBase.prototype._finalizeQueryString = function(){\n  var query = this._query.join('&');\n  if (query) {\n    this.url += (this.url.indexOf('?') >= 0 ? '&' : '?') + query;\n  }\n  this._query.length = 0; // Makes the call idempotent\n\n  if (this._sort) {\n    var index = this.url.indexOf('?');\n    if (index >= 0) {\n      var queryArr = this.url.substring(index + 1).split('&');\n      if ('function' === typeof this._sort) {\n        queryArr.sort(this._sort);\n      } else {\n        queryArr.sort();\n      }\n      this.url = this.url.substring(0, index) + '?' + queryArr.join('&');\n    }\n  }\n};\n\n// For backwards compat only\nRequestBase.prototype._appendQueryString = function() {console.trace(\"Unsupported\");}\n\n/**\n * Invoke callback with timeout error.\n *\n * @api private\n */\n\nRequestBase.prototype._timeoutError = function(reason, timeout, errno){\n  if (this._aborted) {\n    return;\n  }\n  var err = new Error(reason + timeout + 'ms exceeded');\n  err.timeout = timeout;\n  err.code = 'ECONNABORTED';\n  err.errno = errno;\n  this.timedout = true;\n  this.abort();\n  this.callback(err);\n};\n\nRequestBase.prototype._setTimeouts = function() {\n  var self = this;\n\n  // deadline\n  if (this._timeout && !this._timer) {\n    this._timer = setTimeout(function(){\n      self._timeoutError('Timeout of ', self._timeout, 'ETIME');\n    }, this._timeout);\n  }\n  // response timeout\n  if (this._responseTimeout && !this._responseTimeoutTimer) {\n    this._responseTimeoutTimer = setTimeout(function(){\n      self._timeoutError('Response timeout of ', self._responseTimeout, 'ETIMEDOUT');\n    }, this._responseTimeout);\n  }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/superagent/lib/request-base.js\n// module id = 569\n// module chunks = 0","'use strict';\n\n/**\n * Module dependencies.\n */\n\nvar utils = require('./utils');\n\n/**\n * Expose `ResponseBase`.\n */\n\nmodule.exports = ResponseBase;\n\n/**\n * Initialize a new `ResponseBase`.\n *\n * @api public\n */\n\nfunction ResponseBase(obj) {\n  if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the prototype properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n  for (var key in ResponseBase.prototype) {\n    obj[key] = ResponseBase.prototype[key];\n  }\n  return obj;\n}\n\n/**\n * Get case-insensitive `field` value.\n *\n * @param {String} field\n * @return {String}\n * @api public\n */\n\nResponseBase.prototype.get = function(field) {\n  return this.header[field.toLowerCase()];\n};\n\n/**\n * Set header related properties:\n *\n *   - `.type` the content type without params\n *\n * A response of \"Content-Type: text/plain; charset=utf-8\"\n * will provide you with a `.type` of \"text/plain\".\n *\n * @param {Object} header\n * @api private\n */\n\nResponseBase.prototype._setHeaderProperties = function(header){\n    // TODO: moar!\n    // TODO: make this a util\n\n    // content-type\n    var ct = header['content-type'] || '';\n    this.type = utils.type(ct);\n\n    // params\n    var params = utils.params(ct);\n    for (var key in params) this[key] = params[key];\n\n    this.links = {};\n\n    // links\n    try {\n        if (header.link) {\n            this.links = utils.parseLinks(header.link);\n        }\n    } catch (err) {\n        // ignore\n    }\n};\n\n/**\n * Set flags such as `.ok` based on `status`.\n *\n * For example a 2xx response will give you a `.ok` of __true__\n * whereas 5xx will be __false__ and `.error` will be __true__. The\n * `.clientError` and `.serverError` are also available to be more\n * specific, and `.statusType` is the class of error ranging from 1..5\n * sometimes useful for mapping respond colors etc.\n *\n * \"sugar\" properties are also defined for common cases. Currently providing:\n *\n *   - .noContent\n *   - .badRequest\n *   - .unauthorized\n *   - .notAcceptable\n *   - .notFound\n *\n * @param {Number} status\n * @api private\n */\n\nResponseBase.prototype._setStatusProperties = function(status){\n    var type = status / 100 | 0;\n\n    // status / class\n    this.status = this.statusCode = status;\n    this.statusType = type;\n\n    // basics\n    this.info = 1 == type;\n    this.ok = 2 == type;\n    this.redirect = 3 == type;\n    this.clientError = 4 == type;\n    this.serverError = 5 == type;\n    this.error = (4 == type || 5 == type)\n        ? this.toError()\n        : false;\n\n    // sugar\n    this.accepted = 202 == status;\n    this.noContent = 204 == status;\n    this.badRequest = 400 == status;\n    this.unauthorized = 401 == status;\n    this.notAcceptable = 406 == status;\n    this.forbidden = 403 == status;\n    this.notFound = 404 == status;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/superagent/lib/response-base.js\n// module id = 570\n// module chunks = 0","'use strict';\n\n/**\n * Return the mime type for the given `str`.\n *\n * @param {String} str\n * @return {String}\n * @api private\n */\n\nexports.type = function(str){\n  return str.split(/ *; */).shift();\n};\n\n/**\n * Return header field parameters.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nexports.params = function(str){\n  return str.split(/ *; */).reduce(function(obj, str){\n    var parts = str.split(/ *= */);\n    var key = parts.shift();\n    var val = parts.shift();\n\n    if (key && val) obj[key] = val;\n    return obj;\n  }, {});\n};\n\n/**\n * Parse Link header fields.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nexports.parseLinks = function(str){\n  return str.split(/ *, */).reduce(function(obj, str){\n    var parts = str.split(/ *; */);\n    var url = parts[0].slice(1, -1);\n    var rel = parts[1].split(/ *= */)[1].slice(1, -1);\n    obj[rel] = url;\n    return obj;\n  }, {});\n};\n\n/**\n * Strip content related fields from `header`.\n *\n * @param {Object} header\n * @return {Object} header\n * @api private\n */\n\nexports.cleanHeader = function(header, changesOrigin){\n  delete header['content-type'];\n  delete header['content-length'];\n  delete header['transfer-encoding'];\n  delete header['host'];\n  // secuirty\n  if (changesOrigin) {\n    delete header['authorization'];\n    delete header['cookie'];\n  }\n  return header;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/superagent/lib/utils.js\n// module id = 571\n// module chunks = 0","function Agent() {\n  this._defaults = [];\n}\n\n[\"use\", \"on\", \"once\", \"set\", \"query\", \"type\", \"accept\", \"auth\", \"withCredentials\", \"sortQuery\", \"retry\", \"ok\", \"redirects\",\n \"timeout\", \"buffer\", \"serialize\", \"parse\", \"ca\", \"key\", \"pfx\", \"cert\"].forEach(function(fn) {\n  /** Default setting for all requests from this agent */\n  Agent.prototype[fn] = function(/*varargs*/) {\n    this._defaults.push({fn:fn, arguments:arguments});\n    return this;\n  }\n});\n\nAgent.prototype._setDefaults = function(req) {\n    this._defaults.forEach(function(def) {\n      req[def.fn].apply(req, def.arguments);\n    });\n};\n\nmodule.exports = Agent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/superagent/lib/agent-base.js\n// module id = 572\n// module chunks = 0","'use strict';\n\nvar utils = require('./utils');\nvar formats = require('./formats');\n\nvar arrayPrefixGenerators = {\n    brackets: function brackets(prefix) { // eslint-disable-line func-name-matching\n        return prefix + '[]';\n    },\n    indices: function indices(prefix, key) { // eslint-disable-line func-name-matching\n        return prefix + '[' + key + ']';\n    },\n    repeat: function repeat(prefix) { // eslint-disable-line func-name-matching\n        return prefix;\n    }\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaults = {\n    delimiter: '&',\n    encode: true,\n    encoder: utils.encode,\n    encodeValuesOnly: false,\n    serializeDate: function serializeDate(date) { // eslint-disable-line func-name-matching\n        return toISO.call(date);\n    },\n    skipNulls: false,\n    strictNullHandling: false\n};\n\nvar stringify = function stringify( // eslint-disable-line func-name-matching\n    object,\n    prefix,\n    generateArrayPrefix,\n    strictNullHandling,\n    skipNulls,\n    encoder,\n    filter,\n    sort,\n    allowDots,\n    serializeDate,\n    formatter,\n    encodeValuesOnly\n) {\n    var obj = object;\n    if (typeof filter === 'function') {\n        obj = filter(prefix, obj);\n    } else if (obj instanceof Date) {\n        obj = serializeDate(obj);\n    } else if (obj === null) {\n        if (strictNullHandling) {\n            return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder) : prefix;\n        }\n\n        obj = '';\n    }\n\n    if (typeof obj === 'string' || typeof obj === 'number' || typeof obj === 'boolean' || utils.isBuffer(obj)) {\n        if (encoder) {\n            var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder);\n            return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder))];\n        }\n        return [formatter(prefix) + '=' + formatter(String(obj))];\n    }\n\n    var values = [];\n\n    if (typeof obj === 'undefined') {\n        return values;\n    }\n\n    var objKeys;\n    if (Array.isArray(filter)) {\n        objKeys = filter;\n    } else {\n        var keys = Object.keys(obj);\n        objKeys = sort ? keys.sort(sort) : keys;\n    }\n\n    for (var i = 0; i < objKeys.length; ++i) {\n        var key = objKeys[i];\n\n        if (skipNulls && obj[key] === null) {\n            continue;\n        }\n\n        if (Array.isArray(obj)) {\n            values = values.concat(stringify(\n                obj[key],\n                generateArrayPrefix(prefix, key),\n                generateArrayPrefix,\n                strictNullHandling,\n                skipNulls,\n                encoder,\n                filter,\n                sort,\n                allowDots,\n                serializeDate,\n                formatter,\n                encodeValuesOnly\n            ));\n        } else {\n            values = values.concat(stringify(\n                obj[key],\n                prefix + (allowDots ? '.' + key : '[' + key + ']'),\n                generateArrayPrefix,\n                strictNullHandling,\n                skipNulls,\n                encoder,\n                filter,\n                sort,\n                allowDots,\n                serializeDate,\n                formatter,\n                encodeValuesOnly\n            ));\n        }\n    }\n\n    return values;\n};\n\nmodule.exports = function (object, opts) {\n    var obj = object;\n    var options = opts ? utils.assign({}, opts) : {};\n\n    if (options.encoder !== null && options.encoder !== undefined && typeof options.encoder !== 'function') {\n        throw new TypeError('Encoder has to be a function.');\n    }\n\n    var delimiter = typeof options.delimiter === 'undefined' ? defaults.delimiter : options.delimiter;\n    var strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling;\n    var skipNulls = typeof options.skipNulls === 'boolean' ? options.skipNulls : defaults.skipNulls;\n    var encode = typeof options.encode === 'boolean' ? options.encode : defaults.encode;\n    var encoder = typeof options.encoder === 'function' ? options.encoder : defaults.encoder;\n    var sort = typeof options.sort === 'function' ? options.sort : null;\n    var allowDots = typeof options.allowDots === 'undefined' ? false : options.allowDots;\n    var serializeDate = typeof options.serializeDate === 'function' ? options.serializeDate : defaults.serializeDate;\n    var encodeValuesOnly = typeof options.encodeValuesOnly === 'boolean' ? options.encodeValuesOnly : defaults.encodeValuesOnly;\n    if (typeof options.format === 'undefined') {\n        options.format = formats['default'];\n    } else if (!Object.prototype.hasOwnProperty.call(formats.formatters, options.format)) {\n        throw new TypeError('Unknown format option provided.');\n    }\n    var formatter = formats.formatters[options.format];\n    var objKeys;\n    var filter;\n\n    if (typeof options.filter === 'function') {\n        filter = options.filter;\n        obj = filter('', obj);\n    } else if (Array.isArray(options.filter)) {\n        filter = options.filter;\n        objKeys = filter;\n    }\n\n    var keys = [];\n\n    if (typeof obj !== 'object' || obj === null) {\n        return '';\n    }\n\n    var arrayFormat;\n    if (options.arrayFormat in arrayPrefixGenerators) {\n        arrayFormat = options.arrayFormat;\n    } else if ('indices' in options) {\n        arrayFormat = options.indices ? 'indices' : 'repeat';\n    } else {\n        arrayFormat = 'indices';\n    }\n\n    var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n\n    if (!objKeys) {\n        objKeys = Object.keys(obj);\n    }\n\n    if (sort) {\n        objKeys.sort(sort);\n    }\n\n    for (var i = 0; i < objKeys.length; ++i) {\n        var key = objKeys[i];\n\n        if (skipNulls && obj[key] === null) {\n            continue;\n        }\n\n        keys = keys.concat(stringify(\n            obj[key],\n            key,\n            generateArrayPrefix,\n            strictNullHandling,\n            skipNulls,\n            encode ? encoder : null,\n            filter,\n            sort,\n            allowDots,\n            serializeDate,\n            formatter,\n            encodeValuesOnly\n        ));\n    }\n\n    var joined = keys.join(delimiter);\n    var prefix = options.addQueryPrefix === true ? '?' : '';\n\n    return joined.length > 0 ? prefix + joined : '';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/qs/lib/stringify.js\n// module id = 573\n// module chunks = 0","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\n\nvar defaults = {\n    allowDots: false,\n    allowPrototypes: false,\n    arrayLimit: 20,\n    decoder: utils.decode,\n    delimiter: '&',\n    depth: 5,\n    parameterLimit: 1000,\n    plainObjects: false,\n    strictNullHandling: false\n};\n\nvar parseValues = function parseQueryStringValues(str, options) {\n    var obj = {};\n    var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n    var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n    var parts = cleanStr.split(options.delimiter, limit);\n\n    for (var i = 0; i < parts.length; ++i) {\n        var part = parts[i];\n\n        var bracketEqualsPos = part.indexOf(']=');\n        var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n        var key, val;\n        if (pos === -1) {\n            key = options.decoder(part, defaults.decoder);\n            val = options.strictNullHandling ? null : '';\n        } else {\n            key = options.decoder(part.slice(0, pos), defaults.decoder);\n            val = options.decoder(part.slice(pos + 1), defaults.decoder);\n        }\n        if (has.call(obj, key)) {\n            obj[key] = [].concat(obj[key]).concat(val);\n        } else {\n            obj[key] = val;\n        }\n    }\n\n    return obj;\n};\n\nvar parseObject = function (chain, val, options) {\n    var leaf = val;\n\n    for (var i = chain.length - 1; i >= 0; --i) {\n        var obj;\n        var root = chain[i];\n\n        if (root === '[]') {\n            obj = [];\n            obj = obj.concat(leaf);\n        } else {\n            obj = options.plainObjects ? Object.create(null) : {};\n            var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n            var index = parseInt(cleanRoot, 10);\n            if (\n                !isNaN(index)\n                && root !== cleanRoot\n                && String(index) === cleanRoot\n                && index >= 0\n                && (options.parseArrays && index <= options.arrayLimit)\n            ) {\n                obj = [];\n                obj[index] = leaf;\n            } else {\n                obj[cleanRoot] = leaf;\n            }\n        }\n\n        leaf = obj;\n    }\n\n    return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options) {\n    if (!givenKey) {\n        return;\n    }\n\n    // Transform dot notation to bracket notation\n    var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n    // The regex chunks\n\n    var brackets = /(\\[[^[\\]]*])/;\n    var child = /(\\[[^[\\]]*])/g;\n\n    // Get the parent\n\n    var segment = brackets.exec(key);\n    var parent = segment ? key.slice(0, segment.index) : key;\n\n    // Stash the parent if it exists\n\n    var keys = [];\n    if (parent) {\n        // If we aren't using plain objects, optionally prefix keys\n        // that would overwrite object prototype properties\n        if (!options.plainObjects && has.call(Object.prototype, parent)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        keys.push(parent);\n    }\n\n    // Loop through children appending to the array until we hit depth\n\n    var i = 0;\n    while ((segment = child.exec(key)) !== null && i < options.depth) {\n        i += 1;\n        if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n        keys.push(segment[1]);\n    }\n\n    // If there's a remainder, just add whatever is left\n\n    if (segment) {\n        keys.push('[' + key.slice(segment.index) + ']');\n    }\n\n    return parseObject(keys, val, options);\n};\n\nmodule.exports = function (str, opts) {\n    var options = opts ? utils.assign({}, opts) : {};\n\n    if (options.decoder !== null && options.decoder !== undefined && typeof options.decoder !== 'function') {\n        throw new TypeError('Decoder has to be a function.');\n    }\n\n    options.ignoreQueryPrefix = options.ignoreQueryPrefix === true;\n    options.delimiter = typeof options.delimiter === 'string' || utils.isRegExp(options.delimiter) ? options.delimiter : defaults.delimiter;\n    options.depth = typeof options.depth === 'number' ? options.depth : defaults.depth;\n    options.arrayLimit = typeof options.arrayLimit === 'number' ? options.arrayLimit : defaults.arrayLimit;\n    options.parseArrays = options.parseArrays !== false;\n    options.decoder = typeof options.decoder === 'function' ? options.decoder : defaults.decoder;\n    options.allowDots = typeof options.allowDots === 'boolean' ? options.allowDots : defaults.allowDots;\n    options.plainObjects = typeof options.plainObjects === 'boolean' ? options.plainObjects : defaults.plainObjects;\n    options.allowPrototypes = typeof options.allowPrototypes === 'boolean' ? options.allowPrototypes : defaults.allowPrototypes;\n    options.parameterLimit = typeof options.parameterLimit === 'number' ? options.parameterLimit : defaults.parameterLimit;\n    options.strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling;\n\n    if (str === '' || str === null || typeof str === 'undefined') {\n        return options.plainObjects ? Object.create(null) : {};\n    }\n\n    var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n    var obj = options.plainObjects ? Object.create(null) : {};\n\n    // Iterate over the keys and setup the new object\n\n    var keys = Object.keys(tempObj);\n    for (var i = 0; i < keys.length; ++i) {\n        var key = keys[i];\n        var newObj = parseKeys(key, tempObj[key], options);\n        obj = utils.merge(obj, newObj, options);\n    }\n\n    return utils.compact(obj);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/qs/lib/parse.js\n// module id = 574\n// module chunks = 0","/* eslint-disable no-continue */\n\nfunction get() {\n  if (!Object.assign) {\n    return objectAssignPolyfill;\n  }\n\n  return Object.assign;\n}\n\nfunction objectAssignPolyfill(target) {\n  'use strict';\n  if (target === undefined || target === null) {\n    throw new TypeError('Cannot convert first argument to object');\n  }\n\n  var to = Object(target);\n  for (var i = 1; i < arguments.length; i++) {\n    var nextSource = arguments[i];\n    if (nextSource === undefined || nextSource === null) {\n      continue;\n    }\n\n    var keysArray = Object.keys(Object(nextSource));\n    for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex++) {\n      var nextKey = keysArray[nextIndex];\n      var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n      if (desc !== undefined && desc.enumerable) {\n        to[nextKey] = nextSource[nextKey];\n      }\n    }\n  }\n  return to;\n}\n\nmodule.exports = {\n  get: get,\n  objectAssignPolyfill: objectAssignPolyfill\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/auth0-js/src/helper/object-assign.js\n// module id = 575\n// module chunks = 0","var windowHandler = require('../window');\nvar DummyStorage = require('./dummy');\nvar CookieStorage = require('./cookie');\nvar Warn = require('../warn');\n\nfunction StorageHandler() {\n  this.warn = new Warn({});\n  this.storage = windowHandler.getWindow().localStorage || new CookieStorage();\n}\n\nStorageHandler.prototype.failover = function() {\n  if (this.storage instanceof DummyStorage) {\n    this.warn.warning('DummyStorage: ignore failover');\n    return;\n  } else if (this.storage instanceof CookieStorage) {\n    this.warn.warning('CookieStorage: failing over DummyStorage');\n    this.storage = new DummyStorage();\n  } else {\n    this.warn.warning('LocalStorage: failing over CookieStorage');\n    this.storage = new CookieStorage();\n  }\n};\n\nStorageHandler.prototype.getItem = function(key) {\n  try {\n    return this.storage.getItem(key);\n  } catch (e) {\n    this.warn.warning(e);\n    this.failover();\n    return this.getItem(key);\n  }\n};\n\nStorageHandler.prototype.removeItem = function(key) {\n  try {\n    return this.storage.removeItem(key);\n  } catch (e) {\n    this.warn.warning(e);\n    this.failover();\n    return this.removeItem(key);\n  }\n};\n\nStorageHandler.prototype.setItem = function(key, value) {\n  try {\n    return this.storage.setItem(key, value);\n  } catch (e) {\n    this.warn.warning(e);\n    this.failover();\n    return this.setItem(key, value);\n  }\n};\n\nmodule.exports = StorageHandler;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/auth0-js/src/helper/storage/handler.js\n// module id = 576\n// module chunks = 0","function DummyStorage() {}\n\nDummyStorage.prototype.getItem = function() {\n  return null;\n};\n\nDummyStorage.prototype.removeItem = function() {};\n\nDummyStorage.prototype.setItem = function() {};\n\nmodule.exports = DummyStorage;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/auth0-js/src/helper/storage/dummy.js\n// module id = 577\n// module chunks = 0","var cookies = require('../cookies');\n\nfunction CookieStorage() {}\n\nCookieStorage.prototype.getItem = function(key) {\n  return cookies.read(key);\n};\n\nCookieStorage.prototype.removeItem = function(key) {\n  cookies.erase(key);\n};\n\nCookieStorage.prototype.setItem = function(key, value) {\n  cookies.create(key, value, 1);\n};\n\nmodule.exports = CookieStorage;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/auth0-js/src/helper/storage/cookie.js\n// module id = 578\n// module chunks = 0","var windowHandler = require('./window');\nvar base64Url = require('./base64_url');\n\nfunction create(name, value, days) {\n  var date;\n  var expires;\n\n  if (\n    windowHandler.getDocument().cookie === undefined ||\n    windowHandler.getDocument().cookie === null\n  ) {\n    throw new Error('cookie storage not available');\n  }\n\n  if (days) {\n    var timeToExpire = days * 24 * 60 * 60 * 1000;\n    date = new Date();\n    date.setTime(date.getTime() + timeToExpire);\n    expires = '; expires=' + date.toGMTString();\n  } else {\n    expires = '';\n  }\n\n  windowHandler.getDocument().cookie = name + '=' + base64Url.encode(value) + expires + '; path=/';\n}\n\nfunction read(name) {\n  var i;\n  var cookie;\n  var cookies;\n  var nameEQ = name + '=';\n\n  if (\n    windowHandler.getDocument().cookie === undefined ||\n    windowHandler.getDocument().cookie === null\n  ) {\n    throw new Error('cookie storage not available');\n  }\n\n  cookies = windowHandler.getDocument().cookie.split(';');\n\n  for (i = 0; i < cookies.length; i++) {\n    cookie = cookies[i];\n    while (cookie.charAt(0) === ' ') {\n      cookie = cookie.substring(1, cookie.length);\n    }\n    if (cookie.indexOf(nameEQ) === 0) {\n      return base64Url.decode(cookie.substring(nameEQ.length, cookie.length));\n    }\n  }\n\n  return null;\n}\n\nfunction erase(name) {\n  create(name, '', -1);\n}\n\nmodule.exports = {\n  create: create,\n  read: read,\n  erase: erase\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/auth0-js/src/helper/cookies.js\n// module id = 579\n// module chunks = 0","var objectHelper = require('./object');\n\nvar tokenParams = [\n  // auth0\n  'realm',\n  'audience',\n  // oauth2\n  'client_id',\n  'client_secret',\n  'redirect_uri',\n  'scope',\n  'code',\n  'grant_type',\n  'username',\n  'password',\n  'refresh_token',\n  'assertion',\n  'client_assertion',\n  'client_assertion_type',\n  'code_verifier'\n];\n\nvar authorizeParams = [\n  // auth0\n  'connection',\n  'connection_scope',\n  'auth0Client',\n  'owp',\n  'device',\n  'realm',\n\n  'protocol',\n  '_csrf',\n  '_intstate',\n  'login_ticket',\n\n  // oauth2\n  'client_id',\n  'response_type',\n  'response_mode',\n  'redirect_uri',\n  'audience',\n  'scope',\n  'state',\n  'nonce',\n  'display',\n  'prompt',\n  'max_age',\n  'ui_locales',\n  'claims_locales',\n  'id_token_hint',\n  'login_hint',\n  'acr_values',\n  'claims',\n  'registration',\n  'request',\n  'request_uri',\n  'code_challenge',\n  'code_challenge_method'\n];\n\nfunction oauthAuthorizeParams(warn, params) {\n  var notAllowed = objectHelper.getKeysNotIn(params, authorizeParams);\n\n  if (notAllowed.length > 0) {\n    warn.warning(\n      'Following parameters are not allowed on the `/authorize` endpoint: [' +\n        notAllowed.join(',') +\n        ']'\n    );\n  }\n\n  return params;\n}\n\nfunction oauthTokenParams(warn, params) {\n  return objectHelper.pick(params, tokenParams);\n}\n\nmodule.exports = {\n  oauthTokenParams: oauthTokenParams,\n  oauthAuthorizeParams: oauthAuthorizeParams\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/auth0-js/src/helper/parameters-whitelist.js\n// module id = 580\n// module chunks = 0","var urljoin = require('url-join');\n\nvar objectHelper = require('../helper/object');\nvar assert = require('../helper/assert');\nvar qs = require('qs');\nvar responseHandler = require('../helper/response-handler');\n\nfunction PasswordlessAuthentication(request, options) {\n  this.baseOptions = options;\n  this.request = request;\n}\n\nPasswordlessAuthentication.prototype.buildVerifyUrl = function(options) {\n  var params;\n  var qString;\n\n  /* eslint-disable */\n  assert.check(\n    options,\n    { type: 'object', message: 'options parameter is not valid' },\n    {\n      connection: { type: 'string', message: 'connection option is required' },\n      verificationCode: { type: 'string', message: 'verificationCode option is required' },\n      phoneNumber: {\n        optional: false,\n        type: 'string',\n        message: 'phoneNumber option is required',\n        condition: function(o) {\n          return !o.email;\n        }\n      },\n      email: {\n        optional: false,\n        type: 'string',\n        message: 'email option is required',\n        condition: function(o) {\n          return !o.phoneNumber;\n        }\n      }\n    }\n  );\n  /* eslint-enable */\n\n  params = objectHelper\n    .merge(this.baseOptions, [\n      'clientID',\n      'responseType',\n      'responseMode',\n      'redirectUri',\n      'scope',\n      'audience',\n      '_csrf',\n      'state',\n      '_intstate',\n      'protocol',\n      'nonce'\n    ])\n    .with(options);\n\n  // eslint-disable-next-line\n  if (this.baseOptions._sendTelemetry) {\n    params.auth0Client = this.request.getTelemetryData();\n  }\n\n  params = objectHelper.toSnakeCase(params, ['auth0Client']);\n\n  qString = qs.stringify(params);\n\n  return urljoin(this.baseOptions.rootUrl, 'passwordless', 'verify_redirect', '?' + qString);\n};\n\nPasswordlessAuthentication.prototype.start = function(options, cb) {\n  var url;\n  var body;\n\n  /* eslint-disable */\n  assert.check(\n    options,\n    { type: 'object', message: 'options parameter is not valid' },\n    {\n      connection: { type: 'string', message: 'connection option is required' },\n      send: {\n        type: 'string',\n        message: 'send option is required',\n        values: ['link', 'code'],\n        value_message: 'send is not valid ([link, code])'\n      },\n      phoneNumber: {\n        optional: true,\n        type: 'string',\n        message: 'phoneNumber option is required',\n        condition: function(o) {\n          return o.send === 'code' || !o.email;\n        }\n      },\n      email: {\n        optional: true,\n        type: 'string',\n        message: 'email option is required',\n        condition: function(o) {\n          return o.send === 'link' || !o.phoneNumber;\n        }\n      },\n      authParams: { optional: true, type: 'object', message: 'authParams option is required' }\n    }\n  );\n  /* eslint-enable */\n\n  assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n  url = urljoin(this.baseOptions.rootUrl, 'passwordless', 'start');\n\n  body = objectHelper\n    .merge(this.baseOptions, ['clientID', 'responseType', 'redirectUri', 'scope'])\n    .with(options);\n\n  if (body.scope) {\n    body.authParams = body.authParams || {};\n    body.authParams.scope = body.scope;\n  }\n\n  if (body.redirectUri) {\n    body.authParams = body.authParams || {};\n    body.authParams.redirect_uri = body.redirectUri;\n  }\n\n  if (body.responseType) {\n    body.authParams = body.authParams || {};\n    body.authParams.response_type = body.responseType;\n  }\n\n  delete body.redirectUri;\n  delete body.responseType;\n  delete body.scope;\n\n  body = objectHelper.toSnakeCase(body, ['auth0Client', 'authParams']);\n\n  return this.request.post(url).send(body).end(responseHandler(cb));\n};\n\nPasswordlessAuthentication.prototype.verify = function(options, cb) {\n  var url;\n  var cleanOption;\n\n  /* eslint-disable */\n  assert.check(\n    options,\n    { type: 'object', message: 'options parameter is not valid' },\n    {\n      connection: { type: 'string', message: 'connection option is required' },\n      verificationCode: { type: 'string', message: 'verificationCode option is required' },\n      phoneNumber: {\n        optional: false,\n        type: 'string',\n        message: 'phoneNumber option is required',\n        condition: function(o) {\n          return !o.email;\n        }\n      },\n      email: {\n        optional: false,\n        type: 'string',\n        message: 'email option is required',\n        condition: function(o) {\n          return !o.phoneNumber;\n        }\n      }\n    }\n  );\n  /* eslint-enable */\n\n  assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n  cleanOption = objectHelper.pick(options, [\n    'connection',\n    'verificationCode',\n    'phoneNumber',\n    'email',\n    'auth0Client'\n  ]);\n  cleanOption = objectHelper.toSnakeCase(cleanOption, ['auth0Client']);\n\n  url = urljoin(this.baseOptions.rootUrl, 'passwordless', 'verify');\n\n  return this.request.post(url).send(cleanOption).end(responseHandler(cb));\n};\n\nmodule.exports = PasswordlessAuthentication;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/auth0-js/src/authentication/passwordless-authentication.js\n// module id = 581\n// module chunks = 0","var urljoin = require('url-join');\n\nvar objectHelper = require('../helper/object');\nvar assert = require('../helper/assert');\nvar responseHandler = require('../helper/response-handler');\n\nfunction DBConnection(request, options) {\n  this.baseOptions = options;\n  this.request = request;\n}\n\n/**\n * @callback signUpCallback\n * @param {Error} [err] error returned by Auth0 with the reason why the signup failed\n * @param {Object} [result] result of the signup request\n * @param {Object} result.email user's email\n * @param {Object} result.emailVerified if the user's email was verified\n */\n\n/**\n * Creates a new user in a Auth0 Database connection\n *\n * @method signup\n * @param {Object} options\n * @param {String} options.email user email address\n * @param {String} options.password user password\n * @param {String} options.connection name of the connection where the user will be created\n * @param {Object} [options.userMetadata] additional signup attributes used for creating the user. Will be stored in `user_metadata`\n * @param {signUpCallback} cb\n * @see   {@link https://auth0.com/docs/api/authentication#signup}\n */\nDBConnection.prototype.signup = function(options, cb) {\n  var url;\n  var body;\n  var metadata;\n\n  assert.check(\n    options,\n    { type: 'object', message: 'options parameter is not valid' },\n    {\n      connection: { type: 'string', message: 'connection option is required' },\n      email: { type: 'string', message: 'email option is required' },\n      password: { type: 'string', message: 'password option is required' }\n    }\n  );\n  assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n  url = urljoin(this.baseOptions.rootUrl, 'dbconnections', 'signup');\n\n  body = objectHelper.merge(this.baseOptions, ['clientID']).with(options);\n\n  metadata = body.user_metadata || body.userMetadata;\n\n  body = objectHelper.blacklist(body, ['scope', 'userMetadata', 'user_metadata']);\n\n  body = objectHelper.toSnakeCase(body, ['auth0Client']);\n\n  if (metadata) {\n    body.user_metadata = metadata;\n  }\n\n  return this.request.post(url).send(body).end(responseHandler(cb));\n};\n\n/**\n * @callback changePasswordCallback\n * @param {Error} [err] error returned by Auth0 with the reason why the request failed\n */\n\n/**\n * Request an email with instruction to change a user's password\n *\n * @method changePassword\n * @param {Object} options\n * @param {String} options.email address where the user will recieve the change password email. It should match the user's email in Auth0\n * @param {String} options.connection name of the connection where the user was created\n * @param {changePasswordCallback} cb\n * @see   {@link https://auth0.com/docs/api/authentication#change-password}\n */\nDBConnection.prototype.changePassword = function(options, cb) {\n  var url;\n  var body;\n\n  assert.check(\n    options,\n    { type: 'object', message: 'options parameter is not valid' },\n    {\n      connection: { type: 'string', message: 'connection option is required' },\n      email: { type: 'string', message: 'email option is required' }\n    }\n  );\n  assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n  url = urljoin(this.baseOptions.rootUrl, 'dbconnections', 'change_password');\n\n  body = objectHelper.merge(this.baseOptions, ['clientID']).with(options, ['email', 'connection']);\n\n  body = objectHelper.toSnakeCase(body, ['auth0Client']);\n\n  return this.request.post(url).send(body).end(responseHandler(cb));\n};\n\nmodule.exports = DBConnection;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/auth0-js/src/authentication/db-connection.js\n// module id = 582\n// module chunks = 0","var urljoin = require('url-join');\n\nvar RequestBuilder = require('../helper/request-builder');\nvar assert = require('../helper/assert');\nvar responseHandler = require('../helper/response-handler');\n\n/**\n * Auth0 Management API Client (methods allowed to be called from the browser only)\n * @constructor\n * @param {Object} options\n * @param {Object} options.domain your Auth0 acount domain\n * @param {Object} options.token a valid API token\n */\nfunction Management(options) {\n  /* eslint-disable */\n  assert.check(\n    options,\n    { type: 'object', message: 'options parameter is not valid' },\n    {\n      domain: { type: 'string', message: 'domain option is required' },\n      token: { type: 'string', message: 'token option is required' },\n      _sendTelemetry: {\n        optional: true,\n        type: 'boolean',\n        message: '_sendTelemetry option is not valid'\n      },\n      _telemetryInfo: {\n        optional: true,\n        type: 'object',\n        message: '_telemetryInfo option is not valid'\n      }\n    }\n  );\n  /* eslint-enable */\n\n  this.baseOptions = options;\n\n  this.baseOptions.headers = { Authorization: 'Bearer ' + this.baseOptions.token };\n\n  this.request = new RequestBuilder(this.baseOptions);\n  this.baseOptions.rootUrl = urljoin('https://' + this.baseOptions.domain, 'api', 'v2');\n}\n\n/**\n * @callback userCallback\n * @param {Error} [err] failure reason for the failed request to Management API\n * @param {Object} [result] user profile\n */\n\n/**\n * Returns the user profile\n *\n * @method getUser\n * @param {String} userId identifier of the user to retrieve\n * @param {userCallback} cb\n * @see https://auth0.com/docs/api/management/v2#!/Users/get_users_by_id\n */\nManagement.prototype.getUser = function(userId, cb) {\n  var url;\n\n  assert.check(userId, { type: 'string', message: 'userId parameter is not valid' });\n  assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n  url = urljoin(this.baseOptions.rootUrl, 'users', userId);\n\n  return this.request.get(url).end(responseHandler(cb, { ignoreCasing: true }));\n};\n\n/**\n * Updates the user metdata. It will patch the user metdata with the attributes sent.\n *\n *\n * @method patchUserMetadata\n * @param {String} userId\n * @param {Object} userMetadata\n * @param {userCallback} cb\n * @see   {@link https://auth0.com/docs/api/management/v2#!/Users/patch_users_by_id}\n */\nManagement.prototype.patchUserMetadata = function(userId, userMetadata, cb) {\n  var url;\n\n  assert.check(userId, { type: 'string', message: 'userId parameter is not valid' });\n  assert.check(userMetadata, { type: 'object', message: 'userMetadata parameter is not valid' });\n  assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n  url = urljoin(this.baseOptions.rootUrl, 'users', userId);\n\n  return this.request\n    .patch(url)\n    .send({ user_metadata: userMetadata })\n    .end(responseHandler(cb, { ignoreCasing: true }));\n};\n\n/**\n * Link two users\n *\n * @method linkUser\n * @param {String} userId\n * @param {String} secondaryUserToken\n * @param {userCallback} cb\n * @see   {@link https://auth0.com/docs/api/management/v2#!/Users/post_identities}\n */\nManagement.prototype.linkUser = function(userId, secondaryUserToken, cb) {\n  var url;\n  /* eslint-disable */\n  assert.check(userId, { type: 'string', message: 'userId parameter is not valid' });\n  assert.check(secondaryUserToken, {\n    type: 'string',\n    message: 'secondaryUserToken parameter is not valid'\n  });\n  assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n  /* eslint-enable */\n\n  url = urljoin(this.baseOptions.rootUrl, 'users', userId, 'identities');\n\n  return this.request\n    .post(url)\n    .send({ link_with: secondaryUserToken })\n    .end(responseHandler(cb, { ignoreCasing: true }));\n};\n\nmodule.exports = Management;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/auth0-js/src/management/index.js\n// module id = 583\n// module chunks = 0","var IdTokenVerifier = require('idtoken-verifier');\n\nvar assert = require('../helper/assert');\nvar error = require('../helper/error');\nvar qs = require('qs');\nvar PluginHandler = require('../helper/plugins');\nvar windowHelper = require('../helper/window');\nvar objectHelper = require('../helper/object');\nvar ssodata = require('../helper/ssodata');\nvar TransactionManager = require('./transaction-manager');\nvar Authentication = require('../authentication');\nvar Redirect = require('./redirect');\nvar Popup = require('./popup');\nvar SilentAuthenticationHandler = require('./silent-authentication-handler');\nvar CrossOriginAuthentication = require('./cross-origin-authentication');\nvar WebMessageHandler = require('./web-message-handler');\n\n/**\n * Handles all the browser's AuthN/AuthZ flows\n * @constructor\n * @param {Object} options\n * @param {String} options.domain your Auth0 domain\n * @param {String} options.clientID your Auth0 client identifier obtained when creating the client in the Auth0 Dashboard\n * @param {String} [options.redirectUri] url that the Auth0 will redirect after Auth with the Authorization Response\n * @param {String} [options.responseType] type of the response used by OAuth 2.0 flow. It can be any space separated list of the values `code`, `token`, `id_token`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0}\n * @param {String} [options.responseMode] how the Auth response is encoded and redirected back to the client. Supported values are `query`, `fragment` and `form_post`. The `query` value is only supported when `responseType` is `code`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#ResponseModes}\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @param {Array} [options.plugins]\n * @param {Number} [options._timesToRetryFailedRequests] Number of times to retry a failed request, according to {@link https://github.com/visionmedia/superagent/blob/master/lib/should-retry.js}\n * @see {@link https://auth0.com/docs/api/authentication}\n */\nfunction WebAuth(options) {\n  /* eslint-disable */\n  assert.check(\n    options,\n    { type: 'object', message: 'options parameter is not valid' },\n    {\n      domain: { type: 'string', message: 'domain option is required' },\n      clientID: { type: 'string', message: 'clientID option is required' },\n      responseType: { optional: true, type: 'string', message: 'responseType is not valid' },\n      responseMode: { optional: true, type: 'string', message: 'responseMode is not valid' },\n      redirectUri: { optional: true, type: 'string', message: 'redirectUri is not valid' },\n      scope: { optional: true, type: 'string', message: 'scope is not valid' },\n      audience: { optional: true, type: 'string', message: 'audience is not valid' },\n      popupOrigin: { optional: true, type: 'string', message: 'popupOrigin is not valid' },\n      leeway: { optional: true, type: 'number', message: 'leeway is not valid' },\n      plugins: { optional: true, type: 'array', message: 'plugins is not valid' },\n      _disableDeprecationWarnings: {\n        optional: true,\n        type: 'boolean',\n        message: '_disableDeprecationWarnings option is not valid'\n      },\n      _sendTelemetry: {\n        optional: true,\n        type: 'boolean',\n        message: '_sendTelemetry option is not valid'\n      },\n      _telemetryInfo: {\n        optional: true,\n        type: 'object',\n        message: '_telemetryInfo option is not valid'\n      },\n      _timesToRetryFailedRequests: {\n        optional: true,\n        type: 'number',\n        message: '_timesToRetryFailedRequests option is not valid'\n      }\n    }\n  );\n\n  if (options.overrides) {\n    assert.check(\n      options.overrides,\n      { type: 'object', message: 'overrides option is not valid' },\n      {\n        __tenant: { type: 'string', message: '__tenant option is required' },\n        __token_issuer: { type: 'string', message: '__token_issuer option is required' }\n      }\n    );\n  }\n  /* eslint-enable */\n\n  this.baseOptions = options;\n  this.baseOptions.plugins = new PluginHandler(this, this.baseOptions.plugins || []);\n\n  this.baseOptions._sendTelemetry = this.baseOptions._sendTelemetry === false\n    ? this.baseOptions._sendTelemetry\n    : true;\n\n  this.baseOptions._timesToRetryFailedRequests = options._timesToRetryFailedRequests\n    ? parseInt(options._timesToRetryFailedRequests, 0)\n    : 0;\n\n  this.baseOptions.tenant =\n    (this.baseOptions.overrides && this.baseOptions.overrides.__tenant) ||\n    this.baseOptions.domain.split('.')[0];\n\n  this.baseOptions.token_issuer =\n    (this.baseOptions.overrides && this.baseOptions.overrides.__token_issuer) ||\n    'https://' + this.baseOptions.domain + '/';\n\n  this.transactionManager = new TransactionManager(this.baseOptions.transaction);\n\n  this.client = new Authentication(this, this.baseOptions);\n  this.redirect = new Redirect(this, this.baseOptions);\n  this.popup = new Popup(this, this.baseOptions);\n  this.crossOriginAuthentication = new CrossOriginAuthentication(this, this.baseOptions);\n  this.webMessageHandler = new WebMessageHandler(this);\n}\n\n/**\n * Parse the url hash and extract the Auth response from a Auth flow started with {@link authorize}\n *\n * Only validates id_tokens signed by Auth0 using the RS256 algorithm using the public key exposed\n * by the `/.well-known/jwks.json` endpoint of your account.\n * Tokens signed with other algorithms, e.g. HS256 will not be accepted.\n *\n * @method parseHash\n * @param {Object} options\n * @param {String} options.hash the url hash. If not provided it will extract from window.location.hash\n * @param {String} [options.state] value originally sent in `state` parameter to {@link authorize} to mitigate XSRF\n * @param {String} [options.nonce] value originally sent in `nonce` parameter to {@link authorize} to prevent replay attacks\n * @param {authorizeCallback} cb\n */\nWebAuth.prototype.parseHash = function(options, cb) {\n  var parsedQs;\n  var err;\n\n  if (!cb && typeof options === 'function') {\n    cb = options;\n    options = {};\n  } else {\n    options = options || {};\n  }\n\n  var _window = windowHelper.getWindow();\n\n  var hashStr = options.hash === undefined ? _window.location.hash : options.hash;\n  hashStr = hashStr.replace(/^#?\\/?/, '');\n\n  parsedQs = qs.parse(hashStr);\n\n  if (parsedQs.hasOwnProperty('error')) {\n    err = error.buildResponse(parsedQs.error, parsedQs.error_description);\n\n    if (parsedQs.state) {\n      err.state = parsedQs.state;\n    }\n\n    return cb(err);\n  }\n\n  if (\n    !parsedQs.hasOwnProperty('access_token') &&\n    !parsedQs.hasOwnProperty('id_token') &&\n    !parsedQs.hasOwnProperty('refresh_token')\n  ) {\n    return cb(null, null);\n  }\n  return this.validateAuthenticationResponse(options, parsedQs, cb);\n};\n\n/**\n * Validates an Auth response from a Auth flow started with {@link authorize}\n *\n * Only validates id_tokens signed by Auth0 using the RS256 algorithm using the public key exposed\n * by the `/.well-known/jwks.json` endpoint of your account.\n * Tokens signed with other algorithms, e.g. HS256 will not be accepted.\n *\n * @method validateAuthenticationResponse\n * @param {Object} options\n * @param {String} options.hash the url hash. If not provided it will extract from window.location.hash\n * @param {String} [options.state] value originally sent in `state` parameter to {@link authorize} to mitigate XSRF\n * @param {String} [options.nonce] value originally sent in `nonce` parameter to {@link authorize} to prevent replay attacks\n * @param {authorizeCallback} cb\n */\nWebAuth.prototype.validateAuthenticationResponse = function(options, parsedHash, cb) {\n  var _this = this;\n  var state = parsedHash.state;\n  var transaction = this.transactionManager.getStoredTransaction(state);\n  var transactionState = options.state || (transaction && transaction.state) || null;\n  var transactionStateMatchesState = transactionState === state;\n  if (state && !transactionStateMatchesState) {\n    return cb({\n      error: 'invalid_token',\n      errorDescription: '`state` does not match.'\n    });\n  }\n  var transactionNonce = options.nonce || (transaction && transaction.nonce) || null;\n\n  var appState = options.state || (transaction && transaction.appState) || null;\n\n  var callback = function(err, payload) {\n    if (err) {\n      return cb(err);\n    }\n    if (transaction && transaction.lastUsedConnection) {\n      var sub;\n      if (payload) {\n        sub = payload.sub;\n      }\n      ssodata.set(transaction.lastUsedConnection, sub);\n    }\n    return cb(null, buildParseHashResponse(parsedHash, appState, payload));\n  };\n\n  if (!parsedHash.id_token) {\n    return callback(null, null);\n  }\n  return this.validateToken(parsedHash.id_token, transactionNonce, function(\n    validationError,\n    payload\n  ) {\n    if (!validationError) {\n      return callback(null, payload);\n    }\n    if (validationError.error !== 'invalid_token') {\n      return callback(validationError);\n    }\n    // if it's an invalid_token error, decode the token\n    var decodedToken = new IdTokenVerifier().decode(parsedHash.id_token);\n    // if the alg is not HS256, return the raw error\n    if (decodedToken.header.alg !== 'HS256') {\n      return callback(validationError);\n    }\n    // if the alg is HS256, use the /userinfo endpoint to build the payload\n    return _this.client.userInfo(parsedHash.access_token, function(errUserInfo, profile) {\n      // if the /userinfo request fails, use the validationError instead\n      if (errUserInfo) {\n        return callback(validationError);\n      }\n      return callback(null, profile);\n    });\n  });\n};\n\nfunction buildParseHashResponse(qsParams, appState, token) {\n  return {\n    accessToken: qsParams.access_token || null,\n    idToken: qsParams.id_token || null,\n    idTokenPayload: token || null,\n    appState: appState || null,\n    refreshToken: qsParams.refresh_token || null,\n    state: qsParams.state || null,\n    expiresIn: qsParams.expires_in ? parseInt(qsParams.expires_in, 10) : null,\n    tokenType: qsParams.token_type || null,\n    scope: qsParams.scope || null\n  };\n}\n\n/**\n * @callback validateTokenCallback\n * @param {Error} [err] error returned by while validating the token\n * @param {Object} [payload] claims stored in the token\n */\n\n/**\n * Decodes the a JWT and verifies its nonce value\n *\n * @method validateToken\n * @private\n * @param {String} token\n * @param {String} nonce\n * @param {validateTokenCallback} cb\n */\nWebAuth.prototype.validateToken = function(token, nonce, cb) {\n  var verifier = new IdTokenVerifier({\n    issuer: this.baseOptions.token_issuer,\n    audience: this.baseOptions.clientID,\n    leeway: this.baseOptions.leeway || 0,\n    __disableExpirationCheck: this.baseOptions.__disableExpirationCheck\n  });\n\n  verifier.verify(token, nonce, function(err, payload) {\n    if (err) {\n      return cb(error.invalidJwt(err.message));\n    }\n\n    cb(null, payload);\n  });\n};\n\n/**\n * Executes a silent authentication transaction under the hood in order to fetch a new tokens for the current session.\n * This method requires that all Auth is performed with {@link authorize}\n * Watch out! If you're not using the hosted login page to do social logins, you have to use your own [social connection keys](https://manage.auth0.com/#/connections/social). If you use Auth0's dev keys, you'll always get `login_required` as an error when calling this method.\n *\n * @method renewAuth\n * @param {Object} options\n * @param {String} [options.domain] your Auth0 domain\n * @param {String} [options.clientID] your Auth0 client identifier obtained when creating the client in the Auth0 Dashboard\n * @param {String} [options.redirectUri] url that the Auth0 will redirect after Auth with the Authorization Response\n * @param {String} [options.responseType] type of the response used by OAuth 2.0 flow. It can be any space separated list of the values `code`, `token`, `id_token`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0}\n * @param {String} [options.responseMode] how the Auth response is encoded and redirected back to the client. Supported values are `query`, `fragment` and `form_post`. The `query` value is only supported when `responseType` is `code`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#ResponseModes}\n * @param {String} [options.state] value used to mitigate XSRF attacks. {@link https://auth0.com/docs/protocols/oauth2/oauth-state}\n * @param {String} [options.nonce] value used to mitigate replay attacks when using Implicit Grant. {@link https://auth0.com/docs/api-auth/tutorials/nonce}\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @param {String} [options.postMessageDataType] identifier data type to look for in postMessage event data, where events are initiated from silent callback urls, before accepting a message event is the event expected. A value of false means any postMessage event will trigger a callback.\n * @param {String} [options.postMessageOrigin] origin of redirectUri to expect postMessage response from.  Defaults to the origin of the receiving window. Only used if usePostMessage is truthy.\n * @param {String} [options.timeout] value in milliseconds used to timeout when the `/authorize` call is failing as part of the silent authentication with postmessage enabled due to a configuration.\n * @param {Boolean} [options.usePostMessage] use postMessage to comunicate between the silent callback and the SPA. When false the SDK will attempt to parse the url hash should ignore the url hash and no extra behaviour is needed\n * @see {@link https://auth0.com/docs/api/authentication#authorize-client}\n */\nWebAuth.prototype.renewAuth = function(options, cb) {\n  var handler;\n  var usePostMessage = !!options.usePostMessage;\n  var postMessageDataType = options.postMessageDataType || false;\n  var postMessageOrigin = options.postMessageOrigin || windowHelper.getWindow().origin;\n  var timeout = options.timeout;\n  var _this = this;\n\n  var params = objectHelper\n    .merge(this.baseOptions, [\n      'clientID',\n      'redirectUri',\n      'responseType',\n      'scope',\n      'audience',\n      '_csrf',\n      'state',\n      '_intstate',\n      'nonce'\n    ])\n    .with(options);\n\n  params.responseType = params.responseType || 'token';\n  params.responseMode = params.responseMode || 'fragment';\n  params = this.transactionManager.process(params);\n\n  assert.check(params, { type: 'object', message: 'options parameter is not valid' });\n  assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n  params.prompt = 'none';\n\n  params = objectHelper.blacklist(params, [\n    'usePostMessage',\n    'tenant',\n    'postMessageDataType',\n    'postMessageOrigin'\n  ]);\n\n  handler = SilentAuthenticationHandler.create({\n    authenticationUrl: this.client.buildAuthorizeUrl(params),\n    postMessageDataType: postMessageDataType,\n    postMessageOrigin: postMessageOrigin,\n    timeout: timeout\n  });\n\n  handler.login(usePostMessage, function(err, hash) {\n    if (typeof hash === 'object') {\n      // hash was already parsed, so we just return it.\n      // it's here to be backwards compatible and should be removed in the next major version.\n      return cb(err, hash);\n    }\n    _this.parseHash({ hash: hash }, cb);\n  });\n};\n\n/**\n * Renews an existing session on Auth0's servers using `response_mode=web_message`\n *\n * @method checkSession\n * @param {Object} options\n * @param {String} [options.domain] your Auth0 domain\n * @param {String} [options.clientID] your Auth0 client identifier obtained when creating the client in the Auth0 Dashboard\n * @param {String} [options.responseType] type of the response used by OAuth 2.0 flow. It can be any space separated list of the values `code`, `token`, `id_token`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0}\n * @param {String} [options.state] value used to mitigate XSRF attacks. {@link https://auth0.com/docs/protocols/oauth2/oauth-state}\n * @param {String} [options.nonce] value used to mitigate replay attacks when using Implicit Grant. {@link https://auth0.com/docs/api-auth/tutorials/nonce}\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @param {String} [options.timeout] value in milliseconds used to timeout when the `/authorize` call is failing as part of the silent authentication with postmessage enabled due to a configuration.\n */\nWebAuth.prototype.checkSession = function(options, cb) {\n  var params = objectHelper\n    .merge(this.baseOptions, [\n      'clientID',\n      'responseType',\n      'scope',\n      'audience',\n      '_csrf',\n      'state',\n      '_intstate',\n      'nonce'\n    ])\n    .with(options);\n\n  if (params.responseType === 'code') {\n    return cb(new Error(\"responseType can't be `code`\"));\n  }\n\n  if (!options.nonce) {\n    params = this.transactionManager.process(params);\n  }\n\n  assert.check(params, { type: 'object', message: 'options parameter is not valid' });\n  assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n  params = objectHelper.blacklist(params, ['usePostMessage', 'tenant', 'postMessageDataType']);\n  this.webMessageHandler.run(params, cb);\n};\n\n/**\n * Request an email with instruction to change a user's password\n *\n * @method changePassword\n * @param {Object} options\n * @param {String} options.email address where the user will recieve the change password email. It should match the user's email in Auth0\n * @param {String} options.connection name of the connection where the user was created\n * @param {changePasswordCallback} cb\n * @see   {@link https://auth0.com/docs/api/authentication#change-password}\n */\nWebAuth.prototype.changePassword = function(options, cb) {\n  return this.client.dbConnection.changePassword(options, cb);\n};\n\n/**\n * Starts a passwordless authentication transaction.\n *\n * @method passwordlessStart\n * @param {Object} options\n * @param {String} options.send what will be sent via email which could be `link` or `code`. For SMS `code` is the only one valud\n * @param {String} [options.phoneNumber] phone number where to send the `code`. This parameter is mutually exclusive with `email`\n * @param {String} [options.email] email where to send the `code` or `link`. This parameter is mutually exclusive with `phoneNumber`\n * @param {String} options.connection name of the passwordless connection\n * @param {Object} [options.authParams] additional Auth parameters when using `link`\n * @param {Function} cb\n * @see   {@link https://auth0.com/docs/api/authentication#passwordless}\n */\nWebAuth.prototype.passwordlessStart = function(options, cb) {\n  var authParams = objectHelper\n    .merge(this.baseOptions, [\n      'responseType',\n      'responseMode',\n      'redirectUri',\n      'scope',\n      'audience',\n      '_csrf',\n      'state',\n      '_intstate',\n      'nonce'\n    ])\n    .with(options.authParams);\n\n  options.authParams = this.transactionManager.process(authParams);\n  return this.client.passwordless.start(options, cb);\n};\n\n/**\n * Creates a new user in a Auth0 Database connection\n *\n * @method signup\n * @param {Object} options\n * @param {String} options.email user email address\n * @param {String} options.password user password\n * @param {String} options.connection name of the connection where the user will be created\n * @param {signUpCallback} cb\n * @see   {@link https://auth0.com/docs/api/authentication#signup}\n */\nWebAuth.prototype.signup = function(options, cb) {\n  return this.client.dbConnection.signup(options, cb);\n};\n\n/**\n * Redirects to the hosted login page (`/authorize`) in order to start a new authN/authZ transaction.\n * After that, you'll have to use the {@link parseHash} function at the specified `redirectUri`.\n *\n * @method authorize\n * @param {Object} options\n * @param {String} [options.domain] your Auth0 domain\n * @param {String} [options.clientID] your Auth0 client identifier obtained when creating the client in the Auth0 Dashboard\n * @param {String} options.redirectUri url that the Auth0 will redirect after Auth with the Authorization Response\n * @param {String} options.responseType type of the response used by OAuth 2.0 flow. It can be any space separated list of the values `code`, `token`, `id_token`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0}\n * @param {String} [options.responseMode] how the Auth response is encoded and redirected back to the client. Supported values are `query`, `fragment` and `form_post`. The `query` value is only supported when `responseType` is `code`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#ResponseModes}\n * @param {String} [options.state] value used to mitigate XSRF attacks. {@link https://auth0.com/docs/protocols/oauth2/oauth-state}\n * @param {String} [options.nonce] value used to mitigate replay attacks when using Implicit Grant. {@link https://auth0.com/docs/api-auth/tutorials/nonce}\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @see {@link https://auth0.com/docs/api/authentication#authorize-client}\n */\nWebAuth.prototype.authorize = function(options) {\n  var params = objectHelper\n    .merge(this.baseOptions, [\n      'clientID',\n      'responseType',\n      'responseMode',\n      'redirectUri',\n      'scope',\n      'audience',\n      '_csrf',\n      'state',\n      '_intstate',\n      'nonce'\n    ])\n    .with(options);\n\n  assert.check(\n    params,\n    { type: 'object', message: 'options parameter is not valid' },\n    {\n      responseType: { type: 'string', message: 'responseType option is required' }\n    }\n  );\n\n  params = this.transactionManager.process(params);\n  params.scope = params.scope || 'openid profile email';\n\n  windowHelper.redirect(this.client.buildAuthorizeUrl(params));\n};\n\n/**\n * Signs up a new user, automatically logs the user in after the signup and returns the user token.\n * The login will be done using /oauth/token with password-realm grant type.\n *\n * @method signupAndAuthorize\n * @param {Object} options\n * @param {String} options.email user email address\n * @param {String} options.password user password\n * @param {String} options.connection name of the connection where the user will be created\n * @param {tokenCallback} cb\n * @see   {@link https://auth0.com/docs/api/authentication#signup}\n * @see   {@link https://auth0.com/docs/api-auth/grant/password}\n */\nWebAuth.prototype.signupAndAuthorize = function(options, cb) {\n  var _this = this;\n\n  return this.client.dbConnection.signup(\n    objectHelper.blacklist(options, ['popupHandler']),\n    function(err) {\n      if (err) {\n        return cb(err);\n      }\n      options.realm = options.connection;\n      if (!options.username) {\n        options.username = options.email;\n      }\n      _this.client.login(options, cb);\n    }\n  );\n};\n\n/**\n * @callback crossOriginLoginCallback\n * @param {Error} [err] Authentication error returned by Auth0 with the reason why the request failed\n */\n\n/**\n * Logs in the user with username and password using the cross origin authentication (/co/authenticate) flow. You can use either `username` or `email` to identify the user, but `username` will take precedence over `email`.\n * Some browsers might not be able to successfully authenticate if 3rd party cookies are disabled in your browser. [See here for more information.]{@link https://auth0.com/docs/cross-origin-authentication}.\n * After the /co/authenticate call, you'll have to use the {@link parseHash} function at the `redirectUri` specified in the constructor.\n *\n * @method login\n * @param {Object} options options used in the {@link authorize} call after the login_ticket is acquired\n * @param {String} [options.username] Username (mutually exclusive with email)\n * @param {String} [options.email] Email (mutually exclusive with username)\n * @param {String} options.password Password\n * @param {String} [options.realm] Realm used to authenticate the user, it can be a realm name or a database connection name\n * @param {crossOriginLoginCallback} cb Callback function called only when an authentication error, like invalid username or password, occurs. For other types of errors, there will be a redirect to the `redirectUri`.\n */\nWebAuth.prototype.login = function(options, cb) {\n  this.crossOriginAuthentication.login(options, cb);\n};\n\n/**\n * Logs in the user by verifying the verification code (OTP) using the cross origin authentication (/co/authenticate) flow. You can use either `phoneNumber` or `email` to identify the user.\n * This only works when 3rd party cookies are enabled in the browser. After the /co/authenticate call, you'll have to use the {@link parseHash} function at the `redirectUri` specified in the constructor.\n *\n * @method login\n * @param {Object} options options used in the {@link authorize} call after the login_ticket is acquired\n * @param {String} [options.phoneNumber] Phone Number (mutually exclusive with email)\n * @param {String} [options.email] Email (mutually exclusive with username)\n * @param {String} options.verificationCode Verification Code (OTP)\n * @param {String} options.connection Passwordless connection to use. It can either be 'sms' or 'email'.\n * @param {crossOriginLoginCallback} cb Callback function called only when an authentication error, like invalid username or password, occurs. For other types of errors, there will be a redirect to the `redirectUri`.\n */\nWebAuth.prototype.passwordlessLogin = function(options, cb) {\n  var loginOptions = objectHelper.extend(\n    {\n      credentialType: 'http://auth0.com/oauth/grant-type/passwordless/otp',\n      realm: options.connection,\n      username: options.email || options.phoneNumber,\n      otp: options.verificationCode\n    },\n    objectHelper.blacklist(options, ['connection', 'email', 'phoneNumber', 'verificationCode'])\n  );\n  this.crossOriginAuthentication.login(loginOptions, cb);\n};\n\n/**\n * Runs the callback code for the cross origin authentication call. This method is meant to be called by the cross origin authentication callback url.\n *\n * @method crossOriginAuthenticationCallback\n * @deprecated Use {@link crossOriginVerification} instead.\n */\nWebAuth.prototype.crossOriginAuthenticationCallback = function() {\n  this.crossOriginVerification();\n};\n\n/**\n * Runs the callback code for the cross origin authentication call. This method is meant to be called by the cross origin authentication callback url.\n *\n * @method crossOriginVerification\n */\nWebAuth.prototype.crossOriginVerification = function() {\n  this.crossOriginAuthentication.callback();\n};\n\n/**\n * Redirects to the auth0 logout endpoint\n *\n * If you want to navigate the user to a specific URL after the logout, set that URL at the returnTo parameter. The URL should be included in any the appropriate Allowed Logout URLs list:\n *\n * - If the client_id parameter is included, the returnTo URL must be listed in the Allowed Logout URLs set at the client level (see Setting Allowed Logout URLs at the App Level).\n * - If the client_id parameter is NOT included, the returnTo URL must be listed in the Allowed Logout URLs set at the account level (see Setting Allowed Logout URLs at the Account Level).\n *\n * @method logout\n * @param {Object} options\n * @param {String} [options.clientID] identifier of your client\n * @param {String} [options.returnTo] URL to be redirected after the logout\n * @param {Boolean} [options.federated] tells Auth0 if it should logout the user also from the IdP.\n * @see   {@link https://auth0.com/docs/api/authentication#logout}\n */\nWebAuth.prototype.logout = function(options) {\n  windowHelper.redirect(this.client.buildLogoutUrl(options));\n};\n\n/**\n * Verifies the passwordless TOTP and redirects to finish the passwordless transaction\n *\n * @method passwordlessVerify\n * @param {Object} options\n * @param {String} options.type `sms` or `email`\n * @param {String} options.phoneNumber only if type = sms\n * @param {String} options.email only if type = email\n * @param {String} options.connection the connection name\n * @param {String} options.verificationCode the TOTP code\n * @param {Function} cb\n */\nWebAuth.prototype.passwordlessVerify = function(options, cb) {\n  var _this = this;\n  var params = objectHelper\n    .merge(this.baseOptions, [\n      'clientID',\n      'responseType',\n      'responseMode',\n      'redirectUri',\n      'scope',\n      'audience',\n      '_csrf',\n      'state',\n      '_intstate',\n      'nonce'\n    ])\n    .with(options);\n\n  assert.check(\n    params,\n    { type: 'object', message: 'options parameter is not valid' },\n    {\n      responseType: { type: 'string', message: 'responseType option is required' }\n    }\n  );\n\n  params = this.transactionManager.process(params);\n  return this.client.passwordless.verify(params, function(err) {\n    if (err) {\n      return cb(err);\n    }\n    return windowHelper.redirect(_this.client.passwordless.buildVerifyUrl(params));\n  });\n};\n\nmodule.exports = WebAuth;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/auth0-js/src/web-auth/index.js\n// module id = 584\n// module chunks = 0","var RSAVerifier = require('./helpers/rsa-verifier');\nvar base64 = require('./helpers/base64');\nvar jwks = require('./helpers/jwks');\nvar error = require('./helpers/error');\nvar DummyCache = require('./helpers/dummy-cache');\nvar supportedAlgs = ['RS256'];\n\n/**\n * Creates a new id_token verifier\n * @constructor\n * @param {Object} parameters\n * @param {String} parameters.issuer name of the issuer of the token\n * that should match the `iss` claim in the id_token\n * @param {String} parameters.audience identifies the recipients that the JWT is intended for\n * and should match the `aud` claim\n * @param {Object} [parameters.jwksCache] cache for JSON Web Token Keys. By default it has no cache\n * @param {String} [parameters.expectedAlg='RS256'] algorithm in which the id_token was signed\n * and will be used to validate\n * @param {number} [parameters.leeway=0] number of seconds that the clock can be out of sync\n * while validating expiration of the id_token\n */\nfunction IdTokenVerifier(parameters) {\n  var options = parameters || {};\n\n  this.jwksCache = options.jwksCache || new DummyCache();\n  this.expectedAlg = options.expectedAlg || 'RS256';\n  this.issuer = options.issuer;\n  this.audience = options.audience;\n  this.leeway = options.leeway || 0;\n  this.__disableExpirationCheck = options.__disableExpirationCheck || false;\n\n  if (this.leeway < 0 || this.leeway > 60) {\n    throw new error.ConfigurationError('The leeway should be positive and lower than a minute.');\n  }\n\n  if (supportedAlgs.indexOf(this.expectedAlg) === -1) {\n    throw new error.ConfigurationError('Algorithm ' + this.expectedAlg +\n      ' is not supported. (Expected algs: [' + supportedAlgs.join(',') + '])');\n  }\n}\n\n/**\n * @callback verifyCallback\n * @param {Error} [err] error returned if the verify cannot be performed\n * @param {boolean} [status] if the token is valid or not\n */\n\n/**\n * Verifies an id_token\n *\n * It will validate:\n * - signature according to the algorithm configured in the verifier.\n * - if nonce is present and matches the one provided\n * - if `iss` and `aud` claims matches the configured issuer and audience\n * - if token is not expired and valid (if the `nbf` claim is in the past)\n *\n * @method verify\n * @param {String} token id_token to verify\n * @param {String} [nonce] nonce value that should match the one in the id_token claims\n * @param {verifyCallback} cb callback used to notify the results of the validation\n */\nIdTokenVerifier.prototype.verify = function (token, nonce, cb) {\n  var jwt = this.decode(token);\n\n  if (jwt instanceof Error) {\n    return cb(jwt, false);\n  }\n\n  /* eslint-disable vars-on-top */\n  var headAndPayload = jwt.encoded.header + '.' + jwt.encoded.payload;\n  var signature = base64.decodeToHEX(jwt.encoded.signature);\n\n  var alg = jwt.header.alg;\n  var kid = jwt.header.kid;\n\n  var aud = jwt.payload.aud;\n  var iss = jwt.payload.iss;\n  var exp = jwt.payload.exp;\n  var nbf = jwt.payload.nbf;\n  var tnonce = jwt.payload.nonce || null;\n  /* eslint-enable vars-on-top */\n\n  if (this.issuer !== iss) {\n    return cb(new error.TokenValidationError('Issuer ' + iss + ' is not valid.'), false);\n  }\n\n  if (this.audience !== aud) {\n    return cb(new error.TokenValidationError('Audience ' + aud + ' is not valid.'), false);\n  }\n\n  if (this.expectedAlg !== alg) {\n    return cb(new error.TokenValidationError('Algorithm ' + alg +\n      ' is not supported. (Expected algs: [' + supportedAlgs.join(',') + '])'), false);\n  }\n\n  if (tnonce !== nonce) {\n    return cb(new error.TokenValidationError('Nonce does not match.'), false);\n  }\n\n  var expirationError = this.verifyExpAndNbf(exp, nbf); // eslint-disable-line vars-on-top\n\n  if (expirationError) {\n    return cb(expirationError, false);\n  }\n\n  return this.getRsaVerifier(iss, kid, function (err, rsaVerifier) {\n    if (err) {\n      return cb(err);\n    }\n    if (rsaVerifier.verify(headAndPayload, signature)) {\n      return cb(null, jwt.payload);\n    }\n    return cb(new error.TokenValidationError('Invalid signature.'));\n  });\n};\n\n/**\n * Verifies that the `exp` and `nbf` claims are valid in the current moment.\n *\n * @method verifyExpAndNbf\n * @param {String} exp value of `exp` claim\n * @param {String} nbf value of `nbf` claim\n * @return {boolean} if token is valid according to `exp` and `nbf`\n */\nIdTokenVerifier.prototype.verifyExpAndNbf = function (exp, nbf) {\n  var now = new Date();\n  var expDate = new Date(0);\n  var nbfDate = new Date(0);\n\n  if (this.__disableExpirationCheck) {\n    return null;\n  }\n\n  expDate.setUTCSeconds(exp + this.leeway);\n\n  if (now > expDate) {\n    return new error.TokenValidationError('Expired token.');\n  }\n\n  if (typeof nbf === 'undefined') {\n    return null;\n  }\n  nbfDate.setUTCSeconds(nbf - this.leeway);\n  if (now < nbfDate) {\n    return new error.TokenValidationError('The token is not valid until later in the future. ' +\n      'Please check your computed clock.');\n  }\n\n  return null;\n};\n\n/**\n * Verifies that the `exp` and `iat` claims are valid in the current moment.\n *\n * @method verifyExpAndIat\n * @param {String} exp value of `exp` claim\n * @param {String} iat value of `iat` claim\n * @return {boolean} if token is valid according to `exp` and `iat`\n */\nIdTokenVerifier.prototype.verifyExpAndIat = function (exp, iat) {\n  var now = new Date();\n  var expDate = new Date(0);\n  var iatDate = new Date(0);\n\n  if (this.__disableExpirationCheck) {\n    return null;\n  }\n\n  expDate.setUTCSeconds(exp + this.leeway);\n\n  if (now > expDate) {\n    return new error.TokenValidationError('Expired token.');\n  }\n\n  iatDate.setUTCSeconds(iat - this.leeway);\n\n  if (now < iatDate) {\n    return new error.TokenValidationError('The token was issued in the future. ' +\n      'Please check your computed clock.');\n  }\n  return null;\n};\n\nIdTokenVerifier.prototype.getRsaVerifier = function (iss, kid, cb) {\n  var _this = this;\n  var cachekey = iss + kid;\n\n  if (!this.jwksCache.has(cachekey)) {\n    jwks.getJWKS({\n      iss: iss,\n      kid: kid\n    }, function (err, keyInfo) {\n      if (err) {\n        cb(err);\n      }\n      _this.jwksCache.set(cachekey, keyInfo);\n      cb(null, new RSAVerifier(keyInfo.modulus, keyInfo.exp));\n    });\n  } else {\n    var keyInfo = this.jwksCache.get(cachekey); // eslint-disable-line vars-on-top\n    cb(null, new RSAVerifier(keyInfo.modulus, keyInfo.exp));\n  }\n};\n\n\n/**\n * @typedef DecodedToken\n * @type {Object}\n * @property {Object} header - content of the JWT header.\n * @property {Object} payload - token claims.\n * @property {Object} encoded - encoded parts of the token.\n */\n\n/**\n * Decodes a well formed JWT without any verification\n *\n * @method decode\n * @param {String} token decodes the token\n * @return {DecodedToken} if token is valid according to `exp` and `nbf`\n */\nIdTokenVerifier.prototype.decode = function (token) {\n  var parts = token.split('.');\n  var header;\n  var payload;\n\n  if (parts.length !== 3) {\n    return new error.TokenValidationError('Cannot decode a malformed JWT');\n  }\n\n  try {\n    header = JSON.parse(base64.decodeToString(parts[0]));\n    payload = JSON.parse(base64.decodeToString(parts[1]));\n  } catch (e) {\n    return new error.TokenValidationError('Token header or payload is not valid JSON');\n  }\n\n  return {\n    header: header,\n    payload: payload,\n    encoded: {\n      header: parts[0],\n      payload: parts[1],\n      signature: parts[2]\n    }\n  };\n};\n\nmodule.exports = IdTokenVerifier;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/idtoken-verifier/src/index.js\n// module id = 585\n// module chunks = 0","/*\nBased on the work of Tom Wu\nhttp://www-cs-students.stanford.edu/~tjw/jsbn/\nhttp://www-cs-students.stanford.edu/~tjw/jsbn/LICENSE\n*/\n\nvar BigInteger = require('jsbn').BigInteger;\nvar SHA256 = require('crypto-js/sha256');\n\nvar DigestInfoHead = {\n  sha1: '3021300906052b0e03021a05000414',\n  sha224: '302d300d06096086480165030402040500041c',\n  sha256: '3031300d060960864801650304020105000420',\n  sha384: '3041300d060960864801650304020205000430',\n  sha512: '3051300d060960864801650304020305000440',\n  md2: '3020300c06082a864886f70d020205000410',\n  md5: '3020300c06082a864886f70d020505000410',\n  ripemd160: '3021300906052b2403020105000414'\n};\n\nvar DigestAlgs = {\n  sha256: SHA256\n};\n\nfunction RSAVerifier(modulus, exp) {\n  this.n = null;\n  this.e = 0;\n\n  if (modulus != null && exp != null && modulus.length > 0 && exp.length > 0) {\n    this.n = new BigInteger(modulus, 16);\n    this.e = parseInt(exp, 16);\n  } else {\n    throw new Error('Invalid key data');\n  }\n}\n\nfunction getAlgorithmFromDigest(hDigestInfo) {\n  for (var algName in DigestInfoHead) {\n    var head = DigestInfoHead[algName];\n    var len = head.length;\n\n    if (hDigestInfo.substring(0, len) === head) {\n      return {\n        alg: algName,\n        hash: hDigestInfo.substring(len)\n      };\n    }\n  }\n  return [];\n}\n\n\nRSAVerifier.prototype.verify = function (msg, encsig) {\n  encsig = encsig.replace(/[^0-9a-f]|[\\s\\n]]/ig, '');\n\n  var sig = new BigInteger(encsig, 16);\n  if (sig.bitLength() > this.n.bitLength()) {\n    throw new Error('Signature does not match with the key modulus.');\n  }\n\n  var decryptedSig = sig.modPowInt(this.e, this.n);\n  var digest = decryptedSig.toString(16).replace(/^1f+00/, '');\n\n  var digestInfo = getAlgorithmFromDigest(digest);\n  if (digestInfo.length === 0) {\n    return false;\n  }\n\n  if (!DigestAlgs.hasOwnProperty(digestInfo.alg)) {\n    throw new Error('Hashing algorithm is not supported.');\n  }\n\n  var msgHash = DigestAlgs[digestInfo.alg](msg).toString();\n  return (digestInfo.hash === msgHash);\n};\n\nmodule.exports = RSAVerifier;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/idtoken-verifier/src/helpers/rsa-verifier.js\n// module id = 586\n// module chunks = 0","(function(){\n\n    // Copyright (c) 2005  Tom Wu\n    // All Rights Reserved.\n    // See \"LICENSE\" for details.\n\n    // Basic JavaScript BN library - subset useful for RSA encryption.\n\n    // Bits per digit\n    var dbits;\n\n    // JavaScript engine analysis\n    var canary = 0xdeadbeefcafe;\n    var j_lm = ((canary&0xffffff)==0xefcafe);\n\n    // (public) Constructor\n    function BigInteger(a,b,c) {\n      if(a != null)\n        if(\"number\" == typeof a) this.fromNumber(a,b,c);\n        else if(b == null && \"string\" != typeof a) this.fromString(a,256);\n        else this.fromString(a,b);\n    }\n\n    // return new, unset BigInteger\n    function nbi() { return new BigInteger(null); }\n\n    // am: Compute w_j += (x*this_i), propagate carries,\n    // c is initial carry, returns final carry.\n    // c < 3*dvalue, x < 2*dvalue, this_i < dvalue\n    // We need to select the fastest one that works in this environment.\n\n    // am1: use a single mult and divide to get the high bits,\n    // max digit bits should be 26 because\n    // max internal value = 2*dvalue^2-2*dvalue (< 2^53)\n    function am1(i,x,w,j,c,n) {\n      while(--n >= 0) {\n        var v = x*this[i++]+w[j]+c;\n        c = Math.floor(v/0x4000000);\n        w[j++] = v&0x3ffffff;\n      }\n      return c;\n    }\n    // am2 avoids a big mult-and-extract completely.\n    // Max digit bits should be <= 30 because we do bitwise ops\n    // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)\n    function am2(i,x,w,j,c,n) {\n      var xl = x&0x7fff, xh = x>>15;\n      while(--n >= 0) {\n        var l = this[i]&0x7fff;\n        var h = this[i++]>>15;\n        var m = xh*l+h*xl;\n        l = xl*l+((m&0x7fff)<<15)+w[j]+(c&0x3fffffff);\n        c = (l>>>30)+(m>>>15)+xh*h+(c>>>30);\n        w[j++] = l&0x3fffffff;\n      }\n      return c;\n    }\n    // Alternately, set max digit bits to 28 since some\n    // browsers slow down when dealing with 32-bit numbers.\n    function am3(i,x,w,j,c,n) {\n      var xl = x&0x3fff, xh = x>>14;\n      while(--n >= 0) {\n        var l = this[i]&0x3fff;\n        var h = this[i++]>>14;\n        var m = xh*l+h*xl;\n        l = xl*l+((m&0x3fff)<<14)+w[j]+c;\n        c = (l>>28)+(m>>14)+xh*h;\n        w[j++] = l&0xfffffff;\n      }\n      return c;\n    }\n    var inBrowser = typeof navigator !== \"undefined\";\n    if(inBrowser && j_lm && (navigator.appName == \"Microsoft Internet Explorer\")) {\n      BigInteger.prototype.am = am2;\n      dbits = 30;\n    }\n    else if(inBrowser && j_lm && (navigator.appName != \"Netscape\")) {\n      BigInteger.prototype.am = am1;\n      dbits = 26;\n    }\n    else { // Mozilla/Netscape seems to prefer am3\n      BigInteger.prototype.am = am3;\n      dbits = 28;\n    }\n\n    BigInteger.prototype.DB = dbits;\n    BigInteger.prototype.DM = ((1<<dbits)-1);\n    BigInteger.prototype.DV = (1<<dbits);\n\n    var BI_FP = 52;\n    BigInteger.prototype.FV = Math.pow(2,BI_FP);\n    BigInteger.prototype.F1 = BI_FP-dbits;\n    BigInteger.prototype.F2 = 2*dbits-BI_FP;\n\n    // Digit conversions\n    var BI_RM = \"0123456789abcdefghijklmnopqrstuvwxyz\";\n    var BI_RC = new Array();\n    var rr,vv;\n    rr = \"0\".charCodeAt(0);\n    for(vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv;\n    rr = \"a\".charCodeAt(0);\n    for(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;\n    rr = \"A\".charCodeAt(0);\n    for(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;\n\n    function int2char(n) { return BI_RM.charAt(n); }\n    function intAt(s,i) {\n      var c = BI_RC[s.charCodeAt(i)];\n      return (c==null)?-1:c;\n    }\n\n    // (protected) copy this to r\n    function bnpCopyTo(r) {\n      for(var i = this.t-1; i >= 0; --i) r[i] = this[i];\n      r.t = this.t;\n      r.s = this.s;\n    }\n\n    // (protected) set from integer value x, -DV <= x < DV\n    function bnpFromInt(x) {\n      this.t = 1;\n      this.s = (x<0)?-1:0;\n      if(x > 0) this[0] = x;\n      else if(x < -1) this[0] = x+this.DV;\n      else this.t = 0;\n    }\n\n    // return bigint initialized to value\n    function nbv(i) { var r = nbi(); r.fromInt(i); return r; }\n\n    // (protected) set from string and radix\n    function bnpFromString(s,b) {\n      var k;\n      if(b == 16) k = 4;\n      else if(b == 8) k = 3;\n      else if(b == 256) k = 8; // byte array\n      else if(b == 2) k = 1;\n      else if(b == 32) k = 5;\n      else if(b == 4) k = 2;\n      else { this.fromRadix(s,b); return; }\n      this.t = 0;\n      this.s = 0;\n      var i = s.length, mi = false, sh = 0;\n      while(--i >= 0) {\n        var x = (k==8)?s[i]&0xff:intAt(s,i);\n        if(x < 0) {\n          if(s.charAt(i) == \"-\") mi = true;\n          continue;\n        }\n        mi = false;\n        if(sh == 0)\n          this[this.t++] = x;\n        else if(sh+k > this.DB) {\n          this[this.t-1] |= (x&((1<<(this.DB-sh))-1))<<sh;\n          this[this.t++] = (x>>(this.DB-sh));\n        }\n        else\n          this[this.t-1] |= x<<sh;\n        sh += k;\n        if(sh >= this.DB) sh -= this.DB;\n      }\n      if(k == 8 && (s[0]&0x80) != 0) {\n        this.s = -1;\n        if(sh > 0) this[this.t-1] |= ((1<<(this.DB-sh))-1)<<sh;\n      }\n      this.clamp();\n      if(mi) BigInteger.ZERO.subTo(this,this);\n    }\n\n    // (protected) clamp off excess high words\n    function bnpClamp() {\n      var c = this.s&this.DM;\n      while(this.t > 0 && this[this.t-1] == c) --this.t;\n    }\n\n    // (public) return string representation in given radix\n    function bnToString(b) {\n      if(this.s < 0) return \"-\"+this.negate().toString(b);\n      var k;\n      if(b == 16) k = 4;\n      else if(b == 8) k = 3;\n      else if(b == 2) k = 1;\n      else if(b == 32) k = 5;\n      else if(b == 4) k = 2;\n      else return this.toRadix(b);\n      var km = (1<<k)-1, d, m = false, r = \"\", i = this.t;\n      var p = this.DB-(i*this.DB)%k;\n      if(i-- > 0) {\n        if(p < this.DB && (d = this[i]>>p) > 0) { m = true; r = int2char(d); }\n        while(i >= 0) {\n          if(p < k) {\n            d = (this[i]&((1<<p)-1))<<(k-p);\n            d |= this[--i]>>(p+=this.DB-k);\n          }\n          else {\n            d = (this[i]>>(p-=k))&km;\n            if(p <= 0) { p += this.DB; --i; }\n          }\n          if(d > 0) m = true;\n          if(m) r += int2char(d);\n        }\n      }\n      return m?r:\"0\";\n    }\n\n    // (public) -this\n    function bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; }\n\n    // (public) |this|\n    function bnAbs() { return (this.s<0)?this.negate():this; }\n\n    // (public) return + if this > a, - if this < a, 0 if equal\n    function bnCompareTo(a) {\n      var r = this.s-a.s;\n      if(r != 0) return r;\n      var i = this.t;\n      r = i-a.t;\n      if(r != 0) return (this.s<0)?-r:r;\n      while(--i >= 0) if((r=this[i]-a[i]) != 0) return r;\n      return 0;\n    }\n\n    // returns bit length of the integer x\n    function nbits(x) {\n      var r = 1, t;\n      if((t=x>>>16) != 0) { x = t; r += 16; }\n      if((t=x>>8) != 0) { x = t; r += 8; }\n      if((t=x>>4) != 0) { x = t; r += 4; }\n      if((t=x>>2) != 0) { x = t; r += 2; }\n      if((t=x>>1) != 0) { x = t; r += 1; }\n      return r;\n    }\n\n    // (public) return the number of bits in \"this\"\n    function bnBitLength() {\n      if(this.t <= 0) return 0;\n      return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM));\n    }\n\n    // (protected) r = this << n*DB\n    function bnpDLShiftTo(n,r) {\n      var i;\n      for(i = this.t-1; i >= 0; --i) r[i+n] = this[i];\n      for(i = n-1; i >= 0; --i) r[i] = 0;\n      r.t = this.t+n;\n      r.s = this.s;\n    }\n\n    // (protected) r = this >> n*DB\n    function bnpDRShiftTo(n,r) {\n      for(var i = n; i < this.t; ++i) r[i-n] = this[i];\n      r.t = Math.max(this.t-n,0);\n      r.s = this.s;\n    }\n\n    // (protected) r = this << n\n    function bnpLShiftTo(n,r) {\n      var bs = n%this.DB;\n      var cbs = this.DB-bs;\n      var bm = (1<<cbs)-1;\n      var ds = Math.floor(n/this.DB), c = (this.s<<bs)&this.DM, i;\n      for(i = this.t-1; i >= 0; --i) {\n        r[i+ds+1] = (this[i]>>cbs)|c;\n        c = (this[i]&bm)<<bs;\n      }\n      for(i = ds-1; i >= 0; --i) r[i] = 0;\n      r[ds] = c;\n      r.t = this.t+ds+1;\n      r.s = this.s;\n      r.clamp();\n    }\n\n    // (protected) r = this >> n\n    function bnpRShiftTo(n,r) {\n      r.s = this.s;\n      var ds = Math.floor(n/this.DB);\n      if(ds >= this.t) { r.t = 0; return; }\n      var bs = n%this.DB;\n      var cbs = this.DB-bs;\n      var bm = (1<<bs)-1;\n      r[0] = this[ds]>>bs;\n      for(var i = ds+1; i < this.t; ++i) {\n        r[i-ds-1] |= (this[i]&bm)<<cbs;\n        r[i-ds] = this[i]>>bs;\n      }\n      if(bs > 0) r[this.t-ds-1] |= (this.s&bm)<<cbs;\n      r.t = this.t-ds;\n      r.clamp();\n    }\n\n    // (protected) r = this - a\n    function bnpSubTo(a,r) {\n      var i = 0, c = 0, m = Math.min(a.t,this.t);\n      while(i < m) {\n        c += this[i]-a[i];\n        r[i++] = c&this.DM;\n        c >>= this.DB;\n      }\n      if(a.t < this.t) {\n        c -= a.s;\n        while(i < this.t) {\n          c += this[i];\n          r[i++] = c&this.DM;\n          c >>= this.DB;\n        }\n        c += this.s;\n      }\n      else {\n        c += this.s;\n        while(i < a.t) {\n          c -= a[i];\n          r[i++] = c&this.DM;\n          c >>= this.DB;\n        }\n        c -= a.s;\n      }\n      r.s = (c<0)?-1:0;\n      if(c < -1) r[i++] = this.DV+c;\n      else if(c > 0) r[i++] = c;\n      r.t = i;\n      r.clamp();\n    }\n\n    // (protected) r = this * a, r != this,a (HAC 14.12)\n    // \"this\" should be the larger one if appropriate.\n    function bnpMultiplyTo(a,r) {\n      var x = this.abs(), y = a.abs();\n      var i = x.t;\n      r.t = i+y.t;\n      while(--i >= 0) r[i] = 0;\n      for(i = 0; i < y.t; ++i) r[i+x.t] = x.am(0,y[i],r,i,0,x.t);\n      r.s = 0;\n      r.clamp();\n      if(this.s != a.s) BigInteger.ZERO.subTo(r,r);\n    }\n\n    // (protected) r = this^2, r != this (HAC 14.16)\n    function bnpSquareTo(r) {\n      var x = this.abs();\n      var i = r.t = 2*x.t;\n      while(--i >= 0) r[i] = 0;\n      for(i = 0; i < x.t-1; ++i) {\n        var c = x.am(i,x[i],r,2*i,0,1);\n        if((r[i+x.t]+=x.am(i+1,2*x[i],r,2*i+1,c,x.t-i-1)) >= x.DV) {\n          r[i+x.t] -= x.DV;\n          r[i+x.t+1] = 1;\n        }\n      }\n      if(r.t > 0) r[r.t-1] += x.am(i,x[i],r,2*i,0,1);\n      r.s = 0;\n      r.clamp();\n    }\n\n    // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)\n    // r != q, this != m.  q or r may be null.\n    function bnpDivRemTo(m,q,r) {\n      var pm = m.abs();\n      if(pm.t <= 0) return;\n      var pt = this.abs();\n      if(pt.t < pm.t) {\n        if(q != null) q.fromInt(0);\n        if(r != null) this.copyTo(r);\n        return;\n      }\n      if(r == null) r = nbi();\n      var y = nbi(), ts = this.s, ms = m.s;\n      var nsh = this.DB-nbits(pm[pm.t-1]);   // normalize modulus\n      if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); }\n      else { pm.copyTo(y); pt.copyTo(r); }\n      var ys = y.t;\n      var y0 = y[ys-1];\n      if(y0 == 0) return;\n      var yt = y0*(1<<this.F1)+((ys>1)?y[ys-2]>>this.F2:0);\n      var d1 = this.FV/yt, d2 = (1<<this.F1)/yt, e = 1<<this.F2;\n      var i = r.t, j = i-ys, t = (q==null)?nbi():q;\n      y.dlShiftTo(j,t);\n      if(r.compareTo(t) >= 0) {\n        r[r.t++] = 1;\n        r.subTo(t,r);\n      }\n      BigInteger.ONE.dlShiftTo(ys,t);\n      t.subTo(y,y);  // \"negative\" y so we can replace sub with am later\n      while(y.t < ys) y[y.t++] = 0;\n      while(--j >= 0) {\n        // Estimate quotient digit\n        var qd = (r[--i]==y0)?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2);\n        if((r[i]+=y.am(0,qd,r,j,0,ys)) < qd) {   // Try it out\n          y.dlShiftTo(j,t);\n          r.subTo(t,r);\n          while(r[i] < --qd) r.subTo(t,r);\n        }\n      }\n      if(q != null) {\n        r.drShiftTo(ys,q);\n        if(ts != ms) BigInteger.ZERO.subTo(q,q);\n      }\n      r.t = ys;\n      r.clamp();\n      if(nsh > 0) r.rShiftTo(nsh,r); // Denormalize remainder\n      if(ts < 0) BigInteger.ZERO.subTo(r,r);\n    }\n\n    // (public) this mod a\n    function bnMod(a) {\n      var r = nbi();\n      this.abs().divRemTo(a,null,r);\n      if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r,r);\n      return r;\n    }\n\n    // Modular reduction using \"classic\" algorithm\n    function Classic(m) { this.m = m; }\n    function cConvert(x) {\n      if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m);\n      else return x;\n    }\n    function cRevert(x) { return x; }\n    function cReduce(x) { x.divRemTo(this.m,null,x); }\n    function cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\n    function cSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\n    Classic.prototype.convert = cConvert;\n    Classic.prototype.revert = cRevert;\n    Classic.prototype.reduce = cReduce;\n    Classic.prototype.mulTo = cMulTo;\n    Classic.prototype.sqrTo = cSqrTo;\n\n    // (protected) return \"-1/this % 2^DB\"; useful for Mont. reduction\n    // justification:\n    //         xy == 1 (mod m)\n    //         xy =  1+km\n    //   xy(2-xy) = (1+km)(1-km)\n    // x[y(2-xy)] = 1-k^2m^2\n    // x[y(2-xy)] == 1 (mod m^2)\n    // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2\n    // should reduce x and y(2-xy) by m^2 at each step to keep size bounded.\n    // JS multiply \"overflows\" differently from C/C++, so care is needed here.\n    function bnpInvDigit() {\n      if(this.t < 1) return 0;\n      var x = this[0];\n      if((x&1) == 0) return 0;\n      var y = x&3;       // y == 1/x mod 2^2\n      y = (y*(2-(x&0xf)*y))&0xf; // y == 1/x mod 2^4\n      y = (y*(2-(x&0xff)*y))&0xff;   // y == 1/x mod 2^8\n      y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff;    // y == 1/x mod 2^16\n      // last step - calculate inverse mod DV directly;\n      // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints\n      y = (y*(2-x*y%this.DV))%this.DV;       // y == 1/x mod 2^dbits\n      // we really want the negative inverse, and -DV < y < DV\n      return (y>0)?this.DV-y:-y;\n    }\n\n    // Montgomery reduction\n    function Montgomery(m) {\n      this.m = m;\n      this.mp = m.invDigit();\n      this.mpl = this.mp&0x7fff;\n      this.mph = this.mp>>15;\n      this.um = (1<<(m.DB-15))-1;\n      this.mt2 = 2*m.t;\n    }\n\n    // xR mod m\n    function montConvert(x) {\n      var r = nbi();\n      x.abs().dlShiftTo(this.m.t,r);\n      r.divRemTo(this.m,null,r);\n      if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r,r);\n      return r;\n    }\n\n    // x/R mod m\n    function montRevert(x) {\n      var r = nbi();\n      x.copyTo(r);\n      this.reduce(r);\n      return r;\n    }\n\n    // x = x/R mod m (HAC 14.32)\n    function montReduce(x) {\n      while(x.t <= this.mt2) // pad x so am has enough room later\n        x[x.t++] = 0;\n      for(var i = 0; i < this.m.t; ++i) {\n        // faster way of calculating u0 = x[i]*mp mod DV\n        var j = x[i]&0x7fff;\n        var u0 = (j*this.mpl+(((j*this.mph+(x[i]>>15)*this.mpl)&this.um)<<15))&x.DM;\n        // use am to combine the multiply-shift-add into one call\n        j = i+this.m.t;\n        x[j] += this.m.am(0,u0,x,i,0,this.m.t);\n        // propagate carry\n        while(x[j] >= x.DV) { x[j] -= x.DV; x[++j]++; }\n      }\n      x.clamp();\n      x.drShiftTo(this.m.t,x);\n      if(x.compareTo(this.m) >= 0) x.subTo(this.m,x);\n    }\n\n    // r = \"x^2/R mod m\"; x != r\n    function montSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\n    // r = \"xy/R mod m\"; x,y != r\n    function montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\n\n    Montgomery.prototype.convert = montConvert;\n    Montgomery.prototype.revert = montRevert;\n    Montgomery.prototype.reduce = montReduce;\n    Montgomery.prototype.mulTo = montMulTo;\n    Montgomery.prototype.sqrTo = montSqrTo;\n\n    // (protected) true iff this is even\n    function bnpIsEven() { return ((this.t>0)?(this[0]&1):this.s) == 0; }\n\n    // (protected) this^e, e < 2^32, doing sqr and mul with \"r\" (HAC 14.79)\n    function bnpExp(e,z) {\n      if(e > 0xffffffff || e < 1) return BigInteger.ONE;\n      var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1;\n      g.copyTo(r);\n      while(--i >= 0) {\n        z.sqrTo(r,r2);\n        if((e&(1<<i)) > 0) z.mulTo(r2,g,r);\n        else { var t = r; r = r2; r2 = t; }\n      }\n      return z.revert(r);\n    }\n\n    // (public) this^e % m, 0 <= e < 2^32\n    function bnModPowInt(e,m) {\n      var z;\n      if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m);\n      return this.exp(e,z);\n    }\n\n    // protected\n    BigInteger.prototype.copyTo = bnpCopyTo;\n    BigInteger.prototype.fromInt = bnpFromInt;\n    BigInteger.prototype.fromString = bnpFromString;\n    BigInteger.prototype.clamp = bnpClamp;\n    BigInteger.prototype.dlShiftTo = bnpDLShiftTo;\n    BigInteger.prototype.drShiftTo = bnpDRShiftTo;\n    BigInteger.prototype.lShiftTo = bnpLShiftTo;\n    BigInteger.prototype.rShiftTo = bnpRShiftTo;\n    BigInteger.prototype.subTo = bnpSubTo;\n    BigInteger.prototype.multiplyTo = bnpMultiplyTo;\n    BigInteger.prototype.squareTo = bnpSquareTo;\n    BigInteger.prototype.divRemTo = bnpDivRemTo;\n    BigInteger.prototype.invDigit = bnpInvDigit;\n    BigInteger.prototype.isEven = bnpIsEven;\n    BigInteger.prototype.exp = bnpExp;\n\n    // public\n    BigInteger.prototype.toString = bnToString;\n    BigInteger.prototype.negate = bnNegate;\n    BigInteger.prototype.abs = bnAbs;\n    BigInteger.prototype.compareTo = bnCompareTo;\n    BigInteger.prototype.bitLength = bnBitLength;\n    BigInteger.prototype.mod = bnMod;\n    BigInteger.prototype.modPowInt = bnModPowInt;\n\n    // \"constants\"\n    BigInteger.ZERO = nbv(0);\n    BigInteger.ONE = nbv(1);\n\n    // Copyright (c) 2005-2009  Tom Wu\n    // All Rights Reserved.\n    // See \"LICENSE\" for details.\n\n    // Extended JavaScript BN functions, required for RSA private ops.\n\n    // Version 1.1: new BigInteger(\"0\", 10) returns \"proper\" zero\n    // Version 1.2: square() API, isProbablePrime fix\n\n    // (public)\n    function bnClone() { var r = nbi(); this.copyTo(r); return r; }\n\n    // (public) return value as integer\n    function bnIntValue() {\n      if(this.s < 0) {\n        if(this.t == 1) return this[0]-this.DV;\n        else if(this.t == 0) return -1;\n      }\n      else if(this.t == 1) return this[0];\n      else if(this.t == 0) return 0;\n      // assumes 16 < DB < 32\n      return ((this[1]&((1<<(32-this.DB))-1))<<this.DB)|this[0];\n    }\n\n    // (public) return value as byte\n    function bnByteValue() { return (this.t==0)?this.s:(this[0]<<24)>>24; }\n\n    // (public) return value as short (assumes DB>=16)\n    function bnShortValue() { return (this.t==0)?this.s:(this[0]<<16)>>16; }\n\n    // (protected) return x s.t. r^x < DV\n    function bnpChunkSize(r) { return Math.floor(Math.LN2*this.DB/Math.log(r)); }\n\n    // (public) 0 if this == 0, 1 if this > 0\n    function bnSigNum() {\n      if(this.s < 0) return -1;\n      else if(this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0;\n      else return 1;\n    }\n\n    // (protected) convert to radix string\n    function bnpToRadix(b) {\n      if(b == null) b = 10;\n      if(this.signum() == 0 || b < 2 || b > 36) return \"0\";\n      var cs = this.chunkSize(b);\n      var a = Math.pow(b,cs);\n      var d = nbv(a), y = nbi(), z = nbi(), r = \"\";\n      this.divRemTo(d,y,z);\n      while(y.signum() > 0) {\n        r = (a+z.intValue()).toString(b).substr(1) + r;\n        y.divRemTo(d,y,z);\n      }\n      return z.intValue().toString(b) + r;\n    }\n\n    // (protected) convert from radix string\n    function bnpFromRadix(s,b) {\n      this.fromInt(0);\n      if(b == null) b = 10;\n      var cs = this.chunkSize(b);\n      var d = Math.pow(b,cs), mi = false, j = 0, w = 0;\n      for(var i = 0; i < s.length; ++i) {\n        var x = intAt(s,i);\n        if(x < 0) {\n          if(s.charAt(i) == \"-\" && this.signum() == 0) mi = true;\n          continue;\n        }\n        w = b*w+x;\n        if(++j >= cs) {\n          this.dMultiply(d);\n          this.dAddOffset(w,0);\n          j = 0;\n          w = 0;\n        }\n      }\n      if(j > 0) {\n        this.dMultiply(Math.pow(b,j));\n        this.dAddOffset(w,0);\n      }\n      if(mi) BigInteger.ZERO.subTo(this,this);\n    }\n\n    // (protected) alternate constructor\n    function bnpFromNumber(a,b,c) {\n      if(\"number\" == typeof b) {\n        // new BigInteger(int,int,RNG)\n        if(a < 2) this.fromInt(1);\n        else {\n          this.fromNumber(a,c);\n          if(!this.testBit(a-1))\t// force MSB set\n            this.bitwiseTo(BigInteger.ONE.shiftLeft(a-1),op_or,this);\n          if(this.isEven()) this.dAddOffset(1,0); // force odd\n          while(!this.isProbablePrime(b)) {\n            this.dAddOffset(2,0);\n            if(this.bitLength() > a) this.subTo(BigInteger.ONE.shiftLeft(a-1),this);\n          }\n        }\n      }\n      else {\n        // new BigInteger(int,RNG)\n        var x = new Array(), t = a&7;\n        x.length = (a>>3)+1;\n        b.nextBytes(x);\n        if(t > 0) x[0] &= ((1<<t)-1); else x[0] = 0;\n        this.fromString(x,256);\n      }\n    }\n\n    // (public) convert to bigendian byte array\n    function bnToByteArray() {\n      var i = this.t, r = new Array();\n      r[0] = this.s;\n      var p = this.DB-(i*this.DB)%8, d, k = 0;\n      if(i-- > 0) {\n        if(p < this.DB && (d = this[i]>>p) != (this.s&this.DM)>>p)\n          r[k++] = d|(this.s<<(this.DB-p));\n        while(i >= 0) {\n          if(p < 8) {\n            d = (this[i]&((1<<p)-1))<<(8-p);\n            d |= this[--i]>>(p+=this.DB-8);\n          }\n          else {\n            d = (this[i]>>(p-=8))&0xff;\n            if(p <= 0) { p += this.DB; --i; }\n          }\n          if((d&0x80) != 0) d |= -256;\n          if(k == 0 && (this.s&0x80) != (d&0x80)) ++k;\n          if(k > 0 || d != this.s) r[k++] = d;\n        }\n      }\n      return r;\n    }\n\n    function bnEquals(a) { return(this.compareTo(a)==0); }\n    function bnMin(a) { return(this.compareTo(a)<0)?this:a; }\n    function bnMax(a) { return(this.compareTo(a)>0)?this:a; }\n\n    // (protected) r = this op a (bitwise)\n    function bnpBitwiseTo(a,op,r) {\n      var i, f, m = Math.min(a.t,this.t);\n      for(i = 0; i < m; ++i) r[i] = op(this[i],a[i]);\n      if(a.t < this.t) {\n        f = a.s&this.DM;\n        for(i = m; i < this.t; ++i) r[i] = op(this[i],f);\n        r.t = this.t;\n      }\n      else {\n        f = this.s&this.DM;\n        for(i = m; i < a.t; ++i) r[i] = op(f,a[i]);\n        r.t = a.t;\n      }\n      r.s = op(this.s,a.s);\n      r.clamp();\n    }\n\n    // (public) this & a\n    function op_and(x,y) { return x&y; }\n    function bnAnd(a) { var r = nbi(); this.bitwiseTo(a,op_and,r); return r; }\n\n    // (public) this | a\n    function op_or(x,y) { return x|y; }\n    function bnOr(a) { var r = nbi(); this.bitwiseTo(a,op_or,r); return r; }\n\n    // (public) this ^ a\n    function op_xor(x,y) { return x^y; }\n    function bnXor(a) { var r = nbi(); this.bitwiseTo(a,op_xor,r); return r; }\n\n    // (public) this & ~a\n    function op_andnot(x,y) { return x&~y; }\n    function bnAndNot(a) { var r = nbi(); this.bitwiseTo(a,op_andnot,r); return r; }\n\n    // (public) ~this\n    function bnNot() {\n      var r = nbi();\n      for(var i = 0; i < this.t; ++i) r[i] = this.DM&~this[i];\n      r.t = this.t;\n      r.s = ~this.s;\n      return r;\n    }\n\n    // (public) this << n\n    function bnShiftLeft(n) {\n      var r = nbi();\n      if(n < 0) this.rShiftTo(-n,r); else this.lShiftTo(n,r);\n      return r;\n    }\n\n    // (public) this >> n\n    function bnShiftRight(n) {\n      var r = nbi();\n      if(n < 0) this.lShiftTo(-n,r); else this.rShiftTo(n,r);\n      return r;\n    }\n\n    // return index of lowest 1-bit in x, x < 2^31\n    function lbit(x) {\n      if(x == 0) return -1;\n      var r = 0;\n      if((x&0xffff) == 0) { x >>= 16; r += 16; }\n      if((x&0xff) == 0) { x >>= 8; r += 8; }\n      if((x&0xf) == 0) { x >>= 4; r += 4; }\n      if((x&3) == 0) { x >>= 2; r += 2; }\n      if((x&1) == 0) ++r;\n      return r;\n    }\n\n    // (public) returns index of lowest 1-bit (or -1 if none)\n    function bnGetLowestSetBit() {\n      for(var i = 0; i < this.t; ++i)\n        if(this[i] != 0) return i*this.DB+lbit(this[i]);\n      if(this.s < 0) return this.t*this.DB;\n      return -1;\n    }\n\n    // return number of 1 bits in x\n    function cbit(x) {\n      var r = 0;\n      while(x != 0) { x &= x-1; ++r; }\n      return r;\n    }\n\n    // (public) return number of set bits\n    function bnBitCount() {\n      var r = 0, x = this.s&this.DM;\n      for(var i = 0; i < this.t; ++i) r += cbit(this[i]^x);\n      return r;\n    }\n\n    // (public) true iff nth bit is set\n    function bnTestBit(n) {\n      var j = Math.floor(n/this.DB);\n      if(j >= this.t) return(this.s!=0);\n      return((this[j]&(1<<(n%this.DB)))!=0);\n    }\n\n    // (protected) this op (1<<n)\n    function bnpChangeBit(n,op) {\n      var r = BigInteger.ONE.shiftLeft(n);\n      this.bitwiseTo(r,op,r);\n      return r;\n    }\n\n    // (public) this | (1<<n)\n    function bnSetBit(n) { return this.changeBit(n,op_or); }\n\n    // (public) this & ~(1<<n)\n    function bnClearBit(n) { return this.changeBit(n,op_andnot); }\n\n    // (public) this ^ (1<<n)\n    function bnFlipBit(n) { return this.changeBit(n,op_xor); }\n\n    // (protected) r = this + a\n    function bnpAddTo(a,r) {\n      var i = 0, c = 0, m = Math.min(a.t,this.t);\n      while(i < m) {\n        c += this[i]+a[i];\n        r[i++] = c&this.DM;\n        c >>= this.DB;\n      }\n      if(a.t < this.t) {\n        c += a.s;\n        while(i < this.t) {\n          c += this[i];\n          r[i++] = c&this.DM;\n          c >>= this.DB;\n        }\n        c += this.s;\n      }\n      else {\n        c += this.s;\n        while(i < a.t) {\n          c += a[i];\n          r[i++] = c&this.DM;\n          c >>= this.DB;\n        }\n        c += a.s;\n      }\n      r.s = (c<0)?-1:0;\n      if(c > 0) r[i++] = c;\n      else if(c < -1) r[i++] = this.DV+c;\n      r.t = i;\n      r.clamp();\n    }\n\n    // (public) this + a\n    function bnAdd(a) { var r = nbi(); this.addTo(a,r); return r; }\n\n    // (public) this - a\n    function bnSubtract(a) { var r = nbi(); this.subTo(a,r); return r; }\n\n    // (public) this * a\n    function bnMultiply(a) { var r = nbi(); this.multiplyTo(a,r); return r; }\n\n    // (public) this^2\n    function bnSquare() { var r = nbi(); this.squareTo(r); return r; }\n\n    // (public) this / a\n    function bnDivide(a) { var r = nbi(); this.divRemTo(a,r,null); return r; }\n\n    // (public) this % a\n    function bnRemainder(a) { var r = nbi(); this.divRemTo(a,null,r); return r; }\n\n    // (public) [this/a,this%a]\n    function bnDivideAndRemainder(a) {\n      var q = nbi(), r = nbi();\n      this.divRemTo(a,q,r);\n      return new Array(q,r);\n    }\n\n    // (protected) this *= n, this >= 0, 1 < n < DV\n    function bnpDMultiply(n) {\n      this[this.t] = this.am(0,n-1,this,0,0,this.t);\n      ++this.t;\n      this.clamp();\n    }\n\n    // (protected) this += n << w words, this >= 0\n    function bnpDAddOffset(n,w) {\n      if(n == 0) return;\n      while(this.t <= w) this[this.t++] = 0;\n      this[w] += n;\n      while(this[w] >= this.DV) {\n        this[w] -= this.DV;\n        if(++w >= this.t) this[this.t++] = 0;\n        ++this[w];\n      }\n    }\n\n    // A \"null\" reducer\n    function NullExp() {}\n    function nNop(x) { return x; }\n    function nMulTo(x,y,r) { x.multiplyTo(y,r); }\n    function nSqrTo(x,r) { x.squareTo(r); }\n\n    NullExp.prototype.convert = nNop;\n    NullExp.prototype.revert = nNop;\n    NullExp.prototype.mulTo = nMulTo;\n    NullExp.prototype.sqrTo = nSqrTo;\n\n    // (public) this^e\n    function bnPow(e) { return this.exp(e,new NullExp()); }\n\n    // (protected) r = lower n words of \"this * a\", a.t <= n\n    // \"this\" should be the larger one if appropriate.\n    function bnpMultiplyLowerTo(a,n,r) {\n      var i = Math.min(this.t+a.t,n);\n      r.s = 0; // assumes a,this >= 0\n      r.t = i;\n      while(i > 0) r[--i] = 0;\n      var j;\n      for(j = r.t-this.t; i < j; ++i) r[i+this.t] = this.am(0,a[i],r,i,0,this.t);\n      for(j = Math.min(a.t,n); i < j; ++i) this.am(0,a[i],r,i,0,n-i);\n      r.clamp();\n    }\n\n    // (protected) r = \"this * a\" without lower n words, n > 0\n    // \"this\" should be the larger one if appropriate.\n    function bnpMultiplyUpperTo(a,n,r) {\n      --n;\n      var i = r.t = this.t+a.t-n;\n      r.s = 0; // assumes a,this >= 0\n      while(--i >= 0) r[i] = 0;\n      for(i = Math.max(n-this.t,0); i < a.t; ++i)\n        r[this.t+i-n] = this.am(n-i,a[i],r,0,0,this.t+i-n);\n      r.clamp();\n      r.drShiftTo(1,r);\n    }\n\n    // Barrett modular reduction\n    function Barrett(m) {\n      // setup Barrett\n      this.r2 = nbi();\n      this.q3 = nbi();\n      BigInteger.ONE.dlShiftTo(2*m.t,this.r2);\n      this.mu = this.r2.divide(m);\n      this.m = m;\n    }\n\n    function barrettConvert(x) {\n      if(x.s < 0 || x.t > 2*this.m.t) return x.mod(this.m);\n      else if(x.compareTo(this.m) < 0) return x;\n      else { var r = nbi(); x.copyTo(r); this.reduce(r); return r; }\n    }\n\n    function barrettRevert(x) { return x; }\n\n    // x = x mod m (HAC 14.42)\n    function barrettReduce(x) {\n      x.drShiftTo(this.m.t-1,this.r2);\n      if(x.t > this.m.t+1) { x.t = this.m.t+1; x.clamp(); }\n      this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3);\n      this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);\n      while(x.compareTo(this.r2) < 0) x.dAddOffset(1,this.m.t+1);\n      x.subTo(this.r2,x);\n      while(x.compareTo(this.m) >= 0) x.subTo(this.m,x);\n    }\n\n    // r = x^2 mod m; x != r\n    function barrettSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\n    // r = x*y mod m; x,y != r\n    function barrettMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\n\n    Barrett.prototype.convert = barrettConvert;\n    Barrett.prototype.revert = barrettRevert;\n    Barrett.prototype.reduce = barrettReduce;\n    Barrett.prototype.mulTo = barrettMulTo;\n    Barrett.prototype.sqrTo = barrettSqrTo;\n\n    // (public) this^e % m (HAC 14.85)\n    function bnModPow(e,m) {\n      var i = e.bitLength(), k, r = nbv(1), z;\n      if(i <= 0) return r;\n      else if(i < 18) k = 1;\n      else if(i < 48) k = 3;\n      else if(i < 144) k = 4;\n      else if(i < 768) k = 5;\n      else k = 6;\n      if(i < 8)\n        z = new Classic(m);\n      else if(m.isEven())\n        z = new Barrett(m);\n      else\n        z = new Montgomery(m);\n\n      // precomputation\n      var g = new Array(), n = 3, k1 = k-1, km = (1<<k)-1;\n      g[1] = z.convert(this);\n      if(k > 1) {\n        var g2 = nbi();\n        z.sqrTo(g[1],g2);\n        while(n <= km) {\n          g[n] = nbi();\n          z.mulTo(g2,g[n-2],g[n]);\n          n += 2;\n        }\n      }\n\n      var j = e.t-1, w, is1 = true, r2 = nbi(), t;\n      i = nbits(e[j])-1;\n      while(j >= 0) {\n        if(i >= k1) w = (e[j]>>(i-k1))&km;\n        else {\n          w = (e[j]&((1<<(i+1))-1))<<(k1-i);\n          if(j > 0) w |= e[j-1]>>(this.DB+i-k1);\n        }\n\n        n = k;\n        while((w&1) == 0) { w >>= 1; --n; }\n        if((i -= n) < 0) { i += this.DB; --j; }\n        if(is1) {\t// ret == 1, don't bother squaring or multiplying it\n          g[w].copyTo(r);\n          is1 = false;\n        }\n        else {\n          while(n > 1) { z.sqrTo(r,r2); z.sqrTo(r2,r); n -= 2; }\n          if(n > 0) z.sqrTo(r,r2); else { t = r; r = r2; r2 = t; }\n          z.mulTo(r2,g[w],r);\n        }\n\n        while(j >= 0 && (e[j]&(1<<i)) == 0) {\n          z.sqrTo(r,r2); t = r; r = r2; r2 = t;\n          if(--i < 0) { i = this.DB-1; --j; }\n        }\n      }\n      return z.revert(r);\n    }\n\n    // (public) gcd(this,a) (HAC 14.54)\n    function bnGCD(a) {\n      var x = (this.s<0)?this.negate():this.clone();\n      var y = (a.s<0)?a.negate():a.clone();\n      if(x.compareTo(y) < 0) { var t = x; x = y; y = t; }\n      var i = x.getLowestSetBit(), g = y.getLowestSetBit();\n      if(g < 0) return x;\n      if(i < g) g = i;\n      if(g > 0) {\n        x.rShiftTo(g,x);\n        y.rShiftTo(g,y);\n      }\n      while(x.signum() > 0) {\n        if((i = x.getLowestSetBit()) > 0) x.rShiftTo(i,x);\n        if((i = y.getLowestSetBit()) > 0) y.rShiftTo(i,y);\n        if(x.compareTo(y) >= 0) {\n          x.subTo(y,x);\n          x.rShiftTo(1,x);\n        }\n        else {\n          y.subTo(x,y);\n          y.rShiftTo(1,y);\n        }\n      }\n      if(g > 0) y.lShiftTo(g,y);\n      return y;\n    }\n\n    // (protected) this % n, n < 2^26\n    function bnpModInt(n) {\n      if(n <= 0) return 0;\n      var d = this.DV%n, r = (this.s<0)?n-1:0;\n      if(this.t > 0)\n        if(d == 0) r = this[0]%n;\n        else for(var i = this.t-1; i >= 0; --i) r = (d*r+this[i])%n;\n      return r;\n    }\n\n    // (public) 1/this % m (HAC 14.61)\n    function bnModInverse(m) {\n      var ac = m.isEven();\n      if((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO;\n      var u = m.clone(), v = this.clone();\n      var a = nbv(1), b = nbv(0), c = nbv(0), d = nbv(1);\n      while(u.signum() != 0) {\n        while(u.isEven()) {\n          u.rShiftTo(1,u);\n          if(ac) {\n            if(!a.isEven() || !b.isEven()) { a.addTo(this,a); b.subTo(m,b); }\n            a.rShiftTo(1,a);\n          }\n          else if(!b.isEven()) b.subTo(m,b);\n          b.rShiftTo(1,b);\n        }\n        while(v.isEven()) {\n          v.rShiftTo(1,v);\n          if(ac) {\n            if(!c.isEven() || !d.isEven()) { c.addTo(this,c); d.subTo(m,d); }\n            c.rShiftTo(1,c);\n          }\n          else if(!d.isEven()) d.subTo(m,d);\n          d.rShiftTo(1,d);\n        }\n        if(u.compareTo(v) >= 0) {\n          u.subTo(v,u);\n          if(ac) a.subTo(c,a);\n          b.subTo(d,b);\n        }\n        else {\n          v.subTo(u,v);\n          if(ac) c.subTo(a,c);\n          d.subTo(b,d);\n        }\n      }\n      if(v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO;\n      if(d.compareTo(m) >= 0) return d.subtract(m);\n      if(d.signum() < 0) d.addTo(m,d); else return d;\n      if(d.signum() < 0) return d.add(m); else return d;\n    }\n\n    var lowprimes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997];\n    var lplim = (1<<26)/lowprimes[lowprimes.length-1];\n\n    // (public) test primality with certainty >= 1-.5^t\n    function bnIsProbablePrime(t) {\n      var i, x = this.abs();\n      if(x.t == 1 && x[0] <= lowprimes[lowprimes.length-1]) {\n        for(i = 0; i < lowprimes.length; ++i)\n          if(x[0] == lowprimes[i]) return true;\n        return false;\n      }\n      if(x.isEven()) return false;\n      i = 1;\n      while(i < lowprimes.length) {\n        var m = lowprimes[i], j = i+1;\n        while(j < lowprimes.length && m < lplim) m *= lowprimes[j++];\n        m = x.modInt(m);\n        while(i < j) if(m%lowprimes[i++] == 0) return false;\n      }\n      return x.millerRabin(t);\n    }\n\n    // (protected) true if probably prime (HAC 4.24, Miller-Rabin)\n    function bnpMillerRabin(t) {\n      var n1 = this.subtract(BigInteger.ONE);\n      var k = n1.getLowestSetBit();\n      if(k <= 0) return false;\n      var r = n1.shiftRight(k);\n      t = (t+1)>>1;\n      if(t > lowprimes.length) t = lowprimes.length;\n      var a = nbi();\n      for(var i = 0; i < t; ++i) {\n        //Pick bases at random, instead of starting at 2\n        a.fromInt(lowprimes[Math.floor(Math.random()*lowprimes.length)]);\n        var y = a.modPow(r,this);\n        if(y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {\n          var j = 1;\n          while(j++ < k && y.compareTo(n1) != 0) {\n            y = y.modPowInt(2,this);\n            if(y.compareTo(BigInteger.ONE) == 0) return false;\n          }\n          if(y.compareTo(n1) != 0) return false;\n        }\n      }\n      return true;\n    }\n\n    // protected\n    BigInteger.prototype.chunkSize = bnpChunkSize;\n    BigInteger.prototype.toRadix = bnpToRadix;\n    BigInteger.prototype.fromRadix = bnpFromRadix;\n    BigInteger.prototype.fromNumber = bnpFromNumber;\n    BigInteger.prototype.bitwiseTo = bnpBitwiseTo;\n    BigInteger.prototype.changeBit = bnpChangeBit;\n    BigInteger.prototype.addTo = bnpAddTo;\n    BigInteger.prototype.dMultiply = bnpDMultiply;\n    BigInteger.prototype.dAddOffset = bnpDAddOffset;\n    BigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo;\n    BigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo;\n    BigInteger.prototype.modInt = bnpModInt;\n    BigInteger.prototype.millerRabin = bnpMillerRabin;\n\n    // public\n    BigInteger.prototype.clone = bnClone;\n    BigInteger.prototype.intValue = bnIntValue;\n    BigInteger.prototype.byteValue = bnByteValue;\n    BigInteger.prototype.shortValue = bnShortValue;\n    BigInteger.prototype.signum = bnSigNum;\n    BigInteger.prototype.toByteArray = bnToByteArray;\n    BigInteger.prototype.equals = bnEquals;\n    BigInteger.prototype.min = bnMin;\n    BigInteger.prototype.max = bnMax;\n    BigInteger.prototype.and = bnAnd;\n    BigInteger.prototype.or = bnOr;\n    BigInteger.prototype.xor = bnXor;\n    BigInteger.prototype.andNot = bnAndNot;\n    BigInteger.prototype.not = bnNot;\n    BigInteger.prototype.shiftLeft = bnShiftLeft;\n    BigInteger.prototype.shiftRight = bnShiftRight;\n    BigInteger.prototype.getLowestSetBit = bnGetLowestSetBit;\n    BigInteger.prototype.bitCount = bnBitCount;\n    BigInteger.prototype.testBit = bnTestBit;\n    BigInteger.prototype.setBit = bnSetBit;\n    BigInteger.prototype.clearBit = bnClearBit;\n    BigInteger.prototype.flipBit = bnFlipBit;\n    BigInteger.prototype.add = bnAdd;\n    BigInteger.prototype.subtract = bnSubtract;\n    BigInteger.prototype.multiply = bnMultiply;\n    BigInteger.prototype.divide = bnDivide;\n    BigInteger.prototype.remainder = bnRemainder;\n    BigInteger.prototype.divideAndRemainder = bnDivideAndRemainder;\n    BigInteger.prototype.modPow = bnModPow;\n    BigInteger.prototype.modInverse = bnModInverse;\n    BigInteger.prototype.pow = bnPow;\n    BigInteger.prototype.gcd = bnGCD;\n    BigInteger.prototype.isProbablePrime = bnIsProbablePrime;\n\n    // JSBN-specific extension\n    BigInteger.prototype.square = bnSquare;\n\n    // Expose the Barrett function\n    BigInteger.prototype.Barrett = Barrett\n\n    // BigInteger interfaces not implemented in jsbn:\n\n    // BigInteger(int signum, byte[] magnitude)\n    // double doubleValue()\n    // float floatValue()\n    // int hashCode()\n    // long longValue()\n    // static BigInteger valueOf(long val)\n\n\t// Random number generator - requires a PRNG backend, e.g. prng4.js\n\n\t// For best results, put code like\n\t// <body onClick='rng_seed_time();' onKeyPress='rng_seed_time();'>\n\t// in your main HTML document.\n\n\tvar rng_state;\n\tvar rng_pool;\n\tvar rng_pptr;\n\n\t// Mix in a 32-bit integer into the pool\n\tfunction rng_seed_int(x) {\n\t  rng_pool[rng_pptr++] ^= x & 255;\n\t  rng_pool[rng_pptr++] ^= (x >> 8) & 255;\n\t  rng_pool[rng_pptr++] ^= (x >> 16) & 255;\n\t  rng_pool[rng_pptr++] ^= (x >> 24) & 255;\n\t  if(rng_pptr >= rng_psize) rng_pptr -= rng_psize;\n\t}\n\n\t// Mix in the current time (w/milliseconds) into the pool\n\tfunction rng_seed_time() {\n\t  rng_seed_int(new Date().getTime());\n\t}\n\n\t// Initialize the pool with junk if needed.\n\tif(rng_pool == null) {\n\t  rng_pool = new Array();\n\t  rng_pptr = 0;\n\t  var t;\n\t  if(typeof window !== \"undefined\" && window.crypto) {\n\t\tif (window.crypto.getRandomValues) {\n\t\t  // Use webcrypto if available\n\t\t  var ua = new Uint8Array(32);\n\t\t  window.crypto.getRandomValues(ua);\n\t\t  for(t = 0; t < 32; ++t)\n\t\t\trng_pool[rng_pptr++] = ua[t];\n\t\t}\n\t\telse if(navigator.appName == \"Netscape\" && navigator.appVersion < \"5\") {\n\t\t  // Extract entropy (256 bits) from NS4 RNG if available\n\t\t  var z = window.crypto.random(32);\n\t\t  for(t = 0; t < z.length; ++t)\n\t\t\trng_pool[rng_pptr++] = z.charCodeAt(t) & 255;\n\t\t}\n\t  }\n\t  while(rng_pptr < rng_psize) {  // extract some randomness from Math.random()\n\t\tt = Math.floor(65536 * Math.random());\n\t\trng_pool[rng_pptr++] = t >>> 8;\n\t\trng_pool[rng_pptr++] = t & 255;\n\t  }\n\t  rng_pptr = 0;\n\t  rng_seed_time();\n\t  //rng_seed_int(window.screenX);\n\t  //rng_seed_int(window.screenY);\n\t}\n\n\tfunction rng_get_byte() {\n\t  if(rng_state == null) {\n\t\trng_seed_time();\n\t\trng_state = prng_newstate();\n\t\trng_state.init(rng_pool);\n\t\tfor(rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr)\n\t\t  rng_pool[rng_pptr] = 0;\n\t\trng_pptr = 0;\n\t\t//rng_pool = null;\n\t  }\n\t  // TODO: allow reseeding after first request\n\t  return rng_state.next();\n\t}\n\n\tfunction rng_get_bytes(ba) {\n\t  var i;\n\t  for(i = 0; i < ba.length; ++i) ba[i] = rng_get_byte();\n\t}\n\n\tfunction SecureRandom() {}\n\n\tSecureRandom.prototype.nextBytes = rng_get_bytes;\n\n\t// prng4.js - uses Arcfour as a PRNG\n\n\tfunction Arcfour() {\n\t  this.i = 0;\n\t  this.j = 0;\n\t  this.S = new Array();\n\t}\n\n\t// Initialize arcfour context from key, an array of ints, each from [0..255]\n\tfunction ARC4init(key) {\n\t  var i, j, t;\n\t  for(i = 0; i < 256; ++i)\n\t\tthis.S[i] = i;\n\t  j = 0;\n\t  for(i = 0; i < 256; ++i) {\n\t\tj = (j + this.S[i] + key[i % key.length]) & 255;\n\t\tt = this.S[i];\n\t\tthis.S[i] = this.S[j];\n\t\tthis.S[j] = t;\n\t  }\n\t  this.i = 0;\n\t  this.j = 0;\n\t}\n\n\tfunction ARC4next() {\n\t  var t;\n\t  this.i = (this.i + 1) & 255;\n\t  this.j = (this.j + this.S[this.i]) & 255;\n\t  t = this.S[this.i];\n\t  this.S[this.i] = this.S[this.j];\n\t  this.S[this.j] = t;\n\t  return this.S[(t + this.S[this.i]) & 255];\n\t}\n\n\tArcfour.prototype.init = ARC4init;\n\tArcfour.prototype.next = ARC4next;\n\n\t// Plug in your RNG constructor here\n\tfunction prng_newstate() {\n\t  return new Arcfour();\n\t}\n\n\t// Pool size must be a multiple of 4 and greater than 32.\n\t// An array of bytes the size of the pool will be passed to init()\n\tvar rng_psize = 256;\n\n  BigInteger.SecureRandom = SecureRandom;\n  BigInteger.BigInteger = BigInteger;\n  if (typeof exports !== 'undefined') {\n    exports = module.exports = BigInteger;\n  } else {\n    this.BigInteger = BigInteger;\n    this.SecureRandom = SecureRandom;\n  }\n\n}).call(this);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jsbn/index.js\n// module id = 587\n// module chunks = 0",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var Hasher = C_lib.Hasher;\n\t    var C_algo = C.algo;\n\n\t    // Initialization and round constants tables\n\t    var H = [];\n\t    var K = [];\n\n\t    // Compute constants\n\t    (function () {\n\t        function isPrime(n) {\n\t            var sqrtN = Math.sqrt(n);\n\t            for (var factor = 2; factor <= sqrtN; factor++) {\n\t                if (!(n % factor)) {\n\t                    return false;\n\t                }\n\t            }\n\n\t            return true;\n\t        }\n\n\t        function getFractionalBits(n) {\n\t            return ((n - (n | 0)) * 0x100000000) | 0;\n\t        }\n\n\t        var n = 2;\n\t        var nPrime = 0;\n\t        while (nPrime < 64) {\n\t            if (isPrime(n)) {\n\t                if (nPrime < 8) {\n\t                    H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t                }\n\t                K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t                nPrime++;\n\t            }\n\n\t            n++;\n\t        }\n\t    }());\n\n\t    // Reusable object\n\t    var W = [];\n\n\t    /**\n\t     * SHA-256 hash algorithm.\n\t     */\n\t    var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t        _doReset: function () {\n\t            this._hash = new WordArray.init(H.slice(0));\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\t            // Shortcut\n\t            var H = this._hash.words;\n\n\t            // Working variables\n\t            var a = H[0];\n\t            var b = H[1];\n\t            var c = H[2];\n\t            var d = H[3];\n\t            var e = H[4];\n\t            var f = H[5];\n\t            var g = H[6];\n\t            var h = H[7];\n\n\t            // Computation\n\t            for (var i = 0; i < 64; i++) {\n\t                if (i < 16) {\n\t                    W[i] = M[offset + i] | 0;\n\t                } else {\n\t                    var gamma0x = W[i - 15];\n\t                    var gamma0  = ((gamma0x << 25) | (gamma0x >>> 7))  ^\n\t                                  ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t                                   (gamma0x >>> 3);\n\n\t                    var gamma1x = W[i - 2];\n\t                    var gamma1  = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t                                  ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t                                   (gamma1x >>> 10);\n\n\t                    W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t                }\n\n\t                var ch  = (e & f) ^ (~e & g);\n\t                var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t                var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t                var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7)  | (e >>> 25));\n\n\t                var t1 = h + sigma1 + ch + K[i] + W[i];\n\t                var t2 = sigma0 + maj;\n\n\t                h = g;\n\t                g = f;\n\t                f = e;\n\t                e = (d + t1) | 0;\n\t                d = c;\n\t                c = b;\n\t                b = a;\n\t                a = (t1 + t2) | 0;\n\t            }\n\n\t            // Intermediate hash value\n\t            H[0] = (H[0] + a) | 0;\n\t            H[1] = (H[1] + b) | 0;\n\t            H[2] = (H[2] + c) | 0;\n\t            H[3] = (H[3] + d) | 0;\n\t            H[4] = (H[4] + e) | 0;\n\t            H[5] = (H[5] + f) | 0;\n\t            H[6] = (H[6] + g) | 0;\n\t            H[7] = (H[7] + h) | 0;\n\t        },\n\n\t        _doFinalize: function () {\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\n\t            var nBitsTotal = this._nDataBytes * 8;\n\t            var nBitsLeft = data.sigBytes * 8;\n\n\t            // Add padding\n\t            dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t            data.sigBytes = dataWords.length * 4;\n\n\t            // Hash final blocks\n\t            this._process();\n\n\t            // Return final computed hash\n\t            return this._hash;\n\t        },\n\n\t        clone: function () {\n\t            var clone = Hasher.clone.call(this);\n\t            clone._hash = this._hash.clone();\n\n\t            return clone;\n\t        }\n\t    });\n\n\t    /**\n\t     * Shortcut function to the hasher's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     *\n\t     * @return {WordArray} The hash.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hash = CryptoJS.SHA256('message');\n\t     *     var hash = CryptoJS.SHA256(wordArray);\n\t     */\n\t    C.SHA256 = Hasher._createHelper(SHA256);\n\n\t    /**\n\t     * Shortcut function to the HMAC's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     * @param {WordArray|string} key The secret key.\n\t     *\n\t     * @return {WordArray} The HMAC.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hmac = CryptoJS.HmacSHA256(message, key);\n\t     */\n\t    C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/crypto-js/sha256.js\n// module id = 588\n// module chunks = 0",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\t    /*\n\t     * Local polyfil of Object.create\n\t     */\n\t    var create = Object.create || (function () {\n\t        function F() {};\n\n\t        return function (obj) {\n\t            var subtype;\n\n\t            F.prototype = obj;\n\n\t            subtype = new F();\n\n\t            F.prototype = null;\n\n\t            return subtype;\n\t        };\n\t    }())\n\n\t    /**\n\t     * CryptoJS namespace.\n\t     */\n\t    var C = {};\n\n\t    /**\n\t     * Library namespace.\n\t     */\n\t    var C_lib = C.lib = {};\n\n\t    /**\n\t     * Base object for prototypal inheritance.\n\t     */\n\t    var Base = C_lib.Base = (function () {\n\n\n\t        return {\n\t            /**\n\t             * Creates a new object that inherits from this object.\n\t             *\n\t             * @param {Object} overrides Properties to copy into the new object.\n\t             *\n\t             * @return {Object} The new object.\n\t             *\n\t             * @static\n\t             *\n\t             * @example\n\t             *\n\t             *     var MyType = CryptoJS.lib.Base.extend({\n\t             *         field: 'value',\n\t             *\n\t             *         method: function () {\n\t             *         }\n\t             *     });\n\t             */\n\t            extend: function (overrides) {\n\t                // Spawn\n\t                var subtype = create(this);\n\n\t                // Augment\n\t                if (overrides) {\n\t                    subtype.mixIn(overrides);\n\t                }\n\n\t                // Create default initializer\n\t                if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t                    subtype.init = function () {\n\t                        subtype.$super.init.apply(this, arguments);\n\t                    };\n\t                }\n\n\t                // Initializer's prototype is the subtype object\n\t                subtype.init.prototype = subtype;\n\n\t                // Reference supertype\n\t                subtype.$super = this;\n\n\t                return subtype;\n\t            },\n\n\t            /**\n\t             * Extends this object and runs the init method.\n\t             * Arguments to create() will be passed to init().\n\t             *\n\t             * @return {Object} The new object.\n\t             *\n\t             * @static\n\t             *\n\t             * @example\n\t             *\n\t             *     var instance = MyType.create();\n\t             */\n\t            create: function () {\n\t                var instance = this.extend();\n\t                instance.init.apply(instance, arguments);\n\n\t                return instance;\n\t            },\n\n\t            /**\n\t             * Initializes a newly created object.\n\t             * Override this method to add some logic when your objects are created.\n\t             *\n\t             * @example\n\t             *\n\t             *     var MyType = CryptoJS.lib.Base.extend({\n\t             *         init: function () {\n\t             *             // ...\n\t             *         }\n\t             *     });\n\t             */\n\t            init: function () {\n\t            },\n\n\t            /**\n\t             * Copies properties into this object.\n\t             *\n\t             * @param {Object} properties The properties to mix in.\n\t             *\n\t             * @example\n\t             *\n\t             *     MyType.mixIn({\n\t             *         field: 'value'\n\t             *     });\n\t             */\n\t            mixIn: function (properties) {\n\t                for (var propertyName in properties) {\n\t                    if (properties.hasOwnProperty(propertyName)) {\n\t                        this[propertyName] = properties[propertyName];\n\t                    }\n\t                }\n\n\t                // IE won't copy toString using the loop above\n\t                if (properties.hasOwnProperty('toString')) {\n\t                    this.toString = properties.toString;\n\t                }\n\t            },\n\n\t            /**\n\t             * Creates a copy of this object.\n\t             *\n\t             * @return {Object} The clone.\n\t             *\n\t             * @example\n\t             *\n\t             *     var clone = instance.clone();\n\t             */\n\t            clone: function () {\n\t                return this.init.prototype.extend(this);\n\t            }\n\t        };\n\t    }());\n\n\t    /**\n\t     * An array of 32-bit words.\n\t     *\n\t     * @property {Array} words The array of 32-bit words.\n\t     * @property {number} sigBytes The number of significant bytes in this word array.\n\t     */\n\t    var WordArray = C_lib.WordArray = Base.extend({\n\t        /**\n\t         * Initializes a newly created word array.\n\t         *\n\t         * @param {Array} words (Optional) An array of 32-bit words.\n\t         * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.lib.WordArray.create();\n\t         *     var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t         *     var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t         */\n\t        init: function (words, sigBytes) {\n\t            words = this.words = words || [];\n\n\t            if (sigBytes != undefined) {\n\t                this.sigBytes = sigBytes;\n\t            } else {\n\t                this.sigBytes = words.length * 4;\n\t            }\n\t        },\n\n\t        /**\n\t         * Converts this word array to a string.\n\t         *\n\t         * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t         *\n\t         * @return {string} The stringified word array.\n\t         *\n\t         * @example\n\t         *\n\t         *     var string = wordArray + '';\n\t         *     var string = wordArray.toString();\n\t         *     var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t         */\n\t        toString: function (encoder) {\n\t            return (encoder || Hex).stringify(this);\n\t        },\n\n\t        /**\n\t         * Concatenates a word array to this word array.\n\t         *\n\t         * @param {WordArray} wordArray The word array to append.\n\t         *\n\t         * @return {WordArray} This word array.\n\t         *\n\t         * @example\n\t         *\n\t         *     wordArray1.concat(wordArray2);\n\t         */\n\t        concat: function (wordArray) {\n\t            // Shortcuts\n\t            var thisWords = this.words;\n\t            var thatWords = wordArray.words;\n\t            var thisSigBytes = this.sigBytes;\n\t            var thatSigBytes = wordArray.sigBytes;\n\n\t            // Clamp excess bits\n\t            this.clamp();\n\n\t            // Concat\n\t            if (thisSigBytes % 4) {\n\t                // Copy one byte at a time\n\t                for (var i = 0; i < thatSigBytes; i++) {\n\t                    var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t                    thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t                }\n\t            } else {\n\t                // Copy one word at a time\n\t                for (var i = 0; i < thatSigBytes; i += 4) {\n\t                    thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2];\n\t                }\n\t            }\n\t            this.sigBytes += thatSigBytes;\n\n\t            // Chainable\n\t            return this;\n\t        },\n\n\t        /**\n\t         * Removes insignificant bits.\n\t         *\n\t         * @example\n\t         *\n\t         *     wordArray.clamp();\n\t         */\n\t        clamp: function () {\n\t            // Shortcuts\n\t            var words = this.words;\n\t            var sigBytes = this.sigBytes;\n\n\t            // Clamp\n\t            words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t            words.length = Math.ceil(sigBytes / 4);\n\t        },\n\n\t        /**\n\t         * Creates a copy of this word array.\n\t         *\n\t         * @return {WordArray} The clone.\n\t         *\n\t         * @example\n\t         *\n\t         *     var clone = wordArray.clone();\n\t         */\n\t        clone: function () {\n\t            var clone = Base.clone.call(this);\n\t            clone.words = this.words.slice(0);\n\n\t            return clone;\n\t        },\n\n\t        /**\n\t         * Creates a word array filled with random bytes.\n\t         *\n\t         * @param {number} nBytes The number of random bytes to generate.\n\t         *\n\t         * @return {WordArray} The random word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.lib.WordArray.random(16);\n\t         */\n\t        random: function (nBytes) {\n\t            var words = [];\n\n\t            var r = (function (m_w) {\n\t                var m_w = m_w;\n\t                var m_z = 0x3ade68b1;\n\t                var mask = 0xffffffff;\n\n\t                return function () {\n\t                    m_z = (0x9069 * (m_z & 0xFFFF) + (m_z >> 0x10)) & mask;\n\t                    m_w = (0x4650 * (m_w & 0xFFFF) + (m_w >> 0x10)) & mask;\n\t                    var result = ((m_z << 0x10) + m_w) & mask;\n\t                    result /= 0x100000000;\n\t                    result += 0.5;\n\t                    return result * (Math.random() > .5 ? 1 : -1);\n\t                }\n\t            });\n\n\t            for (var i = 0, rcache; i < nBytes; i += 4) {\n\t                var _r = r((rcache || Math.random()) * 0x100000000);\n\n\t                rcache = _r() * 0x3ade67b7;\n\t                words.push((_r() * 0x100000000) | 0);\n\t            }\n\n\t            return new WordArray.init(words, nBytes);\n\t        }\n\t    });\n\n\t    /**\n\t     * Encoder namespace.\n\t     */\n\t    var C_enc = C.enc = {};\n\n\t    /**\n\t     * Hex encoding strategy.\n\t     */\n\t    var Hex = C_enc.Hex = {\n\t        /**\n\t         * Converts a word array to a hex string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The hex string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\n\t            // Convert\n\t            var hexChars = [];\n\t            for (var i = 0; i < sigBytes; i++) {\n\t                var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t                hexChars.push((bite >>> 4).toString(16));\n\t                hexChars.push((bite & 0x0f).toString(16));\n\t            }\n\n\t            return hexChars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a hex string to a word array.\n\t         *\n\t         * @param {string} hexStr The hex string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t         */\n\t        parse: function (hexStr) {\n\t            // Shortcut\n\t            var hexStrLength = hexStr.length;\n\n\t            // Convert\n\t            var words = [];\n\t            for (var i = 0; i < hexStrLength; i += 2) {\n\t                words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t            }\n\n\t            return new WordArray.init(words, hexStrLength / 2);\n\t        }\n\t    };\n\n\t    /**\n\t     * Latin1 encoding strategy.\n\t     */\n\t    var Latin1 = C_enc.Latin1 = {\n\t        /**\n\t         * Converts a word array to a Latin1 string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The Latin1 string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\n\t            // Convert\n\t            var latin1Chars = [];\n\t            for (var i = 0; i < sigBytes; i++) {\n\t                var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t                latin1Chars.push(String.fromCharCode(bite));\n\t            }\n\n\t            return latin1Chars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a Latin1 string to a word array.\n\t         *\n\t         * @param {string} latin1Str The Latin1 string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t         */\n\t        parse: function (latin1Str) {\n\t            // Shortcut\n\t            var latin1StrLength = latin1Str.length;\n\n\t            // Convert\n\t            var words = [];\n\t            for (var i = 0; i < latin1StrLength; i++) {\n\t                words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t            }\n\n\t            return new WordArray.init(words, latin1StrLength);\n\t        }\n\t    };\n\n\t    /**\n\t     * UTF-8 encoding strategy.\n\t     */\n\t    var Utf8 = C_enc.Utf8 = {\n\t        /**\n\t         * Converts a word array to a UTF-8 string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The UTF-8 string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            try {\n\t                return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t            } catch (e) {\n\t                throw new Error('Malformed UTF-8 data');\n\t            }\n\t        },\n\n\t        /**\n\t         * Converts a UTF-8 string to a word array.\n\t         *\n\t         * @param {string} utf8Str The UTF-8 string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t         */\n\t        parse: function (utf8Str) {\n\t            return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t        }\n\t    };\n\n\t    /**\n\t     * Abstract buffered block algorithm template.\n\t     *\n\t     * The property blockSize must be implemented in a concrete subtype.\n\t     *\n\t     * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t     */\n\t    var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t        /**\n\t         * Resets this block algorithm's data buffer to its initial state.\n\t         *\n\t         * @example\n\t         *\n\t         *     bufferedBlockAlgorithm.reset();\n\t         */\n\t        reset: function () {\n\t            // Initial values\n\t            this._data = new WordArray.init();\n\t            this._nDataBytes = 0;\n\t        },\n\n\t        /**\n\t         * Adds new data to this block algorithm's buffer.\n\t         *\n\t         * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t         *\n\t         * @example\n\t         *\n\t         *     bufferedBlockAlgorithm._append('data');\n\t         *     bufferedBlockAlgorithm._append(wordArray);\n\t         */\n\t        _append: function (data) {\n\t            // Convert string to WordArray, else assume WordArray already\n\t            if (typeof data == 'string') {\n\t                data = Utf8.parse(data);\n\t            }\n\n\t            // Append\n\t            this._data.concat(data);\n\t            this._nDataBytes += data.sigBytes;\n\t        },\n\n\t        /**\n\t         * Processes available data blocks.\n\t         *\n\t         * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t         *\n\t         * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t         *\n\t         * @return {WordArray} The processed data.\n\t         *\n\t         * @example\n\t         *\n\t         *     var processedData = bufferedBlockAlgorithm._process();\n\t         *     var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t         */\n\t        _process: function (doFlush) {\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\t            var dataSigBytes = data.sigBytes;\n\t            var blockSize = this.blockSize;\n\t            var blockSizeBytes = blockSize * 4;\n\n\t            // Count blocks ready\n\t            var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t            if (doFlush) {\n\t                // Round up to include partial blocks\n\t                nBlocksReady = Math.ceil(nBlocksReady);\n\t            } else {\n\t                // Round down to include only full blocks,\n\t                // less the number of blocks that must remain in the buffer\n\t                nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t            }\n\n\t            // Count words ready\n\t            var nWordsReady = nBlocksReady * blockSize;\n\n\t            // Count bytes ready\n\t            var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t            // Process blocks\n\t            if (nWordsReady) {\n\t                for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t                    // Perform concrete-algorithm logic\n\t                    this._doProcessBlock(dataWords, offset);\n\t                }\n\n\t                // Remove processed words\n\t                var processedWords = dataWords.splice(0, nWordsReady);\n\t                data.sigBytes -= nBytesReady;\n\t            }\n\n\t            // Return processed words\n\t            return new WordArray.init(processedWords, nBytesReady);\n\t        },\n\n\t        /**\n\t         * Creates a copy of this object.\n\t         *\n\t         * @return {Object} The clone.\n\t         *\n\t         * @example\n\t         *\n\t         *     var clone = bufferedBlockAlgorithm.clone();\n\t         */\n\t        clone: function () {\n\t            var clone = Base.clone.call(this);\n\t            clone._data = this._data.clone();\n\n\t            return clone;\n\t        },\n\n\t        _minBufferSize: 0\n\t    });\n\n\t    /**\n\t     * Abstract hasher template.\n\t     *\n\t     * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t     */\n\t    var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t        /**\n\t         * Configuration options.\n\t         */\n\t        cfg: Base.extend(),\n\n\t        /**\n\t         * Initializes a newly created hasher.\n\t         *\n\t         * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t         *\n\t         * @example\n\t         *\n\t         *     var hasher = CryptoJS.algo.SHA256.create();\n\t         */\n\t        init: function (cfg) {\n\t            // Apply config defaults\n\t            this.cfg = this.cfg.extend(cfg);\n\n\t            // Set initial values\n\t            this.reset();\n\t        },\n\n\t        /**\n\t         * Resets this hasher to its initial state.\n\t         *\n\t         * @example\n\t         *\n\t         *     hasher.reset();\n\t         */\n\t        reset: function () {\n\t            // Reset data buffer\n\t            BufferedBlockAlgorithm.reset.call(this);\n\n\t            // Perform concrete-hasher logic\n\t            this._doReset();\n\t        },\n\n\t        /**\n\t         * Updates this hasher with a message.\n\t         *\n\t         * @param {WordArray|string} messageUpdate The message to append.\n\t         *\n\t         * @return {Hasher} This hasher.\n\t         *\n\t         * @example\n\t         *\n\t         *     hasher.update('message');\n\t         *     hasher.update(wordArray);\n\t         */\n\t        update: function (messageUpdate) {\n\t            // Append\n\t            this._append(messageUpdate);\n\n\t            // Update the hash\n\t            this._process();\n\n\t            // Chainable\n\t            return this;\n\t        },\n\n\t        /**\n\t         * Finalizes the hash computation.\n\t         * Note that the finalize operation is effectively a destructive, read-once operation.\n\t         *\n\t         * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t         *\n\t         * @return {WordArray} The hash.\n\t         *\n\t         * @example\n\t         *\n\t         *     var hash = hasher.finalize();\n\t         *     var hash = hasher.finalize('message');\n\t         *     var hash = hasher.finalize(wordArray);\n\t         */\n\t        finalize: function (messageUpdate) {\n\t            // Final message update\n\t            if (messageUpdate) {\n\t                this._append(messageUpdate);\n\t            }\n\n\t            // Perform concrete-hasher logic\n\t            var hash = this._doFinalize();\n\n\t            return hash;\n\t        },\n\n\t        blockSize: 512/32,\n\n\t        /**\n\t         * Creates a shortcut function to a hasher's object interface.\n\t         *\n\t         * @param {Hasher} hasher The hasher to create a helper for.\n\t         *\n\t         * @return {Function} The shortcut function.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t         */\n\t        _createHelper: function (hasher) {\n\t            return function (message, cfg) {\n\t                return new hasher.init(cfg).finalize(message);\n\t            };\n\t        },\n\n\t        /**\n\t         * Creates a shortcut function to the HMAC's object interface.\n\t         *\n\t         * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t         *\n\t         * @return {Function} The shortcut function.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t         */\n\t        _createHmacHelper: function (hasher) {\n\t            return function (message, key) {\n\t                return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t            };\n\t        }\n\t    });\n\n\t    /**\n\t     * Algorithm namespace.\n\t     */\n\t    var C_algo = C.algo = {};\n\n\t    return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/crypto-js/core.js\n// module id = 589\n// module chunks = 0","var urljoin = require('url-join');\nvar base64 = require('./base64');\nvar request = require('superagent');\n\nfunction process(jwks) {\n  var modulus = base64.decodeToHEX(jwks.n);\n  var exp = base64.decodeToHEX(jwks.e);\n\n  return {\n    modulus: modulus,\n    exp: exp\n  };\n}\n\nfunction getJWKS(options, cb) {\n  var url = urljoin(options.iss, '.well-known', 'jwks.json');\n\n  return request\n    .get(url)\n    .end(function (err, data) {\n      var matchingKey = null;\n      var a;\n      var key;\n\n      if (err) {\n        cb(err);\n      }\n\n      // eslint-disable-next-line no-plusplus\n      for (a = 0; a < data.body.keys.length && matchingKey === null; a++) {\n        key = data.body.keys[a];\n        if (key.kid === options.kid) {\n          matchingKey = key;\n        }\n      }\n\n      cb(null, process(matchingKey));\n    });\n}\n\nmodule.exports = {\n  process: process,\n  getJWKS: getJWKS\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/idtoken-verifier/src/helpers/jwks.js\n// module id = 590\n// module chunks = 0","function ConfigurationError(message) {\n  this.name = 'ConfigurationError';\n  this.message = (message || '');\n}\nConfigurationError.prototype = Error.prototype;\n\nfunction TokenValidationError(message) {\n  this.name = 'TokenValidationError';\n  this.message = (message || '');\n}\nTokenValidationError.prototype = Error.prototype;\n\nmodule.exports = {\n  ConfigurationError: ConfigurationError,\n  TokenValidationError: TokenValidationError\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/idtoken-verifier/src/helpers/error.js\n// module id = 591\n// module chunks = 0","function DummyCache() {}\n\nDummyCache.prototype.get = function () {\n  return null;\n};\n\nDummyCache.prototype.has = function () {\n  return false;\n};\n\nDummyCache.prototype.set = function () {\n};\n\nmodule.exports = DummyCache;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/idtoken-verifier/src/helpers/dummy-cache.js\n// module id = 592\n// module chunks = 0","var version = require('../version');\n\nfunction PluginHandler(webAuth, plugins) {\n  this.plugins = plugins;\n\n  for (var a = 0; a < this.plugins.length; a++) {\n    if (this.plugins[a].version !== version.raw) {\n      var pluginName = '';\n\n      if (this.plugins[a].constructor && this.plugins[a].constructor.name) {\n        pluginName = this.plugins[a].constructor.name;\n      }\n\n      throw new Error(\n        'Plugin ' +\n          pluginName +\n          ' version (' +\n          this.plugins[a].version +\n          ') ' +\n          'is not compatible with the SDK version (' +\n          version.raw +\n          ')'\n      );\n    }\n\n    this.plugins[a].setWebAuth(webAuth);\n  }\n}\n\nPluginHandler.prototype.get = function(extensibilityPoint) {\n  for (var a = 0; a < this.plugins.length; a++) {\n    if (this.plugins[a].supports(extensibilityPoint)) {\n      return this.plugins[a].init();\n    }\n  }\n\n  return null;\n};\n\nmodule.exports = PluginHandler;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/auth0-js/src/helper/plugins.js\n// module id = 593\n// module chunks = 0","var windowHelper = require('./window');\n\nfunction randomString(length) {\n  // eslint-disable-next-line\n  var bytes = new Uint8Array(length);\n  var result = [];\n  var charset = '0123456789ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvwxyz-._~';\n\n  var cryptoObj = windowHelper.getWindow().crypto || windowHelper.getWindow().msCrypto;\n  if (!cryptoObj) {\n    return null;\n  }\n\n  var random = cryptoObj.getRandomValues(bytes);\n\n  for (var a = 0; a < random.length; a++) {\n    result.push(charset[random[a] % charset.length]);\n  }\n\n  return result.join('');\n}\n\nmodule.exports = {\n  randomString: randomString\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/auth0-js/src/helper/random.js\n// module id = 594\n// module chunks = 0","var CrossOriginAuthentication = require('./cross-origin-authentication');\nvar Warn = require('../helper/warn');\n\nfunction Redirect(auth0, options) {\n  this.baseOptions = options;\n  this.client = auth0.client;\n  this.crossOriginAuthentication = new CrossOriginAuthentication(auth0, this.baseOptions);\n\n  this.warn = new Warn({\n    disableWarnings: !!options._disableDeprecationWarnings\n  });\n}\n\n/**\n * Logs in the user with username and password using the cross origin authentication (/co/authenticate) flow. You can use either `username` or `email` to identify the user, but `username` will take precedence over `email`.\n * Some browsers might not be able to successfully authenticate if 3rd party cookies are disabled in your browser. [See here for more information.]{@link https://auth0.com/docs/cross-origin-authentication}.\n * After the /co/authenticate call, you'll have to use the {@link parseHash} function at the `redirectUri` specified in the constructor.\n *\n * @method loginWithCredentials\n * @deprecated This method will be released in the next major version. Use `webAuth.login` instead.\n * @param {Object} options options used in the {@link authorize} call after the login_ticket is acquired\n * @param {String} [options.username] Username (mutually exclusive with email)\n * @param {String} [options.email] Email (mutually exclusive with username)\n * @param {String} options.password Password\n * @param {String} [options.connection] Connection used to authenticate the user, it can be a realm name or a database connection name\n * @param {crossOriginLoginCallback} cb Callback function called only when an authentication error, like invalid username or password, occurs. For other types of errors, there will be a redirect to the `redirectUri`.\n */\nRedirect.prototype.loginWithCredentials = function(options, cb) {\n  options.realm = options.realm || options.connection;\n  delete options.connection;\n  this.crossOriginAuthentication.login(options, cb);\n};\n\n/**\n * Signs up a new user and automatically logs the user in after the signup.\n *\n * @method signupAndLogin\n * @param {Object} options\n * @param {String} options.email user email address\n * @param {String} options.password user password\n * @param {String} options.connection name of the connection where the user will be created\n * @param {crossOriginLoginCallback} cb\n */\nRedirect.prototype.signupAndLogin = function(options, cb) {\n  var _this = this;\n  return this.client.dbConnection.signup(options, function(err) {\n    if (err) {\n      return cb(err);\n    }\n    return _this.loginWithCredentials(options, cb);\n  });\n};\n\nmodule.exports = Redirect;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/auth0-js/src/web-auth/redirect.js\n// module id = 595\n// module chunks = 0","var urljoin = require('url-join');\n\nvar urlHelper = require('../helper/url');\nvar assert = require('../helper/assert');\nvar responseHandler = require('../helper/response-handler');\nvar PopupHandler = require('../helper/popup-handler');\nvar objectHelper = require('../helper/object');\nvar windowHelper = require('../helper/window');\nvar Warn = require('../helper/warn');\nvar TransactionManager = require('./transaction-manager');\nvar CrossOriginAuthentication = require('./cross-origin-authentication');\n\nfunction Popup(webAuth, options) {\n  this.baseOptions = options;\n  this.baseOptions.popupOrigin = options.popupOrigin;\n  this.client = webAuth.client;\n  this.webAuth = webAuth;\n\n  this.transactionManager = new TransactionManager(this.baseOptions.transaction);\n  this.crossOriginAuthentication = new CrossOriginAuthentication(webAuth, this.baseOptions);\n  this.warn = new Warn({\n    disableWarnings: !!options._disableDeprecationWarnings\n  });\n}\n\n/**\n * Returns a new instance of the popup handler\n *\n * @method buildPopupHandler\n * @private\n */\nPopup.prototype.buildPopupHandler = function() {\n  var pluginHandler = this.baseOptions.plugins.get('popup.getPopupHandler');\n\n  if (pluginHandler) {\n    return pluginHandler.getPopupHandler();\n  }\n\n  return new PopupHandler();\n};\n\n/**\n * Initializes the popup window and returns the instance to be used later in order to avoid being blocked by the browser.\n *\n * @method preload\n * @param {Object} options receives the window height and width and any other window feature to be sent to window.open\n */\nPopup.prototype.preload = function(options) {\n  options = options || {};\n\n  var popup = this.buildPopupHandler();\n\n  popup.preload(options);\n  return popup;\n};\n\n/**\n * Internal use.\n *\n * @method getPopupHandler\n * @private\n */\nPopup.prototype.getPopupHandler = function(options, preload) {\n  if (options.popupHandler) {\n    return options.popupHandler;\n  }\n\n  if (preload) {\n    return this.preload(options);\n  }\n\n  return this.buildPopupHandler();\n};\n\n/**\n * Handles the popup logic for the callback page.\n *\n * @method callback\n * @param {Object} options\n * @param {String} options.hash the url hash. If not provided it will extract from window.location.hash\n * @param {String} [options.state] value originally sent in `state` parameter to {@link authorize} to mitigate XSRF\n * @param {String} [options.nonce] value originally sent in `nonce` parameter to {@link authorize} to prevent replay attacks\n * @see   {@link parseHash}\n */\nPopup.prototype.callback = function(options) {\n  var _this = this;\n  options = options || {};\n  var originUrl =\n    options.popupOrigin || this.baseOptions.popupOrigin || windowHelper.getWindow().origin;\n  _this.webAuth.parseHash(options || {}, function(err, data) {\n    // {a, d} is WinChan's message format.\n    // We have to keep the same format because we're opening the popup with WinChan.\n    var response = { a: 'response', d: data };\n    if (err) {\n      response = { a: 'error', d: err };\n    }\n    windowHelper.getWindow().opener.postMessage(JSON.stringify(response), originUrl);\n  });\n};\n\n/**\n * Shows inside a new window the hosted login page (`/authorize`) in order to start a new authN/authZ transaction and post its result using `postMessage`.\n *\n * @method authorize\n * @param {Object} options\n * @param {String} [options.domain] your Auth0 domain\n * @param {String} [options.clientID] your Auth0 client identifier obtained when creating the client in the Auth0 Dashboard\n * @param {String} options.redirectUri url that the Auth0 will redirect after Auth with the Authorization Response\n * @param {String} options.responseType type of the response used by OAuth 2.0 flow. It can be any space separated list of the values `code`, `token`, `id_token`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0}\n * @param {String} [options.responseMode] how the Auth response is encoded and redirected back to the client. Supported values are `query`, `fragment` and `form_post`. The `query` value is only supported when `responseType` is `code`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#ResponseModes}\n * @param {String} [options.state] value used to mitigate XSRF attacks. {@link https://auth0.com/docs/protocols/oauth2/oauth-state}\n * @param {String} [options.nonce] value used to mitigate replay attacks when using Implicit Grant. {@link https://auth0.com/docs/api-auth/tutorials/nonce}\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @param {Boolean} [options.owp] determines if Auth0 should render the relay page or not and the caller is responsible of handling the response.\n * @param {authorizeCallback} cb\n * @see {@link https://auth0.com/docs/api/authentication#authorize-client}\n */\nPopup.prototype.authorize = function(options, cb) {\n  var popup;\n  var url;\n  var relayUrl;\n  var popOpts = {};\n\n  var pluginHandler = this.baseOptions.plugins.get('popup.authorize');\n\n  var params = objectHelper\n    .merge(this.baseOptions, [\n      'clientID',\n      'scope',\n      'domain',\n      'audience',\n      'tenant',\n      'responseType',\n      'redirectUri',\n      '_csrf',\n      'state',\n      '_intstate',\n      'nonce'\n    ])\n    .with(objectHelper.blacklist(options, ['popupHandler']));\n\n  assert.check(\n    params,\n    { type: 'object', message: 'options parameter is not valid' },\n    {\n      responseType: { type: 'string', message: 'responseType option is required' }\n    }\n  );\n\n  // the relay page should not be necesary as long it happens in the same domain\n  // (a redirectUri shoul be provided). It is necesary when using OWP\n  relayUrl = urljoin(this.baseOptions.rootUrl, 'relay.html');\n\n  // if a owp is enabled, it should use the owp flag\n  if (options.owp) {\n    // used by server to render the relay page instead of sending the chunk in the\n    // url to the callback\n    params.owp = true;\n  } else {\n    popOpts.origin = urlHelper.extractOrigin(params.redirectUri);\n    relayUrl = params.redirectUri;\n  }\n\n  if (options.popupOptions) {\n    popOpts.popupOptions = objectHelper.pick(options.popupOptions, ['width', 'height']);\n  }\n\n  if (pluginHandler) {\n    params = pluginHandler.processParams(params);\n  }\n\n  params = this.transactionManager.process(params);\n  params.scope = params.scope || 'openid profile email';\n  delete params.domain;\n\n  url = this.client.buildAuthorizeUrl(params);\n\n  popup = this.getPopupHandler(options);\n\n  return popup.load(url, relayUrl, popOpts, responseHandler(cb));\n};\n\n/**\n * Performs authentication with username/email and password with a database connection inside a new window\n *\n * This method is not compatible with API Auth so if you need to fetch API tokens with audience\n * you should use {@link authorize} or {@link login}.\n *\n * @method loginWithCredentials\n * @param {Object} options\n * @param {String} [options.redirectUri] url that the Auth0 will redirect after Auth with the Authorization Response\n * @param {String} [options.responseType] type of the response used. It can be any of the values `code` and `token`\n * @param {String} [options.responseMode] how the AuthN response is encoded and redirected back to the client. Supported values are `query` and `fragment`. The `query` value is only supported when `responseType` is `code`.\n * @param {String} [options.scope] scopes to be requested during AuthN. e.g. `openid email`\n * @param {credentialsCallback} cb\n */\nPopup.prototype.loginWithCredentials = function(options, cb) {\n  options.realm = options.realm || options.connection;\n  options.popup = true;\n  options = objectHelper\n    .merge(this.baseOptions, ['responseType', 'state', 'nonce'])\n    .with(objectHelper.blacklist(options, ['popupHandler', 'connection']));\n  options = this.transactionManager.process(options);\n  this.crossOriginAuthentication.login(options, cb);\n};\n\n/**\n * Verifies the passwordless TOTP and redirects to finish the passwordless transaction\n *\n * @method passwordlessVerify\n * @param {Object} options\n * @param {String} options.type `sms` or `email`\n * @param {String} options.phoneNumber only if type = sms\n * @param {String} options.email only if type = email\n * @param {String} options.connection the connection name\n * @param {String} options.verificationCode the TOTP code\n * @param {Function} cb\n */\nPopup.prototype.passwordlessVerify = function(options, cb) {\n  var _this = this;\n  return this.client.passwordless.verify(\n    objectHelper.blacklist(options, ['popupHandler']),\n    function(err) {\n      if (err) {\n        return cb(err);\n      }\n\n      options.username = options.phoneNumber || options.email;\n      options.password = options.verificationCode;\n\n      delete options.email;\n      delete options.phoneNumber;\n      delete options.verificationCode;\n      delete options.type;\n\n      _this.client.loginWithResourceOwner(options, cb);\n    }\n  );\n};\n\n/**\n * Signs up a new user and automatically logs the user in after the signup.\n *\n * This method is not compatible with API Auth so if you need to fetch API tokens with audience\n * you should use {@link authorize} or {@link signupAndAuthorize}.\n *\n * @method signupAndLogin\n * @param {Object} options\n * @param {String} options.email user email address\n * @param {String} options.password user password\n * @param {String} options.connection name of the connection where the user will be created\n * @param {credentialsCallback} cb\n */\nPopup.prototype.signupAndLogin = function(options, cb) {\n  var _this = this;\n\n  // Preload popup to avoid the browser to block it since the login happens later\n  var popupHandler = this.getPopupHandler(options, true);\n  options.popupHandler = popupHandler;\n\n  return this.client.dbConnection.signup(\n    objectHelper.blacklist(options, ['popupHandler']),\n    function(err) {\n      if (err) {\n        if (popupHandler._current_popup) {\n          popupHandler._current_popup.kill();\n        }\n        return cb(err);\n      }\n      _this.loginWithCredentials(options, cb);\n    }\n  );\n};\n\nmodule.exports = Popup;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/auth0-js/src/web-auth/popup.js\n// module id = 596\n// module chunks = 0","// given a URL, extract the origin. Taken from: https://github.com/firebase/firebase-simple-login/blob/d2cb95b9f812d8488bdbfba51c3a7c153ba1a074/js/src/simple-login/transports/WinChan.js#L25-L30\nfunction extractOrigin(url) {\n  if (!/^https?:\\/\\//.test(url)) url = window.location.href;\n  var m = /^(https?:\\/\\/[-_a-zA-Z.0-9:]+)/.exec(url);\n  if (m) return m[1];\n  return url;\n}\n\nmodule.exports = {\n  extractOrigin: extractOrigin\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/auth0-js/src/helper/url.js\n// module id = 597\n// module chunks = 0","/* eslint-disable no-restricted-syntax */\n/* eslint-disable guard-for-in */\nvar WinChan = require('winchan');\n\nvar windowHandler = require('./window');\nvar objectHelper = require('./object');\nvar qs = require('qs');\n\nfunction PopupHandler() {\n  this._current_popup = null;\n}\n\nPopupHandler.prototype.calculatePosition = function(options) {\n  var width = options.width || 500;\n  var height = options.height || 600;\n  var _window = windowHandler.getWindow();\n\n  var screenX = typeof _window.screenX !== 'undefined' ? _window.screenX : _window.screenLeft;\n  var screenY = typeof _window.screenY !== 'undefined' ? _window.screenY : _window.screenTop;\n\n  var outerWidth = typeof _window.outerWidth !== 'undefined'\n    ? _window.outerWidth\n    : _window.document.body.clientWidth;\n\n  var outerHeight = typeof _window.outerHeight !== 'undefined'\n    ? _window.outerHeight\n    : _window.document.body.clientHeight;\n\n  var left = (outerWidth - width) / 2;\n  var top = (outerHeight - height) / 2;\n\n  return { width: width, height: height, left: screenX + left, top: screenY + top };\n};\n\nPopupHandler.prototype.preload = function(options) {\n  var _this = this;\n  var _window = windowHandler.getWindow();\n  var popupPosition = this.calculatePosition(options.popupOptions || {});\n  var popupOptions = objectHelper.merge(popupPosition).with(options.popupOptions);\n  var url = options.url || 'about:blank';\n  var windowFeatures = qs.stringify(popupOptions, {\n    encode: false,\n    delimiter: ','\n  });\n\n  if (this._current_popup && !this._current_popup.closed) {\n    return this._current_popup;\n  }\n\n  this._current_popup = _window.open(url, 'auth0_signup_popup', windowFeatures);\n\n  this._current_popup.kill = function() {\n    this.close();\n    _this._current_popup = null;\n  };\n\n  return this._current_popup;\n};\n\nPopupHandler.prototype.load = function(url, relayUrl, options, cb) {\n  var _this = this;\n  var popupPosition = this.calculatePosition(options.popupOptions || {});\n  var popupOptions = objectHelper.merge(popupPosition).with(options.popupOptions);\n\n  var winchanOptions = objectHelper\n    .merge({\n      url: url,\n      relay_url: relayUrl,\n      window_features: qs.stringify(popupOptions, {\n        delimiter: ',',\n        encode: false\n      }),\n      popup: this._current_popup\n    })\n    .with(options);\n\n  var popup = WinChan.open(winchanOptions, function(err, data) {\n    _this._current_popup = null;\n    return cb(err, data);\n  });\n\n  popup.focus();\n\n  return popup;\n};\n\nmodule.exports = PopupHandler;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/auth0-js/src/helper/popup-handler.js\n// module id = 598\n// module chunks = 0","var WinChan = (function() {\n  var RELAY_FRAME_NAME = \"__winchan_relay_frame\";\n  var CLOSE_CMD = \"die\";\n\n  // a portable addListener implementation\n  function addListener(w, event, cb) {\n    if(w.attachEvent) w.attachEvent('on' + event, cb);\n    else if (w.addEventListener) w.addEventListener(event, cb, false);\n  }\n\n  // a portable removeListener implementation\n  function removeListener(w, event, cb) {\n    if(w.detachEvent) w.detachEvent('on' + event, cb);\n    else if (w.removeEventListener) w.removeEventListener(event, cb, false);\n  }\n\n\n  // checking for IE8 or above\n  function isInternetExplorer() {\n    if (typeof navigator === 'undefined') {\n      return false;\n    }\n\n    var rv = -1; // Return value assumes failure.\n    var ua = navigator.userAgent;\n    if (navigator.appName === 'Microsoft Internet Explorer') {\n      var re = new RegExp(\"MSIE ([0-9]{1,}[\\.0-9]{0,})\");\n      if (re.exec(ua) != null)\n        rv = parseFloat(RegExp.$1);\n    }\n    // IE > 11\n    else if (ua.indexOf(\"Trident\") > -1) {\n      var re = new RegExp(\"rv:([0-9]{2,2}[\\.0-9]{0,})\");\n      if (re.exec(ua) !== null) {\n        rv = parseFloat(RegExp.$1);\n      }\n    }\n\n    return rv >= 8;\n  }\n\n  // checking Mobile Firefox (Fennec)\n  function isFennec() {\n    try {\n      // We must check for both XUL and Java versions of Fennec.  Both have\n      // distinct UA strings.\n      var userAgent = navigator.userAgent;\n      return (userAgent.indexOf('Fennec/') != -1) ||  // XUL\n             (userAgent.indexOf('Firefox/') != -1 && userAgent.indexOf('Android') != -1);   // Java\n    } catch(e) {}\n    return false;\n  }\n\n  // feature checking to see if this platform is supported at all\n  function isSupported() {\n    return (typeof window !== 'undefined' && window.JSON && window.JSON.stringify &&\n            window.JSON.parse && window.postMessage);\n  }\n\n  // given a URL, extract the origin. Taken from: https://github.com/firebase/firebase-simple-login/blob/d2cb95b9f812d8488bdbfba51c3a7c153ba1a074/js/src/simple-login/transports/WinChan.js#L25-L30\n  function extractOrigin(url) {\n    if (!/^https?:\\/\\//.test(url)) url = window.location.href;\n    var m = /^(https?:\\/\\/[\\-_a-zA-Z\\.0-9:]+)/.exec(url);\n    if (m) return m[1];\n    return url;\n  }\n\n  // find the relay iframe in the opener\n  function findRelay() {\n    var loc = window.location;\n    var frames = window.opener.frames;\n    for (var i = frames.length - 1; i >= 0; i--) {\n      try {\n        if (frames[i].location.protocol === window.location.protocol &&\n            frames[i].location.host === window.location.host &&\n            frames[i].name === RELAY_FRAME_NAME)\n        {\n          return frames[i];\n        }\n      } catch(e) { }\n    }\n    return;\n  }\n\n  var isIE = isInternetExplorer();\n\n  if (isSupported()) {\n    /*  General flow:\n     *                  0. user clicks\n     *  (IE SPECIFIC)   1. caller adds relay iframe (served from trusted domain) to DOM\n     *                  2. caller opens window (with content from trusted domain)\n     *                  3. window on opening adds a listener to 'message'\n     *  (IE SPECIFIC)   4. window on opening finds iframe\n     *                  5. window checks if iframe is \"loaded\" - has a 'doPost' function yet\n     *  (IE SPECIFIC5)  5a. if iframe.doPost exists, window uses it to send ready event to caller\n     *  (IE SPECIFIC5)  5b. if iframe.doPost doesn't exist, window waits for frame ready\n     *  (IE SPECIFIC5)  5bi. once ready, window calls iframe.doPost to send ready event\n     *                  6. caller upon reciept of 'ready', sends args\n     */\n    return {\n      open: function(opts, cb) {\n        if (!cb) throw \"missing required callback argument\";\n\n        // test required options\n        var err;\n        if (!opts.url) err = \"missing required 'url' parameter\";\n        if (!opts.relay_url) err = \"missing required 'relay_url' parameter\";\n        if (err) setTimeout(function() { cb(err); }, 0);\n\n        // supply default options\n        if (!opts.window_name) opts.window_name = null;\n        if (!opts.window_features || isFennec()) opts.window_features = undefined;\n\n        // opts.params may be undefined\n\n        var iframe;\n\n        // sanity check, are url and relay_url the same origin?\n        var origin = opts.origin || extractOrigin(opts.url);\n        if (origin !== extractOrigin(opts.relay_url)) {\n          return setTimeout(function() {\n            cb('invalid arguments: origin of url and relay_url must match');\n          }, 0);\n        }\n\n        var messageTarget;\n\n        if (isIE) {\n          // first we need to add a \"relay\" iframe to the document that's served\n          // from the target domain.  We can postmessage into a iframe, but not a\n          // window\n          iframe = document.createElement(\"iframe\");\n          // iframe.setAttribute('name', framename);\n          iframe.setAttribute('src', opts.relay_url);\n          iframe.style.display = \"none\";\n          iframe.setAttribute('name', RELAY_FRAME_NAME);\n          document.body.appendChild(iframe);\n          messageTarget = iframe.contentWindow;\n        }\n\n        var w = opts.popup || window.open(opts.url, opts.window_name, opts.window_features);\n        if (opts.popup) {\n          w.location.href = opts.url;\n        }\n\n        if (!messageTarget) messageTarget = w;\n\n        // lets listen in case the window blows up before telling us\n        var closeInterval = setInterval(function() {\n          if (w && w.closed) {\n            cleanup();\n            if (cb) {\n              cb('User closed the popup window');\n              cb = null;\n            }\n          }\n        }, 500);\n\n        var req = JSON.stringify({a: 'request', d: opts.params});\n\n        // cleanup on unload\n        function cleanup() {\n          if (iframe) document.body.removeChild(iframe);\n          iframe = undefined;\n          if (closeInterval) closeInterval = clearInterval(closeInterval);\n          removeListener(window, 'message', onMessage);\n          removeListener(window, 'unload', cleanup);\n          if (w) {\n            try {\n              w.close();\n            } catch (securityViolation) {\n              // This happens in Opera 12 sometimes\n              // see https://github.com/mozilla/browserid/issues/1844\n              messageTarget.postMessage(CLOSE_CMD, origin);\n            }\n          }\n          w = messageTarget = undefined;\n        }\n\n        addListener(window, 'unload', cleanup);\n\n        function onMessage(e) {\n          if (e.origin !== origin) { return; }\n          try {\n            var d = JSON.parse(e.data);\n          } catch(err) {\n            if (cb) {\n              cb(err);\n            } else {\n              throw err;\n            }\n          }\n\n          if (d.a === 'ready') {\n            messageTarget.postMessage(req, origin);\n          } else if (d.a === 'error') {\n            cleanup();\n            if (cb) {\n              cb(d.d);\n              cb = null;\n            }\n          } else if (d.a === 'response') {\n            cleanup();\n            if (cb) {\n              cb(null, d.d);\n              cb = null;\n            }\n          }\n        }\n\n        addListener(window, 'message', onMessage);\n\n        return {\n          close: cleanup,\n          focus: function() {\n            if (w) {\n              try {\n                w.focus();\n              } catch (e) {\n                // IE7 blows up here, do nothing\n              }\n            }\n          }\n        };\n      },\n      onOpen: function(cb) {\n        var o = \"*\";\n        var msgTarget = isIE ? findRelay() : window.opener;\n        if (!msgTarget) throw \"can't find relay frame\";\n        function doPost(msg) {\n          msg = JSON.stringify(msg);\n          if (isIE) msgTarget.doPost(msg, o);\n          else msgTarget.postMessage(msg, o);\n        }\n\n        function onMessage(e) {\n          // only one message gets through, but let's make sure it's actually\n          // the message we're looking for (other code may be using\n          // postmessage) - we do this by ensuring the payload can\n          // be parsed, and it's got an 'a' (action) value of 'request'.\n          var d;\n          try {\n            d = JSON.parse(e.data);\n          } catch(err) { }\n          if (!d || d.a !== 'request') return;\n          removeListener(window, 'message', onMessage);\n          o = e.origin;\n          if (cb) {\n            // this setTimeout is critically important for IE8 -\n            // in ie8 sometimes addListener for 'message' can synchronously\n            // cause your callback to be invoked.  awesome.\n            setTimeout(function() {\n              cb(o, d.d, function(r) {\n                cb = undefined;\n                doPost({a: 'response', d: r});\n              });\n            }, 0);\n          }\n        }\n\n        function onDie(e) {\n          if (e.data === CLOSE_CMD) {\n            try { window.close(); } catch (o_O) {}\n          }\n        }\n        addListener(isIE ? msgTarget : window, 'message', onMessage);\n        addListener(isIE ? msgTarget : window, 'message', onDie);\n\n        // we cannot post to our parent that we're ready before the iframe\n        // is loaded. (IE specific possible failure)\n        try {\n          doPost({a: \"ready\"});\n        } catch(e) {\n          // this code should never be exectued outside IE\n          addListener(msgTarget, 'load', function(e) {\n            doPost({a: \"ready\"});\n          });\n        }\n\n        // if window is unloaded and the client hasn't called cb, it's an error\n        var onUnload = function() {\n          try {\n            // IE8 doesn't like this...\n            removeListener(isIE ? msgTarget : window, 'message', onDie);\n          } catch (ohWell) { }\n          if (cb) doPost({ a: 'error', d: 'client closed window' });\n          cb = undefined;\n          // explicitly close the window, in case the client is trying to reload or nav\n          try { window.close(); } catch (e) { }\n        };\n        addListener(window, 'unload', onUnload);\n        return {\n          detach: function() {\n            removeListener(window, 'unload', onUnload);\n          }\n        };\n      }\n    };\n  } else {\n    return {\n      open: function(url, winopts, arg, cb) {\n        setTimeout(function() { cb(\"unsupported browser\"); }, 0);\n      },\n      onOpen: function(cb) {\n        setTimeout(function() { cb(\"unsupported browser\"); }, 0);\n      }\n    };\n  }\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n  module.exports = WinChan;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/winchan/winchan.js\n// module id = 599\n// module chunks = 0","var IframeHandler = require('../helper/iframe-handler');\nvar windowHelper = require('../helper/window');\n\nfunction SilentAuthenticationHandler(options) {\n  this.authenticationUrl = options.authenticationUrl;\n  this.timeout = options.timeout || 60 * 1000;\n  this.handler = null;\n  this.postMessageDataType = options.postMessageDataType || false;\n  this.postMessageOrigin = options.postMessageOrigin || windowHelper.getWindow().origin;\n}\n\nSilentAuthenticationHandler.create = function(options) {\n  return new SilentAuthenticationHandler(options);\n};\n\nSilentAuthenticationHandler.prototype.login = function(usePostMessage, callback) {\n  this.handler = new IframeHandler({\n    auth0: this.auth0,\n    url: this.authenticationUrl,\n    eventListenerType: usePostMessage ? 'message' : 'load',\n    callback: this.getCallbackHandler(callback, usePostMessage),\n    timeout: this.timeout,\n    eventValidator: this.getEventValidator(),\n    timeoutCallback: function() {\n      callback(null, '#error=timeout&error_description=Timeout+during+authentication+renew.');\n    },\n    usePostMessage: usePostMessage || false\n  });\n\n  this.handler.init();\n};\n\nSilentAuthenticationHandler.prototype.getEventValidator = function() {\n  var _this = this;\n  return {\n    isValid: function(eventData) {\n      switch (eventData.event.type) {\n        case 'message':\n          // Message must come from the expected origin and iframe window.\n          if (\n            eventData.event.origin !== _this.postMessageOrigin ||\n            eventData.event.source !== _this.handler.iframe.contentWindow\n          ) {\n            return false;\n          }\n\n          // Default behaviour, return all message events from the iframe.\n          if (_this.postMessageDataType === false) {\n            return true;\n          }\n\n          return (\n            eventData.event.data.type && eventData.event.data.type === _this.postMessageDataType\n          );\n\n        case 'load': // Fall through to default\n        default:\n          return true;\n      }\n    }\n  };\n};\n\nSilentAuthenticationHandler.prototype.getCallbackHandler = function(callback, usePostMessage) {\n  return function(eventData) {\n    var callbackValue;\n    if (!usePostMessage) {\n      callbackValue = eventData.sourceObject.contentWindow.location.hash;\n    } else if (typeof eventData.event.data === 'object' && eventData.event.data.hash) {\n      callbackValue = eventData.event.data.hash;\n    } else {\n      callbackValue = eventData.event.data;\n    }\n    callback(null, callbackValue);\n  };\n};\n\nmodule.exports = SilentAuthenticationHandler;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/auth0-js/src/web-auth/silent-authentication-handler.js\n// module id = 600\n// module chunks = 0","// removed by extract-text-webpack-plugin\nmodule.exports = {\"mainLayoutStyling\":\"mainLayoutStyling\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Layouts/Layout.css\n// module id = 601\n// module chunks = 0","import React, {Component} from 'react';\n\nimport Input from '../../components/common/UI/Input/Input';\nimport GroceryListHeader from '../../components/GroceryList/GroceryListHeader/GroceryListHeader';\nimport GroceryListBody from '../../components/GroceryList/GroceryListBody/GroceryListBody';\nimport Modal from '../../components/Common/UI/Modal/Modal';\n\nimport Aux from '../../hoc/Aux/Aux';\n\n\nclass GroceryList extends Component {\n\n    // old way of doing state\n    // constructor(props) {\n    //    super(props);\n    //    this.state = {...};\n    // }\n\n    state = {\n        list: {\n            _id: '5a2d921e706e519564ff1139',\n            userId: '5a2d921e706e519564ff1139',\n            groupId: '5a2d921e706e519564ff1139',\n            inventoryId: '5a2d921e706e519564ff1139',\n            listName: 'rdavis9 Primary',\n            groupName: 'rdavis9',\n            summary: {},\n            totalPrice: '',\n            quantity: 1,\n            listItems: [\n                {\n                        itemId: '123456',\n                        item_name: \"Campbell's Cheddar Cheese Soup\",\n                        net_wt: '10.75',\n                        wt_uom: 'oz',\n                        dept: 'grocery',\n                        deptDisplayName: 'grocery',\n                        categories: ['canned goods', 'pantry', 'test', 'health and nutrition'],\n                        price_avg: '1.50',\n                        quantity: 1,\n                        recurring: false,\n                        useBulk: true,\n                        upc: '051000014771',\n                        ean: '',\n                        currentlySuggested: false\n\n\n                },\n                {\n                    itemId: '234567',\n                        item_name: \"Hamburger Meat\",\n                        net_wt: '1',\n                        wt_uom: 'lb',\n                        dept: 'meat',\n                        deptDisplayName: 'Meat',\n                        categories: ['ground beef'],\n                        price_avg: '2.50',\n                        quantity: 2,\n                        recurring: true,\n                        useBulk: true,\n                        upc: '',\n                        ean: '',\n                        currentlySuggested: true\n\n\n                },\n                {\n                    itemId: '34567',\n                    item_name: \"Shampoo\",\n                    net_wt: '32',\n                    wt_uom: 'oz',\n                    dept: 'health',\n                    deptDisplayName: 'Health',\n                    categories: ['hair care'],\n                    price_avg: '3.50',\n                    quantity: 1,\n                    recurring: true,\n                    useBulk: true,\n                    upc: '',\n                    ean: '',\n                    currentlySuggested: false\n\n\n                }\n            ],\n            dateCreated: '2018-01-07T19:57:59.837Z',\n            lastUpdated: '2017-12-10T19:59:26.211Z'\n\n        }\n    };\n\n    addItemHandler = (itemId) => {\n        console.log('addItemHandler loaded', this.state);\n        let currentItem = this.state.list.listItems\n            .filter((item) => { return item.itemId === itemId })\n            .map()\n\n        console.log('currentItem', currentItem);\n\n        const oldQuantity = currentItem[0].quantity;\n\n        console.log(oldQuantity);\n/*\n        const updatedQuantity = oldQuantity + 1;\n        const updatedItem = {\n            ...currentItem[0]\n        };\n        updatedItem.quantity = updatedQuantity;\n        console.log('updatedQuantity', updatedQuantity);\n        console.log('updatedItem', updatedItem);\n\n        let testQuantity = updatedQuantity;\n\n\n        this.setState((state) => ({\n            list: {...this.state.list, listItems: {...this.state.list.listItems, quantity: state.list.listItems.quantity + 1}}\n        }));\n\n*/\n        console.log('state loaded', this.state);\n\n    };\n\n    render() {\n        console.log('list loaded');\n        return (\n            <Aux>\n                <Modal/>\n                <div className=\"panel panel-primary\" style={{maxWidth: '500px'}}>\n                    <div className=\"panel-heading\">\n                        <GroceryListHeader\n                            listId={this.state.list._id}\n                            listName={this.state.list.listName}\n                            listGroupName={this.state.list.groupName}\n                            lastLastUpdated={this.state.list.lastUpdated}\n                            listCreated={this.state.list.dateCreated}\n                        />\n                    </div>\n                    <div className=\"panel-body\">\n                        <button type=\"button\" onClick={() => this.addItemHandler('123456')}>test</button>\n                        <GroceryListBody\n                            itemList={this.state.list.listItems}\n                            itemAdded={this.addItemHandler}\n\n                        />\n                    </div>\n                    <div className=\"panel-footer\">\n                        Panel Footer\n                    </div>\n                </div>\n            </Aux>\n\n        )\n    }\n}\n\n\nexport default GroceryList;\n\n\n\n// WEBPACK FOOTER //\n// src/containers/GroceryList/GroceryList.js","// removed by extract-text-webpack-plugin\nmodule.exports = {\"Input\":\"Input\",\"Label\":\"Label\",\"InputElement\":\"InputElement\",\"Invalid\":\"Invalid\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/common/UI/Input/Input.css\n// module id = 603\n// module chunks = 0","import React from 'react';\n\nimport Aux from '../../../hoc/Aux/Aux';\n\n\nconst groceryListHeader = ( props ) => (\n\n    <Aux>\n        <div className=\"col-md-12\">\n            <div className=\"row\">\n                <div className=\"col-md-6\" style={{fontSize: '15px'}}>\n                    &lt;My Grocery List Name&gt;\n                </div>\n                <div className=\"col-md-6\" style={{textAlign: 'right', fontSize: '12px'}}>\n                    Last Updated:&nbsp;&nbsp;Dec. 2, 2017 3:30 EST\n                </div>\n            </div>\n            <div className=\"row\">\n                <div className=\"col-md-6\">\n                    List Group Name\n                </div>\n                <div className=\"col-md-6\" style={{textAlign: 'right', fontSize: '12px'}}>\n                    Created:&nbsp;&nbsp;Dec. 2, 2017 3:30 EST\n                </div>\n            </div>\n            <div className=\"row\">\n                <div className=\"col-md-6\">\n                    Summary\n                </div>\n                <div className=\"col-md-6\" style={{textAlign: 'right', fontSize: '14px'}}>\n                    &lt;&lt;&nbsp;Change List&nbsp;&gt;&gt;\n                </div>\n            </div>\n\n        </div>\n    </Aux>\n\n);\n\nexport default groceryListHeader;\n\n\n\n// WEBPACK FOOTER //\n// src/components/GroceryList/GroceryListHeader/GroceryListHeader.js","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nimport classes from './GroceryListBody.css';\nimport GroceryListItem from '../GroceryListItem/GroceryListItem';\n\nclass GroceryListBody extends Component {\n    render() {\n\n        let itemsArray = this.props.itemList.map((item, index) => {\n            // console.log(item);\n            return (\n                <div className=\"row\" key={item.itemId + index}>\n                    <GroceryListItem\n                        itemData={item}\n                        addItem={() => this.props.itemAdded(item.itemId)}\n                    />\n                </div>\n            )\n        })\n        .reduce((arr, el) => {\n            return arr.concat(el)\n        }, []);\n\n        if (itemsArray.length === 0) {\n            itemsArray = <p>Please start adding items</p>\n        }\n\n        return (\n            <div className=\"col-md-12\">\n                {itemsArray}\n            </div>\n        );\n    }\n\n}\n\nGroceryListBody.propTypes = {\n    itemList: PropTypes.array.isRequired,\n    itemAdded: PropTypes.func\n};\n\n\nexport default GroceryListBody;\n\n\n// WEBPACK FOOTER //\n// src/components/GroceryList/GroceryListBody/GroceryListBody.js","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/GroceryList/GroceryListBody/GroceryListBody.css\n// module id = 606\n// module chunks = 0","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport Aux from '../../../hoc/Aux/Aux';\n\nimport classes from './GroceryListItem.css';\n\nclass GroceryListItem extends Component {\n    render() {\n        let listItem = null;\n\n        let categories = this.props.itemData.categories.map(category => {\n            return category.toUpperCase() + ', '\n        });\n\n        let itemTotalPrice = (this.props.itemData.quantity * this.props.itemData.price_avg).toFixed(2);\n\n        let itemDisplay = (\n            <Aux>\n                <div className=\"row\">\n                    <div className=\"col-xs-1\">\n                        <input type=\"checkbox\" id={this.props.itemData.itemId} value={this.props.itemData.itemId}/>\n                    </div>\n                    <div className=\"col-xs-1\">\n                        <input\n                            className={classes.quantity}\n                            type=\"number\"\n                            onChange={this.props.addItem}\n                            defaultValue={this.props.itemData.quantity}\n                            step=\"1\"\n                            min=\"1\"\n                            max=\"99\"\n                        />\n                    </div>\n                    <div className=\"col-xs-4\">\n                        {this.props.itemData.item_name}\n                    </div>\n                    <div className=\"col-xs-2\">\n                        &nbsp;&nbsp;&nbsp;&nbsp;{this.props.itemData.deptDisplayName.toUpperCase()}\n                    </div>\n                    <div className=\"col-xs-4\">\n                        <div className=\"text-right itemIcons\" style={{color: '#000000'}}>\n                            <i className=\"fa fa-trash fa-2x\" aria-hidden=\"true\"></i>\n                        </div>\n                        {this.props.itemData.recurring &&\n                        <div className=\"text-right itemIcons\" style={{color: 'green'}}>\n                            <i className=\"fa fa-recycle fa-2x\" aria-hidden=\"true\"></i>\n                        </div>\n                        }\n                        {this.props.itemData.currentlySuggested &&\n                        <div className=\"text-right itemIcons\" style={{color: '#FFCE36'}}>\n                            <i className=\"fa fa-lightbulb-o fa-2x\" aria-hidden=\"true\"></i>\n                        </div>\n                        }\n\n                    </div>\n                </div>\n                <div className=\"row\">\n                    <div className=\"col-xs-1\" style={{whiteSpace: 'nowrap'}}>\n                        $<input\n                            className={classes.quantity}\n                            type=\"number\"\n                            defaultValue={this.props.itemData.price_avg}\n                            step=\"0.01\"\n                            min=\"1\"\n                            max=\"1000\"\n                        />\n                    </div>\n\n                    <div className=\"col-xs-3\">\n                        {this.props.itemData.net_wt}&nbsp;{this.props.itemData.wt_uom}\n                    </div>\n                    <div className=\"col-xs-5\">\n                        {categories}\n                    </div>\n                    <div className=\"col-xs-3 price\">\n                        Total:&nbsp;&nbsp;${itemTotalPrice}\n                    </div>\n                </div>\n            </Aux>\n\n        );\n\n\n        switch (this.props.itemData.dept) {\n            case ('baby'):\n                listItem = (\n                    <div className={classes.babyItem}>\n                        {itemDisplay}\n                    </div>\n                );\n                break;\n            case ('bakery'):\n                listItem = (\n                    <div className={classes.bakeryItem}>\n                        {itemDisplay}\n                    </div>\n                );\n                break;\n            case ('beauty'):\n                listItem = (\n                    <div className={classes.beautyItem}>\n                        {itemDisplay}\n                    </div>\n                );\n                break;\n            case ('beer'):\n                listItem = (\n                    <div className={classes.beerItem}>\n                        {itemDisplay}\n                    </div>\n                );\n                break;\n            case ('beverages'):\n                listItem = (\n                    <div className={classes.beveragesItem}>\n                        {itemDisplay}\n                    </div>\n                );\n                break;\n            case ('dairy'):\n                listItem = (\n                    <div className={classes.dairyItem}>\n                        {itemDisplay}\n                    </div>\n                );\n                break;\n            case ('deli'):\n                listItem = (\n                    <div className={classes.deliItem}>\n                        {itemDisplay}\n                    </div>\n                );\n                break;\n            case ('frozen'):\n                listItem = (\n                    <div className={classes.frozenItem}>\n                        {itemDisplay}\n                    </div>\n                );\n                break;\n            case ('grocery'):\n                listItem = (\n                    <div className={classes.groceryItem}>\n                        {itemDisplay}\n                    </div>\n                );\n                break;\n            case ('health'):\n                listItem = (\n                    <div className={classes.healthItem}>\n                        {itemDisplay}\n                    </div>\n                );\n                break;\n            case ('household'):\n                listItem = (\n                    <div className={classes.householdItem}>\n                        {itemDisplay}\n                    </div>\n                );\n                break;\n            case ('liquor'):\n                listItem = (\n                    <div className={classes.liquorItem}>\n                        {itemDisplay}\n                    </div>\n                );\n                break;\n            case ('meat'):\n                listItem = (\n                    <div className={classes.meatItem}>\n                        {itemDisplay}\n                    </div>\n                );\n                break;\n            case ('organic'):\n                listItem = (\n                    <div className={classes.organicItem}>\n                        {itemDisplay}\n                    </div>\n                );\n                break;\n            case ('pet'):\n                listItem = (\n                    <div className={classes.petItem}>\n                        {itemDisplay}\n                    </div>\n                );\n                break;\n            case ('pharmacy'):\n                listItem = (\n                    <div className={classes.pharmacyItem}>\n                        {itemDisplay}\n                    </div>\n                );\n                break;\n            case ('produce'):\n                listItem = (\n                    <div className={classes.produceItem}>\n                        {itemDisplay}\n                    </div>\n                );\n                break;\n            case ('seafood'):\n                listItem = (\n                    <div className={classes.seafoodItem}>\n                        {itemDisplay}\n                    </div>\n                );\n                break;\n            case ('wine'):\n                listItem = (\n                    <div className={classes.wineItem}>\n                        {itemDisplay}\n                    </div>\n                );\n                break;\n            case ('other'):\n                listItem = (\n                    <div className={classes.otherItem}>\n                        {itemDisplay}\n                    </div>\n                );\n                break;\n            default:\n                listItem = null;\n        }\n\n        return listItem;\n    }\n\n}\n\nGroceryListItem.propTypes = {\n    itemData: PropTypes.object.isRequired,\n    addItem: PropTypes.func\n};\n\n\nexport default GroceryListItem;\n\n\n// WEBPACK FOOTER //\n// src/components/GroceryList/GroceryListItem/GroceryListItem.js","// removed by extract-text-webpack-plugin\nmodule.exports = {\"itemCheckbox\":\"itemCheckbox\",\"itemIcons\":\"itemIcons\",\"price\":\"price\",\"quantity\":\"quantity\",\"row\":\"row\",\"babyItem\":\"babyItem\",\"bakeryItem\":\"bakeryItem\",\"beautyItem\":\"beautyItem\",\"beerItem\":\"beerItem\",\"beveragesItem\":\"beveragesItem\",\"dairyItem\":\"dairyItem\",\"deliItem\":\"deliItem\",\"frozenItem\":\"frozenItem\",\"groceryItem\":\"groceryItem\",\"healthItem\":\"healthItem\",\"householdItem\":\"householdItem\",\"liquorItem\":\"liquorItem\",\"meatItem\":\"meatItem\",\"organicItem\":\"organicItem\",\"petItem\":\"petItem\",\"pharmacyItem\":\"pharmacyItem\",\"produceItem\":\"produceItem\",\"seafoodItem\":\"seafoodItem\",\"wineItem\":\"wineItem\",\"otherItem\":\"otherItem\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/GroceryList/GroceryListItem/GroceryListItem.css\n// module id = 608\n// module chunks = 0","import React, { Component } from 'react';\n\nimport classes from './Modal.css';\nimport Aux from '../../../../hoc/Aux/Aux';\nimport Backdrop from '../Backdrop/Backdrop';\n\nclass Modal extends Component {\n\n    shouldComponentUpdate ( nextProps, nextState ) {\n        return nextProps.show !== !this.props.show || nextProps.children !== this.props.children;\n    }\n\n    componentWillUpdate () {\n        console.log('[Modal] WillUpdate');\n    }\n\n    render () {\n        return (\n            <Aux>\n                <Backdrop show={this.props.show} clicked={this.props.modalClosed} />\n                <div\n                    className={classes.Modal}\n                    style={{\n                        transform: this.props.show ? 'translateY(0)' : 'translateY(-100vh)',\n                        opacity: this.props.show ? '1' : '0'\n                    }}>\n                    {this.props.children}\n                </div>\n            </Aux>\n        )\n    }\n}\n\nexport default Modal;\n\n\n// WEBPACK FOOTER //\n// src/components/Common/UI/Modal/Modal.js","// removed by extract-text-webpack-plugin\nmodule.exports = {\"Modal\":\"Modal\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Common/UI/Modal/Modal.css\n// module id = 610\n// module chunks = 0","import React from 'react';\n\nimport classes from './Backdrop.css';\n\nconst backdrop = (props) => (\n    props.show ? <div className={classes.Backdrop} onClick={props.clicked}></div> : null\n);\n\nexport default backdrop;\n\n\n// WEBPACK FOOTER //\n// src/components/Common/UI/Backdrop/Backdrop.js","// removed by extract-text-webpack-plugin\nmodule.exports = {\"Backdrop\":\"Backdrop\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Common/UI/Backdrop/Backdrop.css\n// module id = 612\n// module chunks = 0","// removed by extract-text-webpack-plugin\nmodule.exports = {\"homeContainer\":\"homeContainer\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Home/Home.css\n// module id = 613\n// module chunks = 0","import * as actionTypes from './actionTypes';\nimport axios from 'axios';\n// import config from '../../../server/config';\nimport setAuthToken from '../utils/setAuthToken';\nlet jwtDecode = require('jwt-decode');\nimport Auth from '../../Auth/Auth.js';\n\nconst authService = new Auth();\n\nexport const authSetProfile = () => {\n    const idToken = localStorage.getItem('id_token');\n    const glpToken = localStorage.getItem('glp_token');\n\n    if (idToken) {\n        const profileInfo = jwtDecode(idToken);\n\n\n        if (!glpToken) {\n            return dispatch => {\n                dispatch(auth(profileInfo.email));\n            }\n        } else {\n            const user = jwtDecode(glpToken);\n            setAuthToken(glpToken);\n\n            console.log('glp_userInfo', user.user);\n\n            // set user info\n            return {\n                type: actionTypes.AUTH_SET_PROFILE,\n                token: glpToken,\n                user: user.user\n            };\n\n        }\n    } else {\n        authService.logout();\n    }\n};\n\nexport const authStart = () => {\n    return {\n        type: actionTypes.AUTH_START\n    };\n};\n\nexport const authSuccess = (token) => {\n    localStorage.setItem('glp_token', token);\n    setAuthToken(token);\n    let profileInfo = jwtDecode(token).user;\n\n    console.log('glp_userInfo', profileInfo);\n\n    return {\n        type: actionTypes.AUTH_SUCCESS,\n        token: token,\n        user: profileInfo\n    };\n\n\n};\n\nexport const authFail = (error) => {\n    return {\n        type: actionTypes.AUTH_FAIL,\n        error: error\n    };\n};\n\nexport const logout = () => {\n    localStorage.removeItem('token');\n    return {\n        type: actionTypes.AUTH_LOGOUT\n    };\n};\n\nexport const checkAuthTimeout = () => {\n    return dispatch => {\n        if (!authService.isAuthenticated()) {\n            dispatch(authService.logout());\n        } else {\n            return true;\n        }\n    };\n};\n\nexport const auth = (email) => {\n    return dispatch => {\n        dispatch(authStart());\n        const authData = {\n            email: email,\n            returnSecureToken: true\n        };\n\n        axios.post('/api/signin', authData)\n            .then(response => {\n\n                const token = response.data.token;\n                dispatch(authSuccess(token));\n                // dispatch(checkAuthTimeout());\n\n            })\n            .catch(error => {\n                dispatch(authFail(error.response.data.error));\n                console.log('**** login failed', error.response.data.error);\n\n            })\n    }\n};\n\n\n\n// WEBPACK FOOTER //\n// src/store/actions/auth.js","var atob = require('./atob');\n\nfunction b64DecodeUnicode(str) {\n  return decodeURIComponent(atob(str).replace(/(.)/g, function (m, p) {\n    var code = p.charCodeAt(0).toString(16).toUpperCase();\n    if (code.length < 2) {\n      code = '0' + code;\n    }\n    return '%' + code;\n  }));\n}\n\nmodule.exports = function(str) {\n  var output = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n  switch (output.length % 4) {\n    case 0:\n      break;\n    case 2:\n      output += \"==\";\n      break;\n    case 3:\n      output += \"=\";\n      break;\n    default:\n      throw \"Illegal base64url string!\";\n  }\n\n  try{\n    return b64DecodeUnicode(output);\n  } catch (err) {\n    return atob(output);\n  }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jwt-decode/lib/base64_url_decode.js\n// module id = 615\n// module chunks = 0","/**\n * The code was extracted from:\n * https://github.com/davidchambers/Base64.js\n */\n\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\nfunction InvalidCharacterError(message) {\n  this.message = message;\n}\n\nInvalidCharacterError.prototype = new Error();\nInvalidCharacterError.prototype.name = 'InvalidCharacterError';\n\nfunction polyfill (input) {\n  var str = String(input).replace(/=+$/, '');\n  if (str.length % 4 == 1) {\n    throw new InvalidCharacterError(\"'atob' failed: The string to be decoded is not correctly encoded.\");\n  }\n  for (\n    // initialize result and counters\n    var bc = 0, bs, buffer, idx = 0, output = '';\n    // get next character\n    buffer = str.charAt(idx++);\n    // character found in table? initialize bit storage and add its ascii value;\n    ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,\n      // and if not first of each 4 characters,\n      // convert the first 8 bits to one ascii character\n      bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0\n  ) {\n    // try to find character in table (0-63, not found => -1)\n    buffer = chars.indexOf(buffer);\n  }\n  return output;\n}\n\n\nmodule.exports = typeof window !== 'undefined' && window.atob && window.atob.bind(window) || polyfill;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jwt-decode/lib/atob.js\n// module id = 616\n// module chunks = 0","import * as actionTypes from './actionTypes';\nimport axios from 'axios';\nimport config from '../../../server/config';\nlet cors = require('cors');\n\nlet jwtDecode = require('jwt-decode');\nimport Auth from '../../Auth/Auth.js';\n\nconst authService = new Auth();\n\nexport const walmartGetAllCategories = () => {\n    return dispatch => {\n\n        axios.get('http://api.walmartlabs.com/v1/taxonomy?apiKey=' + config.walmartApiKey + '&format=json', cors())\n            .then(response => {\n                console.log(response);\n\n                dispatch(walmartGetAllSuccess(response.data.categories));\n\n            })\n            .catch(error => {\n                console.log('**** walmart taxonomy request failed', error.response.data.error);\n\n            });\n    }\n\n\n};\n\nexport const walmartGetAllSuccess = (data) => {\n\n    console.log('walmart categories array', data);\n\n    return {\n        type: actionTypes.WALMART_GET_ALL_CATEGORIES,\n        allCategories: data\n    };\n\n\n};\n\n\n// WEBPACK FOOTER //\n// src/store/actions/walmartCategory.js","(function () {\n\n  'use strict';\n\n  var assign = require('object-assign');\n  var vary = require('vary');\n\n  var defaults = {\n      origin: '*',\n      methods: 'GET,HEAD,PUT,PATCH,POST,DELETE',\n      preflightContinue: false,\n      optionsSuccessStatus: 204\n    };\n\n  function isString(s) {\n    return typeof s === 'string' || s instanceof String;\n  }\n\n  function isOriginAllowed(origin, allowedOrigin) {\n    if (Array.isArray(allowedOrigin)) {\n      for (var i = 0; i < allowedOrigin.length; ++i) {\n        if (isOriginAllowed(origin, allowedOrigin[i])) {\n          return true;\n        }\n      }\n      return false;\n    } else if (isString(allowedOrigin)) {\n      return origin === allowedOrigin;\n    } else if (allowedOrigin instanceof RegExp) {\n      return allowedOrigin.test(origin);\n    } else {\n      return !!allowedOrigin;\n    }\n  }\n\n  function configureOrigin(options, req) {\n    var requestOrigin = req.headers.origin,\n      headers = [],\n      isAllowed;\n\n    if (!options.origin || options.origin === '*') {\n      // allow any origin\n      headers.push([{\n        key: 'Access-Control-Allow-Origin',\n        value: '*'\n      }]);\n    } else if (isString(options.origin)) {\n      // fixed origin\n      headers.push([{\n        key: 'Access-Control-Allow-Origin',\n        value: options.origin\n      }]);\n      headers.push([{\n        key: 'Vary',\n        value: 'Origin'\n      }]);\n    } else {\n      isAllowed = isOriginAllowed(requestOrigin, options.origin);\n      // reflect origin\n      headers.push([{\n        key: 'Access-Control-Allow-Origin',\n        value: isAllowed ? requestOrigin : false\n      }]);\n      headers.push([{\n        key: 'Vary',\n        value: 'Origin'\n      }]);\n    }\n\n    return headers;\n  }\n\n  function configureMethods(options) {\n    var methods = options.methods;\n    if (methods.join) {\n      methods = options.methods.join(','); // .methods is an array, so turn it into a string\n    }\n    return {\n      key: 'Access-Control-Allow-Methods',\n      value: methods\n    };\n  }\n\n  function configureCredentials(options) {\n    if (options.credentials === true) {\n      return {\n        key: 'Access-Control-Allow-Credentials',\n        value: 'true'\n      };\n    }\n    return null;\n  }\n\n  function configureAllowedHeaders(options, req) {\n    var allowedHeaders = options.allowedHeaders || options.headers;\n    var headers = [];\n\n    if (!allowedHeaders) {\n      allowedHeaders = req.headers['access-control-request-headers']; // .headers wasn't specified, so reflect the request headers\n      headers.push([{\n        key: 'Vary',\n        value: 'Access-Control-Request-Headers'\n      }]);\n    } else if (allowedHeaders.join) {\n      allowedHeaders = allowedHeaders.join(','); // .headers is an array, so turn it into a string\n    }\n    if (allowedHeaders && allowedHeaders.length) {\n      headers.push([{\n        key: 'Access-Control-Allow-Headers',\n        value: allowedHeaders\n      }]);\n    }\n\n    return headers;\n  }\n\n  function configureExposedHeaders(options) {\n    var headers = options.exposedHeaders;\n    if (!headers) {\n      return null;\n    } else if (headers.join) {\n      headers = headers.join(','); // .headers is an array, so turn it into a string\n    }\n    if (headers && headers.length) {\n      return {\n        key: 'Access-Control-Expose-Headers',\n        value: headers\n      };\n    }\n    return null;\n  }\n\n  function configureMaxAge(options) {\n    var maxAge = options.maxAge && options.maxAge.toString();\n    if (maxAge && maxAge.length) {\n      return {\n        key: 'Access-Control-Max-Age',\n        value: maxAge\n      };\n    }\n    return null;\n  }\n\n  function applyHeaders(headers, res) {\n    for (var i = 0, n = headers.length; i < n; i++) {\n      var header = headers[i];\n      if (header) {\n        if (Array.isArray(header)) {\n          applyHeaders(header, res);\n        } else if (header.key === 'Vary' && header.value) {\n          vary(res, header.value);\n        } else if (header.value) {\n          res.setHeader(header.key, header.value);\n        }\n      }\n    }\n  }\n\n  function cors(options, req, res, next) {\n    var headers = [],\n      method = req.method && req.method.toUpperCase && req.method.toUpperCase();\n\n    if (method === 'OPTIONS') {\n      // preflight\n      headers.push(configureOrigin(options, req));\n      headers.push(configureCredentials(options, req));\n      headers.push(configureMethods(options, req));\n      headers.push(configureAllowedHeaders(options, req));\n      headers.push(configureMaxAge(options, req));\n      headers.push(configureExposedHeaders(options, req));\n      applyHeaders(headers, res);\n\n      if (options.preflightContinue ) {\n        next();\n      } else {\n        // Safari (and potentially other browsers) need content-length 0,\n        //   for 204 or they just hang waiting for a body\n        res.statusCode = options.optionsSuccessStatus || defaults.optionsSuccessStatus;\n        res.setHeader('Content-Length', '0');\n        res.end();\n      }\n    } else {\n      // actual response\n      headers.push(configureOrigin(options, req));\n      headers.push(configureCredentials(options, req));\n      headers.push(configureExposedHeaders(options, req));\n      applyHeaders(headers, res);\n      next();\n    }\n  }\n\n  function middlewareWrapper(o) {\n    // if options are static (either via defaults or custom options passed in), wrap in a function\n    var optionsCallback = null;\n    if (typeof o === 'function') {\n      optionsCallback = o;\n    } else {\n      optionsCallback = function (req, cb) {\n        cb(null, o);\n      };\n    }\n\n    return function corsMiddleware(req, res, next) {\n      optionsCallback(req, function (err, options) {\n        if (err) {\n          next(err);\n        } else {\n          var corsOptions = assign({}, defaults, options);\n          var originCallback = null;\n          if (corsOptions.origin && typeof corsOptions.origin === 'function') {\n            originCallback = corsOptions.origin;\n          } else if (corsOptions.origin) {\n            originCallback = function (origin, cb) {\n              cb(null, corsOptions.origin);\n            };\n          }\n\n          if (originCallback) {\n            originCallback(req.headers.origin, function (err2, origin) {\n              if (err2 || !origin) {\n                next(err2);\n              } else {\n                corsOptions.origin = origin;\n                cors(corsOptions, req, res, next);\n              }\n            });\n          } else {\n            next();\n          }\n        }\n      });\n    };\n  }\n\n  // can pass either an options hash, an options delegate, or nothing\n  module.exports = middlewareWrapper;\n\n}());\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/cors/lib/index.js\n// module id = 618\n// module chunks = 0","/*!\n * vary\n * Copyright(c) 2014-2017 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n */\n\nmodule.exports = vary\nmodule.exports.append = append\n\n/**\n * RegExp to match field-name in RFC 7230 sec 3.2\n *\n * field-name    = token\n * token         = 1*tchar\n * tchar         = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"'\" / \"*\"\n *               / \"+\" / \"-\" / \".\" / \"^\" / \"_\" / \"`\" / \"|\" / \"~\"\n *               / DIGIT / ALPHA\n *               ; any VCHAR, except delimiters\n */\n\nvar FIELD_NAME_REGEXP = /^[!#$%&'*+\\-.^_`|~0-9A-Za-z]+$/\n\n/**\n * Append a field to a vary header.\n *\n * @param {String} header\n * @param {String|Array} field\n * @return {String}\n * @public\n */\n\nfunction append (header, field) {\n  if (typeof header !== 'string') {\n    throw new TypeError('header argument is required')\n  }\n\n  if (!field) {\n    throw new TypeError('field argument is required')\n  }\n\n  // get fields array\n  var fields = !Array.isArray(field)\n    ? parse(String(field))\n    : field\n\n  // assert on invalid field names\n  for (var j = 0; j < fields.length; j++) {\n    if (!FIELD_NAME_REGEXP.test(fields[j])) {\n      throw new TypeError('field argument contains an invalid header name')\n    }\n  }\n\n  // existing, unspecified vary\n  if (header === '*') {\n    return header\n  }\n\n  // enumerate current values\n  var val = header\n  var vals = parse(header.toLowerCase())\n\n  // unspecified vary\n  if (fields.indexOf('*') !== -1 || vals.indexOf('*') !== -1) {\n    return '*'\n  }\n\n  for (var i = 0; i < fields.length; i++) {\n    var fld = fields[i].toLowerCase()\n\n    // append value (case-preserving)\n    if (vals.indexOf(fld) === -1) {\n      vals.push(fld)\n      val = val\n        ? val + ', ' + fields[i]\n        : fields[i]\n    }\n  }\n\n  return val\n}\n\n/**\n * Parse a vary header into an array.\n *\n * @param {String} header\n * @return {Array}\n * @private\n */\n\nfunction parse (header) {\n  var end = 0\n  var list = []\n  var start = 0\n\n  // gather tokens\n  for (var i = 0, len = header.length; i < len; i++) {\n    switch (header.charCodeAt(i)) {\n      case 0x20: /*   */\n        if (start === end) {\n          start = end = i + 1\n        }\n        break\n      case 0x2c: /* , */\n        list.push(header.substring(start, end))\n        start = end = i + 1\n        break\n      default:\n        end = i + 1\n        break\n    }\n  }\n\n  // final token\n  list.push(header.substring(start, end))\n\n  return list\n}\n\n/**\n * Mark that a request is varied on a header field.\n *\n * @param {Object} res\n * @param {String|Array} field\n * @public\n */\n\nfunction vary (res, field) {\n  if (!res || !res.getHeader || !res.setHeader) {\n    // quack quack\n    throw new TypeError('res argument is required')\n  }\n\n  // get existing header\n  var val = res.getHeader('Vary') || ''\n  var header = Array.isArray(val)\n    ? val.join(', ')\n    : String(val)\n\n  // set new header\n  if ((val = append(header, field))) {\n    res.setHeader('Vary', val)\n  }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vary/index.js\n// module id = 619\n// module chunks = 0","import React, { Component } from 'react';\nimport { Link, Location } from 'react-router-dom';\n\nimport Layout from '../Layouts/Layout';\n\n\nclass Friends extends Component {\n\n    render() {\n        return (\n            <div>\n                <Layout>\n                    <p> friends page</p>\n                </Layout>\n            </div>\n        )\n    }\n\n}\n\nexport default Friends;\n\n\n// WEBPACK FOOTER //\n// src/components/Friends/Friends.js","import React, { Component } from 'react';\nimport { Link, Location } from 'react-router-dom';\nimport Progress from '../../components/common/Progress';\nimport './Landing.css';\n\nimport Auth from '../../Auth/Auth.js';\n\nimport Blank from '../../hoc/layouts/Blank';\n\nclass Landing extends Component {\n\n    render() {\n        return (\n            <Blank>\n                <div id=\"page-top\" className=\"landing-page no-skin-config pace-done white-bg\">\n                    <Progress/>\n                    <div className=\"navbar-wrapper\">\n                        <nav className=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n                            <div className=\"container\">\n                                <div className=\"navbar-header page-scroll\">\n                                    <button type=\"button\" className=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\" aria-controls=\"navbar\">\n                                        <span className=\"sr-only\">Toggle navigation</span>\n                                        <span className=\"icon-bar\"></span>\n                                        <span className=\"icon-bar\"></span>\n                                        <span className=\"icon-bar\"></span>\n                                    </button>\n                                    <Link to=\"/register\" className=\"navbar-brand\">REGISTER</Link>\n                                </div>\n                                <div id=\"navbar\" className=\"navbar-collapse collapse\">\n                                    <ul className=\"nav navbar-nav navbar-right\">\n                                        <li><Link to=\"/home\" className=\"page-scroll\" href=\"#page-top\">Home</Link></li>\n                                        <li><Link to=\"/login\" className=\"page-scroll\" href=\"#page-top\">Login</Link></li>\n                                        <li><a className=\"page-scroll\" href=\"#features\">How It Works</a></li>\n                                        <li><a className=\"page-scroll\" href=\"#pricing\">Pricing</a></li>\n                                        <li><a className=\"page-scroll\" href=\"#team\">Register</a></li>\n                                        <li><a className=\"page-scroll\" href=\"#testimonials\">Testimonials</a></li>\n                                        <li><a className=\"page-scroll\" href=\"#contact\">Contact</a></li>\n                                    </ul>\n                                </div>\n                            </div>\n                        </nav>\n                    </div>\n                    <div id=\"inSlider\" className=\"carousel carousel-fade\" data-ride=\"carousel\">\n                        <ol className=\"carousel-indicators\">\n                            <li data-target=\"#inSlider\" data-slide-to=\"0\" className=\"active\"></li>\n                            <li data-target=\"#inSlider\" data-slide-to=\"1\"></li>\n                            <li data-target=\"#inSlider\" data-slide-to=\"2\"></li>\n\n                        </ol>\n                        <div className=\"carousel-inner\" role=\"listbox\">\n                            <div className=\"item active\">\n                                <div className=\"container\">\n                                    <div className=\"carousel-caption\">\n                                        <h1>Lorem Ipsum<br/>\n                                            dolor, sit amet,<br/>\n                                            consectetur adipiscing elit<br/>\n                                            This is Grocery List Plus</h1>\n                                        <p>Lorem Ipsum is simply dummy text used for illustration.</p>\n                                        <p>\n                                            <a className=\"btn btn-lg btn-primary\" href=\"#\" role=\"button\">READ MORE</a>\n                                        </p>\n                                    </div>\n                                    <div className=\"carousel-image wow zoomIn\">\n                                        <img src={ require(\"../../assets/img/laptop.gif\")} alt=\"laptop\"/>\n                                    </div>\n                                </div>\n\n                                <div className=\"header-back one\"></div>\n\n                            </div>\n                            <div className=\"item\">\n                                <div className=\"container\">\n                                    <div className=\"carousel-caption blank\">\n                                        <h1>We create meaningful <br/> interfaces that inspire.</h1>\n                                        <p>Cras justo odio, dapibus ac facilisis in, egestas eget quam.</p>\n                                        <p><a className=\"btn btn-lg btn-primary\" href=\"#\" role=\"button\">Learn more</a></p>\n                                    </div>\n                                </div>\n\n                                <div className=\"header-back two\"></div>\n                            </div>\n                            <div className=\"item\">\n                                <div className=\"container\">\n                                    <div className=\"carousel-caption blank\">\n                                        <h1>We create meaningful <br/> interfaces that inspire.</h1>\n                                        <p>Cras justo odio, dapibus ac facilisis in, egestas eget quam.</p>\n                                        <p><a className=\"btn btn-lg btn-primary\" href=\"#\" role=\"button\">Learn more</a></p>\n                                    </div>\n                                </div>\n\n                                <div className=\"header-back three\"></div>\n                            </div>\n                        </div>\n                        <a className=\"left carousel-control\" href=\"#inSlider\" role=\"button\" data-slide=\"prev\">\n                            <span className=\"glyphicon glyphicon-chevron-left\" aria-hidden=\"true\"></span>\n                            <span className=\"sr-only\">Previous</span>\n                        </a>\n                        <a className=\"right carousel-control\" href=\"#inSlider\" role=\"button\" data-slide=\"next\">\n                            <span className=\"glyphicon glyphicon-chevron-right\" aria-hidden=\"true\"></span>\n                            <span className=\"sr-only\">Next</span>\n                        </a>\n                    </div>\n\n                    <section id=\"features\" className=\"container services\">\n                        <div className=\"row\">\n                            <div className=\"col-sm-3\">\n                                <h2>Create Grocery Lists</h2>\n                                <p>Donec sed odio dui. Etiam porta sem malesuada magna mollis euismod. Nullam id dolor id nibh ultricies vehicula ut id elit. Morbi leo risus.</p>\n                                <p><a className=\"navy-link\" href=\"#\" role=\"button\">Details &raquo;</a></p>\n                            </div>\n                            <div className=\"col-sm-3\">\n                                <h2>Sync With Your Phone</h2>\n                                <p>Donec sed odio dui. Etiam porta sem malesuada magna mollis euismod. Nullam id dolor id nibh ultricies vehicula ut id elit. Morbi leo risus.</p>\n                                <p><a className=\"navy-link\" href=\"#\" role=\"button\">Details &raquo;</a></p>\n                            </div>\n                            <div className=\"col-sm-3\">\n                                <h2>Auto-Generated Lists</h2>\n\n                                <p>Donec sed odio dui. Etiam porta sem malesuada magna mollis euismod. Nullam id dolor id nibh ultricies vehicula ut id elit. Morbi leo risus.</p>\n                                <p><a className=\"navy-link\" href=\"#\" role=\"button\">Details &raquo;</a></p>\n                            </div>\n                            <div className=\"col-sm-3\">\n                                <h2>Import Recipes</h2>\n                                <p>Donec sed odio dui. Etiam porta sem malesuada magna mollis euismod. Nullam id dolor id nibh ultricies vehicula ut id elit. Morbi leo risus.</p>\n                                <p><a className=\"navy-link\" href=\"#\" role=\"button\">Details &raquo;</a></p>\n                            </div>\n                        </div>\n                    </section>\n\n                    <section  className=\"container features\">\n                        <div className=\"row\">\n                            <div className=\"col-lg-12 text-center\">\n                                <div className=\"navy-line\"></div>\n                                <h1>Over 40+ unique view<br/> <span className=\"navy\"> with many custom components</span> </h1>\n                                <p>Donec sed odio dui. Etiam porta sem malesuada magna mollis euismod. </p>\n                            </div>\n                        </div>\n                        <div className=\"row\">\n                            <div className=\"col-md-3 text-center wow fadeInLeft\">\n                                <div>\n                                    <i className=\"fa fa-mobile features-icon\"></i>\n                                    <h2>Full responsive</h2>\n                                    <p>Donec sed odio dui. Etiam porta sem malesuada magna mollis euismod. Nullam id dolor id nibh ultricies vehicula ut id elit. Morbi leo risus.</p>\n                                </div>\n                                <div className=\"m-t-lg\">\n                                    <i className=\"fa fa-bar-chart features-icon\"></i>\n                                    <h2>6 Charts Library</h2>\n                                    <p>Donec sed odio dui. Etiam porta sem malesuada magna mollis euismod. Nullam id dolor id nibh ultricies vehicula ut id elit. Morbi leo risus.</p>\n                                </div>\n                            </div>\n                            <div className=\"col-md-6 text-center  wow zoomIn\">\n                                <img src={require(\"../../assets/img/perspective.png\")} alt=\"dashboard\" className=\"img-responsive\" />\n                            </div>\n                            <div className=\"col-md-3 text-center wow fadeInRight\">\n                                <div>\n                                    <i className=\"fa fa-envelope features-icon\"></i>\n                                    <h2>Mail pages</h2>\n                                    <p>Donec sed odio dui. Etiam porta sem malesuada magna mollis euismod. Nullam id dolor id nibh ultricies vehicula ut id elit. Morbi leo risus.</p>\n                                </div>\n                                <div className=\"m-t-lg\">\n                                    <i className=\"fa fa-google features-icon\"></i>\n                                    <h2>AngularJS version</h2>\n                                    <p>Donec sed odio dui. Etiam porta sem malesuada magna mollis euismod. Nullam id dolor id nibh ultricies vehicula ut id elit. Morbi leo risus.</p>\n                                </div>\n                            </div>\n                        </div>\n                        <div className=\"row\">\n                            <div className=\"col-lg-12 text-center\">\n                                <div className=\"navy-line\"></div>\n                                <h1>Discover great feautres</h1>\n                                <p>Donec sed odio dui. Etiam porta sem malesuada magna mollis euismod. </p>\n                            </div>\n                        </div>\n                        <div className=\"row features-block\">\n                            <div className=\"col-lg-6 features-text wow fadeInLeft\">\n                                <small>INSPINIA</small>\n                                <h2>Perfectly designed </h2>\n                                <p>INSPINIA Admin Theme is a premium admin dashboard template with flat design concept. It is fully responsive admin dashboard template built with Bootstrap 3+ Framework, HTML5 and CSS3, Media query. It has a huge collection of reusable UI components and integrated with latest jQuery plugins.</p>\n                                <a href=\"\" className=\"btn btn-primary\">Learn more</a>\n                            </div>\n                            <div className=\"col-lg-6 text-right wow fadeInRight\">\n                                <img src={require(\"../../assets/img/dashboard.png\")} alt=\"dashboard\" className=\"img-responsive pull-right\" />\n                            </div>\n                        </div>\n                    </section>\n\n                    <section id=\"team\" className=\"gray-section team\">\n                        <div className=\"container\">\n                            <div className=\"row m-b-lg\">\n                                <div className=\"col-lg-12 text-center\">\n                                    <div className=\"navy-line\"></div>\n                                    <h1>Our Team</h1>\n                                    <p>Donec sed odio dui. Etiam porta sem malesuada magna mollis euismod.</p>\n                                </div>\n                            </div>\n                            <div className=\"row\">\n                                <div className=\"col-sm-4 wow fadeInLeft\">\n                                    <div className=\"team-member\">\n                                        <img src={require(\"../../assets/img/avatar3.jpg\")} className=\"img-responsive img-circle img-small\" alt=\"\" />\n                                        <h4><span className=\"navy\">Amelia</span> Smith</h4>\n                                        <p>Lorem ipsum dolor sit amet, illum fastidii dissentias quo ne. Sea ne sint animal iisque, nam an soluta sensibus. </p>\n                                        <ul className=\"list-inline social-icon\">\n                                            <li><a href=\"#\"><i className=\"fa fa-twitter\"></i></a>\n                                            </li>\n                                            <li><a href=\"#\"><i className=\"fa fa-facebook\"></i></a>\n                                            </li>\n                                            <li><a href=\"#\"><i className=\"fa fa-linkedin\"></i></a>\n                                            </li>\n                                        </ul>\n                                    </div>\n                                </div>\n                                <div className=\"col-sm-4\">\n                                    <div className=\"team-member wow zoomIn\">\n                                        <img src={require(\"../../assets/img/avatar1.jpg\")} className=\"img-responsive img-circle\" alt=\"\" />\n                                        <h4><span className=\"navy\">John</span> Novak</h4>\n                                        <p>Lorem ipsum dolor sit amet, illum fastidii dissentias quo ne. Sea ne sint animal iisque, nam an soluta sensibus.</p>\n                                        <ul className=\"list-inline social-icon\">\n                                            <li><a href=\"#\"><i className=\"fa fa-twitter\"></i></a>\n                                            </li>\n                                            <li><a href=\"#\"><i className=\"fa fa-facebook\"></i></a>\n                                            </li>\n                                            <li><a href=\"#\"><i className=\"fa fa-linkedin\"></i></a>\n                                            </li>\n                                        </ul>\n                                    </div>\n                                </div>\n                                <div className=\"col-sm-4 wow fadeInRight\">\n                                    <div className=\"team-member\">\n                                        <img src={require(\"../../assets/img/avatar2.jpg\")} className=\"img-responsive img-circle img-small\" alt=\"\" />\n                                        <h4><span className=\"navy\">Peter</span> Johnson</h4>\n                                        <p>Lorem ipsum dolor sit amet, illum fastidii dissentias quo ne. Sea ne sint animal iisque, nam an soluta sensibus.</p>\n                                        <ul className=\"list-inline social-icon\">\n                                            <li><a href=\"#\"><i className=\"fa fa-twitter\"></i></a>\n                                            </li>\n                                            <li><a href=\"#\"><i className=\"fa fa-facebook\"></i></a>\n                                            </li>\n                                            <li><a href=\"#\"><i className=\"fa fa-linkedin\"></i></a>\n                                            </li>\n                                        </ul>\n                                    </div>\n                                </div>\n                            </div>\n                            <div className=\"row\">\n                                <div className=\"col-lg-8 col-lg-offset-2 text-center m-t-lg m-b-lg\">\n                                    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aut eaque, laboriosam veritatis, quos non quis ad perspiciatis, totam corporis ea, alias ut unde.</p>\n                                </div>\n                            </div>\n                        </div>\n                    </section>\n\n\n                </div>\n            </Blank>\n        )\n    }\n\n}\n\nexport default Landing;\n\n\n// WEBPACK FOOTER //\n// src/components/Landing/Landing.js","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Landing/Landing.css\n// module id = 622\n// module chunks = 0","module.exports = \"data:image/gif;base64,R0lGODlheAJ6Aff/ADZKVha1lLeScvbczCY4SP+1bLWrjsulec7OzsabdZiZmdi1iv/Mksy1l6vQrdetiF4UBc7X7s7v7gwOD5V3Y7u8vXiFlGRnaGrTu6ysrO/v9wNUipeHc1PIsJEmDKZJIonZyLibgu7ruum7j/r37VFSU9vMuv//18xYKmV3ijU1Nke7R9apef2zsyEhI8utlffv7Ht7fN7GmSW3mfvs3Nq9pu7397rJzNzHqKbn1si6qPzoyBghIv3budq9xFhqe7q1r5acpujHpFGaitvKx9jo15inrLy9xt1vRMjGwsibhba0/v/WqXjWw821ioGEhQatjNrYqujWwv+lSmWaxMi9uDrGp0ZZata5uTO9o87W1jIGAtitlbespdvauPDe483O18nJo4uUl3RlUJ2ZgYuMkuvo2ycxON7WyOnOs4qL/9OBFnRAJr2hfnCPpcuRYG1WRqu2uOOscOvtyMPZyaKnj6usts2rqerbsBGKhcfI9/+Dhf/BfFGKpXwlQo2yxkS9pLaGXsA3Eo7OeNvnv3jOhlOlmcTWuf/OoO73yt7O0eqLRZyMgZng0bnp3wi2lHunvRutlM+gaOi0ehUYGfjExO/37iQpKsfZqW9v/xGtjmVse3Fzdu2qYX52YeWXbv+hpRC1jAI3drC5mf+1YTV4loiXgDoWDKqgnLattjaKxBJksAEhMWsuGG2bjC18u6Gl/ge1jAitlUckHPL328iZm0FDPYRqWUoBEFV/doFvcx+8n/f393EVOUY1K+/v7///zv+tWufn597e3tbW1vf3/86tgta1lM6tjP+tUubn8Pf//8alhMWtjNClhNS9nN+9nP//9969kta1nf/399W9k+bv8N61lMOljcatgvetW/Hn5//3/8+ljdbe4vf3xdbW3t61nff3z/fv9+/v5vHn8P/3xuTW1OTv5vf/z///xv+lUuXe1/etUf/3z/H/9+LW3vWkUc6vtdLe0dO1e9KzrdatuPf/xoRWT6GBZvfnnPPz9C9AUAAAAP////T09SH5BAEAAP8ALAAAAAB4AnoBAAj/AP8JHEiwoMGDCBMqXKhwH699ECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqXMkSIy+GMGPKnEmzps2bB21AVCasp7BhPoMCDUq06E+hRo0OTYqU6VKmUJUWfeqTalSiVq86bVq169WlVp9m1bqV7NCxVMeSTapWbFmva4/GlSoX7ty6duOipRtVWUScgAMLHky4IMSfCIgh0LKYmBYwjLVEnoxgseTFCCBLphwZsuXLnjdnvix6suPNYCxX1nIaM2nNkmGrpix78uvNokOPxp37M+fYwC1rro16tm/YpBcTt9xa82nWpB93jrx7d2jYrXOD5i1ZMfLGjCGf/9bsu3pp6Z9981ZvPrPq59JvC08eGX7429Tzp+4OGjx6/K6pJh538KUmoHHIyUZedNAFV5tiiQ3zi0OFVWjhhYXt88swiyUhRgkqnEHJiCSWaOKJKKao4oostujiizDGKOOMNNZo44045qjjjjz26OOPKLqgQgmcpMIYMdbsg+GSTDaZ0D7CKBaELZRccsYll7ig5ZZcdunll2CGKeaYZJZp5plopqnmmmy26eabcMYp55x01mknmFhmeQknlQ2jpJOABlrhPhxmoAKWLkzQz6KMNuroo5BGKumklFZq6aWYZqrpppx26umnoIYq6qiklmrqqZZOUGWWTyw2oaCwxv9K04YIPOHCJZSgquuuvPbq66/ABivssMQWy+gEWNqShBbC/Cnrs9AStI9iJWRp7LXYZqvtttx26+23jK5agRblWBLtubLawGG1LoDr7rvwxivvvPSeiqwLQGjxC7r8AgolApzgWu/ABBds8MEI/4rsGUkQ42y/EFf4ixaoaJnwxRhnrPHGBSNbArMPRywyToQigCXHKKfcKSWKquzyy5Hy4IIdCIQ88s0z/VKrwDD37HM/KuT689ApX2ILAn7irLRMhGpxMtFQb8zKiC1HbfXBlLhghMNLd73QtBm4IPTVZA+MrCj8lDB22WzH6zGzL3ktd0E6X3BJ1W3n7e4ZJVz/UILegLt7qxZJz204L8JocWjgjHtrceOQZ5s1EIUbLjehxDwe+eacd/4zsgpwbfnlHPKwtueop666wcg+oYXNo99MaAWmr2777bi7u+frsXs9u9i5By/88MAie0HNvXf9++nEN+/885tecoG+yS9N6BHAW3oGAdx37/334PMAgB3C/GL++einr/767Lfv/vvwxy///PTXb//9+Oev//789+///wAMoPvIARFiUMp4yKsezpanPe7xgwAPBJ8EHXgGAFRgGf7IoAY3yMEOevCDIAyhCEdIwhKa8IQoTKEKV8jCFrrwhTCMoQxnSEMS/qJS0qOeAmU3jApkj1K2iKAD/yc4QVZYsIZITKISl8jEJjrxiVCMohRdKIwDSi+BOxTZtLDHPEipgIhgpCAAjoDBKZrxjGhMoxrXyEYWRiODbxwhBssYxSpSKof7yqIWe/jDSdkCgmGcID+MWIE2GvKQiEykIhdZQmrAgASPfCQ1QPgOG6DDGuiwAR2daEdJIRB2eozW7GpXqS8GkogVJCMHl2GDVrryla3cJCNnScta2vKWGqTGDpiACCbwkgk7AKEEQNCEYubABnXE4fFAGcpnXa+PkvrjKSdYwUJy0BFNwAAGssnNbW7TEbLE5SGXwYtymvOc6EynOtfJznayU5zwZCMJEKENbZCinqRARBw72P+IGfgzAIBwRDInZTzeNbNfDCzlNCU4yDFu0gYgiIQmIhEATWiiopEIBRQiAQJkIrGc/uBFSEcq0pKS9KQmTSlKV2rGc5LzpbyAqUxjStOZ2rSmOL2pTkEaz56eEQZ8mAI+tTEFPojUg02AgiYAAYUACBSKnZTUFZl5UFgllFKmXOj3qslBG2AAClAIhUXFelGLQgEDHqXhQ1qykaNCsRhurSVPNbiMndrVp3glIQn4EA9E9JIB2mDAPjkIAll0wBGAmMFTnxhVSH2yqvwaZRcfldXunYEV2zvD9lAJgDg8FAMWDUBGx1rWAGDAGjVEXPnIIQxyKIMc23Ata2Ub29f/tva1tZ0tbmV7W9jK9hc9iWsToyHcWRbXESBIrnKXy1zmNiKteY0uB0nAgHgwABEDYEJgi5tBEGgCAxLoQBYWy0ll6hCyouTjZB1V2e5dIQU/uAIAAEAAzW62e4TkoDUwEICKzqADABbvaNHaQRgMA7UZ5G4IofSLdNrAEg6GMDofHGEHH/UhzYoiOXE515A2YQZZ8GeI/QliEpd4xDMAhATCKV0ORqMYKozGPl4IUhZ7EKhTKAAfGMCHdvBhkh38QgegkIUmRCISOQAhNfYBYw0SN8EOQWFjH/VY9KbXh+ttVGW3B4Ag2IETP7DABeo73/vWlx+q1KBXJaqJIjci/7mAuGgkCLxBahDjBsLgxS+24Y1mNXgb5oMIcHXS4AxCya1v3GccB7voDTbayXCE8jDKab4Fl+8X5CwnRERq4GbBVdNRNmcZqRHXDpvUH6T2Bzf22eElCtcGQ26qJsCqUbFWFKy4xnUAcgDkFof0IdYwp4ZAWlJzjnTJ5cQgNYCLTpJm+sLFfgine1IOkaYahOyYRDzsWYB6IiKcMKiCIWawiziPt4O8gDCfMQ1SYSjDBrwgBzGEAeNMj3DKj8KjlUVJDC420LIE6EMGynCFTRiBE9uzgAX4cV8jxqGr/A2ALKwAgkbkoBGAGDB0/bENIIBB3kdIQsiTkAQEVIDkJf8P+Wp+YehCP5EXSXjCMPwBkRCyQ+RJEAbSiFFyLSxjAHGIw7yJMQwIMcsxGfbHhhP8kwY73bUiJYefNv0QZq91iUvPoDWGHADxygIQGbcCQBMbiv4GYAYB2GgObOzTfZhBMWcBCmvL9xOgbEMYOpl3T5ZBKLr7hMFBUcYvirGNbah2G/P2BztYQwxl6HkYGvjgMs7RDEkcgB5C8OsOBpvBc6DCFR3IJgYagWANkkAY4OAQAnrCLMQTI/XDSAIYkNn3e1txmfuG1lUnVVlWEOAPjJCvBYzgCSP+wQEl8B4hm5zBNV80CxV/c8ZDMeeNsyMDWiAHEMQABDtkIAhGSIX/AuyACiNkwAgIyEAGbsBymrvciftAxdHcH8JznD8DFchAHIBQfjvYAA2oIAZxAAaoAARx0H9JEARGogwZdG3+MA6K0RNAMQwUaA3UsA05VxXsQIESOAxsR2P6NWQzkAMYAAjbFHpZ0AEgUIIBVoIzgGQK5lMkQAwnVxngQYHEkIOVAQ4IkASv1RjggDirV3REl4MU2CdawA7EYAM90TT9NmnnYIPwgBjDwHx1BoCoUIDnQAIk0GsblAQKUAZxYA0SYA2axEEwwHNaIHtrWHL7IXvegABHwHLCkAQzJ0L45ihTlXvONAz+plAA9wdlkAJiYAdiwAkEcAU3kAQXcF+X/8AP1qRmEddm0YdxZUVnGgQDqXAEFKMAFZB/+gcEChAH3mcHFbAPowgO7TdsUARznDBzExJCxNB96hcE+qd+GaAB7AAEQaAAHmKLcZAK6leIr5NBSxcNEEg4ilGEzGIDMNAnURIhRLeDVqhWcQVrUNABjdAITaBcTZCCcZBcb6ZcgOBUHxhP0aCGJZcYixElw5Aaw0A4JKcMlqAI0LFn0wh7jOEN8EBy4PATSWAD2wAURLeGeXYOYCAMipAYOagvN5aApGgEWgBC0bB9YlhvHjSQ4OAYJddzR/B6fXIONzBjwgAGdxhCeXgsOURVfIghuycpW0YAP3B++2eLPwAAKf9gAQDQcJ0FcRIVACmoTSWoCdSHiXB0DoTTjkXHIbx4A0aYZ6gABsHWcjGIRPuAACIViyAkDGgABiRXgxDChOyAAHGAAEBwBI3Rg0CAAN7Qfg5IKEeIAOdAgUChAQaWgxBCl6rngUokXFuXjdvUjcn1YaHnjcXUBHGWA1XZU0cxgRPYgX4Xj4NXd5MGl40HXBxYd9bwC2YwezDADlUBebywDcFWd302DAzYQdSAAEYQdHbgDUqGAOWXBJH3QftAmgNZdISTOKxFgcpgBvQWUlOJh+aVRy0pKM+UZYzSXhAkBkZQBjFgARkgBg80SN7ziJHYfBEXCSJGYv31XRuXYG7/dVQwkAQV4A1uBQNHgFpHdWgtlXQfxAs6kWeCV042wG7l5FrloxMOUQzCUA5JYoxuRQ1EoSHA9Qs2QAK/8AV6KXj7wBPCUJtJlHX+8JdZEAkp2AFg1wHcCXZgZwghlnFIdo7xVE6ktmw2QFzCQAKO92uaVlK3iUwylmfc4A+Vtg33iUy8AJpRh3cRwQvFEEdL5hcasg/hFA3bYINaUHroRg6Z0aIgFFMEKmi8EA02QGoTwgvWUI22R1B7eJzIqV6WwpwQJF/8wA/yVV/g43Bd1QGz9p0TRZRp911MOkJ6VmpGukHu6U582qfn9GvwaacixHn+wHkOqGrNFkc1qnR//5poxtaXIYhrszapmiALlWpRjwBWZrVri+lrK3SOelYMskSokTao5sSl6MYLi2pGKcko0kMMxgmmTvKSkWJmAKem3mOrZwCJEJdrvoprRhlDqnVpAuQ+waVhnWpIHWYDTaAJL2h2Zves0UpRFZUFK+apLYWtKdSq/VBlsjqrYloptqqmm6VZRMQKaGaFvJADGhpg7QpggNABimmVxRo/eSZFh0pLx1VMxNSv3fivxMSv//pcpKqtBmtI3NoP+vat4IpllnIJ1HRK2NlBNiABjiABFouxGYux4SlDfvqxINtSJNpGcMVBlWSGKGsDKJuyKruyHXuwMMtG3OqtDLsktP8KKeMasdzDkxcUs/papSAbtELrTj5btAabsAtbszYLDg5bKVolQZfQk0a7SMQFpCp1tSuFtVqbtVybUq02tWDLmLeHRUp7ITdLWU/7PUZ0BKgatm77tnAbtkiLe2Xrkn4ITZGStlvFq3Hbt377t0c7tixZtzdxtuylt/gltYC7uIzbuLY0t+dFuBlCg3gLKYjbPVGbnY67uZzbuawquJJrIYarZVdwuWs7sp6buqq7ulJWnKE7KHernItCAHmwk3pbQXHAC5C0D1zIC5HEuw4BA8DbuySgu8ULA8hLQMWru777CySwDzAAtMgLA85LvMiru7z7SNhbvJBkTrsrvFz/SALjQLy827vRe7zCe77Qq7vXG72+C728y7zLy73J67zy+77PG72klrza+7y7i77x271cGMDfy70CjL/h6xDiuw/KG73Cy76RpGngG8D3C0kwQA72y72+68C8QA37e8HlC8HMi7zx27/+W04FHL7yCxHhK8DjwMDZ67sjvMDPO7zje78QfMHny7zQy8GktsHkoMEWPMLuC0kavMMW3L8UfL6P9LzYe8EyDL4i7MC8O74UbMDTSw7nu7zty7vENb3VS78BDL6nB7qvSxijyygEEAr0dbv8oABSIAUmYAJxLAU4IMdoIMdzXMd1fA5SkMd2nAY4YAJ5jAZoMMd7vMdm/zAAczzIfIzIhmwCgwzIXvDHciwF7BDHjWwCaUDHe/zHnlzJdAzKPoADRKDHdMzInHzKh/zJfOzHeczJkkzIf0wEiEzIdMwOA6DHjlzHkHzIk8zIXpDHXpDLmjzLnjzKl/zJh6zJWJDIypzIoOzKfQzInWwCNUDI54DLiHzJuizHONDLx0zHaDDIyjzMl4wGmYzIjuzJvqzHcXzKoDzIp+zKd0zOtkzNcezHmizIpiwF53DIwFzPaDAAqmzOvjzHkSzO5KzH7LDOiNzJ8KzJclzJlywFtvzMqCwFqizRrazMfWzJcizIVYDJGH3LiPzN4AzSv9zN7IAGykS2ZwwY0//StFilCbabtrvKAVyADN1gDM8gDcZwAMaADA3QANmADAmADMdwDMiwAMfwDM/g1NJwACzADM0wDc/QANjQ1W0QAg1gDA0ADVNND8bADMyADE7wDNVgDNnADA3QDG3QBswQ1U5QDUfNDNlQDTjwDGedDQfQBmc91HRd1MhgDMawANCADEyNDMzQDW3g04fN1NVwAAfA2MfQAIftDMaw2A/gBFHdAE1NDyxwAMzwAs+gA1yNDc0QAmkN2tLA1oiN1qBdDW2t13EdAgkA189w18/QDNkA1DjQAMzg1m1g2UTdBgmQ1IftBMZQDU7d2MigBI/N2GkNDU5g1cjwAtPA2Mb/oARNvQBMHdXT4AROQA9Wzdu/3dXYEALN4ATNUA1k7dxordbHUA1O8NbNwNXK3QxTfdcN4ARtsNY14ATFzQzHzQxEnQCCzdjO7QTScAzdcAwGjg1KoASSXdfYnQBF3QDP4NjG4AzHIA1PjQzPMA2ibdaWbdRb3drI8NVq7dv4bdpp3dT4rd/EHQKRzdZrjdTG4AQy4NduHdiWjdgM7t0PHuET7gTdgODd0A2OzdRCTdQsXtcJ0A0R/tROoNUUvgCl3eFb3dVy3QYBftfQ0NZn/do8rtcvINe7bQw1QAS3Z1AzHRjXQ0pApAlCRACmFEF+PkQ7yw+M8AAPwNkPEOLO/3AAD3AMC+AMC5AAB3ANVV3o233YXs4CC9DXDfACIeDaCv7j0pDf2bAARb0AP40MoZ7mcy0AB9AMlF3eIXAA0mDbb34ACXDrCSAJAhAIRI3YTE3qyF3Xj+0Mhn7Ype0Mi37YD5AAzgAND8ACnL3dx2AMpM0C0oADmd3aIQDZRA3h2Z3YRX3o9p3dbx0CAnDcRm3b08AMAmDevb3b2Y3ruR4IrI7YpQ7slg3lTV7Ujo7YzgDtUI3Yy/4AQv3vxvACTv0A1Q4Nw83VAoANCE7U1TDl9EDq4l3cI+7WCN4GArDc6Y7X7L4Atu0Ey20MkiDvCUDvB0Dfi+7cyN3Tae0MzP9A6Ij95YxuDIWeAAtQ8Ij9Ai/gBJguCQsgBDVw1OYO8YJtDLNO1AtAD2rt2LU91NnA8Qx+2nctDdOg476dDUttDCi/6xzu3FC+AN9u2sjwAE2ODJwN7ND+68zw6JF+DL0u7W/PApiu6Zzu6d0uDQsA2EJtDMcg805wDeS+8awO1yYQ0xpQ54JR05X7KLZQuznbPabUXmdgC4zg7Ght75S+AIfOAreODM7u68hQ3qQt62nwDF2w6RCP4Asw1WQP4aL9AuPd1kk99YHNDO595jUw7XN9176+AMJPDwLwBrgu/NjQDdNg5L0+DVwwDcfADEow1Dgv7p5v1bc+4od+8Fz/MO2k3dlpcNSr/dYHcAzQQOF3Dd3HQPtNPe3MkN9t8NZz/QKx3fvF3QYTf9ZOIPwLABAHEghIkODAAidKuBwzxuzAAWPInnGZdowZM2fGjD14wGzBggfOJBWEdk0jMmQV6bE48EAIjgYvGmDDxqyNMWkVnTipduzFNGTHhDphZoxotjZtmIWoBu1ZDWTG2mSrtiCik49ODrwpmICFVWwLjQkce2waxQVKGm4MaQwkSxYCnEFbwMIZSqHG6B1MU6NZgzs0HRqDNpSn0BdBjyEsiswm0jbYnjmFNlapDKLIFtBDmICrwAPSmHUDKvWhMbNcriE7gFFjSM0hWRRERjcj/7IXx5ysDJ3mmcwXNW06KbyTZwOfiqUZyxZ1qtI2zYj0o17der8Jly4g2PfP+3fw4cWPJ1/e/Hn06dWv975vWAUXlK7Ppw5AEwAC+fWryM9f///8zuCHg3CcccgjjjICzRmBkMFhuQciokurg5xqRocapsEmG9SEmqaGYxp4ZiZkepqmqJ2YaWbFEJrBwQkQrWLGCWkWQKYZza5ZIIFAPHLLCWN+QobCAxysBxkuLmrtI2cUNOiBgiY7JkKUChsLNRz+wjA4Dnt6oQZoGhAxuKB64hDIbFakScRnnmFogTZodAKlBz5CRoBAvvoRGyHHeqgBHM5CRq0EjOKoqILsMv9osgXuYuYYaYCECJoaGuiiBr+wMaqiY2oYccTghBJqRjTVDMHTBqDBqqhqpLkxR6sEEOArZJbDRlA/D3gmUJSUGMzGu0Br6Q1kwLQqIkgpJOwZA+rJ8AVmsiEuN1RHbCY3oZCR1ols0sQmhBfanEbVBaKV5hiUYD2AoI1qZeYnhvw0BtPcLnIIoQe6GcsglhKorTIqC1vgoQWg0eHCDDfssIFxRRQTR06bMYo5U5tBg77rtNPiF/Y69vhjkEM+z70j4sP4OlvyAOCM/gAk4AyY99NPQApscgynBboxEM8EGjXmQ2k4KvQjdB/6C5sGangBx7yKbeCvhxtDFyuKDcD/ppk223gmKmmkOShdZxK4aaADRD0JqGn2bQaLGpQIAaMZXW1yXYIOBTPo1txagCGDpjEAa6WRntKoSqFeuqjkjqGnoWYM+LsGJ5qJt8YfURIIo4GcyfZssQx6wYc72ngbmTa6RsbAAwIR4IBrHjU2wp4fyKu1mZrJ8NqgiOp0aTFn0kgmY6pZPM2/XVwx7QWkWXxOyxNwSNbcowqKomMESmAaH14Q4KaikndGXx4Nar1Tuh54CKvBE3DiBQOS1jAoG3/+7cKYLgoqd3qyuboZpJ/J5gUgLeAai7ORYy63LvWFIyoRSclCRsIMHWDhW2043QFkkC8G8cxnTwlaR1jn/wTdPAQ37SscABlSrGlA7WlSG9JmiMc/HUznZNjRDndEdkMc5lCH7XmPyWZIHVvcx2UBYtkQ/0MBxxhoATIwxl2cQDYGhms5A7tJUCojtmZER0y5sRJqHmaAEdkLGamK1AHa0Dsx3UQjWDkAh47xjLEwwzFyRImSdkIRYxQkBKioATbakBFmdK2JDJFVAh6AklQ5wSSnkQg0LkcTmYhJYBGpxsN6N5V3PUMG1WjIGcWkA6QsMIQHcMI04NiaOTLvIhoxyzHClgAydIEL2HCeY2r0PSDJ6jZjnKRBOnSMgjDjalt8Y9CMEqIGtG+FRfnJJqWiwgYgBUiouZJELFIoZP/4K11FIWUDFtIVMtxhGr4yUK0aFZQ2EOQAXEDJM4I2MGweozAF4Z/h5KmbY1oymtHCxhtlsACkXAhqU5EekAqVyAOoxSYMbAiKklMQAYRAHtAqlBwvyIxDtiEQheoGbqYxRbJYkRliq8lfXpCbaZjEi8k0KSZ5WUZPXsgEP+yHdojBsR3mVKc7HY8lwAEf+dA0iCv7Dz9eRgAApKAMJSjifwTEASgVCRkRkt3WEiASjshTRyNggSQeMAmXXCMkSuhGAo5xjWuMQK06WkA1QNXFu0ADGjIImhKSN5QDsIAF1/joARhkzq+MQIAjcIZeOQJWLnDhAXbphgDCERJJOEP/NXt9QDikUVivcOQadEFrXuXwgM1e9nvOA21aoSHYuz7jL11kBhfkKkhnLCAcIBwLCzhCl4Q64wE1+oqOwkFYwz6AHhxRbBOVoBAuSMKrXAAJaMNxDZEUVqyWFeDAWvKAacjAMSFI5xll4hQxOaEBOuhC+w4WGQN8SQcjaoMyu9AMyEAti358QTWy8ahj2A5a0YKvMa4VHJrssQFKIGkDpBeuFyRFAMjgk4gkJxU6iggZIfhWi2RiymlUA2rnfZhSJPeMVu0INeLViiQ0src8QuQjemUrNKAEF2OwwBiKhYjbwgKaqS5WdpFKgBK8esiqfOQAkrDtA6CxHF8lIASa/0meNHS0Ewc3o5LdEmabQGwz1TZgpjPMzna6w1MwhzmH7gEqTfsBAJW5jGVXMII3hvGEoxLAqC8b0FYSwM5CCUWuYXtDk8Qy1SbZRbeF6cZxA4ENql6DIkGZRoKRxGBsdIMZjf4JlHTb0SYVhDToUoKsWtKSEYAWGmErMkv8nFguKKEWfL5z2B6Q2HBwwRlvUIJd2JnjQC9Wnqlu7IKRQdlwAAU50ApKpGvSjRC9YNSGNAamrZeSnHWaX3vV0WZ9rNvFOkMJuj1LoXX2hjd0gwtXBS0XHqsEroQEXTn262IbCeAQCMDAbjFLllUb06tdTbVtcoj0JHY5h31rexpxS/81iANMry7Qfj5pG1kJLIBDGkSB0JjGEw3ZkvzupImFPeRk+BdvCupNnmj8m4Hr+Zc2gYneIcJnRGqAg98kJXicEYI0ZJAG6E4CUnbSM71IMxsWTGMarJNrDYTAhYeAVhqVaoqN0lowHFA8OCFwgpukIVeY7yrLMkhhYlQIuUI1pAFJoKnGcCpmtKd9PTYgRpmFep8i+kdAbrCGP/yBCn4IyKn8oMAbNspOJUyVjtgQACPIcPg6kCHxhydDCBBfBwUc/gmMV3wdUJH4OtTBFIonQxnIEPnFW57ylDd85hP/BA5wIPSZR0UIDD96xV8eFWRgRO05oHhGcCAEib98HWr/j3jgM971lY88IzZPe8xnXvHHT/zmI/985cOe9gowvSlQz3nTG2D2wWe85S3/ew4YHhXh3yMZLk/71yu/DiEIgVe6mg1pvIALDWB/jOUgh0nknwX5lwT+J0FkFpCD/TuA/Pu/+wvA+1OuApQDSQC3+/O/BXxACZSDEZiECvwEBowHSZgEOfiEDYTATug//9s/CewEBsw/AewqEby//EOIFYmTaoCkBjgjHQACHUiCBgCCF7BBHSCvZrDBJOhBVEAFA+hBHagCDEHCLhivHrSU8aoCKNQBbNDB9KoHHShCI4RC9nkBI+RBI+ydKASCBkAFG+TCHozCHuwCI+wCG/wL//55ik76iyr4oS6zIbW7QzwcD5LxoR9SgUiYM6cCgDjwB17whwywhabSD77jmW7QF2Qoq4FQAFcYAkqsREu8REzMxEs0hErkREv0xE7URFEcRVIsRVM8RVRMRVUcAlBcxUp0hc1TrjdogyJ5oxWRg07oBG3QBlLYRV/0xXjYxV78xV6MB10cRm0IRlIYxmD8RV50xmb8xWDYxU6IxmJ0RmCMRmxMRm7UhmAghWDURlKQA9qBuZowpRDQgQxQgCBoxyAQA3cMAgUQA3g0gnakR3dkx3hkR3yMxyCwx3yMR3jUR318x4KUx3zER3hMyHf0R3hcyHdEhQxoH9IBFItYkf8GmMMfMrs87MiOJDM+nKGUISqnIgAx8AcEiIYyiLOZAQAO4JFA2LZ06TRTGIIZmAFNiIRICICd7Eme5Mmc9Mmf9MmeDMqgHEqeJEqdHEqdLEqhXEqiRMqdRMqklMqqrMqo7MmmnEqmtEqthEqvREpNSMqmzMmwbMqzDIAAmIGsFMuoNARTEICREBuU+BsW8MZ20Ia8/MW93MVp9MW87Mu+BExs3MvB1MttBMzDTEzBTEzHTMxOcBApwIF4QQbLe4IfuALN3EzO7EzP/EzQDE3RHE3SLM1NsABUaACiYAate4b10siTqcMv80jaRDuQDKofGqpE1I8fsIMYiIML2E3/OmMELlAd3ZKKRySDIVDLAHgE5mxO5nRO53zO6YRO6VTL6azOULDOAAiF7MRO7qxO6ORO8vxO8BzP73TO7TTP6wRP9XxP6mxO6fTO6KTP9pTP9kzP6CxP9DzP7VxP7PxOAB1P8gwAuKwiB8MGFujFv9xFwyRMxIxQCXXQafzLvGxQb6TQwrTQCG3QxpRGZ3xQDO1LD6XQeJCDGkgDyjwAenCCDIgBAOAHo5JRGq1RGZUzG8VRHLXRGpWzHe1RHg1SIR1SIr1RGQWAK7CALrgRlKskmSq7C9iY2pzSMNuHnwrJkxlJ4UQqAOhSQNw7DrisbuAIxsEGV5iB6WTLABjL/50cS6pUS65cy51U0zmNUziV0zvNU7VU0z2t07X8ST6dSq4U1J8s1EHNU6GkykQdS0Z9zjUNBTddU0ll1EM11EKdAUAlVEIt1OecykBlzk3d1Ed4BENAhWnAAUzBETkIhrycgnZYh8eM1cXcxXV40HaY1VjNVV3d1W3kK1UxigYIgivIjxkFkDkr1mP1UR9NVmJdVmVVxGc1Imk11mZV1mJ1Vt5UAIxECfH6CxmKzRqaTSodVx26TTPTzZaZGZjZTbnju9pgp5YoFzIwBPFUS00YS5xk00K9V3vlVFC9Uza101CYU369Sn/9V0eNBExV2KFcWEz9U5502IaN2D2l2P8/ndObbNOIZcssuMk1HcssyII1vcmxhIIZAISHZViVhVhOXdmFpViVTdmK7UmJnVOLbc4ZMAUuEIJGa4AFyNB2iIfBtFUHLdqifVUIPcxahVW+RMwP5VWohdq8nARjaICeOAYgsIAZLVKu7Vqv/VqwLVKkEoMu4JCGIA4xQQAotUNybdsbMlehUpktPaq5pRkWoDFNCwFTQFM51QQoWMuHJdl+VdgZGFiShQJ+hVRJBdydzAJA8FvEXVyP/VPIXVMouNzIDYXI9VtHvdiERVjmfNlO/dznzIIOwFRAcFxAwICQPd0O6IDUBYQmiN3XdVzTxYAOsFM9tdk49dSD/Vf/rhTd0SXdSHAFJYi/v7hLX+QDBuCDoNWGWg1aV3XVeKBe6w3GAtCG6Q3GKYgHPiiAYOQDbche65Xe6hXa6cXVqF1faQwGOfAvyRGCLkiBHw1b+71f/LXfMjAAM7qJqmMYsuOycHVbAg4ZMuMB3BTJNJvW//APRaSAISOwN1idWnAFn/zbGcgCDMCAe93gSNhO5uyAJoiEXThdTXjYlg0FKzjdAACEDohY082CD+4ADMDUDuhYPs1YwX3Yjr1XhgVemf3hH75TIbZYmuVJDXbcJsCAJgABEEhdEMgCEFhiJgYBJm6CRpjiJW7iQsBJI35ZFCZKFJ7YIhbeI4bZlH3Y/1AYArtyBv6RA8TkAyZgAvF1xgK44/EtAFLoBD3exTsuADr2Y70kBT5ABAYIxuY15LzMXl7EY0a+Y2RkX0kuzE4wBj86hjQAgk2oX/stKrD9UWLNUSEN5fztUQsAAqmoojmZBtg8GY4sYFhmD7jNTbhrYAaeGVuggNkwCNoIBwt+ThfugEagA03YBUegA5QNABZugiKA4tTFXZS1AkCIXSgQYUB4hGB+3Q7IgRqGAmbugEd4Yg0+3dWl4dcNAA2e5tcNXt4N3ZbtU8+dWXeOU9ld3RxogiYWZxAQZifuZxBohEZo4izuZxYeXktt5zsVXiKWZzPu3EF9hCFogxEYIf84hlUmwIPv5QPx1Wg5RgTmFQImYIACQASPHgFDHgEaYIBJYIBABukeYIAp0IaQHgAmKIARoOOVTgMmQAQ6HgEGQITsVd9Jhtpg6ISOuBocAIIf4OSw9eSvBeX6JdYYvVEvZWr8JQAL0AFoYJ8ZGSkto0ONEddYHuvy2AdiKJkEzlK5TddbDhC+S7FVkgYusODtnAERft0ckIAZsAIJcATclWKcbAIJmF0rxgCCNmzc7QAoMGxAqGbD3ucOGOwZ8GZriGIQsAIpfuIpHugoxmIrFmHW1d1QNWLiRVTTNl0a3mcmruEZwF3E3uDUbgIapuLExskzbucxPmMiltncBmL/OJXYQoVoJcCup1nVvORpPuiEn24HRDDpHegBRJACJuiBkO6BHWCAHnhpPqCBQp7ul97plw7Gl94Bj85u6J5u9OZp6i4AoR5qXm2HTmABELqQDFjqUgaAH9iEH8APaH3WL/VSGkXSG82PLkXSEvBRzSyBGNXRUsZqra6CGVSbLZuhVyZrC9fDHkprjNHSIfIPD3/WpzopJ5A0oVACC3ZOQMgBEMhgEMgBEc7iJu6AFS9hgBbhfgZoLKaDLG5sGc8CWWBiFQcEK2gEQFDLbbbiJ54BLMYAF3diYWZyLB5hDKADDPBJNb1yQF1oPG1n3BZUu37d2J1mkXVh2SVn2IVd/9VFWdhNZohNVELF8kxt83cG43ceXT4dAojbagOoaG3oBER4aQZgAOb+aSYQAj6A7p9OA+qebo8ugB7Qhuz+85dWbpiG9EIege3G7p3WaKDm6ZCeUPeeZKMeEpnIgE3OXwJgMyNAhQs40iOd6qnmBy9N0mFFqhRQAPyQdQDYBP3ehAvw0fw+zViP9fslgCdYQvaaigMYO7D2sgt/9vCYZQXm7/5ua354goqQtm1zhl9G5xqX3RvHXYCucrteYhX/58IG6EZQcZxk4khY7NldYhn3YsPe5kZ4XSfGgEZobdadYkeQd0Bo8dwF4c7V0yz33X8NY9CNWYS9ydTNyUBN2f+VPVQ6112DT/ibfWchllnmXGNskKsXCAFJcEZNF3QmMOkeyN45LgA5puPkZoA0wG6Z7gHmjXlSMORgDOmS3gFOb16fBmQ+mISdBvVQj9p2IAWKgxhUOPWr/oEMYDNOSNIyuAJ+cAMFuIArEIMnSKogKINNSAEEeIK8AwBIIIID/4Gu/4NUeAJOsIBf34Qn2IQguAEx4AQCyG+r7loHtwil6JboCGAKd3ZoH3xpz9IryHUG31oG11E544BpgERZEbdu34VyZuLIdnLZbWYo2IUN3gUJuIF+Zl1HyOIcOAS/1fdCyIImlt1GqPcZkIUmnoEccAQnzoGAboTblWIm/2z/c5ZheL5yP3Xz56TT4b9UrhzL7YxUjV1cRkV+SVVcea7UOMdyK0/U3z94d8b+5hyCbiiM9lpVP+YDnUYEPMDuQqZ5QKb5SfhzoB7pl6b5P3f5nS7/mKbjNPBomuYDn9ZolQYIRHz49GDSThvChAoXMmzo8GHCTtIatGH2DMgPAvw2cuzo8SOBHxViGIlhwYgRVCkUWNjkxkicFEaClGF5JAY/AgDiHLlwxY0YmaiexBBThp8YBZyC3LCg4IqFJ2c+Uq1KwI0OZPkEGDuQzUmzKv3Gki3bb8KlC1r2/Wvr9i3cuHLn0q1r9y7evHrb7htWgQcls4LH2qpq2KNOClyU/2B7oaRNOC6uIgUIEEnTDEAdMABq1KFJB0AYHM3A3KGDLBCeMYDAEKkRaBAgoEDp0KgRhtyfQTcBkUVTbuA5MDRp1LrJjNNZmgCSHTq0Jk2VKVeubt1ygBnYI2mnPj27Ze3bv1/+jr26d+nkzZun3B28++vW43/vLn4+evbeqT8agk2aM200M4k2B/GBCBN8TIIgIgwwUVAPEDLARxoCjcDEhEJkKNCCTCBSQDzaMFAAAxNeONAIBRTAByl8MCCEQBDJOCONCLXTyQPIVHRRRof5GNINGcSxSRBxWCDkEyHFoYAdZcR0xZBBXHEGASkc8ccTZYhxAQEWxLCJU0GkEP+EAjFoeYURTm0ylY+GdVlFNvkIKEA29DSTxGBmpaXFL3v5+SeggQpqV18VuBBYnmUV1qabANzijBLT1MAFM9c8MBl20kWSRRbJZTZDFrJFIktmWciSBSCghhYJIKmiWllypwGCamiqlsZpdh3QOmunnLKq6qyUaXreDO4ZS+x52BWbrHXvYReKJt6hp16m0VY27HSRULZtfu3Beix14cqnLLjgKUtuZUMosYCADchxkDaT8FEAQipqcyETTAzQAwMFtWMvKZOQog0p9BY8sIr0KgRwAQIT3MnAENsLb40VW6xNJ040gEw2DXTRI6NUhXSEGBjBBGYcMZxxxQ1lWCD/0w9QbiIGAKz8lIQRGRghRgmsWKDLD7o8AclILpfhBgFiHKEAABqFTJUFWYXwQhsCMGNMWImOhdYFCLA1KNhhiz32P4UeqjVZiz6NGD+PvjDNNMgYY4wSmFo3bLTadgBCB+Juqy2oflc3Q+DcES4d4doKGwBmhI/3N+EzQJGfs/LRdx53lIfnLXehgFpadNIhHnp2nTJe7bnwbb7te/dpvvp7mVturuzM9tcGC2004K42wRS4TjsHhRhPAQ3CyMQIDbYTD7ztrKNNiNAnxDzFwiMUYvDPJ/R88NFf/L2MyXRSTQPNGPMCKj+s/dEZP8RxgRFjxvHED24ocMEPf2RA/78YMWfwgx3WdIUmyWRnT4BKGcoQA05YABwXsAADjVCCH4ChDCpYH2IsUIUGhAAbAkhAAtrwAjyhbU99IhsKU6hCuZgNUWhTGwZzwg8KPIALyHCGMw5wgDfYbVkBCMXiSLWZ8pyOcZNjHGWgoB7MaCtaorPMEuWzxOiMC4jX8SGxyrUe8YirWdSpnKwiF7ksdMBxyeFMsawwKzGax1mV6+Ky9nPFZC0rjuw5l3eG0AZjtAFu7/Id87TBveDFa14FG4ggCQm9gzjPRoxc3vYQArxEKoR7ggQfJmfUid1h4wBOQMUmnBZDAlzBFPxIASdSABSfBEEMm/gBTaByBQCU4f8KQcDJFcrQtJedJAY/UIAYdHGFK1TAFj/YxMxemQROsCmGG9HgM0IQggQwow0hOIZYtMY1r62wm94cW6EAgzbCOHMjiTFGN5zBggN0g25265Z5OEWtbi1OPdL64bBC4S3LdJGe0wEit1TnuvpszlzbsQ9+zGMFDISGoQw9DWs+M6vNcGY3D00VPKUVrtZpTna16ydBCyrHADzCFc2ARhuQwTuIPG9g3qNYJmMqU/CJrxnN6OQxPibKGALgCjqZ5RU24dNjXoEfP/hBTwHQU6POsqdnOINSg4rUmDU1I0rt6Q9OMqVy5iRqz8AGNZmBDGxgI5taSws3v6nWte6lL0f/ONs4YSiyw+iEAyzA4QNYwAUuOANTX+QWF2mTHcBNx3WRu+c9+Tke1eXnb4qNj0bbGFB4MtaL6LKMFZqAKhAUh7OqkU0OnvMZ1hgHBDngG0ePVceRglQ/g81isuS4WpIO4QVC0CEy5OA7iCwPe/Hw3kyDK1wZBaMTBzAGM5jhBJ1ylQBTIQB0qRRd6DqXuhqhEpVy4jTqSle60L2EOZ1rS040jav8sAAQntGAqxlDBw3Ahg7Qts2vsbW+9o3LPohhKBdqTa4dga4MrQIADuBQnc54W92+2FjzYMZVnYqEGk23qdPMtrCOg9V2/JY5+ojHddzasEEhy0Vnsa6NCV0O/0Rt0xvOrrhVuemNcUiLxtiOq6Oq2zAXQ6xjhBb0OpqorTQkkYADyGG4Rj7yTG+0ABYw4wAhYEQKdmreKa/vCikogZQx2CUgTOMY2RCrexsQ3xKq5YT3PbN93QrXFwr4qOUV2YCdEYhuTIML03DMO8XlrCxwBgOcYmhzNlPGGQD6NLLilGYaCgjvdDh1+9QzZP3JLPZwdLGv3aisJiro5/g5Vob+dKty7EM72tHEiMXco+WT49dWxhDYyCsLHjCJYMAUyba+9UN8t4ADgPAACogylYONQQAE2wJdaEZy2yCgZjQAB/JFK33RLO1vtnCc/fBvTgAwppY0igPMyAc2cP9Qg2540G4l7lZziENG2RRHNCCYVRNyw+LevNg5qNVnF+VIH48atD2phZ1rbRxS7nCqWGIco3tSdfBeAda1onb0uSMduxuverHakYV/LHUAZnQC1x7/OEPEt+tegzLLwj65VajcpS4k1xjZsGYzpGGCcaaFGGaeNs5VqGb+JsoqYwpCEOxQAgETOB8h0ME0QqCEBD/CjZHm895O41kMJIdvoWINbzAAG9lwFtAB/XflcizbY5n6OhL/8ODyTR575odakbCiptgOx8nSeDxih6cb6UjQe+pxAV8OgW5BLniPF3fjyDgAMtJncpQzniOLX1+XdDA3ZOgIGw2owcy1Ce3/nHM+hfndr7WxfZU/WMANR1BfluuaAAF0UAACuKu5+z0fUBX6oayqFURbZWjicHaN9+G3ayNbabP3O+IZvTGGG17E0z2R7dh6u2XwTbuHgxjEA5V43R/9+/P0JwQ6akZuCzT48R9ZfAJowzE0ppLHN7795o18VxbAxxc8AwdEoHnXot35/Quq2uO0ihvYQen1hMnpRD6AkBIIQCAIwAP01V/VB9ltCq/0CqhkAWW0igVWoKpQGBVN1mx9INmxmmoxGtmBIKt1mLSMGmCN4GU9zgmSIKU94Le84AyaYB2FlA8NQQjwUQMIwSTUGvkFYUx1Aus1wDM8w/+wn/stYQwZ/5uQIZcxPMM0NMD9aV7+8R8W9p9frJnWWEX9uIyUFCAAUIAkvEEtJMAC0oMD6lON3c0/hc4SsSHj6BMQaQIUbMplaIIctiEf9qEf/iEgjktiBSIhFqIh+mF/KMEDPMAx4MCsBQ8kRqIkTiIlVqIlXiImZqImbiIkik8ChEAzHGEGhBITluKUdYkBuB4LGAMyQMNYZd5ZlVkWzqKf+B/atNnLXECjUIASJIAxYAMzJAAy8JAmxIIS0YYd2uExLiNtNKMzPiM0PmMyLuM0UiMyXqM1KqM2YuM2WqM3duM2giM2fiM3HmM1iqM4kmM6rmM5kmMz6uAkPEA3PIAcTEE82P8jPt6jPuYjP+6jP/YjQP6jQAYkQQ6kQRYkQXYCMwhAM3QMRiihKUbkYTjhkMkfciEDLObJfNEiR+KFLXZhyg3T49WVEySAEoCfMTiDAGAKQrXk5rgkeGiHS+Zd5rhkTb4kTt6kTcokfPDkTf6kTwZlT/bkTsbkSwLlUNpHUS5lTgolU4qHDj4ACCWAHCSMVV4lVmalVm4lV3alV34lWGalHHxiNWXDQ0okWq5Nl9SANCiBJ63eAcgc/qVVR9YlCw3DW/FcnrwfADCCEChgG3BBSgZCGeSGYR4mYh5mvBnmYipmYhIHYz7mi0kmZTpmZVZmY14mYmamZlpmZ36mZHL/JmWKpmZCAjaMgA6xwAj0wA60pmu+JmzGpmzOJm3Wpm3eJm7mZmv2gBAkQDYYAwtIwyhCZFoW55vs2gG0Qa8dQxUmykbaJXS+xUf2HF39SF9KAwh1g9xwgQDUgRZIAHiGp3iOJ3lKQBGUJ3qmp3quJ3u2p3u+J3zGp3zOJ3wCQRtIwzpJAjTQgD9Qg3/+J4AGqIAOKIEWqIEeKIImqIL6Zw8c1wEEJ3MVp4S6SdT0YgglgJBhJP7xSXR2aNngJRdSZznVFTM4Qzol4AEIABBYgz+0qIu+KIz6QzTEaIzOKIxGg43SqI7uKI/2qI/+KJAGqZAOKZEO6TJUQQhIpTEk/4AMkECRPimURqmUtugyDIAcpOgbPMBwTiiXgoSx8Ro15VUCOAMJOWdagIH+eShHTmeeENuIDtiYdsPqLaCKlsOU3ime5qme7imfFmkShAALcEUCCAEM9KmhHmqPRsMAsIAkBEIgHECEdqmkdkkDLCIzNMACOIMw1sCG3pyarimI6uVg8CUHmGQvnp8CAoEyICqrtqqrvqqeIukDhADuCIGTwiqu5ik3iICQOSqkkqKkTmrULMA1SEpXeFKZauTmfWpdhpOoCga2PY0BHoASBKMSXMO3AYEw5Cq3dqu3vmoF7CAyhAAzpMGtAikvfOu3KqokBKMA0EOkBuuEwt8DQP/DNCjnATRbpzJrs4aqtbmpMyWGDlmodqroqqorwiaswg5pEmzFC3SSrcIoL/xCuvoDL1Rsiw7DLyzDxS5sqyrqKj6oNJylvHLplgWqWCknNSXrYHDNWvBrR7LpqDbXGB7AAyhnL3aDEmirx/asz/ZsEnCAADjDMTBDxL4oOQyDMAhDX6wqLwjDNiSBMvDCMBDDPgjDL/zC0v4COfxCMfxslILskNUryZashEZeArzBGxzXyyEDyw7GssLsLFoCOIDeOBFntxFtN5RotXYDz4It4AYurCaBAGzcMyxAGhTqi24DAjSufnlDMbBD4x6BNZBAElQAMSRB4yZBEhADAmj/gQYILpEqKpiywDR0AbCarXFGDRq+AQssgBO0Yka2bNzKLRbunLU10ygNWDccww1pagj9regOL/HiKeFW6wsswNG6qDAgQBJoAQJUgDBYgucmARjYADlwbhIcwQ00LhgggOcebPH6qKKO3Bsknvqo7tmiVwLkwxsIo702gFklignZ7izagH6FaJ7orpbxAwdMwwMsnTMwQyDkw4qOLwInsJAmASNQEzIcAxMorov+QtUOA/Rawz6wgxZowTAsQ34RgxY87zCM8AhrgfgqMI0qKiPymjPEq/pKJOu6ryR0UDc8w/zS7hXa7+1u4bOaBf9CXl/yFQgNcD5QQBf8Ao9+/60S0yg1xCg3+OgTP7ET76gUozDCYizGtmgWZ/GOEm4IYQMyJK7E7oPWCoMy7AMv9AUaLwM1aG05mHEa78M+bIMw2IAV6yjp5kgCXEMqpO8Lo2XkOcP7OkMICIASPENz0u8F2JwO77Ddos0Pq+WASaXrVasAGDCLSuzFbjInd7InfzIoh7IojzIpl7IpnzIqp7Iqb3IxcAM3hHJ/fjKNVgEqIIOFLq/EFkM0VCwXL0N/avId4/EAjOkiQkPZ/nFEGtuYckE36KwANAAaPJtapGkjT5uz5m510lWcCRkz0OpCCq+LTqwco/E4l7M5nzM6p7M6rzM7t7M7vzM8x7M8y//zOKQxL3DDOJjzxaLxPpczF/tDEnQBNDxGIFSDBAczoirq+xrDNdSACyPzEq5cnCKDYyjBC0QzmXFoNXce/j6y1kSytA6YDdHNNJ2fqo7xONszOZ+zDaAzL7R0OlvCOMA0S6ezDcz0POe0Tu80T7/zxZLDPKBDPfszL2wDMVhDP6d0jAZ0GnBMIFzDQSO0oSrq6rHANTxDyUE0DHdBLy5dAgoANiCANNPlRuMc7o4TSPPDFRzVMBGdDVVTAi4gOGuxHKexMigDxZZzS8MAOaAzDKCxDbx0MQR2YMvxXw/2TL+0Yu+DDRTDYL/0PsAADEB2Sys2Tfc0Zme2Zqf0Ppj/wSAUAmjTwWCTsyKgQhkYwVrEcV0vNSpAwzEYgwBIw7lK9VQPgJCB0HKBjFYz4cpZqBIoHVjfMNzKYlnnnMwKRiTrxFEt95v9l0gn1966nsFq8jh7AzhEgDdMLWeTQw8MAGPLsQ3QwADQQF2fsyWMN06rNDmQt2pH9j6Qw3gXAznDdHtvtn3ftzwXAzlgwgoUwgr09yvvwzJsQxcsUAzYwar6c4xWASM8cAMcAC7TNp9SdVcIADIAQeru9hI+AVebZAKAcUoJt1k8Z3FbMw9jM0gMk08BwCYArHNzwDV0wwswMyuGQBegA3U/LRjcwI5HAE23NA3wARN4LWPzwgAg/0IPfAENmMGSN/k2wEB3M/k20MA2rHeEPLkZDICW78Av7It3m4FkrzeTm0E+47eZn7k6cwM6DEIjUIMD9Ld874M/sAMqlAwjBIE3+IOCw2gVkEErPgMyEKqEH6qiOoE0HEMNH7OGN97K5cgLhMA0APo0JHKe1G+Jm3heojhiAEDMqDVSpd6ALQAyOEE3IB62nvSL9rMw6IE3aIA3XO84tzQ5EMR3BzYeMEEaRAgiDECud7d370uE7Auu98CtF8SD9ECuVzmw68sOBHu+bMN3o7m0ozkv7Dcd8II4OEAjxPmAp0IZDEUGJLhSv+gy/Ok0uOKgzvag66miHsM0hMMC1P/Ali66+0VeOMCNu8MN5o01NV86Wx23D4sMVLxMCliAT4HEgElD7PLaAXBBCKB6qqOxN4DuMihDBCB1ee8AH0jBUO9DMXR3hKRBvyACIqSBvuzDADABjPQAyZO8vvCLEDxIvnwBDKS8yOu6FLA8IpQDZE+7z983NxTBZ0vAHDgAHVBDSw84EHz7E9jBtu75iyYBNtTANSjBGwj6uk/4AEjDA3OBMes2vTNe5NmZuOH7vpMZWft7mp04Wgs8UIiBG5TB0CE8I0CDKwrZGyQgxGuxPXvDxduAMMB6XdsAHjCAd6exDWjADig7DXQ3yft6Z7O8vuQ8IghBD2yDGUS5lg//wDacN8gD++Z790r/POn3tA1Qgxf8twN8tiNwgxwvQzksfQYwAoLr+bhHPTYIATM7Q4Rn/Z2Wr2CSLdiHPcppkA3VgN03AJ3NrmCQuNqvvUcnCkiv9SakwCsVFcJzgL0ewwOoLRp2QSaHsz0Lww1gNxj4uCWA9z7QwA6YwUoj/j6kP9d295PL8ZJr+frDd5Ln818DBAwY5GDsg0GD3DZyCRfS2EduX0SJEylWtHgRY0aNGzly5DZn0IpCI9HxisjrVxJUqVAdURZtIi9/M2kmCTFtWo1rQmDQ9PkTaFChQ4kWNXoU6c9oOx4cO/YAGpAfBPhVtXoVa1atW7l29foV/+xVAhaqXOv2Atm0Y8yeJen3Fm7ct5cuaNHwD29evXv59vX7F3BgwYMJF8a7b9gRF5TkNn57hisByZK3EgDAIVzaBQkSPBAARNlPXiYjatFzI4K30RNtFCMt0YZJXq15sXM4e59riMWK2di2Y5vr2DZaDy/eGzntjsuZN3f+vOIvckUGObDGTaLJYRWOVPC27zV4oEkEGMNhYkQaGknZt3f/Hv7MaAMWPKvxwEmXTVTD9vf/H8CwxqoCGmaYQWaBY5B5BgHH4pqALgT2MYzCCi28EMPAEKuAB8YcjAuyyiaLDAAKuDjAmAdYeICLz4QBijReNFCGRg1soIi48MCL6P/GG02KjUfjcNuHuB1luxE8IHHrEbomnXwSOl6KoYacHGPSSKafyDMPmgeEICG+MMUcs735FsABB2OQ6WKqAN18E06wxqpBGmakgQYZZI7BAY0P4YpwwgwFHZTQQv9BTDEP/ewnRDcto4CFBNow5pprpgkBiBd9Wo3I0WLTEaPhXpuNNOFcyw5IKJssTqMee7NoSFVllZIbbsJrbRmaluGNt5PGCyFBZFj4ksxijT3Wn/mkQRMZJ4DYL85opY3WAh2kcQYaGZAx5hkpiFkUwgskNJTccs31a8PFFn0MzkedWUtPpzDVlCZOn7uxIFJTjaiggjolchxQZe2IF4FEPVj/Nn5hQPgkJAd+mLWIfpEIopjGM6BAYw4gFtmOPWZP2XqeWUAaNvmbFuWUvxpLhwVYqGYBJw6oxtt16dLil3N13rnQdBX1s9EALePgGjwbQKaNYzANbVOBO7KBhgG2SZK3HqP+bYBxDoa4OV7M6IEG3vSdrVcaBhog661v45prqNHuoQcb4B4A7k4vhsYYZuhJA8yP/f47qPmM4SIbFmSQ6mSVFV/cqmoXOMAJkhM4AIdv/QxXi0B53pzzwnxel9F2AWAEGmhekFfpTGGELja6B6DBDBqiLsgGGHow4/VtDtoG9ljZDhUGtBOCHTjZf9vma9jB5p332NEegBynf3+u/xgmEOkBDwaKyR4RBoRwqJhf18rGGL4BP//8+Q44xhgWpEGc8fgVH1CabOiJXJIDoCHC5rpy7hyAAezLPsBRAXWtK2gAsgwjjqGWZ6zlGJ9hWr2ktxEbuA5uPbjeAHJDDiY8bxuu+2DAHDa9izCBBtvQYA+kkEEpXE+DO/hCD+hGw7kxIQ0jLKEJ72UDBpDiegWAAR74UEQ+cDBXWiJD3rKRDY6hD4odU98xpEEPaOgncfLTYpzIIoNqVIMeLnOfCcAFKAGe8YyfQ6DoGJEnKhoDji4STQVbRYMe5DANPWBAGjjIC3LA7YMw2EEeEfE6IvHQIrW73QC6V4kBfFCDe//E4euwh0McapAJGpQaHRGpke2Rgg9EpBsDjLiN1oxHACgin/mi2EpjTVEaC4BGKtq0RVu+iWXSgFnkXOYEMi7KjGgUJufUuKgE/mdoxnCGMg/AAhZIcI6rIgcGv/a6X/gRbR/cR9RAuKNO4mgAOxhACwfwC6nhjobCi1o6n4e2L6BtYd9k3Q6614MPDgAPTMgnDEbzqwMs0xhM6JsrCRomwT0DjjWA3y0ZCiALNOB+TpFGFX1ZRnFpbpgZNVcxgcbGBThDAIGQBAuMIUfRNKlguvsFDX4xkHyRg6Uw3YclEIIQf8kTRzaFSMEispBtTgxqU3NIS7dJkJvitDlBZQj/TCtWJfH8pAqp1NjGBlpQq5ZpAFZsQxsOV8uGfnVl1aJHN9LyRSfI4Jd+utn/NNpWQ3H0Q8f0z9AeIIkE2BVFCQBNNJ80pB1GxBI8ItJfkXpIS5CQRwE75I8ESxofHbKwUdqXqJ7qkwqEYBIHaCZPrtpZkA3AcMew4kLBWlquVEtN0DhGNXAggxq45XLBdOtsBQVXB8m1PwvcjBJQhIxwtEF1PjnVqg7JpIg57LGExakNtBYexpYQuoJVbmQzYqXnejNLPqkCGRZAD80+0bPhHcp8JJGgB5QMWqZVL1bG0oWYTUMayKhGA56R1g/RhRhspe1+K2Rbx+BWQKOThhIS/5CWnCxtdUZScMIYbKTRPJhUDo6wp1bTYAsvGMMX1rCElbTgBncYwhkW8YZJPGITy2bCn1JSUKI6ggVo7HvilfFQeqDZZpbMq+vVcbWk8QA7wdEYDbCvY8I1Lv4e2TD+bQyA5TS6B3CmGzh5wbyA4hoIXxnLWdbylrncZS9/GcxhFvOYyVzmLQfFJgtIEDPAO2M3z8eZ7cNxFnVc2gHJ4AGUIqkxpDFkx6wVyYEejJLlwmTK0LkqBCgBIw4ggAQw4wUvwAZwJ0hBM18a05nW9KY5jekkZpnFIWDBM6BxDVa6GdXU2IGauyuNDKS3zuodCw6EcAwnpCjPQraokQXd6/8BbqdDoGMyAIhNIkawQBLJZkY2XgBcetUrOw9OZIRhQ+1qW1Bf1NV2ZPspE3uBJ7s1SWU1RnZqVM8Yzk6IXFRyHGuwskwG0nhGGw7wAGToGpj+8/W+90JoEHHlCj8Q+BUqMzqNJRtF0HD2SaP9bdgsY4c+CmxMpktx320b4zwcjTAQIAyHh3sm5EmAE45B1XOjWn3GuLVC2+3uhrKMHsaoRjaYYev6WhQMGOW3r/0NF7la5gebEPgmAEDnob1YDnZ1AjRCkIFnzyQ81vjFxCK2j6klMknZXtLYhrMPqo/DEmPL+NgfZhJ2AEEMcfiOc1F5gDYgQ39VPXl41bfsZtT/gJaIdrktx9KAbIxcQcd4xnn6l9+d77zn7NIKAH5QdH403uj84AD77JqAmEGzaScZBhjAEAFlvKZ2X2gBB5HEiy/AYBvlWIaUbLAM1OvLVLyA+DLGMYByDOAL+1g9xC9Odt87ZxnbQIUuYsAJI7zIYloKgWadkAAZ9GTuMp4izXVA2r2/XKwomugXq+FnuRRZ54cP9IaCvcasECDgjb9CCgCgFcvkYwHMOIAkBMCMkgaXguARRuc5H4GwN4wG9qAFNKAYOqUSDvALEvCd3qkSEnAcgmcBI3AbWuAcWqABbe+dbI+Tfo8DK2IZviADngAVyiAIhsEfks8nkqANXqzk/3BgPaJPvOajDZqhGRbE+q7vlljmxSBHTYxhAbxPLgBN/HguMQ7ImNzvCiygDCyACUvA6C4j/lgg/lKJ0n7iVCxBGPTAG6whAnJuVNhhD0BB9cDjHSqhBc7QDNGwBUDhDAfADNPwDC1wAteQDS0QFNjwC5ahA/ewI4IPCBQgFRjBDkIDBWuiGUZAT4yhzWDQqmTQAJqhAXDgBnHQlqrFCeTvACYHRYAQLsBvCInQgH4mrpDQAtygDNzAAgju/C4DGqZBzZiBCvFPPmRjGLTAGvxBGWwRSVpnD/ZA9X4hNt6QDg/QDNmwDg/QGNnwHIqhEurwDishDFugHF6FD6vxIv+WoRyAoAwUoAzsAPmyAyiqoA2k4dYOIA2gjxE7az4SABsgkd30jhIZh2WmwUAOQP7KgxP/5KI+sdcSL3S04goCTiDb7/xsgXTS4BicQbOyIR/2KvN4wRs8Lxoi0mF4YRykABQqQWuSBPe+IA3O8BzQ5hyI0QLH6Q4tsBJM6QsOUApI8gDLoeKscQ+DLxXKABVEkBDBEaoEgKTmbxHTkaDwQFKmgdxeDR7jcXGq5RmQoRmy4dYSwBjysR88kR/HbzuMsKPc79D0boGgAQeQgTNk5jPQwQplQxhQIxcjwBocax9Wshyw6y3b8gtooBzKYRzKIQHx8vS+ICO/IPVGA/X/7HIb/DIvFUsmDzM7YKAKAFEBXOIEdVK7OGCkBOANfhIoo4i8EqABvggVfgApGYplnuEF/G5bIEcq+0G2qpK/EAUrR1FERsT9LgMnwJIZFiAbPuMWM680IgA1VGNUWi9WxoZUuI5UtuEcvoA2eoTregUxm/MkECMJECAJ1q4QZyKqJlMALPMyoQgP7Ko2qwEVYO0ztcgCgMAJGqAB5G9S9seiMkc1kcwfmWxlnMwYukFNXsykaCIaYkQZIlICrok1ZG9fso71xgbihONIeI9Ah6M3BtQ5rXE2tkEYlCFVSg+V4szktrOg1OcAsuEBqiEDWm4856damLIZ2kBSjKEG/05TCN9zvyyhgFrzttiIC+wNKl5MryrNHzhFSqIhGqhhA3dkuhjMQTuQsR6UI0jl034kRsKxDVaktdRDQwtK1VjAKeTrWY5yRKWFZZwgG7aqDZihGZ6Bf2JrH110v+KTjYTAx7YlRQ5AFv1huBTsaVCChLKtU5STGvkQYfoUSSdiGSBO9wq0N0glHMlADpxACKDhHKeUoATnGNBCEkV0S1Eml4wBG76U5pqhTNVK39CUtlhTFGcUly7jGgxE/iJHCRwy/55jNFYy94hk9U4ihB4Q9wB0D1ujI22vGBT0X/50NlbSDSvBBszQDVsA3MKRJ40BGqqhUR21lebjPJuhG//esVLjRwc3tRmwIQQMoE/M1D1BdbbUtFQpoBvsz/7wLD9nkXV4gRgHUwGnhhcmsBxowFjLoffGbhmIsS8H0538Mkg5cBlaQAAJthhAIQwRNveSKAVDwBigEhliDFoxcwDO8wVqbhKvdVpyiR6W7RGxoQE69b4+VVzbilwdRfKcgRns87wWAPNa1TlmYwBQEhlHDzzMQBppQAjYcACKdOzKkA7XsGbNMPdicg/fAWHZ0BeFoBd7sRJ072KOgTPaQDsnVooGIBvQkxnyQzw11lK7qGPbET3JdNfCr2TR6GSF5jIU8gDy5MVWVUfnNKlMDw4JFhTOAV9hoBJ+YRsQgQ3/G3BPfa8YZjYZg7YZ0+ZPl2EEkEAA9+AAm3YPFvZu8kYAoEHurNZv5iNr/a4BQlRLvVZouqgajOHtngESGyTfcOZsTZYYQlHYRIcDDuANCuwFoLIbquDpHI456PYAKdACvwBfzYlvZxYBvcn3iGMbiNElK6ECcy9gya41oFEAM7IY1xAmQc4fLksGnoELQsByMRd91KcBtrVzuxZ0paU87aP51CQbmkEqqXJ1h0lUX7dUOSCkDoALwNLHWJVdocMSBnMbBjMwy4GfDCIiAjj13vJ5v8kkyKEcNKAcEDj1AliBgRVeFTABzWAwfQWqOIDPXsAZnhV8/2Y+6KEB2gAb//COUs/XUcrTCUiNGcKUGRqgCvpHdeN3mGygdWX0v0SHAt4gEBKgG4a4Rfh3RxcYR3pjV4Cz9IqkGN6hUKsRV1oPiplYOP6UR2bvHbQ4UH0EKHQgHx4NjsxthD1mPra3GZjBWlkYZcrTGF4AB6ahfZtBB2rYTHkNh9OoCEe1h0uVERKAAgJBCZxhAZCByoQLiXFEsFrlMCMOi5dDA/YhkiuLJiogHyShDS7xe8vYb6hBZ3GAfeaMjTcWtdgCB6ABPeu4f/A4jwMobd2vKxboAQLhDQAKFoEgNzcF3DqNl3vZl38ZmMEMzZaIC55BjV+Qkz1G1WoAB2SGHoxylLm0RP8h8YEawAl04H1Ts5UB6JXFAjZjkxGuZYjz7P50VE6DGZ3TWZ3XuczQDBugoQboEQcuN5mLxUyaNchMJpqjpb3O043GtwFQ11NZeZuJ6Sr5eMkKLiBjuUSQ4RrCoRtWpAFwE0bY2aIvGqPDjBvk1FawLHw6+srQzACEoAb8jrPq+WrXZ2SeIUv3mVqAgHxo7oXRU2SJTJsLenO6mR+ALgjKwDMLjgKM4RhOZHKcgRGMeEerTXfBzXhFDEcebOIeGTFHw1b8oVZiQvao4YgpAnurIASk4QXS2AVROqXF9BjSQJ9dGpcswADcLkydoBoiFbYG2mxxWmdg1HXNj71+wA3/jKCnCXIVKUASFDIB3kAAlOCQoS07qIGxQYUXSIAEuDrsTOL/KmI0SCCRpZq6eAEd5qEILJsEhIEYPm+HuhpYxJRq0ZGs7XkA7DFp0iBj1bo/LKALaG5SgiwtsvlM7dqgE4V+2SsFgoAJ7eAKEO39IuUNMrE8msGI55QXGltgYiOqd/mxQyxhTmKpNfv3YoMcHEAkHKAIChDczq4M4mAYdAR70yxP2mCeV/tY4AxTkWFSP1e2K6NaTKcNnPJhG2CuR5ageftcdJoAUsAITpG4jbtEWMAeDURPsCFOedQ0bgA1eHQflGEJIkADEoZGNpxG9sFHP3wclMHzlGEtM1u7/xGJG0hgEAohJETiVIKvC55AxgeR7bREAB4gHE64at0bqyTh3ugYmutbge67CpotGzLxBXT7vwG8XMgPoQsNCd3ADoQbsNnrMtACGQzEKdY1WWQDBv6gD1SBCv4gw7FbGTIBFqwBJh57CfRgCd7czfVAGbzuF2bEzeG8xE+8A7nBDFZcGbwbEIB0H/yBHRQgBlAhBsrAGx6Tg7WLEaCiAULgpHl8TOAMGdCifOlbyNmLtunrhDs0k/vbQVqUyXVGp/mB8VDxAkjkCdSi0RLAGZDhZaFONraBClZBzCFhzkmDBMZBDWDhJcCDGpZADYrd2NWgzfVA2d0cFtQgE9QgAv+yW8+1zY/mAR1IYA4cYB7EGxv/cARTIScbvSa8FxqawXvpmdLdQ1kUJC3CU9M3/SqqZS3o7ciz1o4/BH5LPcD3+LezAgAWmkQwoxsEgOCVoBvgtizBYxgggQqO4A+oQAIUazTOXA1e4ppIgNif3djRfNn1oNl/3dn14LGn/fe4gToKoRhowAEagRoCK/gqQAxQQQG8kdEpOeQMIByOoQ3OPd0rfQDiK0yfIa3hXUDIwhgCQQDqvX1F/c9IVt836qD7nb0SjURMxOC5oA2U4BiYO3d/5AvG/AaoQBU+7ySKAR6QfS0jggTu/M3bXg/gIQI8Tw+QPQLePAKamuS3zQb/uCEKVmAFHGDF6QA7dC8bbfIJBrHmsfey6iRMd7znjUJwsrwNWHqFif78qiUbOCAEYljlmuHeHSTfn55cTn2nKSMy+OEWDj4nLvYaqtAn9lP/qED2X0EVynxHRFwZMjyqy4HErWHDrSE2Agb3IyL3877kqUMk/l4CKuwXqkAMMgAQw93m/cGrSZd8HP/xiUJ9nCDLjyG2Lf/yq6AZBOBiHc0YPN+G9Uv03yrq9Vptb8EZosx0UoTLK6wcHl7s/wBXIyJgACIar30EeZGIhjAhQl4MSVCjZnAhwYkUK1q8iDGjxo0cO3r8mJEXuSKYHBQqwm2gjYHnjiSpAO7XwIm8//zZvFkhBIs2DZAJgXEzqNChRIsaPYo0qdKlQqMNcNLgRTZkqDYR4Ic1q9atXLt6/Qo2rNixWy1UaRACWwIBbZi9SNIvrty5/SZcuqBl37+9fPv6/Qs4sODBhAsbPox4775hFXhQogs57hmyXq9SMMYFWbcDnAV0sSa02Mx94G4suRGhWEUbJEYXbLiPl6WBtGMzLBgbpO7dFhm65g08OEWGNizZED18IDmZvmfWFJqkTbY2x5DhAMo0u/bt3Lv7cwq1GTOqPyibP48+fVgCZp+FEBDiQJsQyExEpnsXwa/E/Pv7/w8gYaRV4MJj9801mXr8EAAABQ9084AxzjhjjP8AQCgj1G2xFaOBNcT11ltrIQ1kCU0aCodiRpZEQ0KKLvLGEDcy/sZLQgyxeFBBQ0W3QBvIGPOTd0IOSaR2TmXTDDYHHAPED1cpCGWUUmrFng7PYNPGAcyIh00VB8ZlF156BUhmmWae+c9iBBr4ZT8JqscgBxOywIIzyHBhITlNjUZNQtR8pIwGBjV0YkEQiThbawa9mCIvGgQ6KKG/MUqpRgY9Gls5GmiwjzK07WgANJwdIAQJRZ6KaqrfDSBJNswcgEwXTk5Ja63nVflMA8wYg8wzLzSjQ5v95LcfmsYeiyxgahYo7LBQxsmCEs7UOc0dFmIYVKEg2TCOMhFEYFv/bdxGoMxsvj2qTLjaVvoRL8roAe5ovrFLb0YafKuHHja8m68ezIEqTQKSSFKqqgYfbOQAdL4aAiMpPGlrxBJ3ZQEQDRzjagM6NKBxm2HmlWzIIp+ppmPNXvJsg84I0E04yEzzwrWhTeqRQXosQS653kJazhKe7uztEnp4q8HQ69Zr6c3wKsP0t5giDfU+0SyhhtBqWKIMLGpsbe6OISxAJwsFI0x22URFs8MkzCSQwAEKPDxx3HGzBwQybbXRRjPNNICDsHdpUezIgg+O2GJHMOt3ynLmgw0ONSRpIWjZ0twRL9REsITQN2cegaDKLOHNOEpnnnm+pWtAgg1Rc0TN/+ila9455asLZxAsmVSdiTJfqHF7JhHYEI3XCzxwAMGmmo282U7RcwDbB1QFsdzS02pBF8zsakwIITRTjX1fhonAmISPT/5fy7L5JcoKxqlEICHUME0IbcgclEDB8dIz6VTDokduQ39eNTXAQn8DHNpKZqcREoyuaq/Tg6AQWKmpZSITS8gEvLZmuwjUyGtOuJ4AZICd5InQYE7RkjFghYryTG+FUmJPF+jBK7vxBBoI8BteAle+HI7PcIhrEw8UpwT4YOM9BwjBhTIkO464q19CE1oEysGQzgFQaREwnR7g4bQkzo4b8OgX/+AVAVjEC4KUogY8BLiELxYQFsqwAf81hlIFMtitGaQ63gjveKpoSCEQ1IFKBmbFwkCqxwI6iFCEmNGAaeDAewf6mPh0CMmRlQx9B1IfnADAAUkk4D2BCESPgCCMmd0PaDpj2gN/xjkJMM0aTCvHOB71QDL2phxDKwfTlDGOnllDdbJ80RK/5Y0qRiCYGowNHBlhDJ5cIw12xKMzvaNH9zXgGc/IgFUEiU3zsKcBzTPG9Z5xjGkQwYbEwGEkz3msfRBjTc364foAkI83JEAJ7xGAMRJwxMkJZxzN6We47hW7fvqzl735Uz+ZdjSCwqg1fXqIQyFiTKFUIQQPQMYxRsCEZj5zo9lxyiZfQM0/Ri+bJP2KBQz/EIi28eoZyGAGXL6Xn0eic6Zm4iEl7+NOrhDgKjv9CoMoME9kIINtFepCKOunxY0MqjWKkhdBfhGbpg7KXAoNkaR4AdWq+vIgTF2qc7xWpwmNjaNkXYpHBZCNbDSgSSMtqVuz4sLmHWABQh0PIyt5gfDRdK81ZUwPv5TTrQDgCoQFgE8x+QC2YUOoB8hHF7CVLXUJdLKU5Sdlb0Qb36zkspztrGc9u48Dfna0pC2taT/EC26J1jZEmWhi2TbWssrWKHpcy3SaAYRrvnW3WiHkNRLgDCewjRnSuGtkwCdTvio3MTY9WVcIkAIxuEEMnFjQcwHACBkkwH1ckFAgHjsU/9GcdrzkLa95z4ve9HJWvL5h73OgE4JwcMZ4s61vUWprjBNKg6287W+VrjGqBMjzGONs09/MudwEF+Z87fRKCuxghCA8wbo6xe405tkNoS7gu5KbnHo/DOIQi3jEMXJvP1MyWaJERxosaF6Q7Avjm5TwhAeQhqza2l+SVqx5CchS8+rjsb8lV8FEVhZjTJY4nbrhCEaIrgorzAFjSKsba1kZKIdSm+bkJstb3nJCuQzmLod5zGIuM5nPbOY0o3nNam4zl/dRDBlxwx/cyM2GZAxmryX2ntLQaIxn6xQ5HEAAknjAjXO8W/a8gMdtMAYLEsAM40bmwEWutGAYLKzAwv81BXoIwhUskIIStDVOwHVGEAMhAPrd5EQD5chmQ5sb1R1Qq7QmKENGgo7e8GIbw/AQjeCoE3sSLIR/rq9TWCCJTh7g0Ih+a/Ue8ABELuDHXoJpXods6Uo3N8lbIYAbbiAGflwhBVe4LgWUANy1rCUQV9Znbn6hjKx6ZBuh1ey8ao1vCDLEDCYZhAMcQZPFdEEBdvCGnXUkUYqG4FUvLraxWbXdQLBAVs1+6zavcY1j1OCeS6p2+m6Y7ZDzBdM+fO6Dg2DYH5TguhyIFroTUB3HQtYmJ1KGN27uKVdv4xxfqHdsVvILYeR76FErhiUwsYJCrGAFIFANQ7YBhBhwIgb/ccg5TYaSE7qGwBjMdLh9nSKJ+b2BHsyueDar5IQHwM/Hx5A0XRwpcpGTPH1eucIPUrCJcZe7whQ4gDPaMM8JWeiokbVEOcBwAz2gZtYYYQga5OEDYWxjG5L/xS++gAUPEX3zleIGOfxdhEEkfSb+YAcqypABRgTBG/4Yzo44IABkYEMJsfU6WY9NvANAg+JmJ2mVmjcewPf4pR8HXNxDPqC/VhIshC2suRPwAOErARlKyOdN/qQ6ZYAhAsKIABh4OSIi3AELPiAC+c1f/nqkK6mcb78SyfFvf5jB36rZxzK2kQHUlyEIoXS9RPMhANhwDMxQe7a3UWDXNgsADfzV/3vY9HspdQDelABAZm16dXyWNncH8iY6hRWGVRmYtCTMYGpT1m43sQy0EUwa4A/CoAUaAH4XwRBEUA/ygAXiJw/yUAvjp37s53492Hjz5wDoQA504AgzsQzlAARloABPAF7+FxRJIACQdgxOkAY0YICyVUJswwK7B0gNGEhVsl1vMFdO4ATTQHx4ZXwXqG3DcDg3FRkq4FNiESfdUB0T0jxGRHg0RxvDEAHWsAzdxykasRLngAVYAA9fUH4+QH7l9wuM54OPWDmEsHR0MAiFkAN1xhBIKAapwAh2gCFOeBNJEALOIG1dd4W3NwAREoXOYE045oVyQ0gCEAhvwAIvc/8Mx+Bx9wF3alhkk9QsG4geccIFx2BqphYI+QAEHWYTEMULwoAa3rB9xaFU28AOXxBvwvAFZjAM2MgOkOiNH8ENhCB6hVAIg4ASBLEMMFAFCpABChAH5bAMoGgTScAIkIYMC2CKp3iAqegEclV2rzg9VaIE8dRji2WGNpSGvKhgGXgfcPhOjHAML+cMjeVYv4BETxUBqIEa7LdZm2VvPPiNkCgSdIAJ5egI9ZcbipAKRwAEYCAT8ugPVVCPbYAND5AGxKaPeOQUztBdCcAFDAiQK1QxzhAIkuAM76EEz+B2c4FcCklkDBkZrkgWceIMAhaAzCAAjqWM/nCCBSEMNif/AbGkVMVwgs0hXsXwgpuXWgF3Ea/WeETHCylRBOhQDH8ScMKAlyvhlu8ViiHQDUqAbtDgZzkpQh5FIVywgF0YlHKjaPPEBVwwewIwDWhATgjmlDQFlZDhkJckJ81DT22hanr4GrxQlzyYWiAJlxpCOR7ZlgdXa6Q5Z/7gGiuxDB72VdDRBTXwd4EgDThJmIU5APJkDNcADa24mELZBcCVGS8QRM1AmRWIbZd5TtvWJpuZHsJYUfQUhXgoFBD1IqqDmvimErFGngQBnhNxnt94bzRxnnw5j12QBj8SCMcwmL+pPAOwFixwDdMAPccpPS5UlYCpndhQYMVnmdI5nX7l/4aQIZVjESfIQIptEEQAmIwXCSM28AU8R5q8sAwnmJacxwtfoAjDQJb0RpYdKhr3pwiK8AUn2KEcKhrb8JI+aAPk8AXwcA7nwAuKQAQ56gObBSo1wAXZEAgjUJ/2STZOIU9s4wT/6J8RQwBM+HL01Jy5eFwxhaDK5YvCYp3BiElc0A3MgA1rk2qfIRRdyRsroQg+AA/YiI1fIHThKUu8IIOKcHkjug1fAKfd+AuKUA9YoAh4CaeU9ws5KgxyKkvLgAP2UIjysAw1UAv2UA+1kC7FcExckCt1hKR35FH0AHjI0CRPKj3Vg27oNqZt0A1WOmnXlqV8lZl00aW3gknV8f8CXIA9oSmbiGob50AERLCmRECD8DCj7kcCPjB+5nd+hVh+57Cm8jB+5Qd5fqoIjCoM8diDNsANdxAIdzCp1IAFtSAAtVALirAPrcUIvTINPuGbm5qkA4AM0mCra6WYolorLiRU3RAC4WRRBaqLQtaqe7WlbQKMssoBdNUTsHINzFCCy6irK4F5hUh+tVAP8KB5PcgLxjqDtXCDzgp58IAFVWB+dyAP9iB+9oCDWPCnyoCS7veo+VALRFALXwCzgQCu8KCCXjMN0DBUDceu9ykN0zAN11ADQEmv9UpI4QC0LzAN8AMN/Hof+aEB/4qZCtossapNmCQNToAMzcOTRjT/c7l6P9tABImoCDXIDsPafpYgBT7AtjU4tuXXpncQeYS4orwKrWOrCFBEo8VQCZGKiMxqD4FLqStxpkmADUJAjG9QgD17ME5xi8ewAEM7r0XbQoQEtDiAA0CrcUspF00ptej0qgiiONCgswfwBgJgZXnIlboaG3mKl+zgujLKurOza9VoBtZYDm76C9vgA8NgA9S4DZqSp3AqDOyQLiIpDCxqCXlajdgID063I10ADWDqDDzLuAjjFHSFDA+QmA1KucFISGCKA9AgpM0wDZwrF5T2uQnahlWbMowADdNwDMbwBvLEYRYKHFB1G3oZknrZHJvFa6Rpnqe5WU73oe53/xwH1IhkiRzu6Q+iqHFBW4XXazbUsAMLcIsLsF+T+71QYhbTkGEWNYAHCZ3rm6CNsaB0MbBXywEuMw3EA1y46p3AQRyTJZL9xJrMsRLipS4d6Y0cmlk4HFFPaE+LdA3WS8Gqkr2k6wTH4KQdvD5mIQOkaFFCVQPoGxfqa8I6FLpyscKUwSD5sAB2Qg/O8AB4srA052ZrzGZtzMZv7MbiEsdwTMdzbMfhsiMCQA+Y+wCIcKRJTCTZi7nj0QW6BcVSYhYJewzSsL0NUAPEEGSsusVcTLXC8sVTqTIqhXFc4LVYRmKfDMqhLMropWIh0MRcQCpvBMgIQwPSgLkL0KQcfP/It0JI0uAM0MDIxgANaDAPNmSBk1w+1PklVgvGKhNtIszJaby6o8zMzezMIVabudpPKmYA0uBNYrMDNKDN28zN3ezN3wzO4SzO40zO5WzO29wDEewEG+y9szwWFvAMC2AM0pC1zFANUnAOkfzLwLxDlSywisMFQvACx6ArxxACqaC6DawudXxw9yYvqokbdyzRDD3RFU3RZcZaNXEbtWGp0BEqWuIEI8AAI03SJW3SJ43SKa3SK83SLe3SL13SI/AA6VpjROvO4KsD0+YECzBtB5AGkGxgIMfP5CPMB0LMmMwIOYsMF5Ov3Fk/yTHDSvRzFHEck1LVIYnVleN5w6D/glhlIl4jDcygVpMQDNpg1meN1mmt1mvN1m3t1m8N13Et12bdDtpgDNPgaOx801FcBdVAD05AD9OWADLgtJDhuUNNOF0cF+0MFgwCkdPQANJwDNTh1DeBHO/2C2KpRAL1VJxdEB75IVmd1QzBDhWACkcgDGnpwEkgR2LdAHKQDFMQD7JN27Nt27WN27et27nN27vt270N3L8t3MHd251gDJBLD7tnyHtNy1UgA2QY2HSyAFg8LJKM2INT1A2pOEKFyw9AIbgaDea5D8IADsNUsYIoo5bHXjt3DoLSHOSgCPAAZ54t2iF5f1EXA1RndayVcFqSDdUwCe2wDnVd19pA/+Dx0A4ILtt1jeANTtfxoOANnuALLuEOnuAR3g4EbuAbruEdzuEf7uEhDuIjXtcDbtyLrIA2zdyUUcv0vNNgM92RDDLXjd3rpHz3cckOil0/4mgHQCeDJ0qGBwZDvn1aNIg5Cg+UJ9+ISARtSnmDWg+9uw82CrvCUA4HXN/uJ3+oEAMK0OWsB5NQaEINMAlqXQB8wAfaQApmvebacOYFcNZvbtYFAOdnveZ13uakQOdnPtd97udz3QlO8Az5JbmMveLdZgEN8NdTKA1+7QTUrcU0LjI2QAzty6XvSzyplgA/bn2iuS+o4S3fl0QxqKy9Kg/F66s1yKM+oAjsILLxjf8GJpCIwzC7WU5Gy/AFqRAEFUBwn/gaQ3EEAsACJ+QEk5AMaN0Ok4AITDAJfHDmaM4HIyAEaE4KnYAIDODsfCAE2A7tfNDs0L7n2L7tz/7mbf7n5+7nnRC5WdK9h44ehEQP2GC+jS7oWHzYkh4yit0Phv6BLdc8byAJEYhPqms/vMCHfsiCu2QpdFqIUY4Fp84OvfqnxioP8GAG3GoPilgPY1vxa2nrj3iESbiECN16V5dwLXYAxV7gZj0FpMAH184AiIAH184EiLDsTODsTGDWDNADNe/zaQDzNr/tDNAJDFDzy44HTNADPYAIpBAP6A71cZ0MnZDckCsDKu7ujU3/SLxCutVQAzKAA2f4tNaN78mi70et4xwAYJCWDXfdBp3uD063D8H0C8ugfVg+HOfADrzaqz6gO73Ko+J3B4qwDefnAyDLDmsKD7X+8bNzf6nwBKgQ+b7O30FRAQIwAsxjDHKw4WYdD6Qg0iOw7EwvBEyPCAPQA3zQCTg/CUrPBEqf9EwQ8wwwANhe8+0wAqbf80q/Azq/8lEP/GodDMYNyyxgY8ud9etBSBUlv8hQDdNk71ha9vl+ZCksug8pDQcwfeFUA29P8LThjOQCjTaA9wUho/tAjdi4u+wgrHDqA/JArs3LDrC7/kLX+I9YDNuwjqmgAACRSpm/fQX38fKX/1BhFTIjFhhrxkJbMG0V22krwIcPA0Q9ECFiwmAEIgYFtDHQ+JEBAyF8QK5cmTENg3gFUG4UyYAJn4o9ff4EGlToUKLaLk5iYcwYC2ldfvCDGlXqVKpVrV7FmlXr1qkELOiQhszYNaXIjpnol1bt2rSXLmj59U/uXLp17d7Fm1fvXr59/f6Vu29YBReU2B5Oq4KrVQIlGBlLkKDbNMohgAxU6I8Xr302NICJcCNChM0GTZ+2wSt1Qc77xh0syO7cFxuwWas+nVv3bt69ff8GHlz4cN2cFVVIUgGchtYHEWb2V0XAgmPVr01KdrFnJ5PaRuj8iKgA94oFCkwyX/5kSP/yGBmQakeeewFSGIvex5/f50WKLJAlZcopAhYjsEADD8TKqypkeGiBB5SqBi3E1JrALS32ASxDDTfksMO9BKuAB8MmXOsMBKEiAABGDoiMGWRewMYyYaArpjVelBnNG2ua620zHzdL7UfOfnHOxxqD5JE4JQ3iLMndnFwySimL+2UYK39J8rnMkgiBhWqgqQGaSSpKpqd21mnnIo3W1GYKi+KxKE2jMNLozfS0QRNON9uJ50z9ftJOOzP/BNSoMuUwxokFnHhAGiB+GPBESSelVCqvahDiGCeWeugsEtVyCwEMPSS1VFNP/ccGYggb8dN+FDsxxRUlSUASZph5oY3/y6ArrTMfVwMuSNhs7KxGH52rrTkopwzuWM5q68w21ZqMFjZgmcU2uNSiKUYzHjeDzp8kBDjgmWegeeYBSXxC01Bt4DQTTe2yO7NeeNOU0yKLyjTqonbbCQbgiSaSE+BkAp4oYIQpuqjMgw2+KOJgygS4HYonnlObTlhgJpsFHnrm0UgrJblkAr+SQZpqmDngwWYkJLHCt0ZFtWabb7ZLsCNEdDUtE2NVkYUDJJHkAGOgaaOLGTOLRllqeHm62ddWe9a0aXHrNdtspz2Ial+ZXI3qZbUmm0ljndRSoXGNbsCJY26dpJNOKqqvp3ju5nPuoPTWO6i77e67ok7gfZdQ/6ECF1wowukuQA4WnHCCmUSdqCEVSE3GPHPGvqLn6DaYcfsZBHoONS6cT0fdVBB57hlWBFPkYAEWWCjaCRlk5HXs32z4Ap5tChK2s23OEcZrJstWknfiN9sGS2d5GX55IXn5pXndkUeelxqdC3fcBEB3sRlsjqGHBTkmGWEEOeR4YP31zW9/kknclx99+dOff35J3D9fDqLXnx8A1ee/eOwPgO9bXycMmD/6HbB/AXSfAdc3AklAcAToY0YzGvA2Y2SwBiLTXAhD6JUGHKANmkJGNZ4hA5hNSGYXSl0MZZghEBWmZ/0Y2YFSRIGVEU0AjBIAEJamkO0taTNE8AHxvv+wDSaW4yDsuIMiCrJEYXxBGFjC3nB4YYI7EKEc21CEML74RWEURBH1qIcXq1eO6u2DHWEshiWyOEfTBC9tCeHSAQ6wgBAYowYNaAY0nNCMZ9TgGS/QYDOagQwntOEFiGybMbKRDSdIY4XHqEYN/miMYzSjDdnQFOiQoYQEHEByzcgkDmrADC444w3kUsI0uPBIiEjiDQkAJTY2iIwDUI4LDahB5BbAjGMg45dikRwy2tAMHOiyGtloQCGfocgXNAB0zWDGNEAoQm6WzCtAoIfRpGHJBUSIdG8x3QzVuc6cDYZ1rnKdDgEQOz1KQgDOQEYQMaOQrCmJF+wgAhEUoQj/ItQDC/BIzTnuQIwvANQHD1VEOa5Hx4KQwAfy8IEisIAFHyARCwGFB0HrgdGOclSjGvWBMJZB0Tmm5gtEOEc5UtO9NnQqG9h4Bg6eIYRpavAZumxAAwyQyGoiUnJKUQozFuUEFZawGtVoQDUGiY1pRI6RnQykFNKAzRpwwWjO4IIssdGNDg5NAC7iJGSYAQ1opBAa0zDGAULgBGjoVFGJ6qQBNFkDHFRDfDpogC57qkhk6AAIm8hhNxX7uq8swGhlMYY5PyUzUbHTspZdXas+9bPXzfMakltAGwRgDF3tMyFNi5JLfbDRevigFvJQBHMUUQtFwIMIWLDHbZMgUWix//RJWLgDcF8L3DtgVKMfBS4W5EGEOwS3FsrFgjCK6Nuy/TOjv1tG95oRFuoQMg04AK/4EjmNZwgVG4oMagNgtEiWmVCP9ICcUiAHDRmUd4VicSsga4AHHISgDdd4W8uM8YJiOuMBRzWGABLgBLKUEhrS4OQzjvGQBCBDBjg4hjHGaRYnvGC/4JWB+ABJyPIa4LwNwME2F7tiA3lFBwHWYxuM1sIJhYpml8Vx6jJ7w8QWqDEckMY0HnANZ5BLn7mTEi/MgMTbKiK3w8DSObAwjC+cI6PsQEMYJ0pRXqCBoxsN6GqJ4Ls7+GAYKFUEO1Z7USZLlLrYgx47oAwu6CShDf8jEIsToqnKaAoVvc/QwTMMEAL19hmQL0BGe/WYAGMsqoPSgJwK6ypIpbwAXchAcTUSkJSyOpaYD3DGAqYxYWOEQAAPcIIpu4GMYTpBLM5wBjEvnOoFQNgYG8ypuUrcjGqaqwFtGCqKVcxiYm9FQQH+HIsOQOPDUPbGOYa2zWqoWRLFs8XzhEamnKHHAwQRHTTa8pO2YcWGlsMMYizIuMu4DXSzG4tvLk4V2WFFdtO7elPexzbYIUYNqJsd+laGbeA9xztGRwCdY3R3ARnUZgy1moDNxgmfoef0VhMZk+Sl0T4GkU1mQ8PQMAY9wskMaUBjkUE9AD2KVpYDgHIBzpj/Bg6gAWsTtsEYSuhGN5jhDGOwmhkJUEIlw6SulG+bk3pGLyCD3QDAtuGEKhx2saW+OR1MAxnN8DhkjMHsw9g42l+XtjupPSFr+3ieNUiDEyLjhGxwoAvWgE40sCWs4HUNSHcPN0tTE6SzpUYY8NhHMQ5ypKv9auDIQ9JBwlUBAUiCBQpGhjIVqUhsOLwZOqgGi5Bh8mxo8BjVBKRYlFJrSAeyAdlgGSdL+ZADbN7Vx2jAUiThjGJG3pg65wKGI6OUs46VC5KrhjRk8ExQSoOvC6CVWXvJjPOKz8QGQOQLnqHpA2CyAahA7NS1f5WvlBeQSqk+19lioWeD3fwc2nHP/3pMINiNGhlrf7wOTOuP6UZper0FVq9wc/ji/ChI+X8W/XOW3uI/OAsX6ZCEB1AwV2uDoBKtEEAvbJA5FmkDacA4yHkRQGIZYvoYaYC9nouqY3iQNpAEengAjTsGD3yBuNojZFi1YuoGJVCCF3mBBCCXVKuGF4g5c0kDPBCBH8QDTJsGaDgGFti0bqu+DAKkEPCvRAImaaAVpaoGVHiK7bNCS/mKYrImZrA5aBA/CvG68xND9BO7Gyo79lORB3DBRIGwI+OVIpmeOJRDOJweOpTDO8TDPNRDZxkWIYHDP9zDQBTEQRxE7lk8AZidWysvbDgvbPgcRvLAZ1iAkXsIDv+LHGhqhgT4HAljqgZQpmpQpZXJhm4rJWM4QZuLr7haAGVaNWZQglspJqaSASHAgyjoAR8UgTkQgW/4BncAhhOYgzaAwGn4mNlJimhCJGzIlRAQi+rApMx7LGnIgMu5wmr8iqvzJE30IyI4p8oaw28EjGm7Ic6SJ0bggmF6AGh4iCAaIn4ixHeEx3iUx3mkx3q0RyEJF3HpEmO4MEB7gRBgRMlhKpVptFWsvRSshg66OqezuQ1SIatrA9uZuGSiwMhIgEAYrZ4zi3FCSLrCASHowSj4QWAABnMgyV88gZQkyZT8BkbgAAicMNkxBiHAgWnQgRg5L9CpJEhTFEVBhnT/jLpqlLpvYrtsdBHRcRVnA8el7AudoYSxQ4wzXIwUIYO2wideOjD5C5ezuceu9MqvBMuwjMd8lA4TpMmKwwZlOhoijDRp0EGzOAZoSEhGirhbEZ+cQpcS+qRqGCZGegAKw8jdU5mcwoPCxMVvuAfE9EVfPMnGdMxvEIdv4IBb4AACEzkWuIY0qIHLgxFsQL3N40SmqoZpQLQPokah1D4Xs8BPWqZlQoNzgiGmlE28EEf1kxTYCYdYY5mPUQIhCpdjOY1ALJJkQRIkEcvjRM7kPAhuSAhueBph0ZImwcc6Gy0WoMkX6IIaqIecdBsCI8I+gxFnfBvImSTxiZGgQga4/zoAJbC5Duq5WksZDaNFXMSDb9gBXjTJX1zJE0BJYPiGE/jPbxABQvBBQhABPJiDROCAMciHBpAG1lsAnjIAHaiBacAGgfy8IZyGqFKvzQtK1GQx1ewg84RAbpwsC0mn2VTRwCjD1rlNAKCAROsgZ5ABtduVzPiWH2mWvCvAHu1RLOEGWpgHdOAGbrAaziAG5siSxesSRlu4Cl0ks3iIafij9AosjUy0Tak5AxDGaVorNgw+GbgwHDDMH9zFbzAHX+RP/eRPcThJXoTTARUBL0iEAw2DMIiCPA2DQxAHMoADCuCkRWERpAOmaVgkt3mQY/ijy1MvYjqs9QPRxRLRzv9rOF0y0U8JwxVdURB5Sh57UQqIQfeUBgX0Teiwmn0gknCzkdIgFoHz0VflP3JwgEIoBDoogt7iBWGoAgU4AmUgQMWrMwNYgMhgRA3a0GOYhlHFK0TSIGtyOlzhMNJqVh3AATGtVh/ExTNFU5JkTJXkz3RwB8hMBwH9QQElUC+w0zAYBXSNgjvN03Y9BHcwgD+1OWRVwAQQr6AiMAnrFIZrVtARkEidOgWRAXrgQobTgUslkUzV1NnUmXf6FKnkCtiBjNZjtQcoLSQrCGXwho5VhonKVXIAziL5Q1g1Wd8qBnLAhEIYhBVYARAQvM0gByAogyd4ggrYEas5QAMAOS7/ZMIG3Mhw2BRMbDgNQr0MAsVqHT4c8ILC1MVd3EXH9FY29U9ehNoBjQJdbNcw+EFMwANM8IKtNYCwbdcoMFA5/YZRgINbSIAHeIBzuTn/EgANchsizDCKW7jTa4YMyD6BlTqUybyI9EQd+EJQuQBvbFiHbVF4elEOcKUEQLS2RYYbdceD+AUwuIEb0ANvuJb+m4cr+gVhEIYiEAZrQFV0sAZhIAfmONnWnSNuIIdBKIR5aNlCgA1/YAcFiAEF0AUx8AaCYBImlYEaOIYYEQBCEwsPhD2f+jNdC4M0MNNyzc+V1E/HtN6TNFOz1VM8FYEoMIBRIARz0F48CFtM4No8/zXQbwAGxhSHBhgDtjVF26kBGBGtBmy0SGxWoWpA9OJbSPVbEVIQc+Glnuu8JEhKhk3cpeRUqDwM/zW2eUqANziAcECGEMDYKmhHb9kHSxAGPYgAYYgAMPhV3aCGQxDdMHAAB0iCQ9CCItACFnYAOmBd16VhsuEFcjgER+AF2nUAwduHZdiGVCiDDCgDOxgInYUOxuOk9JwGYWwGYwg1MNEpHIgCKvZBXYRTcXAHxrzeLvbi7iWEd3XXMMCDO9UBQgCGAyWERBDQb0iEyFRfNz1JAA2D90VEI3Sb9Py1NpDRIMOBhcM6VPKkevjQ/+UmC+gCYIIGLmS+BjBgV0HgBP/+xtpkXKChgEDASGfoBgPDnTfkhWHQAg3wB2EQYd/YjEOYh0MYhThI4VG4AQeoAAc4hDpwAGvw4RrG5SnhhSIYhB4mgUPIASP94XLYVVRQgFSYESTODCDIB0bjJKXjwj0CRTOdA16UWi/G5mwGYxwI4zydUzlF0KpFzDnGZnGIAjv2ocfa0KGSMU5CFx3ovPPSKWyChkI2ZM35pkTBMEptgCroxvKTZDF0SgZmC4l9YEZ4A0xWAtrLJ8pNCFb1hgjYERDWAFPuskNIYTpAgBd+5RugA4ymA1fN5ZEeDmogBJd1hJV1AGEGYppFhScwYuBljQNsZlHitWxsNGD6z2z/5umebsx7mFORNFM4NYd78Oku9oIxGINA8KHvcTX0CgFGOwbvwyYPkwIc2JSmOM17VqxrZAZpCiod8GdIPlyADmjzW+BxfFFGuAaM7IYTZAZ21FhhEA1h0AIRHuHgFIZ5IF3SFd0iGIbRFQZvEIYZJunDDg5umAOXddlCsAZuqI2WHuIyEAiZBtbMYAgWIDARa4A+4iRsqIY5OOrR5mleNGpxMGqjJu3rFQGlFgAZM5rNxgYdeIHRWgBPPL1nxQHNfIGUC1iuViyv6IJBaoDvjKZHxtSyPmsFBock6FQXBRpGkAYZdFulsAy4M9WDwBHRGI0tswRyMN0N/oXxJpJ9/9CA8kbs9AaOGyYEB+jleSgiJAWCIwACuPiW7sEGMJkmpmsARlOZtBSB1RbwARdwEfCEMRAATCukRQUmtfRA8Yo4ZqorCHOC/gXuxbIAIFjeFFo4ha0x5V7uSR6M567kzorRa7iGbmCBVXTDytXuiJaAj11vrhyHOUTsfjpV9XYOS0AHdOhc6hGGwEbv4A1WIahSHZwG0BqmZsADAnfyJ8fmbzjwfHiRutrQoCJNjVsARow8ykkDsyBG03TgC68U4ZYkgfS+0SHr2AxxgR6GIyDxzfrUA7gGrypFDgAC7Hbx0jBdHH8SbpBO6WQNkc7lY0kWkh2Ww+aFIuWGYhBmJv+BGu3B8YKrghBwS6Kqqk27uRdocij39E//Bgq4hXxoAyWIyxdBL/U0mm7gNSd4hjRIA9RrhmNIsa0mc82xgFEwoaOCKkf+5zYfw7SGbhNnAViLDAFQgk7GUSahhmbPu/E2Th513fH+kRo/dGpBbEtYFj8Mzu6x4ANQpGV6pMZrg27QgSj49HSH8gVt5gR4iAzypGZo4sg4ANBLIZ1KtBCgdXu+dUrxihfgwk+6tfRE7oVFJ2B3czgn6LUwaK1IkXxggVuKYAFgdQzWWNbQ9mbZa3SgQx1nko33wz4PdI9vlpmusxBYRWxkxG7IB2JqgGlAd3WX+dW+B3YXJzWcPGX/FAByOQYdAKyhbbTIEzZb73dvsoAqgIZcoSTIQIbC7YcJcAEQR3iwE3ZXIcdr4wBl6xi3wYZSdXF/4oVDoAPCJl1yEAZ0eLf05gx2cIAb8Aaz5/h5oANreI0igHuSN2VjuWy1ObXPc74YCTpoAKwwUHd1yGbDT8k1nXk/pQAZMzCrU6QQ6IYQIKZCMoDAIkE9irxmqIE4IPqiL3MLiKYq+LW4SoAGcPp+iOSpx7F9aO44r7bGRbREI6ZjaPGHlnZIR4O2pwONluV5SPsbD/tVFvve14K2nwd2YGE6cAAt6Fy8ZxIz4Os+P0QugIbAYkIYeQbyeoYueAZPN3yfFgfy/00EYJBjklTfJ0+HELDje7qG62fCEHikuKwBHbh8rFsKoa8mCwd9gOAncCDBggYP8iNgAUi1Gg3atDnQpkGSfhYvYrTo4gKCff8+ggwpciTJkiZPokypciXLj/uGVaBEKSNNi2cQ4ixIAMCTaceYJRDgDJkAIMr8IU3Kax/Tpk6fQuVl5lAcB0kc1HGgRcNSqF6/gg0rNiwvXmgc3Dh0I4yDCqPQhhlFBysdrmPv4s2rd9/SeQ4OKfuVdHCSENOgvQjBCNu0Bs+gPWuG7RmwypYvY66sLvNld+Isf/tc+QSwE3gM1AmTTgQeQiK+RUnEeTZtA2NuCRDABdq0ZopfOP9+JlxyDR3HHtCDdgwZsgaoNhHIKX069erWrxNUaBxbxGzem1WsifHSBS2/WqJPr349e5Qvj8gUn1EFdp0AOEzrFlRAgm5KjA7mT1l7PSXMIQc6MNcN8yjTFYEPQtgULzbM400R82ihllppWaVWgg5GGKKIEo5DToXW2MBLgP5UYYByEIUwmQ5OIOOEb8+YQ9tsm83WmmVhECLOCd+IkM4JTjAyChmEyFAHGaOEUYdsPOqo4ygX3BJjDdAgg00IIbzwzIw1+tbANM8gYww0DTDDzDNA/BBdfXPSWed1ClVhTG7MZGNMNuDJZ9EEG3XUnqGHIpqoSzDFF6hNdu5EARf/SmDjXwjHNAPgYANCyIsw8xQxzDzCFFGEML+AOKKqYm1jzT6/CGNGqRaKSmqoytiwqq4QWsJXVyoGWNg1xrQh2Qs6hOEEM8YgM9E3mJFmGZWjRRstMO6cIEJqsEVRR2qERGGAaqhFwcEoo3jiSR0cSGltlbOdEMZt2CBTzTEQSXZHFc/0aYyxZiLDDI3MtAENnHYinLDCAmnHTD4hZCMAPX+GF+hG5imascYbl/Reo47eVGd0uvjHRQ0vMAMNM0AIs6KqnHK6q8xflVWzDeMsNWDOMc/c81gwr1hBCPS0wUwDOhwdRgPGHNBAMw08a9kJ7nD2zbPifCZOaMDANkc1/56MYg4ZTnJgipOemCJONXVgMjYZnpBhABwOiPYube5E4ckYITxgDLHZHP1CGDMeYIzTLzTDnL8DNwCnnAtDHjl1FlTRjADYMCPAATZW4Wg/F3vEseijI/pSTDN5Tp/I/NxyQDfT1JDmA0UdtWmqe/FSDDe87F4Mzz7P/GvuuVPje++83w688l4BO1gVIUjUwDENHO0QswuEKcJlc+Ahm7WwuRaFF9/ENQcw3SrpiQM7sCvA2enWQUsUY6dGBhlhyDuP3e96obfmTButMQ2ogvUW4ITGcGci1GsGs57zOMlBMIIMo1wDYhQCARTtBRWTD3kKRboPgrAlpvtYoEJGp//oUMAZXOCCM5bFjEB0wRoryhlfakjDG9qwhmDBIQ9z2MMf+jCIQOyhXoYoxCMaMYlIXCINfbWiwhjjUtMwQDN08IwXIEM5WdReZb7xDCglQgQiSAQeMFGNuHirXJ44xDeyYQoO2O8Q5nDCKLKBiTAIwBSmUI0I2mCKUZAvDLAxhWz2pyNC3GIMmltA0RpDRaUhYwE+OYYT2hCCiTzDaQdohgMl6MkIUu4ZbVCC5gj2AhN4jlChCyErWzmSEaIOZJACAAWQ8QBbHsAZzqDdDGvmy18CM5jCHCYxi2nMYyIzmcpcJjObGcwV+SMJbWBkvbjTDMQ1ABrKkQYXT1CuN2L/wgDiCsG5DGC2NnAAbV4QgRNMYT8yHOIEMjBbFOoZhVGMDxgiIMSzQhPIexhSRyLwBBzykY0FBMwJx+BOAxB3mGdQcllOAJxkDvCMLsTpkxpdmHamARFmKIFg2Oicozq4SleilJWw9Fw/TDinnXCABbpkAQtewIWiyBCaOt0pT3vq058CNahCHSpRi2pUoibBADJIQOHagI0XYEMywnkBNLqJh3yMwRQGKBsZOECIarxNj6ZQJ2zSiAlC6DMMXpjDHL6xGqtB6wTmEIH5Akqbb3BgDPlghgyqwdQoPtUA2DDTMw6TJol4JxvMQEYnN+pYOy3EIctChg4Qp4NUcuSk/ynd7OhW6jmX1gemLEiAM2Q6jWkUpWVHXS1rW+va18I2tj1NAjagcQBJOEMJxWJGM3pbqQbggWrZIkNW02k2MtxxFBxgVxgMMApCpOMb1cCE1aIWNanZNbugyWs+1HSMA4C3TZjrbeKaMY1qGIMFhWMBUNqggBQ88LHyrY52MtkmJyDtWJ4zKWf721lGxbKEs0yhALoRDmRMIzGaki2DG+zgB0N4qIVZAE0XYIwEZPAFllxsFISrD3PWYatsc0Id6kkGU/BTjM+K7nW162LaMKKg3XBCelnQNwwyA3EQoZc0pEGPSSzgAAmQhBLIAN/5Itk6C+mSRELQ2wbgALMe9P8vlRW1D2LAJ8DyAS12YOqMQGADB+GAamojbOYzoznNrJ0w0wp3AAFkA3NFw0YN0vCsIUUBEziIQhiiIMazmiNZiUgHMAhNrRcjejZkgAMHkHEMCxfuwm0wBsFM6RhpGDDICUgAMxqb5E8jRCFdaBOlLdkMaaCypJmtMqtLx6gJsJTLd7qPw0JQg2kk4IJAyKmae+3rX6t5wm06ADOIDdUQLKuKwe1idb+RiDuLwx3q2Ke7Em1tzpxg0RR4QUQ53SajfYlPDXBIA7LhbaYxNqOgXrdOLKADv9UI2eNOtcVW3ep7r8ezshTZfYJiQaGEgGXAHjjBC/7aCpChWcwZ5TH/psEd5jwVBy0+dGmqbe0WTzzRJ7ANBZrB22Ihg9OnfXiXetOMNuRmIs3JwCbY7fKBaMdvC2hhM55RAyJgFmP43rkIhwEfWH92lhzY9AUDIYAFJGDBBl8605sOzSqQgVjZBOkL7gBVLDq1Ghm/NmasNgcxfp0QXxff1rW78dsgW7GPIRgX7hDVLvGWYBfMByafkQF1v5zdFmiAkAF4pgbg3FGq5DnhVTJCoO/7hADIRwLe4B+jsyDgqnU65Stf8ML07RhCCDk2lIDFhrYJGWV/sTsM7U/W4A8Teu7zF9UKUGufAF1Zgrc29VOpFwAHZQRjqhIu+YJq2B06eWe3QgwQ/wimDoVL2KC3fAZf+Od3zOck3PKAE6AEZDQDw3rqwuQt7/3vnzkJApBpN/oG0usXK5NRHT0wpjUbEdTNHK6xWhmj8I1RiBNKDYgLlOLC9Xh5QpbkkjPcEqWFQEjxViadHHcIwAVhA+A4zvDpXRdsmjEgVJogA/OJBw/YG/R5IEgcXqwJ3YUJwGIVGwzxGvip4ArGltA8APIdw09sWtE0APY1AxeNBrR0XWtYDRmplQjkWT2FASbc07Y0Q/7x2T2JSz3tz2Y4YftBS95kiTNcWAI8QAwqgRJg2DXZoMc1YAhQWqbgnQQimXZcA1MhHYYdgwbWBKFowAfC4T+EYNDxG/8jQEMCBEIbcIExPEA+dEHtsGAgCqJRVQA2XIOQOcNy+A1/MIMzEBsz4CAwtJVohIY5TCKRNMMo2FNzQYk48d8o6IA4YQIw9FmfzV+4hEFbZYb7VQmPeJPegMkhWqEi6kkCGEMLMQM23OIl+c3mAIHwkeGnUc4ZHkDEbNo0sCFNcOCUxeHzeQziCVgd3qESdMMLPMADoOAgauM2/pQ0SYN6sdeyLIBi8aGk4QFo9FlbiYAX+NkQrtNpQMm54M8o0JEmNoC49FkUoNVrtJU75AgQEsLr7c8JnEA6YI040MJlnAAhUAAcCAAySMMByBSp0VifpAmGKctfgZc0YFR8BaP/Y2mHkEnEkCWAEwRevTFjMxKevkWj4nGAMSiBM/gHU/ESN9rkTSYF5tmikAlMA0iDEzhBkBXNOVaGCExXPe3fPO4fdWXDKFQDlGCCPgyhPgLhDz7b6MFVlZBGtIQGIRDCIVxFXZWGCDRkPlDhTsJZDFZDUAIQM1iYLRrDGyTAAnTkR5ahBVDgDKZXfyRjRoCOSkLfHCbeS9FSG+gSKRldmeHkYm7j87CAAPjNpE2PENhL3y0AUXJNFBxCFBzhPMYjJgTaVHrBs70GXBGJW2klQVZLaVTGQbIVIXjBIYRBHNSBGLhBCvxAKVSBoXENBxSUkMFlAjhaNcgAlwhZJB3D/4WxgCQEQiCwQF3apXwpRAM8AHs1gKYZA0mh5HkAZuEJZksSJgccQEwGBcoFgtIxZnqq4PMsALJFUjcYjXJUoTNAAx5YFxDKAJS0Ribu3z6e5usRmsXRhmqqZhclwhwQwjwcggMYQRDc5g/8wBVcAQCIAgGIwoUawWXcg2/mA3wWzXEs1jTgACNt2jFwyaYJWXMeQBcAY3SCJF5KwzUcQ+yA1zFop3xQQnloVnfe23dSH7/FVBZu2gI4DPep55GqYGEwx6UcAynVVsgx1QFwgX2CRmvggQjcA2zgDz+xJkFqV3XtwA7gQWw6gAOMghG4AiS4Qh+UwhVswIWKAivIaf+cXigriIIRuMuiiSfcxWADdsMxOANT2eJ3oSjKvQE9QKeLbpR2PMAC3FoFrqGUvSGP8twziiC/UYAtaqHrZM6uIemnWl4VDF2XYE5uhEA3dIPiMJUQbJ3pvcbFfQNsjugnBAIFcEIubAAAbMAG8MOuisKuvimcCiucQgJm1AEcUEADkmo35AMGwactAcVQ+E2jbmQEKuqiuhtPNktQMMMG1cQE5GhKUiqrXVlMQOOPKh7jPUAIWJ8SPEAbCByoyivTJUGz5ti9tAF8MgtVEUUCyMA3CKhdUUk6uAMtzEER0MEhVEAcNKgr6AIKoIAHsAEbjAEcTCgAAEBC7Kqu6mr/sA6rKLiBQh5rspbgMUBVGwRMqp5W5iRADIIXGhrMGF6rBE0nKb1BL27OjW5gB45rq1kqHZ4QP4gnkeZWf3RDvM5r0g6c+HHaMVwRc3Cao8WO0T0D+2WGl4pDIiQoHRACLXjthdDBDXRBF6ACI+iCJ+gCJ6TABXhA23rAB8DtB4zB3NpC3epqHgArsA6rG/DmxsGBJ+RGvSwH1ArMYWTD8SGDfgQqU0EDi3rkzEKQu+HhG7CAQjmat9IEuPJsz1aZj4qHrFkHTL0OMhwmhiGt0qJusIVAC5noNORWbmRevx7DxEWL1mgN1zzLVy7sH0ACFUDCDSgDONwAwwYBI3BA/z7gwwf4AdziAwVQgNt6AMTCLQqswRpEbCuoAN7mAQDkQa/q7YWmQN3E3tzmmqNBVEwGgrveElEcADKwK+luGjIkKuRGkEIAweRKgqM1nM7WRI7qHOeS66tdqkseAwvp0gEEQj6gZ+oyMIRVASNwWjNAwwKQUm4sbrRWVWdkLYJ6gRcQAg14ATuQgwXkZimswiq8AiToARjEQRCUAQXcgvMiwQcIQtsKgiBALArcMAogARLcMA5bb9uewiVwr/Zyb8eCr1iewDPAgUOWLDTcVFBEaUglABcQhW44wQG8ATM4Lv1+kuTmg1zmYpjwb0ZorrgCMGd5bk0gDEy57qaFVP8++GEKNnAdN5j4CUBIoYn1vQF5NqASmKhYfoMX4EAYVIEOVEESDAMxJAE8gAE/2OmvrgIVLMERZEAZ3AI+JC/E+rAf1LAH/LAO3zASBELEti0PewAE4MIp2IIrpMAQlIL2bgDeikIu6M9oyEtBYRC3AQUpWV95KoGMamGqviAXzK8XR07DBIIkMMOXKMEz9CVG+C93pjGV/ayjtPF9BCp/lKofCoYdgzODFYZ/UAozoOqmnd8B/ikXuQMhhIAcMwIqHAEYwEMSKAI4uEEkb8ArUMERIBwHUMDEfgAo4/AnQ+9BizIEQEArTGwq48IW2EIKBIEYWMAQ5EIeXEEe4G3/H3hBtYRBIh2gt2HDA2hhFvbeAXIBoA4zH9aAtSJz5FKgEqxQFgpAA6CB5/jvjlZzSq0xTTxu6N5HNwDnJZHSAofzUR9VEnRBDWhhCQaM9eUGNtxB5nQDZuLBLXwAG+ADI8BD8CrCMMQBJF+oKvzBDRyBAsBw8n4ACgx0QYOyQ+NCXG8BLkBA26ryFuD1KZwCXk+AL3CCLuDDLXDCE4iBK+RCLpTCEByC1HhBDNxCF7yAFh4gMpS0n95BFprz4hrDNdTAMb+0wogaaT3AC/iHALzATQseR1DzTquxAHtONnNA3zjDKDUgvAIiUuO2USm1EPhJHvcehuXGC9RANxid/1UPdNtSAAKcAxGcgx5cgZ3uMySkQtk6b3O+QSAgAVv3sA47NF73wwTMdSu0AgR49wSAN17jtS3gAxsoNBvEcAw8gS5cgCug1WjgQV51wR6inJBaktHdGsqVoFBDpox62mdDjgVEdrt2ngA0w0niqI6ytn/1dEb8NH3dBxfAJ0gJgNGdbm57eFApNQ5Mg7kxotEExQtMQ+YIwDmSBh6wwSmsMj6gwh0owg1swpz2QQpYAEBjdyAswidMwiL0MBLswRtkd9uuMl/jQivgsAfw9Sz4wl5vwSyIt/KOd11nNRuMty509GiIgCnAASpw25vl2mKFHJi8wC7lcZsM2QEcA/9GGbjkiFpJZ+EFNUMZZ8QyrnaEo9SEYwRsY3guAgWH3/aHG3pPPTC3LY05Lw0LxUiTghRmEkIrbMEplMATVEAV2MGNs8IGlEIulIEuIEE+9DCQ80EBrIOQc7LyesBDrzIEsEHbxi15n4IvsAGVv22su61CQ68qs4EOVIsI6OlgKYuZ10gWYlEjVtqkvRkyuHScKwxeVnabnCqeS/Pm8nkr+flFVDh1wBQX5JjuRVEXoMOhm3tPVQAjIENh1eCZKFSKo7gxxCAe5AjX3EIJ6IIC3IEdiMFz22kppMBiBMJaa/cnxIOQ+3AN+0Ev3PUWYPkPw20qt7eWA7EgKPTFX7z/xE85GVTLN4zsZCTYuk+PyVbjcpioyUoP6TaOzEK7yODlA8hkCHDBNCADF0TzRSyjTmc7CG27RcA2QtXgAVzhyhT6uRs9UhTGYTwAMzTcmdTAraV0wwEX1QCDOVRBKlTAEQRBy+F4HyiAeSnBQPsBKBP8DUv8Q6M3LpS92WN8K/hCK9DwGviwKsN4XMf1xT90PnyP3HDAqSUu7Dh9DUS9vdQADjz9aTnqL3Z7y4euu51WggH+zeE0tu88z2MZJZyreCy+dMAUpmUxU02KUR+9udOWEKg0F1wDF+CA4Z9WDCLDC0icZbCD1lsAABAAjrtBENADpg182/YC9Fp8KqN3/6VDwAf0sNl3d123Aq4LgpBb/BCrgF7r9Vyj/S24i20wwp/GZOqLqIgj/nII99PH4DVAw91tPuNPh3aEg4ge/mE4+M6iceWTjumYN0vBtjZV4RvskuiPPkD4EziQYEGDBxEmVLiQYUODSbDV4KLkARdkXHykmXZsozFmzHCIOAEMWIUU/FywUimqlKEgzyYtOIAk0Ac2+Nh40OkBAq4tPyG0EoQCCRJBPD20grAF1yyerZyiWPQJhYdTtkr4mnVp1qmuP2+NJAlsFBxG2Lo548LF2bQ0ODZCQ+YR2YuNTh48gAZkEwF+fwEHFjyYcGHDhxEnVizYApC1OKBBe4Hsmf+JfpcxZ75M6QKCff9AhxY9mnRp06dRp1a9mnVr0PuGVaA0QXPty34XEyYAgBE0ic4kBToQqIs1h8eRJ1e+nHlz58+fJwkBbVqNcA+YcamxcRq0aweYPZAhEpi4MmdUshIl6pUbI11kjFhgrFmzLtgEoEAh6GjPLada+YCo/Y7qBQL/gPKDDTZa8eCDRTpZw4MtZmEQKjawKsEWFWIYC5gTwhiDAmwasM6jacKp55jIHjgAmWOQeRHGBYQA4gfccstRxx15LIwAC6oIp5u6NmJmmiRs04wzz1xr0sknoYwytX2IqWAC2pLMrEfAduMgnBcfkCQBZwQAQhno0ExTzTX/2WxzOemQwSGNGh5AZgEnulnxmgecOUCJZ3YgSRwLVlpvAyogScWERZNIQoc7arljDyT026mVAPXTr0AEt+hngi2C+uADBz9Yo5NFWvnvUqVawecJMSxIoY5vxnInxFtCkBMaYxaA8UVoFmjxAGdkjMyYY7q4cctlmW12MCCh+cgYLubTwbIsN+vsMym57dbbb/+B7YjZsMUMRx675NNOFtQKAQhh3IxX3nnprfegJAQwBgfrrpnPmGOvYeaABRIIxAnyxDFiPUNfocKIJBAgBgwwdMjvA0r386NBfJBYoyj+eMLFp5+2wJLCBnUKEIl4UEh1llmUOpANU4wwIogK/8QZC8Qxxsi1hmP6PeBfaY5RYmABBHjgGGlwwMEYZJI919mpqVbsxyqkYeYaaWI8Bgc0yu2HMy1+Adfss9E2DTYrsSxXah39ooCFBBLg9ZppyjzT3r357ttvhqTr1U5j6J5PiAXaYEYIZBJwIlBg3IljFVFW2WAVRI2Io4IX7qNgVAH786mVNaYwSqeRP/3vlFN++vQUCFZn/RRRW1n9wEu7YiOGIOwwogJaSTrBhDFwfVGmfHmVYYEQVuxzAWlqaNoJJ/h6u+rrsQfMAh2kcQYarimTgpiwx9427fPR73ZtcsO2PrfdKHDmgaePOYYLd+H9W//9+Zc3CQOO4ZE7Cf/sTtI4QDaegYP5GQMPJEnHDVYRwVW8AhJuCIIRFCCAQARCJwKqyshAhYI1HMUnl0mdqpbyE6+srnWgYt1/YLdCSlQIDrowwg1yFrwoeMITAmjDsRhHjwUM0SNwCeABnOCbGhhDGjZyX/ag2Kwf6WA+0pCGEw5wDDScg3wXIFv6wBjGJq3tSmHrB7PSJZcXHIMZx8Bf/+AYRzkq53/RQuIzpPE8aGDxBfvayAHwIJZ5SPBykLAZByiQjw8cRRCBqMpSPuWCVuxnKZhR3SlwcaAXvu5AKWRhyVRHMhXe7glHSITOvMCBHiYgG9WAxjMWAI0AttEE3UGG0BowjVs2UVn/UfRl1bYnkzvJhBlpGF+5lmQ+MS6TmaMRVxnbt6zd9KYGL2hAA5j3xjluk5vd9EcFQpC1bDRABpBZUQCrU4Ma7CoKYyHEKyKoCkMGIQgUuMUaRIWCQFDAA73wySl8AQecwE6UXtFkDClBCRjCDher64oLbNdCryglkyUwAiF0RggOjIEDbRgnZFwJjTr5pjrT+NexjMECaXShL790qRSBJA1j0MMJMpGEDIjQRSY1k6fNJGPbsHUGafKGIy9yQhuOkTdvLpWp+pOOMbKRDSe4kms1yCNH+vizBgIjHehQRQSpEIcLGiEft/AcCt7whg/0xCezgAPx2PAyCMwCdkrB/+QLt+ALX6gQkwt9GV0JOlEP5KQVTYmBFzJKBjjkw6Pk3OM5FzCNXDYNRtNaAD320suXbpZHQJLB9ITIggNI41rYSmZPUSvG9QE1S0Ld0jSRkUTl/atM+WvqbXEbrySQATxSPUY1jtEGWR5gayCBzFaBkYivquIPN+hdEBiRjzWgVa39PNAWWrEgOJSADYtMiib/+cKA4pVkr+NkDL2yoO5+wK5jCINYTjCHOsCBAj90Qv2yQRmZXOMYfUxDAI0xDWmMABqp0CxnEWy17Vnxs0NkwQJKm6XTppbC56NSEqBZLtf2CLZzES0LWFAm4+SWxCWGDr6GdSw8GSOJxjjAg/+bUR1oIDcdqlAFFW5wBDtA1xP6fIMjeXKghq4KH/gQkKh4ApQFaXJVm8Rr7Aq6XiTX7gIO8NA35svY2DrBGdlY0QFevIAY4+CzDYBGNoyR2ScmmM2BsUADrhjbPNI0wkmacIXxDK6fmnHD6AIAB/gkgDckgF0J6IJtTZxoRTcEX85w8QBBsqswV6MZDXCCEO4xFkhQ4Q96ECsFjIwCSSwCBX5ga0PneqlQC2KRBsrkkVMmM7vazrwlLNkEXCBlfNYOAEa4sgHoKwAhIoMZzYAMmFkA3GYsrVcyaMMBcODENk/bR9ujBzNeJI1qbLvOtllS2fIcbvXFhn0aHiqgxST/AEm8uA1mWvS74X0QcIoWifMx9h5ZkOZnzOUAMgDeCf4AiebGgQz4cFBaH9lJXKzKQfjQlB9ChinPOUgQc2VQUHbioCR3ygWzKAEcRFWqUZ3iEq6ArznKkg8BDMwJxujjrliQxGeguUVJbLmaqZ1zxujgaa+sRjlr0O3a3FncRXfSnsPW5x1NcxLOSACYkTGNdiM63lVXdBUEcFmhsTjoJh0Y+GTq77Hc4A9lt4MYPEeThPcEAjdBwagCxB+QHUgQlPLAUBI+0VHxJ1MV38IML8AJONydVGudQC48BAwdLHbl/zpG9KYhtFg2o6aXZWKwVtpSnev8R5aWETKq0YBn/yAJmdoy+unHGJsMB3WojDiGn5DRgMe3W29Wt72Jq0AG+fwLGdB4yzGcwQxpyMXmYifJDSAhcCOUgQJvH5WQG+oBopguKTqZOy7qXhXQJflTs8hUUYrySBdwKAa+ILyoBIELSiB+LOoIUX2f5oQavOUFQrPisbS9gHyndKUH3nybpwjs/uW+hE5JTA/1EFA1nom1kkTp4IY3CEYAoq4G6kGbbu8CcasKQmAS6qd+oGFfXoDFImMBts0JxkMs6GDTBK4MbmFU/CmF/oPv7E7IOsgPfAIC9kM/RiVkVIgNkGARMIbUeMIFLuECLsAXIICRRkX9cuEe0mEsogAOPKEN7v+rO+aEGZjolX6rBFOK/6Lm/3LuambrGvbvGAowM4guAdXQmVSPAW3DAXNkmg6AbpjhBV4AG2gPA/WQqZYBX4zhGV4pMmqgAdrAlfbFlWKkGgKJJFIQUf5ADAwOhF4oCfkudJjiUpbCK+5OU5ACAlIHAh6kKhxEKf7jErDCFoIiJ9bqFFjhCuZAZ/CAeNqgOwSxGYxkXwDRCSyNxZCBHh6gGqoHDHPOAmpACI6h5YzhAVjADHVKmdbwGcOlDfms9VhAEt7gABIHD99lD7mxm1DsGcARfF5AuJrmGUQPzZxgEYGBDvqgDxAlCOAghfrh7yBKKOSuP1IIAngCQJTi7kb/aCf8Yx7Xq5NIhhJsASvgwBde51JOgQdYwRaQ6wQI4RZ6BhxhpAE+wvcGcRDnAttI8AGeQdqEEQA9i2hSzBga4AwxIw2hUQ0XcBpfizeQbd2SaOq68SblCMXuC7iYoQ1qwMt8QwfAcS4U0YGS4BU2oBT6ABI8YRY6pWRmwRbMT+5MpycgqrsG6/mwiyhAJilkhw2OItbu6uM05BJmgxIc8gwmYBbaKXjwwBPGgAzu66hiD/RwQAcaAAcagFecAAunpwZEciTZLJiMwdmQCvQQoBlbsiWphG1gksP+bD4kgSahIQQODScxk39QDAuxjdgsrZXUSS+bIfaQiw5KQRQ2/yApc8EWHCqgeKhBhoJS/O4UPGAR/pEHQXEo5M4rMy4pGmRVsgsOZiGhEooACIAVtqAXcMAdgkcEPGGx6MIJQmAanACBcCCBGgAb7oszs6EGDGzNBBOKfqQLRGt6ZE4GVDJbdmox1xDpzC0mOeAYqlFM7kupMvM++aYPQwDMEKcZzBEbqsEJKGNfkAEbKg25vOAVFkYU8uAKtMIWciEGXCEG+nENFqE/XkcqkOD5RMYpdIIrK64VSuD5giIofpOiamcCKOEMzgAAzoAp/KAGmJMk5mCj8qEnjY1EAhQZ1OkZDLQBmuFpsoEZdCAww5Oz3owe6saKtq0ywmYCDpA9Xf9yGI5g9VprqPJhAZhhbpDHPvHzS+nlf7BDGmwxgZ5BCCit0jDSmpqhLYFhDvoANTcANfMAAGwBAIZgCPrAAuBAoAJBNvsRySoJu9bL+pLsFOIxk2IHE52MdXhABXxhDGqnF3qBC2Y0vhSLA6AKG3BRBmSgGbDBHJnhmrLT80LS/470l6ao5ZDoaYyhGtJTbKJUShHQPVkPPrXUGeihDfLFJsH0V3WrGUbAToD0Gd6CzEC10mLsGV7ATedAFVIzNVETAPJgA/LgWkshF0phCPLB+ZBs4zylQr5VKyfgFNiAoFRHk5jCvP6OBy4BDtZgDdgAF3qhFnLoTUNgDPKB8kr/5FifoRnaAEhfAByz0wAqLdpQNVV9KZgEBszAzBhilSVptehs9Urhk7+Q4RqMYeUsEFg9Nk2qoA1kwPGcIIFqgGDrowEG1hxxINO4yg2idU5T81qt9VqvtQ88Z70Y5Ccww1yRzCasomQA5LtASZRgaHWIcwLYIF7ltRcY4V6/wQBEBKlE7zrBMVmviWDbIAQO1kgV1pemaBo+4tkI5wAidlYn1uheMunOzffk0+myQQC6oPY+tm6dA19ADDx6BUjVtBkMwACuSQeMDXjEgQosJ2bltFptNg8uAB9Y5VJuTXW661yzyyZKJjc1jmQ85TJixwV4YDa6jw3GIF4/IBBy/+gEvqEsKCBf6odvr8lv1RQvE0f2QlLzvtaltkeXosrF6iZWoXQ901ZtpZFt4XP+joFuqjMfgAAd7LZ5m6MKOEASQqxxkKEN6qM+DMBAX6AZdMAEgQcYICFaK2dO6XRxryAnOMV1THTJQAV3gGKRFokUPYUSiFAFzoAHPnc2mIIpZqFU1kASTklQwgAObkE4Ws5ArxcbDHZ7daAanu63GiADEvZ2r2eKzLEB8isbBuZsgTd4xW1t3xMyGWEadIluZspLnTeFHQLrQIxukAFgVRY/rPeaIuJ5RIAk3AESKmeHpdVQatYWGgR2rqRcYSZU0BXKgAICemEfn9IFbOECxv/ARXngSphCZPwJu0qlHcxBLL7h/RgruJQ1BEJghpvhBWpABsSEGYCrDmyXgqNoe/oLgz+CGZy0XKBUC5zRg/OsYhuw9YgFC5dmY4tDhQmZ0dStPLcDGwwUG0IA26ZqRZjohkniD2L2cHsYNa8AALqCdT4lk/pxFFENicsVykzIBUqAEzjBFlyAin9CZFy5F2BmDejhHtTBgaLwFgRA/rLTQJkhBOjjvl5JJoTmFyUYPN0YjRqDPggxAX4o6HQK3PT4g4c3hP3M9dQlj0LM3Qp5mxFCA/PNN642BLBBWqYqj1puPMbiD8Z3nRGXADaAH44TPVih486LIRvqk/5OBQD/QENY9AxUQAVOeRNsIXWs2Bf8wA+KTBcogANMgR70oZahkHgMABx1gJFtkRmmx4qm504EFBl4yZiP+bW2xwmaIRvaIAGw7Rlyyo7RNporjI/fEABikhFGgAvCg9hkYhu5eacJAl+E6C1IVZHHOc2gIUBZDJ1JQnIoJzXZuYcJQBSeOjWlOKEgSkWFdogpgRUAIFt/4Ap+wALKoAyCABXG4GX8QKAUWgBqwVrSYAB2QByAB6JJQgTGwBMo45ruUJGRKDKO0QmIZhosAudCOnsCsCdxtA7BpvS+yKXDDaZro0XhMxw84iOChRl0mqd5OvfyTQgGsQsocJzzq78e7xhE/0+ST8ABJseSx7eSF8Y4Xfs4YZsVYvs4ZRueN+AKvNoUbmAeiIEQEKAWGCEESgQHpEAKBmAOxEEcRuIEmJu5P2QsnPMWsEFwdaAegBQLX8Quilr0VLb3vHawpyYAh7SkGdkAVhpbfjePGRu1qKRK3fCxZRoyKYDYugEL86hMygGzMVs65ibA6uNkt9dOYGRFihW5buA0xZepLTla10O20+PBVcK1NwAAqPUK8iAXcsEU6gATzOAEaAF18UAEkvvD3cHDmzvxgOEbvMALgOcb4FIAUvZksaEu7uRFBtGaVJaOvxu8YYp7oAp7A/a8Jayl17unHFszIFu+BcYjmOgBUP9Yvwv5fwgmG0lEtDdiPjiiAQAXsUjiEBS0ksGcwcm3wWn7DIyTwi8gF1xBw0dhFMIgCghBBGhFLD6kue2czhPvG3DAAOrAC0biGziAvtrgR6fBmmRpfkgbSEmVClkKpHk8Di0gDKSBHg7AYIFUBxIbvYm8yH1qmoMqvv2MA5yuM4MlD6GcmyFiV3p5a0f1vohmPnSRb910HuI0zG19h3H7B34gBWLgCTS8Dtz8zUP8GyA6HfBcZ1A82UkiasnAFDBBUDaKAsQ4BOpy+I4B1l8XcDE4gif40TnMs9ioDWJvYDlYvTmdmY48M5K8mucmAeriALCjCqju1FMYnGTgGbj/QJEFQLgFvHUr7V/bAAfGAg1qXVoVnJBK4RX6wA3cQOCaiw4IYQ5c9s7vXNkt3uK/oQ0MgAzCwNi/gQw8Qdp5lQr7/V91UXAD9oUjuI29vVm252SdoG76shlIT9M7+Nw73TGTDtSX7s/S6gCEJGksm27pvd45gB50yZq2NkidIZZOVtFDwACcNU7lVIKUsuHtoAJuwAsiPhGcMB3A3tifEMWP/eLN/sqqYePDQLnFoQ5EpIzHGCOZiGkUHWCbgdJmMQNYvuVFugtEL1rGtgFqfshvHueXKd0xY917ngI2aEyGhAtqq+gLWQfyoW5eRMsT54cWgKLrw0CLUlCMoD0w/ycOGoUO5mEe5gC5n3Dsz771XR/FvyEK2twLPF5qR4QQAVZojuEZTrbzGyAM/rUbALPb+V5HGiO2fiYbUrYKnnTTDR+MEP8yFP8BGSEBGJ8iYuTJJd9uq6DykUjlAVbmdx+Dh3QaTEAKxuIbCOEG0CDi79VDWP/15X/+gUEEogAPCHcU6tp6/R4gQiQwduxYg2bNmDWrkQZHM2PSuvwgwK+ixYsYM2rcyLGjx48gLxKwoMMYsxo1GqjUUaWfy5cwXVK6gODXv5s4c+rcybOnz59AgwodSvTmvmEVJkyIydTlGQAhNRIAwOhBIAHOHjBDJgCIMn9gw4odS7as2bNo0/+qXcu2rdu3cOPCTYK12bFm2HQ0CHEAmZODzbK1acMQjzlgiMWlO4G4sePHkCNLnkyZ8r10jc3pGHMrRDOVAg4cc/I5cIhuOIgIcXLASYZNFKPKnk27NkcCT4Aga/YMWrWVJprGnEBzX9HjyJMrXw70aNKlwmE+tc1vKqMRCZQ8eGDMWNdfcsOLH0++vPnzcpMYgJay2YtnLwZek/YCWzNkbRYy/Fa5v///AKoDjICQnRCFJ7p4VkMzA0lzV2CCNYMDNBMa44REsVGn4YYcWjQSEAu4h0w11TSjAxHRvTQTAsYx5+KLMMb4j3NKpfjSdCIRQMAZOnZEEQdOXMMFMiz/LGAMI0Cgs4wN7zDpZJNQPilllFROaWWVWF6pZZZcbulll2B+KWaYZI7pZRLY4ICDSg1MM002xiwQIjbMOJHNMziMxh+AfPbpJ2InBCroCV54cgsZL0zTQHcOYqMEMrvVgAMyBTnxDBCwdajpprRZoJsTzGxVYgMo2kgcizKmquqqPdEInY1nZNQjAD3eBgAFzIRzjTMJOOOdESDkkEMjwxZL7LHGJovssso2y+yzzkYL7bTSVkvttdZmi+222kY7rBHYQIPMCwe9h8wBBxiDjX3HIJNGGqCK8Oe89Ba4mDjAiOPON9+IEMYYnpCBTZvGHMACM+s2MOK72Sh0DA4Y/3Iq8cQbjWRAGw1394xKpaZ4aoushizyi67a6FRGV6SQQh8pXAFVxbce8IAzkgiQQDfduAKIFTsD0vPPPAPtc9BED2200EgXnfTRSjfN9NNLR+201FBPbXXVWFOtddNWuNLGAsxkgxc2L3B1ADPdqORENWoiw4y89cbt5zdziOCFF1GEEUYDoxhgACOcCZDfNAId4Ay5KkmDQw1uMzONEEBMRPHklFvQxdlhG9PAMdN0HN3HI4cu+nElm/wUVKj3AUkcN/zhxhX8oC476hwckIDNtxszjSuRBBDJDAH43vvvwhc//PC+F598JMgbbzzywwP/uybC967J9MtL7zvwxv9rT3z32QfP/Pbhgx+9+Oefbz75638/PvHqj5/88vPP/74mUJQfgCHYXIMMYHh5gQAsVIMqbMw3TjjGM/DAGLkBiD974hcwJAhBYNxjXxKc4DfwFoZm1IEMHOCAJzwxBoBxgAx42UsIjPGMGoRhGs8gUTWgobBnSKECKQCADnfIwx768IdADKIQh0jEIvqwDFWAhn2aUY1jGOMFOjDZikA2uipaUSelsxEPgsfF+nXxi2AMHjpIsI8yjoMXZbSBGothAzYWYx9AiIMdbrCMc9jBG3CMwxE0sAwixKECykiCNXhRAWsUgxoZqIAei3GOCBRjGYIcRxyP0Mc4xEELbtz/RhziGIFtJDIOYHDjGts4SlGSko2nJGUqU4lKU4qylap8ZSlnCctaxvKWrlQlL4pBBxA0ohFt5IY/vCEBbtiADmq8AQgMycugOYIbqGzjPnhhgzJa85plRI9beDEeNGQgDhrQpjjHSc61vHEfNvjFNXlhC5P1A3RXjOcVj3KEGrmTFTzApz7zyc99+rOf+byEClRwhoEa9KAHLShCC6pQhhL0oQZVqAsamlCIDpSiEFXoJQSqUIRW1KMfBelFRRpRko7UpB0VaUpBulKPdlSgIT2DQzH60I6m1KYlNalOd8rTnvr0p0ANqlCHStSi3tSgr/JYceTJ1NFl0Z1QjapU/6dK1apa9apYzapWt8rVrnr1q2ANq1jHGlV4NvWsrHoqWdfK1ra69a1wjatc50rXumZ1imjNq6rUate++vWvgA2sYAdLWLuaVa+IZQ5fC8vYxjr2sZCNrGS7etjEWpZ0SLHnZDfL2c569rOgbWtlL0vaoCw2tKhNrWpXy9rH4rW0sDVtZpPa2tra9ra4zS1XJ8AJVMX2t60aRj1pq9viGve4yGWtUnpLReA6d0aZpURyp0vd6lq3sMv17XOfS0+lEPe64A2veMd7V95qd7vAdZVmycve9rrXvdI1b3PRC1saSVe6782vfvd73PvKl77O3QcxkjABSsR3vfxNsIIXHP/ZGhX4vwD+bXcNTImlKKXC3s2whjfM4Q57+MMgDrGIR0ziEpv4xChOsYpXzOIWu/jFMI6xjGfcYgz3w8BKicF5I0zafXiDwBWmsIMtTOR3OvidRkayhZXM5CU7mckMjrKUJ/vkKjf5ykR2cpGHbOQH47gMO+axZY9CDBd4Ocg49vKFvYthDL8YyXCespzn7Fctx9jNbFZzkAu85wkEQQvzFTNi9yEMLdiCz2pGNJoT3WYWdznJGYb0kLNM40rn+cGYbvSeN43mTlP406AOtahHTepSU9gFBkY1JVTN6lS7utWobvWqXU1rVZ/a1LjOta4/zedO6znTa8a0sC1N7Ej/e7fLx77wo1WM50afmdOLBsIwAi1ovf4CAZw4M6OBnehie7jZGt70hT3d613vGtYu4MGqXcDudrv73fCOtwsu0e6NznveG6V3vvfN7377+wwbBbhALwFwFQzc4Agv6MAdylGO1jSjEKeoxBPecIQv3OIYH3jA/c3xjvv73vQGubxHTvJ38yDdsja3yoXc55aHGM/fnnSNgx1sX2P6EgiYdrVLK+AMjNvXnN4wzE+MbJi7+egZRrq4F41jcq8817F+NSXUrW5UVx3lJZd3yEWu767j2+P9Nni+xb5RsZtd42fPuNrXjnCDHvztGFf729HOb7KTHewexzfX7813fWfd/+RWj3rVpT5rWj891Hpm+a+XjuIDG/vFmk78gy+gBWXwYuc9HoYWVLBmpQO7z3d+Oc1dvvimsxzxh6/1rWfN6li7/vUnL3nI/U57kO/763jf9901PveywxTuv2/7wQc6/OK7nfhyt3jBfU93u+ce7F/Xu71nz+6tl/zk2H/3qquu7sLb2vCpPz2vx/9rYUce3OE+MoudXXrJZ4AY1MY8Wq9dhnEr+uiRpzmKuzx0/Sf9/4wXgE1XbuEHarYWdey2blPHbrGHdSRHfdUnfdE3fc/ncc43dnO3dr4Xd8OXU8GncCcFfBYngnWHgXRXgV2XgiLHd/X2dw3IegqYgKqXcv/fp2sEeH+Lp2jlN2z/14MrZnSIVnOZRmH9UAIIIAzx91u/UAZA4A1IWEa/IAzCMAzDQAwIgABJcARZeARYeIVWSAzEQIVUKIXDIIVmeIZSqAzbIAzWsIbCUA7CEIVyuIa/IId1+AvlQA53WIf7sIfqBIV/aE3qxIeE2Id3KIjYVEZoZE28gEaNuE7TlIiS+IiLCAPYZImLaAn7oImRSImOOE2NGIq8cEaOSImK2ImLyAtk1IgkYAO8YAmiGIugGIuyyIqqeIskoIq5SA3UQAK8+IvAGIzCgAqJlAQIAIZimIxjqIzM2IzMGIbs0IznkIzR6IzWqIxWWAEVkAGoEAf/1MAL38iLZxSMvAiOu0gCuZiLoZiLs1iLtEiLsBiPn/iOtDhNZ7QP6jiLp1iK6BSJkciJj8iIp4hN8yiJ61SKqbiIkliIhtiQCymIh+iHDbmHcLgPeagMd6gMbWgNUiiHZhiFaHiGZWiG2DgMV3iSSZCFFZCFxqgFYoiRmxiFSFEBgSYMF6AAOScM5FAOVKgFSaBIGWAEQVAGYlAGRoAKRpABqZBIQKCFxuiFxwiGWhCGOReGJVmF1jiFy1iGIzmSIfmV26AMZiiW5CCWwhCW5CAMylCWaJiWa6mWZliWaRmHdHmRcomRb1mHceiRdqiH5WANckgO1lAOvzCYfniY/4i5h4A5iH1oDX1oiIR4mJDJmBFZiJGJiH/Ih1D4mIgIkY+pTrwQBBlgB1p4jNd4mqgphlapjFqZmqdJlQhwBHGACkHAIp+ZiIz5mZlJmZvJm5a5m7o5iL9ADhOJmMSZmL+AkRKZnIlpDWnph9vgnDrpnMOZnHoYhRspl9ZJl2fokXG4lmpoliCpk2LphtzJluOpk1+5nlNIkiLZmmIIn82IjFQIhlJpklZ4jD6JhUcAlBkQlEEgBgoQoKIpRysZn3BokgqQAUi4EzaJCmBADGqZlpoXm6kQBxmgAGJQlGIQBAqQlH9UAVoIBlCpn/Zpn1gZhvSZlcnYnl75lS+Khv8cqZ5jGZdwSZdRqJFvmIZzKZZ6WZh/mZaA+Zd2iKN7qZxE6pH7sA11CJjXuZdNqpeNiZxUmpjBKZnCGZkMuYe3GYibqZsG6aUVUKDGuJrJaKb1maZY6YxoOgze4JrX+KbOqAVYWAF2kAFBEKad6ZC8iZm92aXF+ZtgqqVVWqh3uJiJqZwYWZZ1iJeCqYfKGZ16KJgXaYdyqJxtSJ5CqpYgSZZvyYY3WqNiaZbsCaNk6KIuypXXqKLIaJrEMJVgeIVTiZI/eaGjmaFFqQAD+p9/xIVeaQ1WOKDDYBM6YZO1OZLWQIVX6J8eqqtigAoKgKGJpI2liQB0ap+uiqJVqKL/romqqlqq4NqWoTqXcEkOazijOaqXUsiRl5qjTwqkhpmdQZqR1cmujRqlhcmklmqoVDqZlUmolJmbwvmlgTiwEfmle3pNUaiUcfCULommYSinEUuFciqGFUuxFNumWCmnF7umq6qar4qFGGoEScCJCuunmsmZfwqcxTmZEwmIXMqv/3qvVbqXcbiYgmmpULqHa6mXbaicwzmY6LmX0bmugMmGTGqeIUmqY5mWc9mj4fqep6qqVPuxVnmiUpm1J4mFYAAEirSNeKqhHiqaBVoBV/iiVhgEqDCsDsoJqJAEI7mGJlmr/ym2uiqavCqiKbm11uqqUbmm3Nqtyzi17xmj/1FbriHJljOqltFZtDkalnSpndbQs2spmEbqnczZqHqIqDrrr1TKuYgZnC1rmS4bs3yqmZmpsqrbp9j0hwjwTSupBbBahd6AjFebsarpsRmLprUbuClqsSVJn7UbvFh4A3iaCr9QTX96sgi7sqLLmbnZmwFLussJsJPJuaBLs23oh0JLr3K4kfcKl4X5vUS6ro2Lrka6uD4qnjS6tGl4huRqqqeqlSTJlfTLplY5uw9Lldv6hSh5BP0JtkkpoANKjLCbBC7ZkVOYBGrrDcSaE8LACccKqlPok7IZlHerq0g5mkDgtQDMt8fohf2rrdrajKk6uF5puIa7nmY5o6Qqlv8bSaObupZ/OaE4ipdMCqmQirRHa52F+ah4iJzZq5gyq6WLOaiEisRZuryo66fOC70GqQFJ8EcOu5olnKJg2Lu0q7usuqbDSwxfrHnbmqZvGob7C8ZZ3JMkOsUZAAS/gEbRi7BeGscEK7rU65vLWbqF6pjVG6Wee5iA2bMTSpg9/KPRqblvKZeDyYaEGYdDi6OWS56hyp5sGb/h+qLfCqeAi8X2Cav56ZM38JPauI1qO6C6+qGiqbdgeIbgkAS6yrbFepNJIKEkuaxAkJSn3KFJqZSjzIVb+6r0WZX9q7vOmKrGbL/tebgUbKNmeJEyCqpqKJh5CarjS56FabPKiZ7/+RrIiGyHizmk40vEhjrEoQu6LmvHfyyRzJu6XtqZ7axONiAMLDmVW7yxgOuSalqfb/qw+2zPaXyma4rP2yqxVxmroZwEYKC8rXuyc+yZ7GywMAu9l4mc6cyvoLuo3su9dbgNlPrNdwjJgVyWh5y5HvmpHGnSE+qjKf2+LIyGTFuqKTy1Wymfz2i7+BmrJlmiPqmSFZAKQPCfBOyhBqy3OeeVVmgECgDLEFwCYjDLZ2iFNwC2eLqhGrqg0RqiLCmrX5ifnXyiY4yarZnMYxiSK7yekNuWpBrDcPiWHLmTFDyX49uzg0mdR1qkP4qv2VvIJG2oU4qlM3vOoTvR/gqZ/yorsAZZx7eJTrxAs/uAqIONr5UJ2IdoiJw7pZ7b2I1dznqoRripp4b92ZONzgerpXocqABbxHtInEDLpNxchzu51+B7qXo4oZIaw9jpnRh5luyqwDx6lqM6yWeotOsZ0956zFbLql5tovrZhaJsByOrAGUA3aicSFoIxk/tykn9wDhhkwqAwCI5YBecAc96yh76TamwkqWJwIpgomPsu/SpsfH5rYQ7v8pMwS+tni0cuXC4veCpuPv9hpAahWU513YdzndImHsNyOOcpHxN2n88ultK2JfZvAW70M37pcqriZqIRtXkigNZTY+Y4f/Yj/uYRv7o4f7I4SXujwOpp//ujLKA+OKD+sQva7oxm8cafZ1CHMTxqq9AWofzipFOStI2+5fReZG7zZxHbs25zZa8zcxkGb/3zZ4rHNOZTNPEXJ/IuL9eOKtbu4UVEEf/ObYBWga8CgQ3gM9waYXRrdTbXQI4SctaqQU9PZseKqBFSYx2EEfUurfWeqJVadPwbcJXjsz1HZf3/dJFy50KbNsKLOBFm5chjYfxioebS8h3yKhEyuCImb0VbbCBbeNdisfOG70By7yJbeGHveqs3uqrbrKr3s6uXscpy87LK8ejvbK7+ZujHepFPOTN6dqKGaRJerNRWNtHzpxGGrl0ydaNDJ6c+qlm+alnHbUqfMz/WB68tovcrRrCIauF2ijmYSu2tLmgm2SMY11oSdDm2n0Tv8DU3k2Gc/tHQJ3Luwq7VEyiJ8nVIYyf9GzTYB2jhd7SZ/ipve3CoOqGQNqRZrnf2HnIzrmoGN2Xw4mpUbqXOIuYygCZeZ3p5JylVnrjk/3Qo27qNB7rDP2QFz7rkqjQJq6QBgnrCXvhsr66ewrqqzuwEv3YIj+9IP+vld3pqf3jh+nj33zIbPgLI12py17xjAqYHOnMER+5/S2F5NrWieu+w42q7hnf2c6mVUjPnmyFXp6SAPxHGKq2G0qU5Z0BHxyGZOiTT7C27X4T0X3uKcnTS5mUQUCgba+Un+TB/+jNkiypt3l/+LGJhcaI+E+5+Ff4lCAc+ZI/+ZR/knRa+ZaP+df6y5lP9l3e+bKa+Ze/+X3r+aX/hdfq+Vu9+ap/+ajv7d4+q7Maq8AMzPo5+7Pv7cCM+7Y/lbDq+1kb/L9v+7WftWPvycO/+8UflSY6/MCP+v4Lq3+e+7X/5yEM/KzP+rFP9q8fsiGb/VDp/VB5rXTq+9cf+t/f5aOP/uuf+aHv/pcPwvG/tfo+/5gv+fqO+ZCv7wgNEEkQgBGIAEESgQgNImSYUOCRJBUgNkwyMWLEIxU0xgGSKoMRVHWCKBCDCmSQDHaAxJGoMGKGMkeG7ftX0+a/X0kUlCkjhv9nzzIkFQwlWnQoKqJBUI1UMDLIyKUinzJ1Wmfo06ZOkza9ytWrV6Zcl3b9GhYsV7NkmyJ1ynas0rBaxVJVMPaqXbRH11JFejRuV7ZGv5KlqzbvVsN1+aY1ihdx4LmK/RpNC7exWcZnBW8ufLmoZcmTP2+FXFe0WqipN3OWzFgr3rGxNy/ti7ctUcdv3wLGWvlzYN1yF6MWjBnxX+NdsSZ12hs3XeOdt4YVM1SMz+o/yzwpkyEJMWE0b9bc92tYhe0xnnBnv107z+vwe2KP75NkfJJBg9q/vnPn/v/4u08/oaq7TkADsevJPwN3wk/BAgHcLzvs8ssvQQGBus/ACSH/xE9DDfuz76cD9yMQqAb7A9AnExkMSigCN3RQwgGFCpDBAOHLTz8WP7SwRP4obNHHBBcc8cehFkTRwvnmK9DF+2oEskOgJsTxwQuB5A9FKxH8kcASQXxyxPiqHNHJMLG0zsTsNlzRugFXpLG/H4O0EswtpazwRRb5HDLIGY+ck0/rHjzzQiURJfE99tZbLwZIvUNgmPDGG28fYYZBoIwLOuWEkwti+JQTSEs19VRTn0B1VVZbdfVVWGNNVdZWVYXV1lpptRVXWDnhldZTf501WFeFfdVYSH0dFlhRiWW2WWaRXVXaUqk1ldRkq30WVVytlRVZY5/AlltIvY1W122d/0UV23FvBXbUTzu9gJMKDKL0F/EsvTRTYhS4oIR/A5Z3YIILNvhghBNWeGGGG3b4YYgjlnhiiiu2+GKMM8YYVIM51vhjkEMWeeSQAS7h5CeAQECLe/PVV9/yMtXpX1tsKcHmk3PWeWeee/b5Z6CDFnpooos2+mikk1Z6aaabdvppqKOWemqqq7b66qdr1rqEMlKxd5ht8H157JtizhQBO564QAVbVChBBbbhrpnttue2++64taa7bq35pjtvvfvm22+87yb88MHz/jvwwvdOvG/HFwcccMErr3tvxw1ffPC2Vbjk80vgjpxxxDHXHHLSKSdc9dRXD3zzyll/fHPTZf9//XLXcdddcMUPN93vM0A/g/LMT0fcd+M55/z303vP3fXicbddcul3Z3563qsfHfrL5e68hBjEqFcL8IRR5hey07fUbE2PCELcf28+WXTQXQD9fvzzv99+/T/nn//+XcIFwQtgAfMHQAMmUH8IBCACDdhAAUZQggF0YAH/578FYrB+CuSgBjdYwQN2cIL4s18JSRjCDI5wfxgEoQg36MITStAFIHRgDWN4Qxy2EIcrFKEONehDCPaQhxYcIgw/Nzy32cxmnYqBAuIgEGJQShi/QJ/6rKivX/ALARXIQF8C9R73NMpRYySjo9RzRlWlcVnpYmMb3fhGOMZRjnOkYx3/7XhHPOZRj3sk1qPU+McyBpKM7lnUgYiSknpR6nwuu2IjbcK+hRwhIxoBQgUquRIgYDIVHElFRzjZyU7GIRWbzAApU2GHUqJSlUBQZUpcicoMxFKWs6RlLW15S1zmUpe75GUvfflLYAZTmMMkZjGNeUxkJlOZy2RmM2nZSjtA05WnLGUcqlnKTY6yI9vcJDc9mUmOVFIj41RIFKfISEemcx/lUYYwMjUMeA4jiuAgBj2Jcc8o3lOexCAfP7XwTy0ggJ8CJYZAA2oQhCZUoQtlaEMdmtCEHESiEaXoRC1aUYxe9KIEcYlGM/pRj4YUpCMV6UQ52lGSprSkH1VpS1f6/1KMohSmM3WpQ2h605riVKc5rehDffpToBrkngEdKED/iU8t0JNl9bynPfEZT2+40xr4Qmc6HblOKlqjHO7kale9+lWwZkqs8HznWN8ZT7SmVa1rZSs4huGNYbgVrsSAq1vtGle83lWveeXrXv3aV7y+ta6A/WthCXtYwyYWsXx9a2MV+9jFJnawkKVsZC1r18leVrOVvetmPcvZz4YWtJBla2lNi9azmjW1Yg1ra1tbjqlS1aqzvRRWy1MeKuZWt784X295Ww5lKAO4woDtFKfYTuRuo51cXa5rnctVKUbXrJSi7nStW13sXle72cUud7f7Xe+GF7zjFS9Zy0te9P+eV73pZe963dte+Jo3vvN9b33pe1/pPle/XlUuc7NoXOSaD7jC1Spvd3vg3K6zqrSlrYIdfFt87Ra3CKYwFclRDnJotcDb0Kr5zNff/YZYxCMmcYlNfGIUp1jFK2Zxi138YhjHWMYz/qoy+mtja3AYtjsmx/kq/OMER/jBDmZwkWE25AcLGcg/ju0vMgxbDjvZydbosYGFm9zm0ljLW+Zyl738ZTCHWcxjTnGAB2zlDJNDyhqO8i+avOQKQxjJ6zRynWs7Z9sqecJw5rOBw4ZhKk+5yr4N7lax/GEyJ1rRi2Z0ox396Bjb+NCStrKfAx3oKZYjt7F9c58RLGch49n/zqN+JJ7nrOcIe3rJTe70jqds4UBPeccannWtaX1rW+ca17vWda95/WtfBxvYwxZ2sYl9bGMnG9nLVnazmf1sZ0cb2tOWdrXZHOsMr9nNmta0m1X9bSqC+ramVjCpzV02cpsa1RAGd7t3y+msxtvb84Y3veVdb3zfW9/25ne++71vfwcc4AP/d8EFbnCCH1zhCWc4wh2+8Ic3HOITl3jFI35xis9b3u5ut7hDne45n1vkdwY5ntetZI6nXOUrZ3nLXf5ymMdc5jOnec1tfnNwe1zOJRf1yH3+Mp4Hfcgn1znKcX50pCdd6UtnetOd/vQ4E13qQqd6uX9+9atWXevqji5616f+da+HHexjF3vZyX52s6cd7WtXe9vZ/na3xx3uc5d73bd+9yFjXe8+x3vf/f53wAde8IMnfOENf3jEJ17xixf83h3/eDszXvKTp3zlLX95zGde84eHfOc9D/nNh170oyd96U1/+s1/XvWrZ33rXf962Mde9rOnfe1tf3vc5173u+d9733/e+DvPSAAOw==\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/assets/img/laptop.gif\n// module id = 623\n// module chunks = 0","module.exports = __webpack_public_path__ + \"images/perspective.png\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/assets/img/perspective.png\n// module id = 624\n// module chunks = 0","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAckAAAEhCAYAAAAUKFueAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgABFmJJREFUeNrs/XeQZVme34d9zvXP2/Susrztau+me6Z77O7MDrAgQJgFCZKSwBAogGBQZChISgIIiARFIEhRpAAQClLAAuASWHB3Z3d2drZnd0xP97Sv6vKV5dL7fN5ee/THe5mVWTarOrO6uvt+I17ky/fuu+bcc3/f8/NCSkmIECFChAgR4nYo4RCECBEiRIgQd4YGsLy83A98H3gmHJIQIUKECPEFRgv4r4C/1dfXt6FJ/pWQIEOECBEiRAgiwH8OZOGmubUnHJcQIUKECBFiA/HNJBkiRIgQIUKEuAUhSYYIESJEiBB3gQag6/pR13V39UBBEOB5XjjiIUKECBFiVyGEQNM0hBAPvQ/DMGIbJKlp2ld2kySllNTrdVRVJRaLhXcwRIgQIULsKj5pDQBd11MbJPmoTnbPnj0oSmjhDREiRIgQuwvf91lbW7vtc9d1cRznVkLEMIw77ueeJNlut6nVasTjcSKRCACtVot6vU4ikcCyrLt+ditUVb2NIEulEtPT0yiKwsGDB+/62xAhQoQIEWInUKlUWFlZ2fJZPp+nt7f3wUjS8zwuXryI7/soisLJkycBuHjxIkEQoKoqTzzxBEEQbHymaRonT57clrYYBAGLi4s8+eST+L7PxMQER48eDe9giBAhQoTYNeTzefL5/La3vytJ2raN7/sbhNZutzfer6uy69usf+Z5HrZtb2id91OFo9Eo0DHHrq6u0mg0Qp9liBAhQoTYNSwuLjI3N7fls4GBAYaHhx+MJKPRKJlMhlKpRDqd3iCvdDpNuVwmk8lskFwymaRarZLNZrdFkNCxAddqtQ2196WXXrqrTThEiBAhQoTYCQwMDDAwMPDJNUkhBPv377/t8wMHDtz22aFDhx7qZI8dO8by8jKapoUEGSJEiBAhPjua5E7ibrkqiqI8EKOHCBEiRIgQ28HdUkDy+TzJZHLLZ7quP7gmudMkaZomrVYrvHMhQoQIEWLXCXI9juZW6Lp+T1L8VEgSQNM0qtVqePdChAgRIsRnBmFmf4gQIUKECBGSZIgQIUKECBGSZIgQIUKECBGSZIgQIUKECLGb0KBTKefWgq8hQoQIESLEFxXrEbAawH/yd/7f/OydD7f/aynhE/Tpopu/IrexnVCUB+8JJuUnbpOy+fxq9QZ/+//y1/jf/9qfpl5vhLMnRIgQIT7HEELQbrcWNkgycmv3je0QzMOSkBBs65dSIoR4AIKUnVPaAXK8jcB3aJ8hQoQI8YUlnnvJ2McY2iMnAikR2xwgsZ3ek1J29rWD5y8fcFGgCQX1AbRdTwb4IfGGCBHiswJFuwPNdZQeAh+kf095qgmBLlTkJukqENiBv+Wzx5gkH/1JivuQ0X3bbe2QSfUTzx0hKLtt1pw2yjaIUiLpM2NEFY2AkChDhAjxmEM1UOZ/gTL1RtfNpgBBR4CrBv6RP49M7oHAvePPDUVhqlnlb1x5h5pnE0gBQnI4luVvHHwRQ6iPtSzUHpsz2UR4QlHu7PPcBa3xvlrkPY6lCIGUkr9y/se8XVrAUtT77r/pe/z5wUP8d8deo+V74QMYIkSIxxtCRSyfRiyfQsQGwK+DGgfhIuuriMEXkOn9dydJoXKpXuR/W7xKj5Ugp2vMNqucqxb498efYtCMEcjHnCSlpHuSEnGrSv0JAnTENr6/VRu8ox/yEWmN8iGuz5YB060qfhDgdq9Y3mMs3MBnulV9LLTgECFChNgWFBUUA2Xft6C9hIjvIVj4MbJZBnEfq58QaIqCIgSvDR3jz/Xk+VvnfkohEIjH9HKFEBSLRXK5XIckgyAg8P07bnjX/8X9L1DegWTFHY6xQRhC3PRDPgKtcUcGE9BFZwJsx9yqCIF+l0klhIKmqcggwPP9bdxIhU7AktzQwGXgE0hQtxsgdS8ri6oSBAGCziJq/f6HBB/isX4mtzyHErgpYxRFRQb+gz0bXVl3twV9EATdYwoUpfO/oihIGWwRX3KT/JN0jZZ3eJY6z3Gw8V4gCQJ5z/MRQkFRbl63vw35sX05oKAqKjJwkOUriOggmAlEzxFYvnZP7UKIzvk7rgcIogoICXFFZbV7jXeUk4qKEBIpBcjgtnHqyCb/oejhTvfmNu6SEs/zbmqS99rwXv/fa3JuvF8X4OIWLav7v1h/L2XHD/kp+RofNFjnbntp+/Dt4RN8JZve+PSDxSv81uoihqreczI5rQpXpucw41nGR4fwPBdVVXFdF1XTUBWB5/koqoqQkoXJK3jJHvb05AikpF1d4+OL1zn6xFPELRVFVaF7sxVVRUHiej66ruN5HpqmAwG+H3RMxwhUVel8pwqWV5fRfY+VhsPhg/upFZZpByY92TieF6BpKp7nAsonyggKEWInCdJx2iiqQeA5aLqJ49hEYzEUfFZWVkhme7E08IOOwAwCv5tq1gkmCXwfuotez/eRvk+AQDN0FMDzfYLAx3V9At/HtCK4roOUPrVqk1g8RrvZQDWjRM3Os4aqoSsCx/cQQkVXoOUGWJaxRb4KAe1WC8Ow0A2Ndq1Ky4NcNkUQdL73bBs7kEQjFkhJ4Ps0mzUarTaaUPGBfG8P+H6HEIJOyp6iCJAQSB8pRUee+N49xZyiKCzNz2IW1hg0NChfxy9OECydRvq1jolV3H1xQeDwwXvv897KIkpM5Y35CS6s3eBys05Ms+74U0URVArLNAKVhKmimDESlo7ndxcOBCwvrpDK5jENDSkDEAqKWF8ciI1zv7lgWechSbFQJJpIYerinte+zlk76pPcTG73Iro7aahCiI3V02NBkA+pVwohsX2XimtvfNoO/PuSiKpprC5MslB0eGHPPqavnGNqocj4oUP41RUKLUHckFTakmxcpd4GpVlkeXqRQr6HJ588ydL8NJVGi8L8VS6V6vQNDrMyO0V2cJwDozk+ev8D4j1jRFWH+cVVevoGaBWXKdsugQyIxFKM9GWYvDFFNBZlaXmFwYEh5hcXqFdrxJMGog6TEwWEEaO3N01xaZlqO+DFF19AV2WYLRPiU7YKqpRXF2h6OsuLMwyO7KHVbJKMRpCaQblcxPEVWs0amXSC1dU18j1DtBprNJs+Ep9cvg/hNSm1XMbH97B44zKLVZ+9g1lWq03Gxvai+jZTs8vUy/OkBvajezVWChWS2QGMwGZ2dQ0RCCKqgdAli6UWh/YMUyqvolhZ0mabidkKL7/wDKuL1xFWjt50Et+uc+rDjzjy5PPo5RWu3JginuqhVlrBdj2kopGKRTpRoa5N21MZGxtFRXLl0mWGR/dQWJxluVhidKCf0toyRjKF6jQpVVsIAdFknoTlsbJWZ2h4FMtQ7yqvFUXQKi1zYS3BojgIbZVcTw89mWTHcjZsIbNHIHDuqA02isucu3aDPIK/lB0l05/BcX1eSQ+zL5Yia0TwZLDVNuc7FMolfBSuTF6nRpSvvPoiSVMnCEAhYG56mki6BxplLl65jhFNk44brK6ugpHmqRMHWJi6yuxyiYH+AdyWQy6folgosrC4wNC+44wPZfD9+3OOtq7NiQcgDCm75oLu6qtjbuiwte/7qMq98xtv01CDoLPSUdXOuTxCtUTe6yIfITzPZWD8GG5whXNnz1IuF+npG6RUWEaVHpVChbpmcfjIXmavXeXYy6+zcvYdomOD1OenqDZ8EqkcQ65GodLi+LG9fPTBZTBMxseGkUGbeDxGu1VipVzlieNPc/XcuzTUKHuHBlit21jC5cKZ8xipDLquk+3tpzefxtNMegyPicIK6ZaF0d9LVnGYXV3CrbXIDgxhGiq+FwYihfh0EQSSbC7PlfdOkcpkmZ6ZJJ/OcO36ItFEEt1UmZqa5PDR4yxOXiKe7WX66iWEaWFKBzeaYH5qhkq9jGoZpPP9KLqJZdjMLxfIJyPMzi2ydySL7/lEsxnqlSVaLTgwfoBSaYlSVeLYDvF4BtV38YVB0gyYnJwilUkgvRaLxRJOo8XcwjIrszcg6tCbzbC6vIjnekzfuIomFPK9vVRWVvGSCexmk7iVYqU0i4xp+H4U06+wVElzsD9HJpMhn81Qr6xhKAFnP3ofX9FJZioECAyhE/gSrz3NZLWCFCZmJMXYcB7Pu5t5NqDRrtFKH+G6fwhFN7jSDnh27FWG8xF8X4Jnd9JA7qCFVqpF2gHEkfyKk+W7h78C0usIXilp+O5tMlhKiaqoFFcWmV0u4FFhrdwg3Z8lINjYt6ZrrMzNEs/04zUKzC5XwAvo70mhBzbz8wXG9o0yM3kDocSJxwxqdZtUIkdPLkOwTaVMu10Xujdcz8cwDaJqQMKS4DapVmpIK4JpRokk8swsFZAyQNfUB2CrjtlAVburms2m288MQcqNnW712Ir77lJRFCqra7QcH900GR7ux1csUoZkcblKNBrHikSIRmLkc0kunfmYCDqpiIkfjaEKSaCqROIJYl6D8xeu0TPYj+95CBkgUUgkE6zNrZLLZLh8+RyJzABRFUzLJBYoqIHG8J4RKo02ud4BgvlpVteqxNIpDOEQj8aJqCZGNIIpFbRKEwwNt91gYuIqhhD4ioJimowPD97Rzx0ixK4uegMfMxInHo0wODKKc/UKvUODuHabZC5P4LsYqsfKyhLxeIJKqUA0mSMSNdGljRdN4itNDB08I0o8YtCORFgrN4gYGmvVBr2DfSDBMHQUy2CoL8HF81fx8fBsF1SFdK6XA/v2sTp5jaoLAyN7KC1eRqo6TrtJND/AM6M6K7U2h489jVSiKJ5NteXx1AsvsDIzSdv2qVSrWLEE8UyathEhZcWoyDaBoWFYWQxXI1AUfL/jRpFSkkilicRiBK02bS8gm83j4aILE+H5yMBGGBqebyICm8WlVfr78nfUqoRQcNtN5mdm6e/rpV1dodJWEH4L4dKxWd/F1Oq7TWbnVzANA9vzKdeLXFlaZrQntWE6veNPNR0hoWfkIL35XtpGkv2DObyuXxOhoKmSCxcuMJBLU19ZRjWjZCzBWrlJrVbGET309qaYmpqhd2CMoFnixtwc6cwAilthcXmJA6P9+PL+RCmklPz7/+l/If/gj9+878Zt22HvSD85w2ZmZopqpYIvA0xDAamgqwlefukkz7zyKv/g13+PlbUKlqnfRzuVW9lKCNR1390doly3EzD0iUyrd2CzjbJ0f/HPbClLp4pOMuy33vstbjQrGEpHE7YDD3vTKsVQNCxFQQJN3+X13Aj/8unv0N6y+hIEvkvbdojE4mgE1JstTMvCd10UTUdVOtspApqtFrphoSqi68vYvKiQtNoOkWiEwPe733U6dWu6iWloNBtNzEi0mwQsNoKkVFXFbjWRioahKTiej9GtYbg5wEpTVaavXqTY8vBdyaEjR7G09bTgjm8zRIhPzznZXahKEIrA8xxcT3aITUC73cY0LRzbxjAtINi0JBcI6dN2XAzDRFHAdT1UVcFxfSzLRAbrgR83YykcxyZAIWIaG4FuMuhkAAohEIog8ANkN/5CUTr+f1XVALmx7XrAnAz8jlJiGBuyS3SfU7l+fZvCgeSW4LqOqdR3HTzJxjO8vr0Q0G7bqFpnPO6Wly6EoNmoUas3N65JUXUymTS6cp/gQCmRCKrFJeaLTQ7tG0d0Tbj3vXnSx3E9DMNEVZXbApFkEOB6HrphIn0PTVO5fuUyDSdAMSIcObQflQDHcdENA7pjuR6H4fkB2j1jRASzszNjhw8fntm2T7LVdnj+iYP82a+e4O/+t3+fVddAFxGi0qPa8FA0C9dU+NnbH/LdX/ka/+D/8Vf4P//t/4nphVVMQ78LYcmb81Ju0ii7zlY2CeWNv1LeMfhnR4yjD6FByq7P0d4SMScwtuRMyg1CtLvb3mlPiqoTi+kgA3wgGo12TA+mucUUEUiIRKKbHgxlywhIFCIRCxkEKMq6Fis2fuP7AVYk0nF4szWAKggCDCuycW3mJn+FoiideyY7+xjdd5h8s4luRdBVQSA3PcShmA7xqaqUojNXu0SlqjqdOLaO39yyIkgpMS2rO7+3RsRKRcWy1I3tdb2z2LdM9WbkqVi3EnWO0yHbmxGr8pZFvQy6JNMNJNkcBbu+QwEbZkBF1TBV7WbQyYZ4UbhJT3cIltwQlRJVN1C3uLhukqhlWWyU87yHaywWT5JIpreMj+9tI0K4G/yU7R0i398JOtxeUKYEoWKa6oYL7zbLm6pidq2OiqYhgb0HDmO7LoZhIAKfgO59Czpybl3TBgVdU7YdIKptWjzdWeUS4LgeQ30Z/uv/8Nf4ve/9DsurZXQzxr/1q9+l3HD5X374Bum4iWfXqTsu//Sf/Uv+/n/7N/lbf/3P8Vf/1v9Es+2g3aJZyDvZeeXNVULAptXN3Qqq31oofQeKrj+Q/wOwFJWvZIdRhcBStPsTqu/xpezQXbfYEjK++WG7w+S9+2je3M+d9ne3fd5xu3scM5AQiUY774NtFq0PEeLRsORWGXGXSP27Pge3LPTk/ZoyPMDCcLvC+e7bbf8p2+5zfk85FwTb9t/d6Ri+7/Pgnpf7k/ed3puG0VnY3HO7Bwsw1O6l8a7DDwL+3T/7NfaP9nH16iR+s87B/h5+6dXnuLJY4s13foYra2QSUdbKLosLsywurvDiE/v5c99+mf/xf/0RWsS8/43eDlF2tcltEd29SHMnuoRISQD8P4+8gvMAk8hU1FtMrZ9hURSGs4YIEeJzLI8Uthjcbn+5ns+ewT5+6ZWnaLSauLbNcNri66+8yKWr1+inyr/7J77OeDZHUvNx7TqqoiJwcdo2v/q158lmEvhBsLHbe665NvFax+4vH57YpLz7awfXq4EEXVG2/dqOszhEiBAhQnz6UG5jplvguD5PHxknm0niOG1MVfCNl55mTz5BrVTBVDv+xtHhEV49PExMDRjs7ycWUXHsNiP9eQ7vHcbtpgdsi+k3nU7g+5+MKB+JYUcSyO2/Qt0rRIgQIT4buG/gjpSSob40qhQEUuPJYwdJ+S5f+9brTE7P4zXq9MUVnvnlb1IpTPGjj6+g46IJBV9KIrpGf08aP3jARPNNptfA71aZ+ZTKuoSkFiJEiBBfaE3y7gn8EtDVTv6R5/mUygUSEYPi9CTN2TmotkjaNQZzJr3ZOJam0JeNI31JIAQoYGjqJoJ8AKK7VaMMCTJEiBAhQjxOmqQQgmKlge85CFz2HD7C9TOnMNDwrQFyew8z/e4K+sULVN0GDbvNN7/xKp7noxoS3w+oVBu3xNA8QNLGnTTKR0WOm0JEHc+j2bZptu1w1oQIESLE51l7VG4Wxb8vSWqqwqXrizRaDYLAQYnE0JMp0tEIWm8WBYeeTBzbb/H9Dy6SyvehKh74PiiCUrXB1enFOyRuPgRRSon0fXhERHnbKUiJUMJK3iFChAjxecbmkjXarVrjrYE1hqZx7vo8Z6/NcWgow9F9g1xu1pm7cZm9moLdzmBXl5iYvkq57fG1l4/hVItUK0V6s1nePjXB5PzqXUrUPThRSinB9xGq+ghGSmx0JYnHosQiFrGIFc6gECFChPicY211uaNVbkftbLZt/vHvvI1TqVAou7x5uUBN0UB1EK1lVA2yPQNIPUeh7rGwVqFYLVFYXuLXf/unt5VNu539HkCd62p0u10XNNQXQ4QIESLEtsrSWabOz09d4R/GTY6/9A0GEr0M9vSgp2Jke7NgJZg7d43+L/0K2vhhWnPfp1VY4n/42XXOTMxh3aUs3UNplGwiyvXydSFChAgRIsSnRZKCTtHdf/WLy9ywY/zy0QHsTIZ5TafgZlk0NKbiAXuf+Qrt4hxqoPPPfnyZn10uYOo7bBa9V1WeECFChAgRYjdJ8k5+SeiYXQMZ8MG7b7O8vJ/nvvINRg8exrBirMSGaB49weTMLEvv/AtmZueYXqlhaOoDlFN9uIjXXSXKsORaiBAhQoQkuV0oQmAYJrNTN5iZ/IfEUxkSqSSuJwkCaFWLtJp1hKJi6g9DWg9PlFKIHS02IEO+DBEiRIiQJO9MQOKerKB3e5O161Wa1fLNTlaKsvHdw+MT5lDuSlUeSVhWIESIECG+eFDuxj23cqZj27iev4XCFFVF03VUTUdVNYLg9hYlAnAcm2arvdFn7VYVzXW9W9qxPBzR3VbndacoUj78OYUIESJEiM+bJnkLbMfj5LMv4pWmOXd9CdMwCGSAIgSO56FpGr7Q+OWvv0a7WGZi+hrL5Rqe54OicPzJ5xjvjfPOL96j2HJRBASBR3ZglMN9OebWlokn95CNlfjJLy5iWibbztm/RfEMfB9F00JKCxEiRIgQj4AkpY9iJfn6N3+J5sRbOJlxfvnZo/hugO3UuHBpiqNPHKe4Nk8mnqMtNeaqBf7kV7+Nv3KRf/nHH/Pql79C5fI7DBx9nr/w5H7wfdp2kxvT1+nLHeOrX3uZjy+s8fSTLzA2NMbvfP9HtKSKIh7c7LpBlJ+0Ks/9mrKGCBEiRIjPPe4aXbPu23Mcl8MnniantsjtOcjLzxxieWqStuNwtWLz7e98jZGchWXF0YRCNtfDsRPHGB0c5PixPehBmz/8wx+RP3CSrz1zjIXFSzi2y8yaw7PP7iemGczNzFGpNjl9/ixqrp/euErwoCZOsZXg5CcoiB7SYogQIUKE2JYmKRQN06/w//1H/4ggM8Kx/b1MTlwnsrRGyfX43tR18v3DrK5MI5QouifxEzF0b4KlhQkUM8LwQJ7ZGxPMrVZp1BaJWnXKTY92w6Cy6pLp70WTARcuT5NcLFN12GRuffBCAxsa4CcsX/fwWmTA7PQcvUOjmBosz0zimhmG+9IEToPZpQpjo4O3HMzl3NmL7D1xktgjSPssry3QknEGepIP9fuFmcu4+iBprU5bJOnLx8OnKUSIEF88kjQMnTOnToGiwtp5pi4HqJqGnJ5BADcCiTxzAVVVbgbmSMk7geykghgaP//pj/GlRBECRVEJ5AKKEFy9KlEUCC5fQAhQhIoMplF1nYeqI34Ln356VXkEM9cv45hp9vUn+fijt2mmjzDc9wyFxVmuzbU2SNLz/W7xd0mpWMSVN/VZzwtQtXWzscTzJZq69Vo2/94PQN00cEF3kXCnoTz9zpssKcP8he+8skWH3thHEBAIZct98H0ftbvoaDYqtLQcvQMxBN2IZhngBdx2jiFChAjxuSTJ9cICmq53tSodrfuLoJuXqCIJ/ACEQFMEUt7em1I3DPQuaXW+U+9x8J0phL4h9h+m2EC348gnIcnRwR7mVtbYlxfoyQGymosHrKwWGN5zFKde4v1TZ3ACSOdHeOrYOKqqoquwtnCDM5enEYrKoeNPEqPOR2cnEEhi2SFeePIQl85+yPxaHVUV6LqFgk+z1WRo3zGO7Blg6soFJhdWkagce/Jp+tKxjbNrV5YgOcSA9Fmpu/TGVT56+y3KgYLie1jRCIHr0Ww5HD75NCM9SSbOnWKhUANF55nnnkfTNHRNpdFYoyl7sdQ2H3x0BsfzSeZHePr4/jB4KkSIEJ95bIs5pJQYhommKvh+p/myqmpIGYBQSWVzZFJJkALDMPA9j8AP8D0PPwgIAh/P8zpaiOx+7vsE3X1t1lT8u6ZxPLzIlVvSS+7PjyA/sV+yd6CfZqXA8tIy6YE99CZVltZKVJouw31pzpz6kOzIUV790kusTl9iqVBB1zTcdo1TZ6/y9Isv89WvvMpA2uCDD89w7NmXeP21L+OsTTG9VqewukJu7CCvfflLLF6/yuCBp/nqK88xde0q1dIy5ydXeOHll3liXw8ffHB6y7ldv3qN7MhB9vXHuXptClBYnF9m/5Fn+cqLJ5mYuMGJ51/ipZOjTExMUV6ZY3K1xZde/hL78hYfnbuCqusIRdBqlClXmxiRFC++9CVeeelZ1uYnqbnhwxUiRIjPuSa5QV5SsOfISZqL1yi3IZVO0tc7wPSlU5SJMjw4QK1lk0lnaTgtFCWP77VR9RhBs04zUEklLHJ9/RSXJnGIofttyrZHLhFlYX4eiUI6nUEIQb1ew3Gchy8McAfFUwYBkk7Bg+1S5SeBmcxjygkuXW+z/8SzRFsB5y9fQDGTxDRYXipiKpOUFwMUM4amC4Si0qysoVl5MlGzM/ZOg0CP0J/stOgaHc1SXmmQSOcZzGUQAvr6BkknLRQNNF2wWixTqRQ5e/o0rtMmk07fPLHA4cb0PJGmQtVrMFde5cWT+8n295PNWQjHZ3hokKSuYEdNNOoUy0tUimVOnT6F02qQ6snj+2XQQAgFTdMor85z5uJ1DEOlXreRPqCHD1iIECE+5yQppU881U/C1DFyfURlQKlcoOm0aDZaKKkkjXKR2eU6J584jNYoYZgGhVKDPSND1KoNVE1w9eJFYokMihkjLnSavsn4SJby7A0c10dV4cixYyQTKX7y4x/dpb3WwwXxbPBD0MntvB/53qrIiocpeSd0sqbPW1fXePnLEfREP9M/fJODL34DECQzKUYOHmO8dz3gxWXCcbBiKdqNK7Q8SUQTaEYM4bYptX0ylsryYoXcQYtq3cfvnqjnefhdE7Hn+cTiUTLZXl544YXb9O+lqQlig4f56ksnAXj3pz9iamYJVRNdK7PE87zuOAR4fkAskiHbJ3jxhWdvaqOXl5Fqp9emKm3OnDrD/he+zlDC47f+1RsE4bMVIkSILwZJCpJJixuXz6DHe8ilFUqFAvHUALF4lKJjEx0a41Aiyer8HFrUpNVqUCjWyGZSlNeWUWNp8j1Z2q7XoTnVICZcSoVVytU6dH2f773zCxRFxXHsTx5scxc+vVf5OnkHhhRCdM7lIZTa3v5BhhoxDAHoCUZG+unryQDw5JMneO/UL5iLx9DNJM8+eZRY1CISz3Li4CA//+lPsCyLA4eP8+SJg7z/859hGSqK1cv4QIoLyyaaIgBBLB5HE4AQRC2LfN8QexYW+OOfvImlqfTvO8D+wV5AsrRaZf/+JzbO8eCBca4sLBOJJTq2d6EQj3f8l0LRiZgafcPj5Obf5sc/ewtNFRw6epJoNE5bVdGlhSGijI4Ocvn0u0wboKfSGGr4cIUIEeKzDyGl5K//Z/+l/IMf//zuGwm62oWCqgoCP0AoKqoicD0f3TAQ0sd2XFRV7WgkgY+qGWgK2K6Paei4nocCSKGgEHTK3G0iq41SdvfV2h5Am7zLpnciys55B7cRZLVW57/+v/9H/Bt/5rs7O/qBT73VxjBMDF3boj17jo3t+liRCKoi8F2HtusTi0Y2xmp927u9t9stvAAiEQul+9mdon2DIEAIZaMG79321242CYRCJGLR0Ts7KxGJQADtVhOhmTvfHi1EiBAhHjEmJibGDh06NLMtn2QgO74nAN/vCE0Z+LhSIAS4jt0hHkXZRHQKvufid8nGtm0E0NEl/Y3Pb9XaPpGa+ED85CM0FWWziijXC5l3zKtit1NHFJV4LHbH69cME824uamqG8T0O4/V3d6bVgTz1kPe4Zpu/exu+7Oi0VvuQefv+jsrEv3UJrTrtGnZDjIIUHWLeNTC8zw8z9ulovchQjw8pJSdaHY9dNw/7tDo6gJ3S5wXt3QE2ZA34qZwvJsQupOwFVsE7KPQle/Op9L3kaq6RdCvn6sIGzl/dgRO4FOr1nACn1gkRtCNmK7X6+i6vut5su12G0VRMAxjV4/j+z62bRONRj8XxwFoNBpEo9FdX8g8quO02+1tkZ+UklarRTqdvv85BR7LyytIPUp/Pn3b18XFOTwzQ282dvvi0fXQdQ2kz+rKCo7U6O/rQRUbD0+Y27wdkrwfwa3//3jVMf3k2iQSAr9jfpTd6xNCuUmQUt5skhUqI48thBBEolEMCQQ+mqFvaMixWOyRnIOqqo+EJIUQRCKRz8VxoOPGeRRk/KiOA3RyiLehIa4HyN0PzdUZfvSjd7BMk9EjT6K2i2SHh6kszKAlB4i5JdyIoL46SS2wODiS58yZi0SSOmfO3uA73/0TJPUSP/iDNzBMnQNPf4k+3abQBN0ucWa+wjdffYaZ65P0jOxnpC/D0swkV2fm6B/dT1TWmS+0Ge5Pcu36LIePPYlbW2J6YY1Uppd2bY3swChebRVHi5ONCOZWKgz351mYX6BnZD+j/ZnPD0ne5qfbokU+jkR5DwbcDp9KiQwChKLcjGK9Y0uvkIweX5ZUiERjd12x77b2IKV8JM/F5+04m4/1qO7RZ3MudCLOI7k8teVZlps2B/wqFTeOv3aetudjBPMsFlaJJTNcvOAwsv8pBnscrsaTpOMWXquTf25YUWoLNzh/Y4pIIk00mqJ/sB+/WeHG9QtcXajx5/7EV7lw9gwkB7j00XtUWg32HjrO6Xc+om98lDd/8gaqruJ5gkatxXK5ydMm/Oz9c2RzeaJ6QN2NENUcTp29yCs9Y59p8aJsJsDPl+9GbH0JcdtH23qAQn9WiBAhPkUEQYCiR3n1q6+zfzhLbnSYkYEB6pUirlRJWCaaaRIxLfbs3cdoNklhZYl2oOK1ahRq7Y57TFExNZV62ycSizC4Zy/79uSoFpb58KOPaXkaajd5S9dUysUi6AbReJx9B/eTjBusrhaIp9JYgYMjFRIRlZ6hPQz19WBqJnvH93Hi6BH82gIlR2O8J8Llieuf6fHXOnQi7roqupOm+dlsHyXvrRl267wKRfnEllUZeLSdAEMXSEXvpGdsNmd5LkLdRn1a36PlerTqNZRInHRsd81f0nfx6JTGKxRKJNIZjLv4KlzHRfoutbZDLpO+/dRdB3SDMM41RIhPhkhumO9+t49kxMAY20/Cl2QTcZ6RFqoV5ew7bzLwxGs885RPuSUZO36AqclpIvFBXns1iqqAGe3ntS+/TNvX2Ld/D83iMisVm+GhXpLJLIYVodFskkxn18UhZirHS88cQ5cOZjTGS6+9xvXpJXozFn/0k/eIazbFIMpLJ8dJJaN895sazUAlagheef2XyKQsCtk0+f6Bzz5JPrCO9pklym3ZSzrxrZ9Eg5Q+E2fPUgtUBnrTtJouvfkMEUtHKDp+q8x7Z25w9ORxtHaJtZrL0FA/vt1keWUVPdXLobEBrl06zZyrszcTY+rqDK+++AyT1y5SqtsYRoyhvhzTc3OkklFsV2AID2klicgmddcgqrkUKm0ycZNK28NUfYx4jvHhfiavXMY1Y4hWFWkmSOiSs+cvcfzlrxAsXeb8TJOvvPYSdmGJK1PLjIyNUVydJ2LGWFheJdkTZ/LCJYx4H0cPDdNsS+IRhVK9RbNewjKSZDJJiuUqA319LCzMkMnmqZVL9IzuozcVC6VfiBDbgGpEyBidBbIVjWF1Px8Z3wfSwX3mZQZG+jAUyHa/23fwYOdN8mZ3nrHx/Rvvk9k+kt2Nh0dHbzvmky++gpXMYKoA3WdVjXPoYGcfX3kVGi6MjAxvKAE9gyMbv+/p/k2tH+TzSJL3I8HPNFGup/jdSaPcfP1CPJRWKVSTgWyM2moTu1bCdX3ef2+S8dFe1EiawaxFOp1m/sp1qrUVGi5Uiqv4dou5pVX2HH2S0YzOlRuT2LEBtGyakYFB8NusrNVpOU2iCZ+3fn6OtrAY7s9i2x7JqE5ldQWvXqPZhoShoFopZq7OoWX6SOkBWlthKBPn0qXz1Pwoo/uH0OozLLQULMvC83xqVQch26wsl9Hqq2jC5/xHH5Lq6WF1fhIZTWE7dax8Lxlf8PH5izz91LPcOH+KuXqD3pEBIn6biUtr5HNJTn1whvxgHwtzizTtCmoyTz4Z3cjdDBEixENCGIyNjez4blOZewfa9A4Mf2GGWHsYgvxssuLGrAIh78mbW7TK9bF4QHme7R/mRB7c+hrTqy2efX6EG5OTjA1msOI6e8fjuM0qC2uCPbkBTL+JnsjS1zdHND+AGU/y5de+ytJqkZnZORIDowSKxp7xvUjpoZoq/ZkM5aZDNplgbXWNdDKGqNeRsTiDmsraygK2UNh39AlUM4IRtGj4Foqq0D80zGgsT89AFjXwKBWKrJQaZGIR8nv30roxTSYdR4n0k+hR6OvrZXl1lZEDB3GbVWQ8Qj6tY/iCrFOjtLZGMtPPseEolgGBC0cO5VhYK3H0iWNEYzGcRpVCySSw29TqTVKJUJsMESLEZ1ST3NYi5jOhTcoH+upOZCmD4IFbZ+nxJGmAdJKe7qJrYOCmbb4nCpBkcGzrimywN7fxPp7Msz+ZZ/++gxuf9ffnNzFxD+txYyMjnf2Mr38XuJz1fQItzpGjB29r9/L0sy9u+T+f7eXA+j9mD89luwaTWOdvCugfWj/XoW2Pw+Dopsi2TJyB4cHwqQsRIsRnjCQDSbcR5AOT3mfH7Hpv+6rYpD1+LiJaFZ0nTj4dzvAQIb4AcB0bRTdvFgnYTbXjIVNpHNvBMI3P3NhqAPZrBwkWrmBcmEc+TN3Nx5pTxN3/l7d+LO9IpCpBWEsgRIgQnwoWrl+hbSVoV0oMDA/Ratr05TJ4EoQM0AyTxZkJ5ioaJ47sR8eh1nKIRiJEIiaubdNutVDMGImoyZULp3CsPIfGhnBdB0PXcd02pVKdnsF+dKBSLtB2FXpyKYrFEvFYjFK5RDqVplAq0ZNLU2u45HNJVpaXqZcK1DyD40f24XkeUgYoukaluEaluErFU3FrDdI9w4yP9WNqgnqlRK3tMdDXQ2F1CdVMsjx5CatnlLHBnseLJP3eJDJpIYIAvkhB+2JHNwsRIsTnaX39mKB3aIgf/uD3GTz4NNcvXwLN4Mb5s6T2HkRvVRnYdxSkS2WtwKmPGxwY6+HUqbNoZobxvX0s3pii3myhxPN882tforK4SsFo0VyZY365yOBQL+Vak1wqykK5yTOHhjn18XnisQQTFxoEWoSMCa6AuRvTRCMaVy+epdJWScZ1sgPDBOUSJT8GMuD8uY9ZWFginu1Dw0OzG9SsFBHpsDh7mXKjyYsnxjj1/ilkLMKNiWtoEQPhzTK3MMfx9NBjNf6d7khe0DG5hgjxmYSk1WzQats06nXajrvxTRAEG8Uiwtfj82JTx591l80X6bU+L7elyVgx9gyNMNqfxQ98TF1DKgqlpUVm5hc73iHF4Mjho8RlnXMT12i7kv7+PBOXLpMfGiIQCr09WVQBiVSCgcEeFhaXyKUirBQqZBJxNF3Hcz1AEkjQNAXb9dm7dw8RU0E3DGTg43s+nu+TzaWIaoCqk8tmiRgqiqYhWxUUI0ZpdYFoIothRYkZBla0h6NH9uE0GyAlqWye/SND1KoldN1EUQXJdBJVe7zqyGqhgA3xuaDJwKdRbWBFLby2g2XoeJ5HvV7f9UpSjuOgKAqO4+zqcYIgwHGcXY8BeBTHUYTgjZVpflGc55s9Y3wpN4wvd69Vd7vdfiQVxdbngm3b9912u7VbAfYfP4EejXMycoz5lSrHjh1neX4OTxkjbiqYQ/uQaPTknqHZatG2Jf19OcaG+sjksgzks7iqhQD2HD1GqW4z+vrrRC2TlgtxUzA9t8ShPWMEXgvpeWTz/Rw5chQpINJ3nBvTc/Rn01yfXuKVr7zKWqFBb1+G5YUlkqlBjHgLCRx7+jkOYxC4LrppIeUY1XIFLRonFTV4MpYHRWP/of2omsJrX+ujXFxGWHs4FvEp173HSrY8EEl2Hpr1QqgirNgW4rHRJAMp0U2dIPBRtE5xaU3TSCaTu370Vqv1yAqct9vtXS/a/iiO88PlSc45FcbjGd5srNCTzvBUum/3zLpCkEgkHslc2G6B82q1uu39WrFOUQA1lmbfeBqAgZGbRQBMa714u0EsfnPOZ3KdZP5c38CmfaUY2HRrzW4hr337OrHxUli89PLLxG6p8LV3715atTL7D6eJRJKMDHeOMzq2B4B0unNekVj6tvPfXFxe7z4msfjNk+gfuhkF/yl23PtkJCllgOv6NwuAKwJd6/xcdFdqXiDRdL1jDuhGQHUWo5IgkKiqgpQBQQBqt9zZ1ga/ncDSm39vbnvHPMYdErCO4yIUgZQCQw+V688eFKLROEJVQQYbvU9vnV+7RtFhgfMHQsFp8V5hngPxLO12m32RDH+8Ms3xZA/6LrU1+2wXOH9Qom4TiVjbO1/fww0ExqaATaGoNwky8Gh7EqvbWSeSSBP5wkmXbcC22+w7/Bq/+7/8I/77v/cf80/+2T/iH/+Nv0bUdfClxJaCL33jG/w7f/HP8MzBQTw/QFUEjuMS+B7J/v382p9+FbtR5sChZ/ml15+l2WxiOy6KInBdD7Ur4DzXQwKe3SLef5Bf+9e+hGs30Xbh4ZFSgmLy4nNPc2DfYV54+iCB74ec81mcyKraqVsvwr54jzveLSyQ0E2EEARIIqqKE/hcrK6Fg3MXrK0sU623KBdWKVYb+I7N0tIya6urFMpVPNdmcWGRVrPKxYsXqLWbrBUqSN9nZXWFVr3C+++/R6nVolhYw/WhWa/w4YfvMrvaoFVZ4N2Pz1KrVVktFPE9l9WVFeanrnN5coZavU7wBR37balNihDYTp1qvUF5tYw0agSNBh4gpMRVTb7y1Wc59aM/4tt/8jsob7zFq69+mdnJSQ4dGucXp6d47qWX6c/0Mj8veenLRxnI9zBfsjl5/AAfv/Mmq0oPXz8xzIfLNV4eyjJxfZm9TxwnxSr/wV8/wsLEGX7rR+8htJ3T9IQQ+E6LogPf/aXn+MHv/R4Bgk8qZiXwX/14hp9PljE3OaEloAj4G9/Yw8mBePjkh/jCwZMBE7UiOTOy4YP0pSRtWJytrHAy3RsO0i1Ynb3OpfkKYz1V5pcLRHSVdr1FW/FoNTySmQSmlPiawfSNFoqp84s3f0a9KTj5xHFWFydoNQwc3+baxY+ZmV0im8lhWjG8lkMgFdxymeVChb29Jd77+Dz5zAC202Z8NMfk+TNEIi9zKP7FlFnbYpwgCIjEMjz71AkiWpv8/hMEVgOlWwy8o5UFNJpNPDXKc8+eZO/wOJpfwhYWTx8fZ/LSByy0LJ4eGeL6pWvEeo7wqy+Z/PDnZ3n1W99ibrHM/oPjuEMNLv3h75E58hrTN64z3m9RaymcPHqA3/+jd2hvV/3dJlRN5dq5j/nvLnxMEChoOxBZ5fmS3zy7wtXVJoam0PICdFVBVwSllsu3D+duI8lSYRU70IiZEpco2aT1ic9DSh8p1NvHS/oEd/p8h+C26hSqNv19OVaXF4mm8sQsncBtsVyoMdDfS3ltBSJJ0jErlIJfIEw3qrQDD0NR8LtmSQkkNIOFVp2272GpoctjM3zPQ1F1VAUUTUORPlIxOLC/j6UVSEV8luaXMLMx/FYdP1DxfJ+e3j6qK3Msr9ZJxPpIpXUC30U34+TzKUplh4hlImWAlUiTNMpcvT5Fq+lijeaJt+eYXVrDkw6NYoVr0mN8bPgL19lne5qkqlIrzvMbv/k9FgqLxC4soK7MIFUVIQRaYPPRh1c5efJpfvy7v4vZvx+v/TZXbsyT7WtgN+qUinPUPJM1dZaxE+NUrrzFG39c5dXnj/O7v/VDhg8c4I+XZ5muNCnfmKW18jO+9fIJzl+YoClSNEwbXyi74pfUNA0pYQeVVCK6QsRQ0TWVbx1Jc2OhynTTJ2aoaLf0yArcNhcuXMYwVEotl5HhvSzPFkn1DGPRYqFkk0sZrBWajIz0MT8zRbp3jKHeDCszN1htCfJxjZnlIgfHR1mYmyUwIrQKM9Stfg70RKnagpFcihvzc5RX5/FTI7z+9DFmr19ltVpHkZDsHyQtXGbW6hw6coCI9hCPQ+By5vRpbKJcnbyMho6mzJLOZikU1wjcgPnpGRzHJjBMnnn2Gdy1Ra7MLTI4tAe7sUap4iDx6B0YYWQgH0rJzxEu1wvEVP22uleaUPBkwEyzysFENhyoTegfP4inzRBN5thnRfC0GLl4hEAJSKcEqgpOrUJJKjzxzPMYqkDiUig2SCbi9AwNksr04LVrYFrsqVWxkr2MDFQoVW0G++IYepzD+wRSFezZB/FYhGpVYTSV4fmnn6VeqWLv4sL6M0+ShmGyMHuO/+Rvf4iqqASBD6pKPBpBASwkb/zWb/EHElRVRZy/xk8CueFnlBIURUUIyTkp8d9/C6GoqEJw7tzZTmDO6bNIQBUCRTMgOMf/5+Lp7nbgB2BZxq4lH++WP98NYO9oCqXa4to9QptbzQbCypHLWkxfOUPT9ugpN+nLxrh64TrN0RGEYXDtzGmurpQYqEoGczHOXp7k5Vde4v1332dszzDvv/s20d4R9NYalaLN4PEkteIyF24sM2XGOPnSs+iNEu1cHvCZnl1AiSkEdhzn2kU+XimimVHi2X72D6UfnCM9hzYWh/cN8P7pj+jvG2RuYZWhsREWllZ56uhBvvfDN3jhy9+itXSVdsujMDtDLJVn4uMP8KNJUri04nFmJhdCkvwcQQIzjSoJ3SC4JbhFIomoGtcb5ZAkb5dODI90oz9Tt5g8zc6ffceeQI/GNml5EYaHOtGnyWQ3qjfeDblJrEe/9pDeNNQDg1v7PqZSqY332d6eL+zob4skpZSoqk4yod918pvWVrPZdoPhDe4SKq3qaNsIo368pzYEvs+p+TqaJ++5Csvkejjx5EnqpTnwNeq1EgMDeRZvTGEmEvT25JmdmyKZzNHnwdDQIEJRyCctbswsksslmVtcoX9gmGi+F9GuoaNSnJ+j1ayRSmbozyaZm5kiZSVplkrIsR7yvb0YcRVpx1FcHUU3aIoIvfmH8z8oukXGCjh19jpPnHiRtfmrjI3uxW3apDMWH5w+y7NPPkXxxnlsPcGRqM6q7zE1PUNPro94qlOZw04kcUvtUD5+jlBy2pTdNmNG6naSlJKEZjDbrIYD9RCwomFHnU+VJEM8ONpegO0FGJrCh5dWNsrBtt0A75bqRopu8exzz3QWDT1j5HoFrmMToLJvdBwfgQh8+gYGiVgGrt0mEBoIjSdfeIlm2yEa2UurbROxrG4OTWdV6LguAgmiY/ptNZsYVoRxz0WgcPjokZsrHTHIOJJms41pPKTnQagce+o59jkelmmQyyaIRCx832dM3UN7n41lmXjOXtAMNAXMRIrjowMMD+S3WArkQDiPPk+40Sh1Kuxs5FpvXWhHVI35Zo2m7xEN/ZIhQpL8HA+qKnh9XwZNEbdFt0oJx/ruvupbz+PSDfMmiXZU642bpZubtHahEO3mREXWtflNtmPjFm080k3qVW9NfBc330SjnzATSihY3Wr/6/laqtohXcvqXJe26frGjp64y1iEc+nzhGuNMgnNILhLJx5VKHhIFlt19sXT4YCFCEny8woB/L1f2Ycv5VbNiI7PNUSILxp82SG/jGHdI9leYqkqU81KSJI7ACkl09PTtFotxsfHuXjxIkePHmVqaopEIsHQ0NBje+5BIGm1HDzPR4/p1H2XqKoT1x69Cy4kyV1ESIiPDq7rIBQNGayHy4stmvmuLoq6RbrD49wdK3YTO/CxVG0j9ePWY0kgrhnMtWpfiLF7FNV/otEo169fZ3V1lXg8zs9+9jNyuRzFYpG+vj407fGigEKhzvxikVK5QaNhY2kao88M8VZlDlNRyRgWfWaMPbEUGd3a9fELSXIX4bguQSBDk+En1MkNXbuvMJFS4rkOrVYDVRUI1SCZiOL7PtVqddeFkW3bKIqyrXqdn2x13Sk8HgTBZ+o4qhCcLy0SuB6tVntLIXPXdbdolgow79QpVSvoQkWyMyXeWq3WI5mxtm2jquq2yGe3C+ILITAMg2g0yvLyMrl8fuP8BKA+Ro3KKpUml68ssFao4fsByqZFrui8wZMBS+0GC606l2oF9sbSnEj2ENtl7TIkyd0aWE3rtgMKWfKTPuj336bTUaFTCOJm7UxFUYhGo7tOkkIIFEXBNM1dPY7neQghthSL/iwcRwCzK02ykRiaqm1JRpdSbikMrwoFPJuaIhmK7FyVUN/3iUQij2QubLfY/W4tdnzfx3VdNE1jdXWVWCzGq6++yqUrE5z80ovMTU2TyudYdVqkfR1jl+ft/TA5vcrElQUcx+suMNQtmtz6HBIINCFAgC8DLlbXWGjVeTk3SL8V34V7uSskKXFdr5OYr2somyekEPiehxd0iuW6jo0UGoaucM96wLf87lZ/hud5KKq69ViPARQhwsiTR7ko0Q1UTYfA7+TZbhJYuy0YFUVBVdWN4KTdNP+sH+uzdJyG57LmthmKxjuB13dYYGx+bgxNY95uMLqDfsn163mc5sJunIvjOPi+j2EYqKrKgQMHNr574aWXmW6WGTp2mEBK3i4uYCF4Ip5jKJ4G9dGXCrhybZHLE4soqtggx+0tvASGolL1bP5oZZov50cYje50xx+xYd3YMYKUqIztGefksf2YisR2HJqtNo7rUqvWyPUN8PT+UQqFEmNHj7OvN0K10cZ1HRrNFp7vY9s2rbaD7dg0W22a9TqJbJ7nj+zHabexHRfXcfD8AImgr3+AmKF96pX3Q3yq+iaRSBRD1zFMC00Ni5w/TrhWLxMgUbYhbgIJcU3nWr0UDtwDot1uI6UkEonckaQLzRoTlTWuVNa4ViviSJ8lr83PKktcKC0TeI+2j+PM7BqXJxZQVfHQSo4mOuUN3y7MUXB2x6S+Y5pkEPgY0T7+2r/9b3B9do4Xj+3jRx9NcfJAL1dmi+wfzuHoBt956Xky6d/BPPoc3xz6Ev/8d/6Igh/j1ZNj/PRn79C/7zApmhTbKuODMa7Ml/nlb30Nf/IiZ2cLnNyTpeKbuKszFNQcf+s/+yv8k//mv+PNG4tYj0mbKwn83ZlZ3i5XMBVlyzJCIPi/7hnjiXiY/BviAR9WRcFUPnuVMydqBRKasS3/okQS79ZxbfkekTBfctsapBDiNpP/0tISV65cZe/efZy7cI4DTxxj8vI1YokY/nAP7VYdj4APGwUEgqPZXlB2f5FZq7W4dHkBRVHuqFH7QUDgS6TemTO+7PSMVcXthKoKQdv3eacwzy/17+uYZB9HkgRQNR2nWuBf/Ms3+A//+r/BybrGN37pJcY+usLAeJ6JyUnmp5Z56pkv08qqXF+e5Rt/6s/QR4uPp+b5y3/hTzJRcHnp+Ah21ePdcx/xK9/6Cmvz0+heQKvt8/Xv/ilyWpt/8A//Z1bmbvDhuYld9wU9KHwp+a2VVa41WxiKoB0EKELBVARl1+OXc9nbSLJWKlB3JKlkjOgO+GLuWtx8/Rw9H1XbLYEradSaRBMx6uU1HCLk0p3rbTRqRKIJ8NsUyy2yuQxKaJXeFqYaFZYbVZ6LjD527oW7oeV7TDUrDETit1XZubt20AnSmGpUOJLMhTf+fvLG9zd8rls1S5d6w6ZYqhJbXsMwDa5dmiCdzVCv12m3Wh1zNxAIycfNImndZDCV2fVzvnptibbtouvqLXILfD8gk4kxMpQlm4ljxgx+2RpnoVXnRqNM3XfRb2mJpysKK3aL6/USh3a4rOEOkqTAdVq0tRj/x//Dd/nw3XcZPfIE5aVVpqenEOkkqYjFx6cvIBJZ4uMZjuZHWJi6wpWG4OBohsnVKgdGx1mcmadSbfLT907Rtnp4cu8AN04t0SzOc366wCF1ntz4CU4El1hYWaPhuI8kvPtBEFEUIqpCRNX55UyKQqvBx802MVW5baXjtgr8/N0POHriSZYXl1E0hcLKCpF4FuE1sRWDY4cOIHyby1eukO4ZYagvw8r0DVbagp7Nxc1nZ/HNCHZxhrKeZyCuk0jmcBtlRCxNImizWG0xe/0aI0de4MT+na/J2CjO88Ofn+O1V57j4qVzaFqCZCZDLhfl/bc+4NWvfY2J02/jWUO8lM+A0+bStask0n04rRLlio3EDwucb8Iby5P8bGUaz/N5t77Gvzl6jKzx+HdQuVBdI0B2zWLbC1QJgJiqc7lWCElym1rkrYrC9cllarU2oyM5IpEIiUQCI6IyOTdHqVhEVVV000DaLRACBYEtfc43ivREYuiGsWvnW621WF6p3rHjUiADDh7o58C+ftRNbpMBNc6AFedQIsu7xQXmWjW0W4hSFYLLtQL74unbvnssSFJRVAK7yN/9H/4+piYolWuYb72PJiQBCuapj2g02yhdW7l8U/JDK4LTqmMHCql4hHK1TiwaRfoungSCgB/89v/Gz6IW7VabbC7ND/7lr/MDCYZpIH2Pqd//IUJKTO3xM0MJwA0ChKpz2DL5qH5nm7lmpnniyH4WluYJPA3HrlCoNhkfgKZUCewCa9Uh0rLB0sIUUysOQ71PcWZikldeeYn3bi1u3l6jWrTJH4qzOL1E/0AfV28ssrBykXgyxyuvvkBhcYZ8Jr07C4R0H2PDS9RWS6R6xkg4ZVb9gD2JHHtGhmlUV6jYKhmzyvRylWHLYWVpgSvX1sjkYlh+i3ZY4HwDb6/N8U5xgSOJPNL3KBPwT6bP8Vf3PYOuPN7+11PlZbKGRSC3H8kZSEnKMLnRKOPLoBPxGuKuWqSiKFuCn5ZXKpw7P8vQYBpNVTh+/ASqolCuebz46iuU1tYwTZNzbu0WDV5hyWux2Kwxauze4mRhsUTbcTGMrfTjeT779/Vz+ODgXX8b1wxe6xnljeUpVuzGFjJUhaDi2hTsFn3Wzrmzdnb2CXDsNrVGC8M0CDwX2/HwXId6sw1CEAQBQRAgpaTZbOCjoCtQbzQxdA3bbuP4ATIIQAgEkkaj2TXViG73eTrBO4FEBsFj2zE7kJKobvBCzGTWsTdyf24btsCjbbu020100yBuGaTSSWKxKL19vfTk8hi6RqmwRLUN2VQcUOhJRrg+s0gun2RuoVPcfKCvl3w2Ry6fpVYo0z+2F6XdYLVYI9fXT2/C5Mb0EqlYjFKpsCvXrSgaUcsiPdBLozDFXM0jjsT2A2Ixi1gsy3BPhrrrk4gYlIprlBsumUyS3t5e+vr66O8fIJ0KG1NXXJsfr06zL5YmQOIEAb1mlLbv8eba7GN97st2k5V2o+uPfDBYikbb97leL4dMeA94nrclSMf3A65cXcT3XarVFlevr7C03GB1pUnP2CjnGgWWYxozmk/VbiG76T7ri/pASubtRqft0i5BBpCMR1CFwA8CPM/HcTzicYtDB+5fsFkTCs9nBtCEctu88qVkvl1/XM2t6wLyJu92qk/cfH8bOWz6bN3HotyyMr61gsVt+3lMfTPtIMCVkrrb5u9NzyK7jud2EODd6ptRdQaHRxnbfwhdhXOnPsSr1qi4/Tw7OgR0y0cdOMG3Rw9hGCYIePKFFzcVN+80UN0obr6/Y4bRDAMF+OYv9aHpJooIaLYcIvtHcD1/13ToI0ePIYTghedfxUdFU0EiyB4+AgjST5xkvycxDQ2Sh/mlwXF0w9zqnxwMheBPV2eIawaqUFhfDnoyYDia5P3iAi9lB4lqj2e3nLfX5ohr+kOVAwiQpA2T94oL226dda1eYr5Vw1BUXsoNfSHmRxAEW3Iyi+UGpXIDRVFo2z4Li8VOxKuhEx2JMdUobxQRUFSFwPZuyUcUFDwb23Mx1Z2P9ZBSMjgQY2Agju9B2/ZothwqlRb5XGKLifVeyJsReq0oC636babV0g5HuYahY7sAVQhey6TRFYEplNs03aOxW5K0hUI0dtM8cPzJZ9lvOxvFwTeTzxbfw5bi5uZti4bND4+xUVD85m8MY/fMWOuLGUXTN8wVW/LjFBVzk9vjcQu+ehxQ91wuVQsMRxO3+fM0IVCFwnvFBV7vHXvszr3s2lysrjEeS207YOdWK0zGsLheL7FiN+k1717YYLpR4QdLNyg4LSxVo2g3OVVe5rsD+3chd+7xw2bFoVxudAtrqCiKQAiF4JauQxuk0lVAgiDYUE4EYEsfN/DZjSfS932KxSLQ6Tes6zrppEY+myKReLB7ldUt5pv1LYJFEWAHnRL6O6U+hSS5K3oU/J19ewnucKe2Q0tCUe5AkCG+aDhdXkbtkuGtJOlLSZ8V5XR5mVfyI4+db/IPlyaJ6waKEFtqtT4oUrrFj5an+IujR+/4/R8tT/FWYY5+K8b+eAaJZCSaoOS0+Z+nzvJrI0c/t02cpZS3WdacrmYohNiIFBVC0D+QIR+NMe6nmWlUEUg0oXbW1Ftq6XbiKLxdqgZ067l5XntDIzZN64Fqyd7NV91JNdo5mgxJchdxt9SGsPDBw62S77dCFYqC77oomoa6vjL+jBYEl8CZygo5M0qA3DjG5mOZioYjA85VV3k63ffAx5hr1XhzdZaa53AwkeX57AAxVf/E13O6vMxHpUWeyQ3gBcF993W37yXQa0W5WitxpV7iYPxmakLL9/jNucvMtWpdEhT4XcNuJ/DHwlI1fmPuEv/evqdJPIJqO7s1Fx5k3DRN3dAOwSeXTbB/Xx+WKWkUCjyfyLAvmuZcdZVVu9mprrRpP5KO60vZpUXXel5k0J0XG/5QIfAesJhBw3PvOGc0lG70ymOqSfq+h0SgKupt7kIZBPhSomsavucihbrRreGeAqP7O+3WKhJS4vn+Y1mWznbckAw/sRDo9MO8v9CRNOpVhK4TOC5CNUkmogRBQKvV2rUHfuNed4tGIyWGolFwW0zZddwg4Eg0TUozsIPt+38FcL1ZodhqkIqmcAN3Y7Xted5GYWwXSCs6by3PcCyS3va+hRD8wcoU7xcXSGoGhqLyzsoMby5N8SeHDvJELNvxZz9ghwgFQTPw+MH8VfZYCdq2fV9/5Hqd0bvBBQb0CP/0xln+0tgxhs04l5tlfrh4HV1RGbFiOO6dhaWKIKMY/Mbkef5Sz36Equ56DINt2/i+f9+6rFJKfP+TxwRIKbdolOlUFAnousKxI6Pkshb1eo21tSYSQavdJhmN8pVEP9ORJh+tzOEju7VRO0qlqagYYvdIUlXV265dSkm72SKZ3J7J1Ql8lu3GbZ2WZLdi005ih0lSkM31ETEUVldWsD2/UyVBUfA8l3Suj5ShcGN2joHx/Yj6KsvlFpoq8P0ATdMIAr9bl0YSSBAyIJbKkY9bzC4uIoWCQIJQMK0ofekU5dIabcd7rHIlTePxDKb4nNIphmXieT6KEFt8YLvdMWP9AVcRuL7P9xeuca62hqpruH7AHwYBr2SGeLVneNtmR1UI3i3Mk9IMfHmzRfG6QFxffEkpiaoaS+0KE9UiB+Pp+5KSIgS/OXuZq60qB2IZEJ39ZA0LO/D5l7OXWEoO8Fp28IHGTgAe8OtT54iqOjFNx9+GFrn5eu72vaEo5AyLfzx5lqii4akK/UaEiKLh+v5dj+HJgLRuMN2q8pO1Gb4zegh/l+eDlHIjgv+TXPeDkE4QBBsRrtlsnJPH99DTE8MyVRYXl7pdNZQN3apUr2M5Dod6eukfOsD5ZonpRgXZNVSmVR1T3508yfWqQLZtd82uHYJOxxNoiRhV1yap398beqlWoOo6d3Qz7GT6x46SpJQ+qpHllRdfoVAsMNrfy8TMGkN9SVaKdXqzCRw0ju/dSzTyIdrAOAfTBzl15jyNwGTvcA/Xrlwh2TOEJWwajkIuZbJWaXD4yHHk2hwLpTqDuQR2oOLVi7hGnD0Hj2N5K/z45x+h6kbIF19QGLqFYQg8x94ocK4oCrHY7pf/0xWFlgz4jaWrlN02+zM9qN0WP44M+EVjFVtX+Hb/3m3tr+o5LHpt9sRSW0hv3URlmuaGgBVAfzzJqWaBJ3ruHz7/w+VJJr0mRzL526KsY+gcNy3erqwQi1i8mtrzQOPw69MXaGuC0UgSTwbbEi63RmfeDX26QW8sgSclhlAIugJ9O9nR43qOM+U1vqoppLTdlxGapm2rbdpOaJKapm1JA9F1lf37Oqb3VqtFOp2hVqvheTd9lbFolHg8TqAI8mac16Jx5mJpPi4vs+K0GLLiiF2sfxyNRqlWqwRBQNQ0SabTLAufM9VFfD/ga71jZO5RKGOyUeZcZRXtFoIMuk27B3a4I8iOapJCUfFaVU6dOsvrr7/CoK1y9PgBMtMLJHNJVlZXKRcrDIweIYgICpUCB08+T0I4zK2VePHZZ1hpBOwdzmI3JbPz1zl69Aj14ipaIHE9ycHjzxJVHN5566eUi6sUyhVEbRXChOMvNNZNqoZp3bZiv5umsWo3uV4vc6NRouTYjESTjMdSHEnmHqhiR8Nz+R+nz2KZJqPRBN6mNB8F2B9L82FpEV0ofKPv/sTzbmEeXen4VTYn4W/WJDe0SSClGVxvlJlsVBiPpe6637PlFd4tzHMokcW9g6aznol8MJ7h95euE7UiPLMNX2fZafO/zl2m5toMR5O4D2Ba3q5Gte5vVLoa4oNAFYIICr+/cI1fu0sA0N3O7fKVBSanVymXGxw/OsKxI8P3TFN4EA1xJzRJVVVxHOeO89yyrI22XZ7nbWicmqbdRuTDkQT9VoypWokBY3dbsUWjUaKRCDErQiui8269yGyz0rUfwhsrk5xM9TIeS2+pVVzzHCZqBS7VCkjJbS42P5DsjSd3vL/kjpJk4Dn4WoRXvvQ0s5PXyAyM0qhUKRTXENEYEV1nfn4OaSWI5CL0JXJUC0usONCbjVOsN+nN9lEqFmk1XW5MTeEaSYZyGQqzk7iNIkvFGr1KCT3ZzwuHRzmwb5hzp1YQj1EBUAn8l5fe4edrs1tusuw+5P/5sVc5me4Nme1TwsVqgV8U5li2m5iKgql0XP0zzQrnq6u8sTzJV3vHeGobBFH3XP7B9FlMVaPXjN4WFSjp9L7bH8/w87VZeq0oJ1N3v/d24HGmskKfGdt+GTcJPWaUHyxd5/+07+k7brPUbvC9havsjaXvmZKxXoT8QCzD9xeu0XBtvtwzesdt3SDg/eICb67NktAMRqLJByawRwFfSnqtKNfqJS5Vt1fqrlZr8cM/Okut3iKRiKBpKh+enuTcxVm+862nSKc+OZHsVByFruvYto1lWbeZNg3DQNf1jQIu663J7hj0IxTGjBjaLqdjCSHI9vVyurLCtdUF3CDYYja1fZ93iwtcqK6R0k10RcX2PYpOm5bvoSnKbUGRgZQYisqJ1M6X2dR27sJVpF/nJz99A00VNJot9BvXUZAECG7MTmI7LkJ0GuNyDS7pBr7bxgsEEdOg1W5jGCYy8DvpEwRc+vh9rhs6rusSjcW4dPotLkmJqmqUCsucP/8hgk5ZvMcFXhDwm3OXuVIvYgqFduB3C5yrlJw23xncfxtJek6TxeUiud4+oubOroSk12Sl7tCXTj+S63dbdQpVm/6+HGsrS+jxDKmoSbtRoVCz6e/NU1hdxoimSScij+y+zDSr/MHSDdbsFjnTYjyW6gQrcDNgPG9Gafouv7d4jfOVVf7k4IG7+kjW7Bb/ePocGtBjRO7pc5RSsj+R4Xvz1+g1o3c1Cb25OoeUoCvqtklSIklpJlPNCm8sTfLN/vEt31dcm1+fOk9/JI6mKPfNW1wfi/2JDG8V5rneqPBKfpi4pqMgKLs21+pFLlaLeAQMRhIYivJYEuRmITocTfC7i9fYE0vds7tItdbit3/3Q6yIzvBQFt/vjFc6HaVcafK93/+IP/unXiAS+WSm27JnE+OTmwbXTa6O49zRdL3eV/V+aLfbj6TnJoCmqFRcGyfwMW6R3Uq3lmzDc6l5Tqc+iuh8frdUJ08GPJXuI6XvPMHveHSr57l4XufGBb63kUhv+3Qjy7oiSYLr2CAUVAVsx0FVVbxNYb2dEGHZiebr+ngEEikEQeBvTN71bR8nRFSNiKISN+J8p2eY1foKp6sVYpp+mynP95p88P4pktkcM/PzDPX1USgWGdl3ELeySM3V6YubXJ2bZ2BonJGBHPPTV5lfbbD/0F5qSwu0pEU6E8drNVCsKKauk4rpXLw8STKlce7SdUbGDnJgtIeJS9fpGx5BtGoslOocPHyYZHSHJlfgcub0adoywtz8HNXCClo0xWB/D1ZEZWZqkpWVYZKWy/VL13jttVdpLS9wZW6RoaEx7EaB0g4WOF8PDvjh8iTvFxfoMaPsi6c3Wu/cSg4BElNRORjPsmI3+Ic3PuaF7ADPZPqJd/1ZTuDzQXGJn6xOkzMjxFQTTwbo9/CQye5KvT8S45/PXOTf2/vUbZVyVuwm7xYWGI+ntk2Qm4XEaCTJu6UFdEXl9d7RDQ3yn0ydJ6brxLuBQBuCs9vwvNNkuZO7FvgBBGz4QsdjaUpOm9+cu0zZaZPu+ooiqkaPFcFUNHwZfKJcyEdl3YmqGpaq8s9mLvCXx0/ecbtWy+F73/+IaMwgmYjgecEm2SZJJaN4Xp0/+KOz/GvfffahzmW2WeNHy1Ponse/mdmZ2sSWZdFqte5KlNshSEVRtuVL3QmoQvBqfpgfLU9RdFrod1By1snyXtkcsvs8HoxnOb4LWuSukOQ9S8jd/IZbr31zvsyt22796GYGjHjM2wUJBLbvkIlmOaLDB+XinTWvdpmGb/LS0SOceu8tzlyc5MTRPZz+xY+ptDzSqQyrUpIY7OPqxAQjAy9zY36ObLyP99/8CXVbkkgkmZtTKK2tgqZz7KkXiWhQrlQwIiky2T6UWpEf/WSCo0ePMXflLFUZZU9vkjMXr/Dqsyd2zOTexuLQ/kFOnzpHNB0BFOKJJPlcinqhRO+eYTRvjaZnogM3pqaJZ3uY+PhD/GiSFC6tHShwHlE11uwm/2L2MjXP4UA8C+L+Pi3ZJZ0eM4orAz4oLfF+cZGcGWGt3STobjMSTWKoKq12G0Vsp6GwJKEZOIHHP54+x7+95wRRtSOUqq7Nr0+fp9eKoiAIHqKYm0SyL5bm3eICP1udYSyWYrFdJ2tYpPUOkSNA01XshsPytQql+QqO7RFPR4lmIuRGUhgxbSNnzZcBacMkY5jQDSTq+I46iwz/MdYe72R27TNjzLaq/NPpC/za6NEtKQS+H/D9PzyNbqgk4xH8O9Qv9f2AXDbOzGyBM+dmOHlidNvHv1wr8G5hgdlWjZim8/V4/84uzCORTtP6VgvTNLeV+uT7Pk5XQTGMRxv4GFV1vto7xs9WZ1mxG+iK+kDZjevz73Aix4vZAXaLDcJiAru6epVYmoEuAwqu3Xkg7yD7zGgPfYk53nnvfaxolt5Ukes3ZugbPUiqtoYWTZPRBcmePny7I7yyvX30J7K0vEESzRaxzCBWUCIWT9GqrpLvyWHoLjFTsrpWo3/PHmKNGm1LY21pkVgqT3NllZkVj7Hxgzt2zYpukbECzp6fonekn3atie+7VKplZm5cpNxSiWUX+fijs4wd7KzmFXyuT8/Qk+8jnkwRkQ5OIolTan+ic3m3vMQflxfotWLsiaU6JCEfTKgqCIYicXwpafkeSd0koukYXXPog5Zc82VA3oiyYjf5+9dP85X8CGtOi4/LyyR1k6Ru3pl4BAhFdHzv6waZO5A7wJ5Ykprr0A48RqNJFCHwpERRO7aYufMrLF5ZBUC3NFRVoVlpUVmuMX9xmexoiv5DOTRDxbW9O1yjvMcimW65s24hFyl5nJRMTwaMRBIstBr83Yn3+NWhAxxOdHyUf/ijs7i2R08+2Umb2Lzg7wplSUfbHhrM8P5H1xnf00Nyk8tAFWKL+XDNbnKhWuBMeYWq1yZjRNgfT+PIYCMYaSdhmiae522kWGiatmFqXbeqrOdorkfXbpdQdwMJzeAbfXs4VVriar2EJyWaIu5ZDGCdHCOqzolUP8eSu9spKCTJXULb97CDAMVt8dvTp6m6DiBo+95twR1C0Tnx9HM0Gk1isRiXz19krG+MwZ4YyIBW28GyLISAnp7OhDi2/yggyfX1IwOPthMQsfZvFWWBwpHjzxCJRrqJwgMMCrDbbQxD4/zZcwwdOko2soN2fKFy7Onn2Gd7WKaB3W6hGREEPv7YSCeXUdX45rf6CTqKDVYyxYnRAYYG8lsfjU9Y4NwPAvqsKGnD/ET+snVTYlTVQOsImk+iQXW01AhN3+MnqzM0PYeRWIqoqt3crwBVVRCKwPcCfDfAbjq4joORNVD17nducFuUpC8lMc1gPQwnkBJVV3GaDlfenqZVsYnnI6iq0hGa6ya7uEEQSMrzVYqzZcZODtIznkGoCsEdjiNEp4Rih3zBdwM818dtdSIpdVND1RQUTUHVOue7bt6VQef16RClZCgaZ6lV518sXOZgNEvroyKNSouRgSwVp72FHKUEVwZEVX1DgOuqQiYZ5c03L/Er37kZLFV0bUqtKgtei+v1MmtOE12o5EyLXitLgLyjqX9HhXo3etX3fTzPu62SjZRyQ3NUHoNyhma3IP2eWIrLtQJL7Qa273cqTXFzUSiRqEIhpumMRpMcSeRIPIqUnpDOdmFQFYWv9e5BV1RMRSVAMhwRrAftH0/l72icXc/pO3z86GYGvUcd166JWtG40yZCUYlGI1tX+YDZjYI78eRTuzQCCla3erlprR9fRVFUbro8bvo+Ro+c2JWzGLHiTPmtT+YvE51uCes+OxkEKGKTwH9IQe9LiaWojEQTiG7LIF9KFK1zLLftUVquUlqo0Sg08Vwfp+3i2R6xVBQ9qpMeSNAzlsaMGwR+QLDJR79OfUIRqLpKeaHKtXdmUA2VVH+MwJe3Fb5eF9yxbASn5TB9epGlqwX69+dIDybQTG1DG5WBxLU92rUW9UKLeqFBq2oT+AFOy0UGEjNuIgOJqioYMR0johNNWUSSJmbcwLB0hCLQjG6P2Q3NUyKD3S3f6CEZTKWIr9T5xR9cwHZcYpkIN5Zrt+l3UkoankuiGxSiKQJdqJi6Rul6jemftEgdzlJqNFmoVxGKIB+JEdd0xmPpDS30UQc2qaq6JWDnXulQjwMGrE5j5ZrnsNJuUnI70ay+DNC65NhrxsibkS1ZA58xkpS4rouUoG6qn7n5Jq3XBtxIht7GTdv8u62ako/b1Uw09fHJkxTA3zv5+h1Xi8pj7kf9XEEVKLqCkOKByUxROxqS5/iUF2pUl+vYTYfqWoNI3MSMmyRyEdIDSVRD2QirfyDBLgRSEQhNQZWdY1WX6xRmKlSWaviej2ao6JZGxDKJJA1830dVdVzbZWlilaWJVTKDSXr354hnIxvk3SF1SbvuMH16gZXJEvFMBM1Ut5DpHZ+3oEPWqf44TtNl5uwis+eX8J2AZF8cRRU4LQ+n5RC4EqGCbmroloqi6kRTZodIu2MR+AG+41FvOFSWagR+0NFAFUG7ZZMdTGPFdMy4iRHVMSIaRkRH1dWN+7Buvw38rhb6EAQqhEDRFISARrnN5Y8mKS9USfXFMTLxzr5VecfnOWtEugUMOlpgIKHlukTyFuc+nuFAXNA3kiGOgq5qaLqGHwS7qjE+zPV/FpDQDBLxx6cwzA6SpARhcOKJJ4maMHl1gmK9jSIknh90TIUDYwwmLT44c4a9J58j0lji0tRyN8FVwfMCdF3D9z2CoGMS8FyHvpF9DMZ0Tk9MbEn1SGT62Tc2xOriFHPLBdTHKA3kXoQY1nR9NA/23GSRlUaB3ECqI3Q15eaiq6u1bOQ7rEdPK4LAl9QKTYrTZSrLNVzbRzUUNF3FjHZyzhrFBpWlKvMXVjCTOrnRNPnhDHpE2zApItmyGNzsrwt8idt2aVVtirMVXNujVbVx2y6aqWElDBRN2bKPzn47fKFbGmZEJwgk1dU6hdky0VSEWC6KGTNollu4bZd6sYWiCNJ98Y5++QCLBRlIdEtFj8SQgcSzPdy2211ECKJJC9E1tW72PXb+yq0LDk1Bt25G60kpkb4EVWLXbVrlFkEgOwQqOr5XRVMwowa6pYEAK26S6IlhdrXSjfsZyJtjzuYgwJvjrXgKru1Rne0sQmqrDTRDITuS6mjy92gyLDdr5ohuZ5bupQhBb2+C+fcWiOsG0ZyJ70nEJjP2XQlbCRfMnwnL4I5RpAzQjDj7R4Y5f/kqTz75DBevz3P04AhLq1UG8nHm10ocPHCEWDxO3Yiz/+Ao8fQ0zUBnpC/D9YnLaOkB+hMqdVsjGQ0oNn1GhwapzV7DiOc5vneQdqBSnr/KSquJHs9xcI/L7MIKPEYkGRY43wmC3G6B86650HepVGqY0ThRy0B6Pjc+mGMxuooZMbASBmbMIJK00E0V1ej03AsCie/6+G5AvdCkulKnXXfQDBUzpmMlDG6R+2CClehoS61am5mPF1m4uEYiHyXZG8OMdvyGmqEhkfiOj2v7OE2XRqlFu2bTbjgEXoDv+VhxAyOiY8W7TYplhzBus6hseq0HflhJEytp4rU9SvOVDVOoFTeIZazuNQYP8CzfWtmncxzN1G7fzt/mHJc3iWaTJwHN7PQUZBPpbPZZeq6H03ZwWy6BL1GuqiBANzQiSZNo2sJKmBgRHU3vfOd2g9s8x8dpuDSrbeqlOl6rU1fViGgkeqIbwUUPW993/T4JTSGaMpl4a4rMSIKho32YUaWjsa/LANGl2O4xvZZDtdWCvvA5/8KQ5PpMkEEnpFgz44yNDNPT20+zVEOYSfpzgtlr1/GsJJm0xdLyPNmhcfYIh8nFFZ44+STlpk9PNkq67nD6wmkOHD3ByuI8lqJRLxdJD71OXqvy49nrxA0Vzw0wzNhjZ0oIC5w/eriuj6LqeL4LGPQNZIj3RDoJ9K5HtWDjLwUE3dw3pZs47bs+ru2iR3QUVWBENCKZjrnHD3x8595l1jRTRY9oBH5AZbVGYb6M7/ogBWbc6BCeFxAEEkXraEiarmLEVISidcy0gdzWsaSUd++aoYIe6ywUzaTeIZkHbD+0rePsIO57HLUTwKSZ5hYCDbyAWrFOabmC9LuVZLTOtds1u3M/uvmfqt7RZI24hqJ0NP2dvjYhBJG0wdLEKmuTZZIDMSJpC8Pq+HE9N8CzPdp1B7fhUiu3yRzeB4fC5xbAtVu0XUjETcrlGul06vNIkgLfbTC3VmRsNM/pU++RG9zD1YnLrBbKZIWgVa9Qr9SRehGtrDOY62Fu4gxFW2XfcA8fnT1Pb98gheVpbMenUCzgXZ1k72Ceuak5VFwmLl9gUdTRYln6kzGEW+X60kK3kk+ILzIMw8CxbXS9EyxkWRaaqqGrKmhgRreab6W8czGKLSbJBzFOqJ1w+o0Q3VtNgGKTOfJWK8NuTN/P6yOhAjqY0U051JvGOpmP3VmLfQSGnd7xHL4XYNdc2qVqJzhKym76Tse/qukq0YzFgSNDu0Q4FVaLLp5dJzMwRsIU+M0K8yWH0aGex/KWLk5d5ocfzPCrrx3if/3+h/zv/q0/TbvZwrJMNEWlUSuwXGyzZ3SASrVGPpejWilixFIkIrtbRm8Hy9IpINt8+MFb3X6SCktrq90gAoXJ6RsbvoZ1/8WN4FI34AEW566jCMH0zNSGUFFVlebkBHPXL6GoKlYkwsLkReboVOlZWljvpaagaY+XP9IPAjzPv+OK09DDoOJdMc8qConUzRVoJ59Kou5QW6I7LQw7wTo3W0LJXWrFJISClMGWY+7WcUBu+D53Zdy6+cJik3/y5nF34HjBvY+z82Mn1g9F4HWuwYgbt4+fvGmi9V15R/mwI7LHq/L93/o++596hSdji7w7uUhf0uDC1WUmLmscPbSf+YVF+voHKK4uM7D3IP2ZxKe77jGiGG6Zt98/T38+y5VzZ/jgzAVOHH+SSxfPcOSJ/awsOaytTNOoO4jAp9Tw+fovfe2zQ5Lrk0Xf0q7qJnHdr3bg3b5WNW1jL1JKVO1m8S/lMV4pTy0sU2+2bjMDSwl7BntJxWOE2KUFiufQaNkMZFL85deewfEhHovueEUO33Vptm1i8Rhuu42HIBaxdsEk6VNvNLEiMTQRUGu0iEbjaOrOXpEMfBqNBqoRwVAFzbZNNBZjhw+DbbcQik7g2fhoRCMGjXodzYhgGTsnkhy7DUIl8F0CVCIRnXq9gWlFMXZwUR34HrbjoSlge5J4LILdbuIGglg3R/m230hJPhnfnQeg024X12tw6swcvqswP1UnluzB9lyunD3FxaUaxysllmuCQ8etT/2ZVY0oB/cOUWpIxvJZ1soFcvkepA+9vb3E41nseBFN0xCqTzweo3dsmJ7U7svRUKXZjTkq5ZZu6Yqidoq20/Fxue7tfqLC8gyTcwWGx/eRT0bRVMGNSxdoahoHDh6leHUCJTtAXy5J4HugaCgCfM9laXESEgMMJuPIwGVxucLQUE83XUAFGTA/Pclaw2XfwQPEdZXW2jKLNZu946MgfdaKFTLpFEJR+aRBd/XyMotFnwPjA1y7dpXc0BiZiElpbYHrs8scP36C0vIsjhJhbKhTmmvjXLsCREiJeMhVkN1ykAEoMmBPPo3nSaxYnN2oW9VqNIjEYtjNGq5Uicd2o82QT1VXiSXSCN/GiUVQNRPd3Hm/t29HkaqFJnwq9Sap1M77hoK2ieODEHECAZahYUcMpNCIRHdOYPtOE89XMU2Vtu1hRSyqukI0muwE+ezg/WnWmpi6QtORJJJxnIaOLwWRT2ExrGgxvvmdP4V0ajScFKVyhYOHDyGERrW8hmENEu1tM9iXZYzIjjdUeBj0D43QPzSySYYG+L5ECFDVZzp5wAc6rb4c18U0DB5VKaeQJHfL9NfVIFVV4dr5DxDxIfaPD200zt0Mt1Xk1LkbPPfcM8QshTMfvourRolhU1UEAVAvrjJxY459e/eRsTwuXF9hz2CG1XKbaMSlPF9C7j1Ezqjxs5+f5tknDrO0tki6Z5QnDo8yNXmD3J4jLE1dJRJNMnd1goYXoJkGtZV56kQZa5U5c3GaZ770EvnYwwur0soyV2Y89o3kmLpyGS2Zozh9lam1CiM9Wd596+eU6jX27D3MyGA/ixPnmVgukM/20WqWqFfbeKqkv28PJ4/tffBJrSm02w5+IPF9D9cFPZCoO6wSOa0GjZaL0BwCBHbbJmJZ9+w3+HAaHiCg1mhi6dByXKLaLpiYpKTtSUxN0nZdAs+n3XaxrB3uSqNoIANc18HtWkVtx0ExdtqwpSKFpFKtIVUDxbZBChptm5S+g4sZ2fE3+qg4XoNGSwXfxwkEhmTHNfH7wbCyjI0C3Kk27PBnRH4qaJumg6IqKF0nu7leY/YRBWuGJLmbKzpVo1FeYuLiBPm9EQ7sHb6LbAo6VXMiEWqVWQrlGq1WmT1DuY1k5ACFvfvGWZmaoBiNUS+scL5c4Pkvf42gdI6fvneJo0efxDAcRoaHKFdKDA+Psji7gHtknKeefY6PP/oINZancPVj+vJ99Ghw7dxprEw/wq8xM1+hXFyhUG9/IpIcGtvPTOE6im6yd3QYX0J+YID5YgXD0ClWSwwM76W6ukitvZdmvc7QyChzE5fQMwMMZlWayQzNtcbDCYlIlLQZ6T5D5pZFy05Ct6Jkze5qVteIRMSuHEcoCvFEasNvZ5iR3SknJtarPkkUYWEY1q4cRzUMVEBaN4neNM0dD75TdRNVZ0vh7riu7/w1CYVILIYMAjKG2Zl3lkX00cnxELtNklJXkKq4ma0c4rYV9kOZlXwPK9HDy69/nbavbBQUvk2oR/Mc3dfDx2fOkc/GSWdyjI5nSMcs0kKiAz1Dg1yaXWLswFGa5QLG/hR78hlmpq6S6x3kV7/VQ61YIT+WJRNfIJXpZ2l5loG9B9GBueUlzFQve0cGeK+wwt6De5GeJBaLEc33I1tVCmsFxvYfojfxCVfZispwN4ou1dOHGjWoloqM7x1mZnKR11//GmuzkzSsYeKWxpLvcuPGFIeOPEHUMlADF8+K4Ee8hz+FR5Co3SkQ8Cik4ObE80dxTPHIxm/zMXdtsfqIgheEohBy4ufQKiil5K/9i38q/+i3/xBtugCPWZTo44Bqrc7f+b/9R/zan/6VbXKq5PLULK2206kcoqgIJL4f4MuA8YE+cunkp3ItS3NXqfsJ9o/1Pzbju7YwRyw/QMQI516IECEeD0xMTIwdOnRoRgOInlvAWqgjI5FwZO6kbhsP1kpGCMFAPkuzbd9x1Z+IRz+1a+kfPvDYjW9+cDicZCFChHg85T9AsNncGuJOquED/ySdiJNOxMOxCxEiRIjPOkmG2Hl4vt8l19BL8UmgqmoY/BAiRIiQJD9/yudGeY1wMB4WO0iOni8fKPm+U5VFefwJ2vfvXolj/VoCudEN43PzfG1jegRSbunE87j3UwzxGSbJnZtckiDgsWwRI4NOH+ydOjddC9cfjwUCn/On3uRnH03x+te/ydF96/UyA77/m79B+tiXOBBp8L033qZv33G++9UXOPX2T7g0X+ZLr77G3qE80nf58O0/5lJB8Jf+1LeYOP0LfvzeOQ48+RKvHB/ld7/3PerE+e53v01P8tH59ZuVNX7wvd/Dy43yy1/9CqmIhtOu8Pu/87ukDr/IV08O8Bv//DexRZQXX/saydYiv/fH7zCw7zjf+drLG/l7U+ff5SeXCvzFX32NH/7277DcUPj2r/5JEn6Rf/XbP+LLv/Kvs3/g8XAdeE6Tn7zxQ2ZKPr/87W8xmEsSeA6/+MkfsOgk+de/8zpzV8/xs/fPMXroCV599jhIn7d//EdMrxTJDx/k8FCUn775Lkq8h2++9hIfv/NTplZqnHz+y7xwYm/4zITYgvtGo0jANC0U0amc7/n+ba1lpAzwg2CjYorf3Wb9bxAEnW4Eik40auD7XqfVj+8/Fk1JpQwwkzkOHRhHPOLu4SF2mUjW5vhXv/tDzFQP2dTNiOLr5z/k0sQ0jVqJt979iK98+1dwV67x01+8zekrCzz77LMM9+c789lpUStVqFaquEGbt96/yHe++6usXDnDH77xI+KjJ3hq1OLN988/0mv74Oc/4qOJBYaGBrGMzqPcrJapt6qUag2CepnFtQYvvPQi+/rT/Phn7/LVb/8KjbkLXF2qAtCurPDWO+9Ta7aZuHSaRnSEV58c4edvfUCpUqbaKFNr2o/N/Zy59AF/8POP6R0cJBHt5Fm6rSaNUp1KpYoMWvzhj99m7PATnDi8f2OhNDc3TyweZXFhjkiqnz/95/48en2eK/NVnn3la/zyS0f44IMPQrtPiAclSYkfqOwbPYAmA/YeOMBg/zBfevZ5LAKCLsGoRowXX3yV5598gkwyQiqdI5VIkM3miUctIrEkA705YqleXnj+GXrSCTRNJ5/vIWYZn3rfRS8QHDp0BOk0cIOdOZeKa3O1XuJ6vbzxulYvMd2oPFbdyj/viOaH+NVvf53S/CTXZuYBKM5e4o/euczhA+OsLS7ScFXGRwbpzcWYmriOp2hcPfc+P/jJex1zSyTJl199udOazW+CHmF0qI9sVGOuWGVwYIiR4R5a9eYjvbZnvvRVTu7Lc/7ceaq1NgDp3jFeevYY+C6KleHp4wc4/fZP+YM33gQjxp6RQbLpCPW6B3h873e/T7JvL6bfZGl+lfzgAKPDQ7RqFcb2Hefwnr4HatS82xg5/AzfeOk41y9fYGGtBoCZSPOVV14gqmv49RKlWot6aZ5/9du/R8sHVEEyGWN2dhEzmqAnl6GxfA3X6uWpY+Nk0xE+vHidl1750mMZQdColFkrVTcUkHXL1xaDSdBpxQbg1CssF8ublBmJv+Uebu4VCvVymbbnb8rjltiNOuV6o2Nh29RAOggkteIaLXtrDvPa2iLVtrPJMie3/k7K25Qru93Cu6Ufqe/YtNb3IzvHXrhxlanFAq7dplwsslZsPNLx35ZN0JeCsX1HePqFZ4lIiV0ucKbrFPA9j9G9h1CcMjMrdVIDezm2b4QzH5wiN7yP3rhGI1CQfhuhGui6zomTT1Er2wwM5/jwvV9Qb9o7XjLsgQZBkVy9eIG+bAJdEZ94NRlIyb/9wQ/4+doslqKx7kGRSNwg4P/33Lf5zsC+kMEeAdr1GuWmDU6DiWtTvPL0YaRU6e/NMH/tInZ2lCFT8u677zO93GDfgVFmVm1Gh2N8fKNArVLGiCeRjk3LtjG0JBHR5hfvfchSI+DkvlEuX/iYJVkk13v8kV7b6toqimYwP32dpWKdnnQntajdbuN6Jq5UOXT8JAkDzi/WyEUUfvHO+ywU2hxI6ZTKq/T09VMuFpicXeDg3ieZvz7Be6seidwAAK12+xYB++miVljFCRRqawtMzq1waKSj7dt2m7Zto5gxUqkkY2N7mLz2FtVqAztY5sZSlV/57rd54wdvcPZUjB/95Bd85Zf+BG59jd/4nd/ETe1jKBvjcQy1KxdWqJEgEtT4+NIMqVSCVttFVVzmV6qM9uVYKRcRQcDY0ZMMmx6XL15jSjeIxCJUSlUSsTS9fVkUu8HCWoGVah3Tsnj6+Rdxqmtc//g0pAZ44Yl9vPPzXxDry6MGDueLdRrtNul8DxFVUrcDdKeNaiVIpKL0DQ6xNjnBxMwCkXQPT+wfpbK4yGylgt12yA70oAYeq4tllFiURCRJb9oilu1h5epZqsQprszTM7IP3a/TqjUJIoO89NQgH585R6AaTF69zkuvf5OrZz5gud4pvD88PkR5fgo/NshXXnqC3cywVv/m3/yb/Ohnv/ibN6Zm7yzwA0FPzxDje0YxNEmrZdOqV5mcmcXpin6hmYwM9ZPL9JJIxykuXGOxIjhxpFPVJQBcz8aKRCmvTVFs+Gh2GxHLYrp15lYL9+0SspsQQuA6LYqVMkK5/Twcx+Vrr77I8SPbyzH0pOS/ufIBRafdCZYQolOMXEqqns2rPSM8nbmZzN+slig3bKqFZVx0KoU1IokEdqNOsVKk2mqTiEa31H31PG8jd3Pu+gQNNULc0BAyYHlpBdd1qLcDYhGDYL3tUdApAlpeXcJDx9QVgm6bH7te5OLFq9hSJx7RN6qH+L6/cZyluVlWqwGZpIXvB92mtrcbI3ynydWr0ySTSW5MnGex2CSXS+M7Nc6cPYdqpikuTTG1WKQ3n0XQiQZe39dGD74d8IMrikK7WUXEB/jVX34dXVWIpnIcPnyIsf4ehg4d54UTezn38TnGjj7HKy88g19Z4Ppyk6+++jRv/PANRg4eJ24ooJmMDA4w2Jfm3IVLHHvuFZ5/+gTl+Rs0tBxf/dKz6I9wsSeQlIolnv7KN3hy/+AWTSGWypOPafzi7bco2jpf/9Y3ODjWx4Wz59n/5Jcwq1d5/0qdb3/zdY4c2kcyneeVl76EU5plpanzja++jKkpICX53gGSUeOxIAwhBJVSmeFDT/H6Sye2mMIU02JoeJSBtMlHpy/y7JdfZ/rjN6npw5wcz3Hm/BWeeP5l9KCOHWi0alWEptFqOViqpFT3GBsbfOzacDYrReZXijjtOr4UFAsFRveMU12bw9eiJHSdaDxFJBJDWipZy2Rmbh7TsnACF1VRKRdr1JtVimsFEqk8hhknEjXQE3GCcgEnEBQrTYbGRmmsLbJareJ5Hvl0DsOIENF1litVTF2j2fLpSQguza5xZP8e5memUXSdRrtFtVymVq7T0zuApsfRTZuG0MkbFolYAukHXJuc5tDRIwT1CsVqmVrTY2Skj5nJaSLxLMl0hlwyYGaphAwCrFiGY4f20q4UaUuT0ZE91IsLLBTKDA4NMdib25WFTaFQ+H/l8/mKkFLyH//nf1f+6Ke/uLO51ReM7tlPJqbi+t2O7opgdXGBlXIVRVHwg4Bsvo9URKdQqULg0XYCctkMjabNiaeeorYwwfW5EooqCaTA0AyiUYtKqUDTdh/rqLNavcF/8Z/+B/z5P/XtbW3vBgFf/uk/Z6K2Ribax18d2c+/mD3DjbZN03P475/6Bv/OnhM3tZ3KMh+en6JRXCTSM4zqBziBQ08qT2Ntkpm2wtF9I0xPznHwxJPsH+rl6vnTzBRsvvzqi8xfPsOK41FbKRNNZVhYnP3/s/efQZJlWX4n9rtP+XOtZejIEKlFZZau7q6elpjuERiIwQJGgLA1o3G4XDOAAGyNa+SQS7P9Qhg/gCS4azQaCCMkMRhwMDML9ExPd1d3V5eu1CIyI0PrCNfan7r84JGRmZVZVVlVmSX9b5aWHu7Pn7933733f8+55/wPkYCKo2VIBT3qFuQiBqWWx3PPnOHVP/sTfKlhfNKmI1XOPPUU9e1bXFmq8ey5s9S35pnfrjMcCbBaKpHNDKN5HZY2NklHC7StOjNHZlmbu4o5NMupqfuLx7aqW/z4lxf4xje/g+rUuHDxBslMjlppnVhmiOLaLezgEBm/QyAzzVTGz5vvvIFmZnCtGo1aG0flYwucPzZIm1KlSTIR/9JZ2M1qBXwhQn6dLzPK5SLhaPJTXbw89u0gq8PaxjbhWIxOo0UsmcQ0dKTbpVhpEo1GUOh7wISm4lMEuxtLLK5VOHziCE63heYP021WUY0AsWAAx5MIIdF8PoRjUa/X6UmNfDrJ7vYWimniN3Q0Rd1fDEvOX3qX1NAMI8kYW4s3qIgoZ49O0qyWKDYsUskwxb0yiVgcw9BxPYlQPDwEqgdSCCp7GyzvdXnx3HHazSrNrgeuhTB8BE0/VqdN1/bIZVPsbW8gjRAhU8cMBOi1qlTqDolEFKRHu1nFU/ykEk9Gvew+xZ0PWquqKqwuz7HyHq5WFOVg5a8qCuW9LYoeBxUQhBBsbq6DULl68R2a9QquvKtt2KJJuSJRVPW+MO0vH1ws1ceL8TQLGysPPcKMZmjv/Qy9cJjayg2SkyfxuSHG8nEuby0zNjpEcWsVy1Hp9iysepXtYpGd3RaWBF1TWL+5iKpHCauCTHaIfFKj0lRYX54nni5QqlQpHDmNoalE0zk0TdIVYZKyyVa1wdTIYWzrGm++8QqRQIDKbhGtHeXwiSPMXXoHJZhjdmqS9YVd0uMFFKvBbq2C6tt+gCSDsTwjuRWEorCzuUW6MMxwNsFifRdV07F7XQirqMLG9STV3U3K5QadnkNhJEMhoXwigfPHZ7boX0qCBAjF4nwVkEikvvD3oBl+JiYm+n/E73lueojC+0QdZ4cmSBYm0XUN7gSs3VO/8r4aMqqfZPpuVHY2n3/oOc+cehq/2T8umh1mKJ7c70tJQrH9fjX2wVHQdiTO6Wy//FogFCPwnsMD99RjTefun1f8wRj+eyqPmWb202n/R/LJqtojHfNej6mm9Vep9WoVoWoPloxRvryDs7+3oeC5PeYauzS7dwswy4csRo6dPIueGqKdMAkk8tg9ByPgY+LoUYqVBtnp44SLJYbSSRTdxR+McGR2BJ8CwVia515MUNwskhkepbqzDqqJacDJkyfpupAO+dH35fCGCmlKbYe426NuhTmVjNKulSg3HaYmD9Gq1Tk0EyMdjhANhzh87DSu1WGzVGdidpJoPIzTLZNMDZEZGX7o3ecKw+hOm91iiWjGT6lUIXNogo3FJaZPv4zb2mOnCU8XojT32kQTKSbiOSLRIIa0sX3mJxI4H2CArzKEpvO4fQR3CBIgmUp/rHNE94n1C7VI+TR+RFG/WsLVQoDludQci57n8K+WLiBR8CkKLcd6qP98aHJ/vzNy+L73C8EQhf1apGNDdwnp3NPPHryOZXLEgEKmv/LKpT7YSsgNH3qg0pweT3Mm/vCOHw6HARifuvfdCKnc+Pt6IIb2r/XFr798//2k7+ydpbjjSI1lh3ghO/QQM2Aw2Q0wwHvhWD2E4bsnWEXS6zn4HrV4svTo2S4+4+PRqGtZsF/u7D4r0bYQioZ2Tz1Vy+5h6L4vdHsPMt6fRKMKhd8/8iLnq9vo9wQCSSnRFIXvZMcHjfQpwnMdEOrnUsRigMfovfmcKOpIJOIxhpL0mjWu314kkx2h2yxiWx4Bv49io4MpPGo2JOIhnGYDXziFIdrsVDs8dfokxfVFSl2PsC6p1CXpdIibV6+QnzpNUmlxZaXEmZOH6TXK7JZqRDJZvFaZtmugOD3CsQTNyh49KWh1O0jPJRiLEPGZ1CpNckN5Sptr+BN5MhEfW7t1Wu0yudwwrco285u7HD9xmqSpsr2xRU/1UavukYwnabe7FEZHEI5LKv35tTAHJPmE8NtD0/z20PSgIT5jNMqb3FwqcmjmEKpng2XT9QR+v46u++h2OwTCMVRpUas3kQJCoQiu1QXNh2d3qBWLhGIpDL+JbXWxrTbdjoc/EABczFAErA5dRxCPh2nWaqi6geM4mKZBo94iGo/TrFcwAxE8u0OlXsXvj5GIf/ygA6tV5uZKiaOz41QrNYKRCFarCZqJ39RRhMB1bDqWg1WtEkjnEF4XWyoYqsS1XRq1GtFkAk+q4FpI1SAc8FGrNdB9OrblYJgmhq5gdbvYrsDQBK1Ol3A4dFBTs9tqofkCmL4nGwi0s7oIkRh2u0EslsbzXOrNEjvrOyRyU4xkoyiKgmNbdHoWwWCAVquF6TfptDtEolHazTpC1XEdG1X34Td0bMuia9v4959XMBRGU/v3ZlkdHKkTDpq0GjW6loOiaoRDflqtLgG/QbvdQ1HAshxcx8Pv13CERjwS/sT3XCkV6XU8Fq5dQYtmyIc9NpbWiaTirG/skhqaYHdrFT0UoV1ZY3d7CyMygvAcbt64wVbXojAyRFhVeOvSBplQANd1cIRCIODj6uXzuLYkHI+wfOtdFtcqjI8dwhQexfVNVktlCsNZ/JEQQko80WVlaYdsIsHK3DW2diqcfGEMz+qxtLRDOh9m7uplQpEYJjYL87epmoJWq0dXqGh+jWqpSDJT4NbFtzFS4ySS8U+t7ueAJAcY4N4OrvuJBgxalW0Wby8RDSUQis1WqU48EcexJUdPnsYqLrOwWcYTEIum6da3abohohEffqfGyk6FoE9hp1QhbPrJJOJUdvewhYKibdNuVVDMPGeCgvmVZZSezU6tQTaXRENh7vYi0VAIaW1gKwqa0ySW9/NJ4oI2N9bYWC+iqBbdTg/VlEhL4NkumhkjF1CoNJtsbhfJx1OMpXOsLc7T9YVQe1V2K11ysQDXb9zAF0ngwyNZGMdwBCvLW/SsGtW6SzKbwFRgZ3sLYUQIBYOoqoLldsmPDlFaX2N3q0R27Ainj0480efZaVTY2NlF1zVqpQqbe3XSQ1EqnR45TbK2ukCn41At7tF0JCOFIba3NzCjYaKxFJGgn/n5FXyix8pujUwyQTDgp7S9TUcKEqkQAg3Z65HN5rFaRRbWd/HFCjx/5ggrt25R6jr4Az78IR87a1uEczFCSphGcQ9V8xPxm6zbDp7QOHLsKEHzk1mVCpJSrcmRwzNEIhEM2cXwx4lEQkRDIao9l9joJOFwCLdbplKs4HV7dHsuydQQMb9JMpMgoKmEAiVKxTLJRIyY0qViuex0GowOZ1haXGLs6Eny2RpaIIbs1ul5KZKFHJFUhma9gkSCqpKezhALBtlc67BbUynXmgyNJZiaHiEej2ClYpR2d/EVpvDrLuVah8JoinLTJmCqSBfGx4bZWl0gFY9QrjRIJaMDkhxggE8bqq4i3R6rO1WUQJhgwATNJCl0MrkMxc1teo6DGQgxNuTHU3S6zRpNIBTwk0xlCRHEqbSRtku2MEw8qNJpWhimn3QqT7dWolUp408qCASpoSGUZgPPHyYUtCkXLSLhCHg2us9HLJHFT5W6/fEDk6Rr03F0pidHKTbqjB+aoFbeIphJQa9JabfOWslGURT80QhmwIeiCGKxGMs7uyieQjQcwQyYROMuiUwe0a3R7nYhEWVouECjJjAjQYZiGit7TYbzBSwlSMAfIBDwUylusre8gdBNEpkM6dSTj5j1BaMcncjTrmywtVkmFgnjN8MMD4UwdBV/PMLG9hojQwXKPRcFC7/fjz8QIj9SQBEeyfQQIeq0PD9TE3kWllYpjAxT6Vok4gEC4QCNYoW98h4SQSKRIJpJoSmSeDJLQOjoPsnGxjpBfwQzEGQokeVmcRc1FEDVFJLxLKq0H0v1QX80yfPPj5KI3slVDRPZ906G4zHuC53zQpTyTRw1gK7rHDtz+r5zxSNJpg50TIJM6hqqajCUixNPZ4nHI3BwxvfECeQzD1xbXk5QtVQy0SBmMMyhyX3LOR4iVyg8cPzoPa+7zSqJwjjjw9nPda2kD8mTHAA+ep7kAJ8feJ6DZXuYPgPHsVFVHSHAcey+yAKiHyb/HriOg3hPepKUEtu20XQNz/XQ9kXsu40yN27cgkCMY8cOY+x/xbIsKtUNHCXGUCqOY1uousGdGGfHcQ/O8dFZcl8hgofvxXmeg+cJNFXBcT00rb83btsWqmqAdJFCoCoKUrrYtgdINMO4L+jc6lkYhrEvQyOxLBtdNw4qitiWhW4YuI6Nh4KuqZ/is3WRUqCqykFzlHbWKHV1ZsZyWJaFpml4nvfQdrYtC1UzuOPl6x+vH+xdO7aNoukouFiOh6G/x5UsPWxXomsqVrPKtZs3kVqUY8cO4xuYH194PGKe5Bd0YpRgux/DrFZAVQad48sERdEw94Pr7qQkvff1Qy3Qh0yqQog+YQCKdrejmOEEx888haIa96U5GYZBNjNxj+v3XtUa8fEJsn8x913Xw+77zuSv3UNc+sE1qPd8X8UwHk5uhu/+a75z/wfn2/9b1XTUT/3Zqg80RzSZJ7nfrgfP6n32uvT33Mt77007IEUVQ3/I3QmFO+srIxTjxMmn+qlugznkS4UvHUlKCYYKE3HxkUQYBbDblDQtGARBDvBRoevGoBE+DxPaZ1iiTtP1wQP4qpKk69jYjrsvANpXybnX9WDbFqqmg+fiSvEel4vkjj7yp6Gs07Ilv3dW5+99Xcd2ANfep8B96WIhQLr9PxUVPBdUA58Of3zN5b/5zxbmwFUywAADDDDAo5Ck63oMTxxlajiFZdmouk67usul6/N4ioJEcPTYSbaXb6FEh0n7XeZXtpCeSyReoDCcxGcrSMXj+s1rWI6HpulI6QIC1/XQde2xlcuSEgoRgaoJPNtBJGYQuou0VIRq4XU6KLEhUARecRElNoq3exWhKBQigoEROcAAAwwwwCOSpMTzJOFYlqfOPU06HqbTrHPl3de5cu0mrhR4QuHYybPERBeZP07WWafSMzg+mWdjo0ooEsLsKISTcWKxMBtb26Syw3i9OrWuQzoaZnVpnpWdEtpjUuZx+jEIeNJFKCnUdBphZJClK4hYDK+2gEgeQ0SPISJJvL1rIGX/ewMMMMAAAwywjw/dYvY8QTqVxmpWuHTpKmvbFdLp7IEuoKKqVHZ3yI8eI6J3qVoaY0N5ksk0+WSGYMDsl6LqtKg1XI4dO4PTbWIEEgT8YY7MHKLbaSLE49vtVhX6nlVFgcYasrGLrG+hJI4j7F0wCgjFg53zeOXlgwCAwYb7AAMMMMAAH8GSBCE8Go0Kui9DIGASCJqUSnUseScq3GNxYQ6f7qPndpBSIRyOcet2jWqlhVIVyLZLIBYj6INXf/VTcsOTtHdXaNseP/3lHj5/GOpFeAzxcQIot/uuW03VQG7D5hYIBRQV4dr9EPiKirBaULkOQgVVUOl4yEGfGGCAAQYY4NFIUmAYGpff+RlX3v35nbgdpJRITeuTpOeytLrcz1NCgOgXzJUShCL242UEcn25b3kqKsXSO7AvZ3WncO/jKrocMAT/+oLDG6veQbgOwEFWrxAge/1PhAJIBA5CwFpVYqiDTjHAAAMM8FWH53mPZkn2CQY86b3Hwrwb4qI9Qimt++po3ePXfNycpAhoWPD2mvf+N3O3Ge57T1f7uZIDDDDAAAN8teH3+z8CSYovVtSnKsA/SFkaYIABBhjgYyIWi/UNr0FTDDDAAAMMMMD9+Gju1gHwPG//3yC0Z4ABBhjgS417XKcDknxEWJaFlJJWuz1ojAEGGGCALzEUoRwI3AxI8lEXFvsVE1Rl4KEeYIABBviyz/cHhDlojgEGGGCAAQZ4H6ty0AQDDDDAAAMM8HB8ed2tUiJ6Fh+lNLjUNNAHHugBBhhggAE+IklK6eG6Hqqq8YEVr6Q8UNGR0gPEQ4vCPmmCxNCxnj0Dfv/+ddz7OQ/WmlRU1MUV1KXV+4UPBhhggAEGGJDkB3OOxPCHiIcC1OoVuj3nPuLzpLcvSweKahAO6NTrDXRfAF1xabV7iH0ZOinlXTm6/b8VVX2sYgXCtnHGR+j+zb/cl8ijX+FDEf0NWVMIup6HK/sqdZoQSMNAv3QN///9n38skpSAHKSHfBlcEAd99VHGRT8CblBg7YsO5RErrXtSMhB4/uJDCB7ZeHs0knRd1GCMF752jl/+xY9odRw0FVzHoTBxGL9skS5MsLF8m+zIJK3qGr2ew7Ezz2CVb7G83SOgQ6Nr4dcV8EWYzMSYW1jGHzCp16rYruSxGpyqQFg2lmVxLJLguzEfb9V6nAj5sRWPhu0QN3QqtsW79TqLbbdf2eRjXIQAXM+j3bMGve+LTpGexO8zMHT1Az31QkDPduhZTl+jeIAvNEKm75EmzXbPemy1bwf4rJbBYKgKfsN4pPXOI5GkJyGka8zfXsTvDyMrbaDvdm212hw7eQS/4SN6+Aj1TpdwLMuz6VE8IQilCiQzSQzDwfYEYV2l5VqIVpepw2fIx+CXv3oDy/Eer1t2/+49wBSCmVCIET2ALSXnWxWm42nymoKwe/x5sYRiGB9p//K9q0td00jta/0N8MUeQK5j4zjuB/ZHz5ME/X7CIXVgR34JcCcP+sOsj0Q0zKA0+xd/jHueh21Zj8Q5H0qSnusQTA7xWz/4Aabw8KwK//Lf/gHVroeqqFRLewRjL7B47QLTR06zvHqB9FAexfOwHRfbc0jEDNZXlkkNTdBu1tipN0iFQlT2thkbOkwiaNLoNVEeZ+dTFNB1NCnZ82z+h91dxnx+XA86wHalgiVdwhrUVRVV10H7+EE7Qgj0QdDPlwI9zwXcDx88qoo2eOZfGpJ8FBj6QBT6ywDX7ZPko+BDR7gEzICPteV5kB5Il0DAR6XTBkVBkTav/PQv6LbqrO0W6bQ7bO5uoqgmIZ+CniiQSngMDed5+/zrGGaAaqXKXjSO4nm89dablBod1MdY8VgqCkqpijK/iOE32XJd1iVcQiIAdX9PFET//hSB1HXU+cVB7xngozorBvgqPfP9mIoBvvjP8VHxoSSpqhqVzSX+ePnWgc/B0A20fVJTBFQrJRRFoVsuoygKvZ4E2aLieZi1NlZ1j163RblSw5M1VFWls7PZJykpUe/Upnxc0DREuUrgn/7zvkX5aK0GrjdIARlggAEGGODRSRL6hZJNU/0AIlXv+//OSktRVRyrzcZmEyEUVFU7UC9Q1SdMRsp+hWjP+wjf+eJpK9yJEv60YXkua+0G8gPsKQnoQmE0EPlMrvGLbqW+b4tJDymUL9/OmOcgW7tP0nwAI4Qwo1+GXjDA54kkPwmEUNA+q0rGn/XELF3effc8syeeora7QjwzRsD3weklTrfCK29e5WtffxEdgSIkKytrZIdHMAQo+0RuN0v80Z/+hHMvf5eJbPSee5VIBPXyLj1psrl8lcLEKTKJ4IGb4X53kTyw6O+8/35Ds10rU2zbjOSy/I+LF/k/XnuVgKrhSA/H8xBCQREC9Z6Fku15/POnf8Cv5yc/U9fKp+UiW128RTAzQmtnjUhhkqipPvy3pUTu12n1em1++ua7vPi1lzAkqFhcubFAs1EnN32UyWTk4GtrN97l9Vslfus3vouhPPicvG6Ln751nhe//jW+aGFkztx/xL3yr0EzwbPvJwpFA9fuL2Q9D1SDj+bwFuDZiHAB41v/PejBx3nlnH/nIodPn+X2+TfwDx9juhDZ7w8XaTpJjs6MAOznmivvQ4T3j8Vrly4wceQMAf3uXOa5LvVqiY6rkcskBhR67wLoCY3xgW/xia6MXV7/xU9Yb7gk1DqpRpel2zcRviiBSAS/bNMigKl4nHv2GVauv807V+ZoyCBHt1Z5842LjB86xNtvvsHLv/GbNFfmWCnb/KXvfpvyym02Sl0O767yh7+aZ2hqGqW1w1pF47e+/w1unv8Vy70EUXa4eGOFyZmj5IMu715ZZPbs85yZHuLn/+mPaIfy5Ey4tbbF7PQEWyvLtF2NUyePsTh3GcuIcWQyybvvzhMxYbXu8rd/9y+z2WnQdR1UIZiMpBgLRKi3KzSkw2qni+e5uBIaTo+dXvMzWm97rC4t4otkyCQjB8f0el003cC1LVTdh/oYUzg02eNH//EPCcZzHHUc/vzydUYnD0Gnw/jsGJsrm7SrexS9CD/89kus3TzPW5duUnV1jpc2efsXb5I/dIROt0GrUWPxV6+gnDnL+tIyz7z4AjcuXcENTnD+Vz9jo9Ti9MnjLM5dwvElGU8HuXp9jqIlePHrX8Dx0trrk6OnIGKzCNVCKlGEaOMVV1Dyp/Bq2yixLN7mRRAKCO1uDxD9MQcKiDv5jBKE2v8bgWyXkU4P8RhJsrGzxi9efRUtOUqv02Hz5hzX3lxDDSbJxGwuX77IwvIELz93mjdf/TkiPsq3nj/N4oU3eWt+jUxhgrDaYaPcZXI0wa2bS4zMTCO7LVZuXuHGrXnSY9Mk1BaLu20Up0itF+ev/dZ30NWvBk32l/4Pv9fS7gb1rsLocO5gLDu2hYeCioeLgvEJttEGJPlEvUcOY0dOona3ubrdYLZSY6vqMj3ho7mzxtxeCeG6JMePowu4dv02p59+hquXrjJ/e5Vut83ybomR6VliPpf5UpXidpF61yORSDB9aJKNjSWOnj7H3KU3qVsWL77062iqQigQZXZklvpmg6dnDjF3+RJzlRbJdAG70wVc9optXnj6KH/+R/+K6NA0zWoRWw1xdMzPn//ojznx7LeINLd488J14oVDnCyEYaeBqSkoCFQhcKTkRHKIc4ksOVzmauu0jCy7lQX+cGsDVSio4sl5Eva2llnbbXL02FHM93gsPKvD3l6JiDQIhwIEfP3uXtvdZHWngu4LMDM7g994fApLhUMn0H/5BiNHjrA69wYnzz7Ntbd+Rcs1yA4l2NnaptNq8dS3voGmwJW5mxw/+wxz1y6zsLCE3etxe34Ff1hFVTXyKT+/+tlfkJo4gaEKcrlhTNXk+txFRqdmmb/xDmt7XWYORbhw9Spnn32RCxcv4n0RB4yi9okPidAyKPk0niUQOIjWLurkr6G0SohACpE4BnYTFB0cC0QX2ZMooRhSKiA8hOZHdisII4S7/CNko9b/jcdsf128cAHTH+TahfOMJIO0qmWiQ5P4WyVurpU4+9w5ShvzXL54jbblsru8CM+fprK3x+TUCaqr17hWt3nmO19n5Z1fcvKpZ7l84XXUQIiFa7fxQkkS7TLvru7yl//GX2Xt2s9oMvGVIchuq8z1m0uMTh0mFQk+QJ/F3V26+Kk1IiSi/c/tdp25hRUkKsOT02RiH5/qBgLnT9jdG4wk+NoLL6C7LqPHTpKJBwim88xM5cmPzTIzlqUwPAzA9NQoVy9eRfeHaLUaaD4/+WwG0+tw+fJNOl2HZDKLTxMIzSAUCnN0eobL775FcmSCQyMFokETgFg6xfLCFYQRIRWJkMzkOXNqFl1XyeYSAKSzOcLREKePzaBrKqPZNMX1Ba7eLvHyr32f1tZtdjsKx2cmSMSjxBIRqusrNNsuKH03pgJUex1ulFf502IJTSj8dOsWF2pVVKHgSYn7hJKvi1srrO01iEV83Lh+g659lxpcq8uN63MEUzkyqTimcXeQaIZBt9XA8eRjtSLvYGLmCMlkjMOTU1x6500yU8c4MZXhzTcvoQejZLJZIn4DgJnJSa5fuojuD9FptnB1H+lUklgkQtDvZ2pmFrfbYWJqGgBfIEA8O8zs1DgIk5Mnn6GQCBMIFzh15DDXLp5H84W+mKtf6e1bfgJZX8WrboDTA6cOloVXugH08PbmEXoAnFbfDauA8CUR8VHQoohAAYEOigFOA4SG8IX2o/M9Hmdcsme3aHh+fvDDH5CLKNR7LrFogMUrFyh2BUemxoiGoiSTKRyrRdfxyGVS/X6owPkLbyFiBQ5NDBMORzk2Nc35d94iPzGNX/U4fOwYYVMlPzzBiYkkP/3xz3FFlI3VeVq296WfQrvNCjduLRFLJli9PUex3r6vv6zdnqMtfQwP5QgF724wqLoP1+rS7loY2idbBAspJf/ov/vH8sevvDYgtfdzpzRb/P4/+D3+zu/+Ns1W+yHucImmafj95kM/u0/Cz7WxXfAZD8+3sm0bXdcBieN4aJoK0sP1+u5DoWjcmdfvuBlty0I3jAd3SmwbRdPuC5rpdbuohoH2niClXreL29zj1QuLfPObL6FrKp7rIBUNVdx1+buOg1BU/i/zb/F/uPYqQU0/cIM40kMTCrbn9AO1hKDnufyLZ37IbxWmH/tzqVdKKIEIIZ9OuVQkEElg6n1LZO32LZqKyezk2AMrwXJxF9UIYLWbhBMZTOM9bdHrYVn2B+5jSikxTfNDc2PvfTaWbT80z862bTRd7z9Lx0G/J193ae4ScxtNvvNrL6K953I63S5+0wTPoetITEO/71xfNDhX/+3dPUnucZUi94U+7nWhavcH2kkJuKAEUQpPg1PE27rSJ1EEeE7/XzCL8d1/jDBC93t6W+1HEhMIBAL394t79pahLzKxvXiTuWqXb5w9zXuNPWf/+QDMvfEqndgUZw7nHhjPrfomP/7FFX7zt34D1eshhYauqfR6PXw+H45jo6g6X3axp16rQcvpizg06xVcxSQa8h94hJZ2q8zOzOA37h+HnUaNpiXRsUEPEosE7n8Ojkun03nfMS6EoNvtjCWTydUBST5hkvyyouXY3GyWDyatOwNccjdoR0qJrqgcCSfQlU9XNN62LFTD+FiuksdJkp+YOBwbVdO/GgEaTgevvvGAO21/2rrfAnwYn4l9svTsvpNM0e7tlCA9hC+CCOUe7M8flySfEDzXAaExqPH+/nAdG08o6B9Da/ujkORgT3KAj4WgpvNULPu5vb6HWdZfRGjaV0jhRfOjJKYGgwtQ1MHU/GFQNZ1PY+n9yOsU+YEZcV8ODISLBxhggAEG+MgkKQFdN/bDaCXeexL0bdvGdhy+yBzjeh6mPzDIOxpggAHeFwNNjK8ePtSmd1zJ1NQRwj6PZtcmmxtFd8q8+uYFPFVDIpg9egJT9phfXML2+gmvCAVVVfA8idjPUfK8/vuaqj5AtJ81QebHZ0iZNtduLCI+Tj1JKXEcd9CjvujeBCTeI9YFdT0PHGdQFeIrBNtxB8/7SwD3I/CP9qE2pNAI6gY3r50nO/sMx6ZH+PnPruEgUKXEU3RmZ6dZv3GR/Ogso4U05b1d4qksjWaVYDiGX1VwPZfi7g7hVIHm3jJXbi0hPie70p6EWDiC09jGg4/t5x64a788VPmID3w/4HLw3L8SvUJCp+cg5YAkv/AeAR5dzvPRii4DkXSO2UM5bt++yPL6NkLRDiYTKT16PZfCSIFypcjw2AyyW+HSepkzRzUabYVO0yaeSdDq9MhlM9yYX8Th86FMqKuCm9cuEo9G0FTlY015g1JZXx54j1gqS1XVwTP/kuBRS2UpT0CMYIDPYsXj7aszfWKSFCjYbFfL5DMpNpYX6HWaeELtb2ZKUPC4deMayytL+Bs2hydHuH71HVAUup06S8sWjqNgWx61tomm+7Ea9n7Rqs/PukLgUqqUUQcx1wMMMMAAAzyqJakoCsWtFfa29t2JQqDd2bMTAiFdbt26jar5aFS2eeOtzQM3qqoIlldriP6heHt9avQA/XGXx3oMRKkqgxXiAAMMMMAAH4EkoV/y6gNPsq8QIhR13x1xz2fqvYTb/18dtPsAAwwwwABfAAx8iwMM8Cng2uU3WJu/BJ7DH/z7f8c/+Sf/hFqtNmiYAQYYkOQAAzwcFatL3e4B4HleP3XoUSAlziMcW+x1aDn2Z3qPVy69wZuv/imryzdoN3bwpIXfUPl7f+/v8c1vvszPfvazh37vxpV3WNqusrN8i8u31h96zPLCIg+7O9fu8Pbrr3Jpbuk9n/RYWF7BBaTT5ubC4se+r0Zxl1bH+sjfq1X2qLddQLK5uf2J2tZpVrl86Sqtrovnebiu95Cu0td8dT1vMOAG+FgYhOZ9CmhW97ixtMO5M4dZun2brqNy6NAoywtLgMtOqcmJp54i7n8/CbK7FRPvF0yX7G5soITjd0vI3FN89MOKDa8vXmGtqfPs8WkURcVq1tiqdxnJp5ESVEVh/vp18pMzhMzH31X+zdp14oaf/2LkCHavx261gj8ZJ2XcXy7YdV0URUEIQcOxqFZrRBWNSCJ+3zHqe7YF/sfFCzyTyPPd7ARuz6LZ6xKNRD6VZ+55HtJzaVX3qFXWSOUOUSmusrp4g69//WXGxse4dvUK//O//bf4H/6f/4xf/0vfv+/7l975OZ1QhWh7nlr0OAGnxF5HZSIX4eb8IpnCCN1qDY9FtvYqHBrLcvPWIodPPU3Y2uUXr53nu785yo3L59lrdFAkJHMZapUSF999i/TwEAvXrrG+XeSF555GtorcmF8lWRhB6zUodzxiAY1mx8FrlFAiWehWMeJpNKfJ9SvzPP3yt/GJFhevzjF59ARxxeLClRsEk1nipmRlp0o6ncOQNlKoBCJhmuV1Lt2+wbHDo+zulPCsNsWmTT4dYW1ljcTQFJNDiUdq416ryd5eGdR5ipurOKrC6PQxZrNB/uJnrxMr5NldWyGSTCFcyfSR02QTgSfyvIWiogr2F28CTVNxHeejlYUW4nOTRnbnWhRFRXzERcaj3se9Gs8fBFXTkK6L9xm1zYAkPxWSLPGnf/LHqKagsrlJUFf59+++Q350lI3Fm4yfeA6/oeA09vij//QThg8doVvZpupoHMqFuLmwRjhRYGo4xoVL1xmeOYzRK7Kya9MtrRGeOsMPXzzDpbd+xfXFdTJj04wlVC5dWSAcjZPIpKlsrRHPDSEVk6dPTPLKT/6c28trFI4+zc3L7zC30WAopnNppcRvfvd5LrzxJvHCJHsL84Ty04Qeo3a77XnoigJC0O50cHoWCMFCs8p/Ks7zfz7xDWzPRVNUBFDcKxKNRTFNkz/cuEWv0eTlxBCXyx1eShTo2hblvSKFfOG+6HwJ6EJhrlFmp1LidDD5qT3zdrPMzauvkSkME4762dkrU9lYJ5QYZXz6LJFQCHVklG9+4yX+3v/mH/DSiy8RiYQOrjyeyrG3cI2KEmA4VOZX7yzRcwS3ryoYfsHq2ioRf4Sd8+cZPXacqxdf50c/e5uaHueHT89w9tgQr7/2Kj5Vxe718CkG87duEskmqLZqxJw8/lCYhZvXSQ/PkPI26VmC+Uuvo4QLRHw2t4suGoKwpuFV9ri5uExhpIpihojFIyiKYGNtiWtXLiHCOQJRm57tIWrrXLm4hhlM0WtUKdaq2I7k6Re/jSYEiUiQ5fmbSNVkaV0Q8tu8e2GRdtsmlhmn3ekR8Ps+tI3VUJiQH8qtDmOT0+jCxjKg2WxSqtdwpEqr65JQTCyries9mUlWURXqpS1qPZWxoTTSc1laXCJTGCPg0/tBi/uTvKIoB0Iqd14LRcFqN5i7vcKZp06Cd1eYRFVVhBC4rtsnH8/rL5kVBTxvPw6k//m9ZKMoSv8Y6eF57Au7uH2hjP3gSykl7r5HRlFVlDu/AziOh+nX2d1axRERcplY//qFOLgXsS8Y078/D9fzEELgeQ6q0q9k5MGDv6Uo6IbC1vIS5S4cmZ7Ak/2he+c+77SRrmtsLy+hJDIkA+ZnQpQDkvwU4LiCs889xc3zbyKDQ/zu957mzcv/hh/8jf+CE+NZfvrq26zmRjlktrFEkLFUgD94a42jRw+zubXJyOQs7b05/vzn1/n2d77L1Qtv07Ztzr30PYo3BcmpcQD2ShWmT59lY+4CP79RI5Ycwu/3M3/xLVrozC+s8MJf+qvI1g47dclLz5/myuIOm22dSnmHQHiMw8dmaRa3afU61JaWmBofw3zMuYD/t9vv8MP8NH5Nx2u3+MXGAjesJmeNKK70sKXk/3TjNf53R17gVqOM3+6R3o/6cqSHIgS3mhXeLtcY1/z8v1au8nvJqQfS11RFodto8vPSDpVelxejuU/vmXfqbG+usr6xy9bGbWxH0q5u0+u6qFqATC7DpctXmRlL8c/+5Sr/+c9+wu/+td86+P700afIDXVwVYNIJEKvtsNeR2EsE0U1dJr1OkIxOYLDVqlCMDfO97+fZnKygGN1cdUwT587TsAwEHgYQqfRKqKFogirRa1tM3LuWXAsIhEfTtljt1Tm+MlzaFaTUttldjjC9laJRDxMr+dx8mSAWDpDt7pLSRiE/QZuMMDskWMMpaNohsv0TBhF84jH0jS7CrlUkEqrh+JY5JIhbC2DsrNKYXKGiN9Pr1Wn1LRIpyTbOxV2S5uEQ/ojkaThD3Hq3LOYPt8D7vi/+jt/hfLWKrdWdpk9cpiQT8MwnoxYvJTgN3TefOc8mfz36G4vsrheZGJqisruNtVmj0wuT0BXaLZafflL6dJqdfD7+5at9FxqlTLbm1vYriCfyyCkQ3Fnl1bPIZPN4tkWhulHVQXddgvdDNCrFSnV2mRyBUyjr3CGlLRbDeq1Gqo/TNTUWN8rEUtnCQd84Dpsrq0jjCDZdBJFgVppl0rTIj80Qru4xFuXVjh97hSqoqIIhV63Q6tRp97qkMzkCPsNuu0mG8UyEkE4EicaCaJ4Dm+/9nMCqXGmD01gqC5rG2uoRpBcJoUQ0G5U2Gx0qBcr9PQg0rXZ2tzCFTrZTIpet4s/EEAg6XXbbCwvYhohMiE/njsgyS8lVE2jMDZDIh/l1bkyqj/C0ePHMZQucytrqLofn66AZpBNp0jn8syMZPAFQkTVFq+ff5eRsUm++cIsF99+k9z4IVSnTjgcQMQC3Lw6x2z2eRKpFPFomHYqT2F0hM3NGuNHZrCqW4SHpliau8ZIPoHwWSQDkitzG4TjMRqNBvFYnOFcmsXbC3Q0BQ+TdDKJrqgoivtYu8pWr81GaY92t01QUak5FtvdJqovhuO67O3tstqqY1kW/3ThPP+L2CT/n5VrPJ8dRZXgINGEAo7LdrHIRrdBz3P5J/Nv83dHjhMx++5aD4nlOAhPEtYMLlR2uV5d4W8PH/lY0oOP7GqV8Mf/v/8v5b0lNDOO3a6wW67gdHv0uh62/DECl57t8Pa7byM9h9feePMekhRMHjrynrOOvu/vzTzkvW9957sPeff9z1Fx83z9G8dIhPvVU8b33x/KDT94cDbDnVodmcIkmcLkwUepfWM4EUvffe/uS8xEgeeeL9xzshzjwNbSPBIfY9PTZB+oPv8+FpyiYvrUh/nx0DSVzMgEmZGJJz6+pedhxtJMDSe4fu0GXmOPk2eeZXfpBtdXSuTTEd54fYXnz53m8sWLnH7x6+jtBhcuXOH5l76GwENTVXZ3NoilsziNXfZqbU7P5ChXquDZXNzZxa/ZRLKzHB6J8M7lS6RzWdY3dsilY7zz7rs8++wz6IrA67X48Y9+xOSxkzTnr1Hq6syOZ3nn7VVefOl5bl14E8dM4DaXafSOkNEbXLy9TT4Z4p0LZSbzPlrtFuBSLe+A6WftxuvsWH6mh2K8/fY6zz59kisXLpLO57h6/jzTT79MMh7C8yS1ehMt7oDX5d133sWIpehVl9itTnJkKMAbb15idHyYxcWbZGfO0es0qTfbWK0yxUoNp1Fi/MQzpLQWb1+4QTAcxa9pn5mu1YAkPwXkxw6RB2CSyRP9977z8tcAOPvMC5xVdXRVAQJ865v9I7//Gz+k23PYmOty5twk505PowCHpg/fXwbqzAtM2DYCeOrp5wCYyPdLWFnHuii6wcgP/zIAz5w5cWeq4tvf/wG27aHr6n7tur7b5vDkIRRVxXVdNE3b3w98vIQS0Q1wHVQp8akapqoR1gw0VcUUCr1ej5juo1QqEVJ0/LrOUrPO0N4O0rbwaQa6quLXNAxNI2aYSAE3aiV2/Xu8rtg8G8/jFyo+RcOUGjpQdy1uNfZYNxJcV3p8L/tkJlApPZxuDb/isbp6GzwLRVXRVA1DV7G6bQJ+Eyk9NKVfVDhkfLa6v/FU7rMdIxPT5Ce+uGPctj2mjpzgf/oPf0Dw0DmGEwZ/8c4aR5/6JqMpHbfzKsurRTT14bGSruuSzA5z5swRuuUIr1/YQj0xSaGQp92usrq9xPDUGJs7W+QCXTAjlDZX0UI5spkU87fm2ak2GU1FcFyHSDLDmVNHWLzSQ2mrnDp5gtrPX6W4vc7KZpmzL8zSKbZYWrxNkSaB5BjZbIT519/BKRxjaGiU0VyKa7sLuI6L0ExOHj3NVC5CufRLSqUiXUdl4tAkte0tgmE/0gPFMEllskxMTuPWVmkpIV48cxy7UePnb19irmeQGT3GiaN5dK9HsesQisbJ9lxqJZflnQaT2Sjb27ug1zFjWcJanc+yesaXgyRdD2H3N8w/tkKBlKCpSO3TDfjVjfdzKymYPoNDp57j0H3HP1gnUdcf7kYyfB+0kSjQdXV/P0K7z+qFu7mv6hOwuP7rQ09honIWDwWBArwgPfyKyn+TyxNRdX4/kyaq6vy36SQhRefvZ3P4hIKzH8SkITgnJwgoGv/bXI6IqvPfp5JEVR2/3cHUNP7L8ZP4hIK7r66qoXBWTmAKlWNO98l5DhRBJhaganmkIwaONDA0nb1yi1qlRsTUSfgFrgumroIHsVjs3s5IpVTCQSWdvBuc5NgO2ntc355jU601CMcS6KpHvd7E9Gk0WxbxROxDh4Nr97BcgSItWpZHIhqh02pgSYWQqdHuOITDAWqVCnoghNNtoZsh8Gx8ZgDpOjiexGd8hepePtycRPGZDOcKqPl0X/YMcRCcoqgCV8r+NKODtq9nfTcEDwzNwLXBdl0Mn8HyjWuslTuM5yNY7R6J9Ai7229z5WaVoclj7NzcQVWg1bE5efZZkmGzHzBGX6zF88CVAuOO1KZQkLgoqo5j2ejBLE8/FePKO6+iCUm743Dm3LMEtfa+kHt/nrgzL+hS4rh9reJwNENIW+D1ty5SGJ1hNBHBcV10RRwELIk7e6eAEMrBnuMdMRpVUdFVyeV33qSjhAnrFt1eh8LILBvnr3BbSiaPnyWohEH1P7E95cdCkq57Txks0Y9GUlXtkQViH+aeQIjHU+Hb9XCTIXozmQOyu/OA3u//+5j0zktFoK+W0deqoD5e5R3bcTm/XMenKeRiJrmY7562kBRbHUyfj6Cu0rNc6q0uhukjHtDes7cp6douAZ+GJyWaIrAdl71Wj0wk0L9sKZGiTzyVehcjYGAIga4KkJLVvQ4jmc+2JFhMN/ft2QeRoD/ZJveJO7HfRY2HdFX//rF3jrnznSEt/L7nv/OdYf1JTuqCU889x+Y8DDc9Wq0O1UqdcrGFbbv48BjNRBgZGsLqeCSiAWaP3O9eLe7s0sLAatdwFT8aPda2KhTyKayOTSweQdM0vF6L67e3OHpco7q+SNU2iAd0Ks0WnjGNbJSodyFgKFRrNaTmY3RsjIDWD5xqFndZKPaYHo2xvLBN6NgsW2vLtHuSRr1GevQQ4ZBJs1FhZ2EVv19F00w6rToTs8cpr97A8ec4NJ7jq47+HCn6tXelysRIlqsX36Sej7G+1+P5l/Jcf2eFG1fm8GoblGo91H78zb6b3ruHMqHVbKKZQRyrQ7trofgMMmGFV28Uefr5GAF7gmsre7iJMI7rod7j8bkTxCOlPAh2cV0bfzDLaHaHWr1F2NSwUZmZnmJ+vYobDeBaDmY4Srcxx/zazgExSXlXxl/K/h5qt2cjDKjsbROOhEmE/SAEIZ/K3Nx1Th0ex9db4fzlObqVHYLJYWbzft44f5Wb2jg3b86RGT9Gs9kimMvQqexh2y7+cASfW2e9HeLFhJ/b15fwJXwE/Qau+zkkSdeT5IcmSYR9OPt5SLqqsr66RK1r7ROlxPX2VdWlxN2P4mJ/VXPHGvGk19/kDoZQ3B7Ndq9/3H2MJfupC4rySCQsHI/OmWFaL88gLAdXgqmo2NLrX5cEv6LSdh2Cmk7XdfD2f6N/foEiBFJX8d3YJv4v30I+ZpK8uVDCiIWYUl3+6PIOI0k/xXoP3aeRDhr0lA6VpsLLM1kuLO5S7ThIT6OQULm91eXE4TQp2eX8joXrWMQDQVzHIyQkXlClVK8TDsZ5fizCG3N7SCFwbQ8lKlB6KqZPo1xpU+q45EIhRjIBBnjCC4HcCW5ffZXMUA57vcRwIosZSiI8MHSIxLP8LzUf6UyWX5vN8mvf+MZ94yCRSmNYLuXKFq1usd9fpcfyrVs0HUGuFiSSG2c4HiCo9KhWa6hSpVWv4tkRDJ8GuOzsblNve6D4SMQMnE6Par2LJdoII0gklSHYLtLrNFENFdvu4HkKSAfpSIq7e6QSIVqtJoGQD8V1UBSDXDpBo7TN+uYekXxk8MAB23aZOHEG4fPTsVyGDx3HF9yg0uzxzPMvEDQNTp59ho2NTdThWSaPRPoRn1Kim0FOnTyG57oY/jRHDycIBwzW19dAM/n2d8bRpEtu4gTfzToI1yUxdIjjeoBSrYk/FENR+q5+xQhw6tRJXMslP3qIjBR0ei5Hj5/EDPiJnz7L+voGtgeaUIiPzKAam5TrLYLhOIY/ytmnTlHt2BRGD6OoJl7qOLrpx7JdTp45w/baPEZighNHRthbu8XFi3N8++VzOI7L9PEzrG9sYWPw9HPPsbq2TmR0huFCDkWBs6dV9ioNTj/7MpFwGOENsb65TXT4MOOz/QW8PxhiNDuGIiXReALV1JGfUarrh5bKkmhkYkk2lq9ScySe4zAycoxUOEylvYeiKLiKwcsvf435S29Q7EA2GqBWqWEEQvg0yc7uLoWJowScCi01xnghxsr8HKoRAtfG8VyEoiJdG03zYfh0eu0WrW7v0axNRSB6Dt22zV8fP4Xh1lH1JNOGoOxKtls79LQwmmejSI9Nx+FkwOT1dg+lXeKdZh3D1w9ZfhImlt/UKTYsiobg7GiUymaVnY7gaEDBkpDwqSxtOWiaJOHXkEJhOu7j4vIelhIgaCj4pIHdaRAM6XQtl5AqWN5qcvRkmnoFGl0XIT06DgjbQio6R2I6r811ODXq42bdJpUJkg19cd1i1Z1NqpbG2EiGjaWbFDuCbFhnvdjiqdPHqO+usbDVoJAIsFFqcvrMCTZv38KfGyET8rO1uohFgHp5k3B2jPH8k0sJCcXymIlT/PSnf4hnL5KI2Ki+GXyho3Qdm6QGesxPzHSZ/Tv/a0LR+P37tvEYEaGQCBu4woeGRdeSqELiuA7bO0Vy6SSa6DEyNY0Z8KMkU4TzHQJ+k0azQyoUohoIEs3lSEcjqBpI1wNFw9DDB16d8ZE03XadbCaAFCr54WF6UmFqRtDuOmhCEo6n8QfC4PTQ/BH8qkQqKslUCncgNHlgbQUjsX7ahZQ4riSVGyGj9N2MjuOhGQEOTc8g5b6Axr4ZKRSNSCSC53koqo9IWOBJydjkVL8cm7efYmEESJr0hRM8l1g6TzIrkF5fYEO+51xmINjXy/Y8wpFoP4VE6IxNHEIIcB0X23FJZIZI5TgQZYil8sTFfr6vlAgzgty/r3AkTM2n09qpUK2GKZVbJDPDfS+WlCi6yeTUFK7Tv57+/fbTWlwPIokM8VQWz5P7968ztd8m0vNYvn2LtZLNC8eG6Nku8XQWPO/zmycppURRdeKJOHRskBAJ+2m375rwqfwhCrkM3eIIOV8av+mieBqGT6XreER9F1kuV3n+5GFcx6ZhdZmcOUEkGsXpWPS6XYLxKL1WHcc1iEQNLr3zFo1259H2xPbbThWSrW6HF+IpknqYW6U1xmPDNK0yh0JB/unNy/zNsVM8FfKT1XWUQIvbW80HzvO4cWgsjrrbQqgaE2GNyVyQybaNZujYlo2jBfjrz/QfxaFclITlkgsbfCcVpNi0iQV1VEfh7HSGoK7geh4t2+PpmTjr1S7PHB1CdcFxPaQHR6dTpAMaQoVfPx2i1HL4/lNZOhIipvrFLPQjXV772Z+xp4/xt0Z+jUQywdyrb7Du+jB1haWtDJWVJZo9eOtWFSUeIXb7Bq/97FWe/Z2/SVQW+bOf/oRjT/06NPbYbulPlCQF8Nw3f4dut85/+He/T2hjC8dXYXi0jdOO8K9/+S6jE4f4+//wf0/+xDPvu8+sR+8k1gcJ3euWTqZRVQXwk0rdFV8IBPuvzf3UgqnpYx844oWi4DMMfEaK6D3v34kvNfedDqHQnU/D959OG8T+3bdH/J7yS67r3OcilNLDtr2HTmJ3i33ffe3YznvmY+++83mu+5CKT3e/fyevkn2ivOMvdRznA6/TdZ0HeOAOrJ5DfuwYun+TWrNDenSWfDZ9kNsppcS+57rt99zDg9csD9pEIJFC58y5pwkaAteVSPezDWr7cJJ0bfAH+f4Lv0MiHqfXqlOtFvmf/vha/4bRmRgbZnnhFv5EgaiiUe/V0VT1jvALmq5TK27i+V/AX5tnuQXpsI7AZWNjmUhukpDdJprMcuXtN2H2OEOZBMvbe49EklJVkJqK0DVqXpfVrsL56hY/31nnBaEQ8LpcqxT5ZmGY+W6ZtV6HubbN8USGWCRBulOnpID+BIN2xjP3h7XnDhRs3vMIfOo905DKiG/f8jMUxgMPWoGH7jmvlJKvH08R8N29D5+mEgl8CYIqhEoul2djvYHnwc3LF7CNCHGfpFRq4/Pp+HSV7VKdkcNH6RQXuHFznXg8wsbSbVS/SjQaoVLdZTgSplKznvwlC8E3f/3vMjH7HNcv/DGd7m0Ux0bRZjnztd/g8KkXKeSHPta5VXWgKDnAZwfX80hlh8nkObBiH8taGMHQ6ETfcnY/H1KCQkrJP/rv/rH88SuvfYA16aH6wjz39NNUt25x9fbaQVqAFArRcJBysYgvmOb5Z5+jvHOdlS2bZ84d5+a182zvlXE8STAcRTg9bKGieg7+UAxpt+m4oHkuqq7TsxzisQj1aplW1/pQd6uwXbonhmi9dAjhejiehy09BAKfqmK5Doi+8gT7ckkSgSbA8fqybT5FBV3FvLZJ8Be3H4hwbTRb/P4/+D3+zu/+Ns1W+6HWtqZp+P3mYPQ8QfQ6bTzFwO/T2FxfxUInHvbRaFkMF3JY7Qa7lRbRkI9yvc3YyBDStqi2m/h8EQI+qNdbVKpVkpk8Ib/x8N/p9bAs+wP7npQS0zQ/ctFlKT2EGBDc5w2tVvvRJOFUg0HR5S+Db9wDz/7ABW632xlLJpOrjzTChVBwew1+9tMfoaja3XqSgJAelUoVzfBhdaucP/8anVYNTxi8/fbrVGs1VE1HUQStRhVQ9k1qQau9BYpyNwxaShRFsL7ROJBJ+tB71VV817fwzW1/8obz5KeeAjLAo8PnvxtwVBi+mxgf3fcEGoEww4G+HR7e3+MTukE8elcLNBKNEolGP7tV6YAgv5wQAsNQka7EdlxUpb8tcq8M3Xsn4Ttz3nvPo8CH7r8pqoqQfU3VO68lAiHkh1pgqqoh6O8HPux3FEXc4/r96P1bPhBhI1DE3XsSSn8P9ZN4aB7advQl7+T+3ujjgvZRbt73Pnl3d1yiqqrQbNYQQkXgUG/YaJp+zw2oB40mAN5nP0P7qESliMeTbDooujzAAAN8DIJUPJt333iTaH6G8XyEar1FJByiXq8TjsXQBbgeKCrgQa/XxZOCQMCH590tRNDrdLBQCAV82LaLEAqaKvrZA0pfu9WTkma1jI1BKh6mvLeNNMLodGnbCtl0nP1ssIMavv2gGYkmBMXtdSxhkIjHCZg6nrw7hUrPpdO18fv3r0vpp+odfL6foaCqCp7r7WuzKv1zIGl1OvgDAfAkqiLwJEjPpm25BEwf0vPodroEQkGE7KfHaftFh4UAx3EQioYq+spV/Yjd/v+25aBoGo5l4XiCYFDHc/cLOSgCPI9Go4mi6fgMg8cVZPLYd93vJULl0yQdMSC4AQYY4NOHrqssXnmDW8sbiJUS8W89x89e+SXPPfcMFy5f5djRaSrlFulkkL2dOp7dQ5gxIkEfzVaReDxPp76LbcY4NBRneXmNniU5ND2L6Na4tbZNIZthZ2udWH6SoZjCa6//iskjT2M1d1jd3sbuAoqBqkKnnqTedYgFdfb2iiB1Rg9NkU2F2VqaY2GnxWg+za9+8QrDk9NEdYfNSptsKky12KDZlgyNFwj7VRzbw+m22atUMCMxwv4whiop7m1jhJNkggqXV7bJJBPU2zXKe1tokSyHMkmW1jfJ57Jsrd6miY/TRw8jmzW29mpopoKlRJgdjvH6GzfJDWeoVevMHDlKY+82uw2XZFhla7dNJh1ma6fCsZPH6e2ucPHSTZJDk6h2Hdd28fQIMb9LV/qQVo+e8HHq2KG+ktjnkSQHGGCAfskkKQe7V58XSCTqI27hfFS4HiRTedbm/4zCsV8jYKoYiuDSpWuEYiaXz7+DEUyyuryD5ssS8AdI+QWrq9vEkiHWlhYoV3cYPfYs0KPaqNGrduiMTlBZ28S1HC5dvEg6M0Rxp0xC86MJjd3dDULjSVQjhNsu0/ICDPl6zF2/StNSSGeG0ZQmrqdR2tkinwnRaNcIJYfJJEJsRJK0SjtcXVokmEhQqRU5On2cWz//KYFUimwsyOsX3sXuCaKpFMXb11ECWYJKj51mh+dfnMJr7lLa2aG0U+HQ8RkC3QZCtXnrzVfp4qfTqBAORWjvbrG8ZCKbNTwk8zc2yU8ewy7EANgp7SJtm/XNIlHForizyertIsKXYm1tDqlEmJq1Wd3YxB8NsTJ/GctVSKeShE2DxY1F2o5BMlFAD2n9dJnH9HwHJDnAAE9kVpb9/LYBS35eWPK+WquPE57jEsuPc/rUacZOnkTXDI6fOIXl2ITjETqpLD3PIOQbodFViRqSagcmDo0RjYbY0T2qjRrdWh1tbIJCfpiaXgJVpTCUpb6yxeFjJwiZQWzXJRAPMzJUwPGH0dQgYbWKLBwiL1o0en4mJ/x0PIN4PI2uZ0AoOK0ue+UGExPHuXrtOgtunLGJcRTpEI2EsRUfYZ9HsVji7HMvIFWJ6g8BCkdOnaK8vUxi5jhes0Sta3L0yBghU8ex/SRSCcKRKM1qkVRmBL/fIBGMUGtYpJMR1tfWmTl6ila1iB7PkolHCSaSGOE0/kCAZDwIhk693iSfTeA0HGLRFGMjw/QcjYh/nFLDJhTwk0unWdkoc/LMWRq1Gulkgr2dPaLZEYZCUYJmCFfYlEs1UqnIJ9r7PHBSPkp061cdg+jWrxaeZHTrAJ9PfPLoVoGqqkjp4nkc7LPJ/X09uU/Q9wbY9L8maFf2uHFrmXA6y/T4KNDfo/RcF4SCqvYDXfo1HMF1JZquguzXcVQekg4k9oUAkHf1rPu6rgJdu1tSS3I32IWD6xIIAfXyLhvFFtPTE2iify99OdF70j72a1PeWRj214b7imtIPNnXMr63ae/sIcr9GpR3cm37e5LuflsqB8ciBIK+GIGqagf7lP17kiiqONiDvfMM74ggvP8AfszRrQMMMMAAA3ywqXpvAv59yfofku7niyQ592x6n3jes4+2T7rvxb0iA57jfaTrfK+YwcOibwECkSSH4xkcx8H+AI/Je4UJ3ntO72EplPe89+D3Jc773NN7RQ/6v/Vkn+yAJB+n28XzBo3wZZjuPsOyPAN8Bfub52F/DucO+T4E+FXDgCQfA4QQuK5Lu90ZNMaX6JkOMMAAA3wkkpRSfqknjy/7/Q3w2aDTbVAqrdG120jPRUXgM6NkMxNomjFooAEG+KKT5J2aZD5dx3EcpBD3bV33RXc9FOWuXqvnuiia9r5huHdU7RVF/XTzKd8HrucRCASxuh0GzrYBHhfWNm6wtn6V3Z0dGutruLZHcGiYQiHFxvo1Dh16hmRy+IHv3bj8NmZmCn93l51egFOzI/d9vrgwx9DYYXwaNCt7rBW7HJnuH1PeW8USUXKpJ6gsZLXZrnXIpZOfafs6VpubNxcJRhJEIjES8b4q00EN2XuCXQZ6twM8EZKUUoKi8szTz6PLLutrt1ndrBzIyUnpoep+CoUE9UqRZsdG0VTyQwX21lfoSQ2ki9yXJnI9iaaq+PxBEtEIjVqZequDJ+WBigP7JCzh7nc07YnkON0hyPz4DCnT5tqNRYQ6KP0zwCfH6vo1bt1+E7vrEqxXeO7UKJbj8Mu3F1iotxifHuLK1Z9w8sS3SSTuFzq/9O4v6YQqRNrzNGNniMoqmy3BcMLP+t4eW2sL7BY7jE1PoVa3uXBlD8OrsV1z8Kt7nL+0w/MvvYjfa7K802BqYoT1tVWGJg5R2lhCC2eJGBYLy9tMHz/DaCbA9avXcPUIhWSIlbUtMrk05WKFsC7ZbThk436qXUkhE2H+yhW81DjZeIBrV29iSw2hqowOp1laWiaZzdGo1IjHIxQrNSZHR1hdWiSWGaJV3qIjgoQNj1rH5dTxwzTKm9xeK1HIp9ne2CAQyzN7aOhDc92EouH3qWyvL3OxWObwU+eYTQf48SuvE8/n2FlbIZpMIzzJ9JHTZBODWqoDPGaSdByPU089S9QH62WXM6efJpPY5Pr1a7QBic6z555F9pqY4+M0OxLT10WPpJnMprhxewkzmiGkO1Q7DvlkjBvXrpKfPsapkQStWp2LNxbJpiNs7ZTIFgqIbotGD0ImVFs26XiIpcUFGj37iRClJyEWiuA0t/FgUB1vgE+MdqvKyvJFXBQ6a4v8zrdmIZaBYIC/NVPgn/0//iOt4SymIZiff5OzZ394j+tVEk9l2Vu4TkX4mUy2+Pkr77JYcZgtpEjPHMNwG/zJn/2M//rwEUwzAFaFV9/aoGt7BMIm0bDGu++8ioqCqnps7KxTWl8lurSCa1loyjxCV0ColDo+Rr53lJ1ik5CvwSvzbWbGslyfv4XhCVy/D5/q49LFK5jxNMXiDolwgp6q0KuVKbVaqBoYps6rv7pOx9JwUWnXKnQ8m0apjNtosLi2QrBYwms3SWSHub2yQCBZ4JhrM7+8jKYFeeO1NxiZnKBe36TjDRH4EOPP7rSYX94kPzLOiVwBdI9mq0m5XutfQ88jqZpYdhP3MeTMDYLzvviQgJCSR/UrfGjRZRQDzXG5PrfCoSOHuXblKrqZRNcUpO2g+0LE/Rp/+rNf8ezXv08sbrCzvU1QCyGk4MSpZwmHDTr1GmNmiNb2Eq2ehapp4HZYWFknnsowOztOJl5BCal0G1EOpfplueL1HvFUhJ2NFeodC9THT5K6Krh5/SLxSBhNVQbu1gE+MbZ3bmPZXSxPQZMW6wtbhIJlVjfb5NIm+UwU23YI+v20WmUqpXXS2cmD708ffYrcUAdPMwmYOpVEgCnNJB7wk5+YpJY1GZ+x6LbbbNy8iS9W4Klhk62qw9hIAl1oNFt1pOIjEtTZq9Rp5rIk8yM0dtdRw+l+nVLdoNsTOK5LvVomNnOYFydCrK1tcXj2CNXtTYLRBG6vw9ETJ3A1k0RAYXF1k0ImhRbQmZ2ZRij93LdCKke52CCdz1DSJVowjB+BUA3GpgwMQ7Cx2sNVBCfOnMYTJoZuMDEywsJaidPnzhGPhHHcHvojDHVfMMrLX38RRdPRNfVg3vprf+WvUNpc5dbqHrNHDxMyNAzjk5WMEwJMQxnELXwJ4LkeluU80rP8UEtSwaVYKzM0Mc7e+jzXl3d45lS+z8ZCwepWWd6p8p3vfo9uo8j1my3GR9J0mhXKO3vEox6tbl82yVLr1Ne2cKXA6baYu77CjaUG3/7mDPVqlXarRyaZZG99uR8SbdXZKDbwx8KYfh2v+qSsPIHApVStoCqDfYsBPjlqrQr2vkJzLh3hX/9f/5gf/M7zbN9axzo8zktPT3Nlt0fL8yM8j2arQvqe/jh56Mj9J5yZvu/P+OTRu0ThnmAmmSXsNzj8PtczfO+25/TkgxZZr8HZZ19gOJ8CIJcrADCazT70fJn83T3SnP+ectBxGN73HOcz6Qe+16uXcDuScDbHzOhdF3MqO0oqO/rRR66i4DPNB8azqqpkRibIjEw81udq6Pqgc38J4AoX6xFLymofRh6qCqsrN9kobnN4cpxTR0NY3Sodp1+zUVMk16++w5JpYvW6uBKKu+t4roOUsLa1DULFp2tYdj8l1W/6WJu70n+tS1577RU8x+HQ4VP46x1Cps6bb/4KzTTxPI+9nQ0s20V/ohvvAnVQBWSAxwTLsWlYNi3LYiaX4u///t9ge7dFYTJHPJ/BbVXxRX1UbadfB/VjiDHficbOD4+8j2tQPhAU934R3LovzHA+/MTbxRdJcvaZ5Bf2uQ4i4L8c+Cip0I8U3arpBvTaXLt6BbFfuFg9iFztk0uv1+tLKAlwbJs70kb9+nkePevhBZSFEEjPRSiCxfkrrC/r2FYPqShYlnU3gOdzTGACcDyPrmUNet+XYPD4dB1DVz9R9TVXQs9xsVFpLCyx06uyeKVELBdno/0KkUKK1pGvoasKrhTI94yNH//pv8E/+iyR5m1W7Rw//MbJ91Ig1y5dZerESQzh3lN9B3q1Xf79H/8Zkyee5vnTd21L6ba4dGOZQi6Drticv7rAN77+tYNJwHUd2o0GtqoSMAOYA8m9AQb4CHmSQhxo7D38Y/HQ13do5IMWX/ceb1kWCOW+qLbP+7pNAqqiEDD9gx71RSdJ5IEO5CeB3x/DdSWOkLy5Wufs5k2OPnOKUDbO7Z+vc2W1g/+kD9128BAEA7H7vt+sV1h89x181i56VuWVH/8nil2N8XSQufkFssMThDWNt375cxqOYHoowk9feZPnv/fbHEmpeJ6HpsCf/6c/YbvSREWQHR5G1xzefuOXjB0+xsatq/yL9R1+8Ju/iVZb4/LiHoVkmKXdVWKxPJ3yFj0lzbdfPjcIZvuM55dHWagP8FmT5KdllX0BXRkDgfMvFyyrR69nf6K+OD40w4WbF9EEWIECP7p1iVzrForPR31pF/9kkPFOD+laREJxMunR+6zEaCpL8fY2LT3GiGaxVazQtgWL7Tr54RzlvTXaWohqrUZ6Ypy5W9fZ3N1mY6/I0cIYqajOO++8TTKRJuwPY6omuyu3CGRzxJJRpOuQHJ7A7rRZ364zHTOxOg02dxyCsTim5rFd75Ab9bG6usbQ6AgD2YNPH51uF9f13mOEvHcRJ0EoBAfzz1eDJAcY4LNf9Hzyc8QjKb5x8iVkfQ2ZHea1axf5kz94lXJH8D/7RgZTl0xEkjStLiNTz6Lr905wCuee+xZnznkgFDTDh9upUbcU0tEAjpQ4to0QGroKO8UywfBhzpz9BrFUCkWVTB17hueyeVT61RAUFGznNIruQ3g2jXaXcDgMnothhlHdNkePHSccCaMKSbtnMVoYwXYVdF0dWJKfYV/U1H5ErapqKEJi2Q6ariOE3K+aAY47SE0ZkOQAA3zBcGjyJJ1KjNdf/QWtSJT/6jfGMYVHZCTFv93UOCl8nDv7NRQz8cB3I5HY/W8E/cTe53cmw5EH3puennrIkXejUKMPnCzMcOBu4E4oNHh+nycIAc16mbmLF1jcLRNJDHPuqWPEI8HHs6obYECSAwzwWcAfH2Xq5NeJRDIUQjaiW6KtxPihFWJs9mkUMzxopAE+jCIxDIX/+Cf/kj/9+Q38fh9Wp8P5+a/zD/+rv43W6w2aaECSX2w8SkH0eqNBJBym12qCEcR3Xya1pF5vEoqE+TxncbpOl54FgcBgb+RejI6NMjp2fw7goQ/pMEsL8/QwmJoYRVUVBJLiXoVwPI5Pu9s37G6TpdUtssNj+EWHvUqXeEhjbavCxPQkhhD00zUFruchYL8gbh+dapFKTxDSHbarPQ6Nj1DeXaNhq8SDGj1HI5eOsba6guIL43br+EIJ3F6LVG4Iu1GmKw2S8QHZP2k4Vg9P+Dhy/DC3L12ka9mP9fyVcpV4IjZo6AFJforwbP70T/6Elis488xLjCZ81NoemUSY3Z0d/JEUYRNWFud49dIif/Ov/jaL599g0Y7zwtNHiYd9bG/vEo+F+Ysfv8LL3/8+rfI2iVSqH83muQhVx3EsQqEw0u6wtlkkm89R3dshEM/gV132ShUMn4ll2aTTKRrVEj1XoEoHIxgnFlLZ2imTTKfpNirUWxbJWIg33nyHo+fOofXaoAdIxsL02k1KtRapVJJOo0q9bTM0nKddLfHu+VdRQtN87ekZXv35L8hMHGM0n8DudTAMH47nYbVbCF+IWMjHzvYukViYd994g9Ej5whrPWx0MsnYY51YLA8Cpu8LZDgIdM2g5yoszF+n5+ko0qZa7xCPmNSrXTK5BD5/gFwmgYZLtVIBE+p7e3TbIWzHotRo0Ntbp9qWqEg6nSau4mNq9ghBxQHNQHqSrd0qx6Yy2FtVPNumXm3i9GzevbLD0PQs2XSCgGmwtrZGOBzE7u5hW218ZoithRsYiYkBSX4KC+1kpsBwvku70SaWzlPIpREf4GqVdpX/9z//A779V/4mt3/5H+mlTvPyqSHqHY9sOs7u9jaBaJTrF94ikBmhtlti9ugs3WadWCqL6nYolutEkykiX+GF74Akn2THdhzqXYtQLMja0k2uv7FOse7w3ItfZ+f2eXZsH4W4SqXaomd7+2HcklpxnVdf2cH0CVbXNsgPT2H6fbz1q1dwHBvbttDMIL3qLiIQJxiM8L1fe4mf//jP8KLDbG8ssV2qo+l+TOGyU63S6fUIhf0MJTJsbW1iOS6KEcQX9BM3PRYWNhmeOk69uAqqRjiRpFwsEVu5xRu/Os9L3/oByViY2u4GP/nZG2RmJqluroOqk13O0ywXabXq5MIC8NhY2cLVAizdvMzW9ib5oVHajQqdZhPhj5GP+5lfWSWfytOpNwnGVvnRm7/izIvf+kgkKT2bZscmHHyYcLXDrZtzxLJjGLqOti9GUSnuIjUfTq9LJJHC1D9/YSnBUBjFlTSrDTzPRUqPoKnRrNRxNIN6pUw6msHt1dkuVZiMJ/CZYRIJGxRBpWYRNg32GnV6jo9gKMZINonbcfEcD0/3EFLij8RIdSTFnQ26rkuz3UQRAkvRGRrK0azX2SvvsbGxTjiRwW7X8YVz5BJhLKuN7aloDy09P8BjnEmwLI+Xv/83+Mb35YGggQCkZb1viojnOZT3NnnjtV+xe3uTpEzwh3/4OnVLZzgVZmV9nfTQEOWNDY48F6Gys8nq8jy1WotUfghTtrixuM23fuuv89TUgCQfYSXTL4elqhqPGhkv95dAUn6+xQDuLNVcz0N9nBVAhMBuN9nqeTx9rMBKpcWRU6eprd1kr+nhUmOnonN4coLG9dt995llk84OIStLrKzWSA6NMz6a49b1GzQtl5MnjrCwtIjbLlHpaNh7t5l97i/13XGVNs8+M83yu6+SGhqlsbpETRoce/oEqzdXGJ+Ms3xpmfTQEUy3gpIcZ2/5PCubdTIjk4zmYtxy2pw4NMSFW0sEI2Hy+RGmR5aZv32bE9N5Ll68hmL4KVWLJDPDzA5HeO2da4TCBcZHfDQtG4RBKBji0MwUf/7v/hXBoTFuXpvn6NFhqg2b0zMTrMxdJJIcZmp6nKXr8yTyOY5PjXBz/janj0/xKOJfnmuzOH+DnWqH6dmjZN5jzTTLJdpdC7VWIR4Lc0faU7gWV65eI5jIczKV/lx2x3gqSRzwUjEQGopwcTxQhcDtdVjbLpFLhlFlgKfPngMBqqqRHenrzyWzOTRNITc8QSiWJvABC4GxoQyukyArPYRQiUVjeAhUBVzXAyTxSByhKCiAUNWDvLxMvjDgsCc6LckDEpSinw95Jx1E7n/+fnAdh9z4GJvLt4hms5iqpGJZBCIJDAMsBzKpHEavhdWz6PW62J7GmTNPsbezjtNpInwhcsmvdhTXI9eTNPwhEuEgtVqZTu9eYVi5v+cmDh7YgSqPqqFoKoYqaDbbB8o53j1q/Iqi4HnevjJPv26lIsTB/1LK/uB8ovmTEqkaFHIJ9na28R5Xaq5QePrFb5LPhNnebfCNrz/LbsNlaOYQcmWTYDJDLuHjxtUFZo8cQwBD07Ps3FokPXOOZ78e5PK1efyhGEeOnyQS8XPtylVOn3uRQK9E2TWRjV1i48OA4GsvneXK5cscO/kUC3PXGTr2FHGfRAmZmFM60ZgP34kwRjCJ4kZQ/BGi/pOcCflYmF8lEI9yzO8jFg5y6qiJXSuytr5DND1EPlEABONTk5iVDqmhNKaqEwloPPPC17Aru6zvwezR/qQ5NTNEtdLgua99g0g2x9bwJsdPHuP6xfMINcg3f+37XLk+hxlOMX2kx/baBmYkxbF84pH3XbfXlrH1KCePDrOwtEjAf4yQ2e/SjfIuc7dXGJ6aJReP3Jdn1rVsItE4SAfHkeif4/wGRb0zRNUDktf8QSYmgvt9TEU3HrwBbf/gTDr3SL+jatp9aR53Xt9ZNA6qx31GE7Sm7i9U9g2Oj/Bd3Uzyg1//LaQnUVQFRfGhyg57tS5DQxlOntrEF05gnpql2OgROjYDnsTn89EZjvCjH/+SiM9lcX2LQnzqK/sMhJSSf/Tf/WP541dee/8Vu+MQyI7y/a+f45d/8SN2qj00tS8n50vmmc0EWNipM51No+k6ly+eJ3n4DIdTPhaLHQphybtXFwj5TertHrFoP5lZUSTFcpVoNI7VbSE1HxHToNHpcXh2hoX5m6i6j267QbtrPTGhAdv1OHbmGURjneu3Nx6wJhvNFr//D36Pv/O7v02z1X7oImIgJvDpw7EtFN1AoS+FKFRtX39XsrmyjBJOkEs8WHi41+32cw+tHqrhe0Czt9frYVkfLCYgpcQ0TfSBdNuXAq1W+wOtsn3HEIFA4HMpeNLtWZi+xyv3sLu1QddTyOdz6F8yXWvHcel0Ou/7LIUQdLudsWQyufpII9yTEDJ05m8vEvCHkeU2qBpIiWr4iQRNpGgSi0bRNQ0hPcxQBFPv0ux2EIk0Lzz/NUzNo95x8fsUfKqPZreN5VjEYwla9RrC8KG5Fp22RzgSoJqb4MTMEG++/iua7R6q+mQelCKgtlci6vMx0Dj/Aq2ydeOe1/c6aAWFsfev/nCnaoRqDhY1AwzwfsjkhwaNAB/u2fJch2BqiN/6wQ/45nMv8Rvf/zbJkN4vYCoEVrOJFspwcnqKRrOOuz9J9UXQDUxD71cLURVq1Qpd22Fz8xZ7u7usbZcJhgPg2hSrdXq9JstrK3iOS7PTxWpVafYUCskE3hMMDlAVhc31BW6vrt8nFD3AAAMM8CRQKu7RsfpzWqNaYrdcAzw2NzbpOQNxgM/VYvzDDpCA6fexsngTPA+Bg+n3IdtthKpiN4qcv3SNWEBnc2eXQCCIrels3bqKE4/QabW4uLmCJwyiQR+NdhfPs1GVGq4H2+vz+ANRpGexsurgOS5bOyU0nx9TU7l2+R1qtcoHiqs/FqJUFVzPQQykggd4DJADFZTPHT4vbtKluQtcX65y7txxVne32C61ME2NxZsWjqOwWW5x7sQ0e5srbFV6ZDMhNlc3kYoCaoCjx2YwH7FsoNVtsLVbJZ3NE/A9OIcuzs8Rzo6QjgQfb//3XKSU7BVLZLLZD59VPYuN7QZDhc9fGbUPZR5V1ahsLPGny7fu9DQM3TgIp1cUQa28S6UkUVWVar2Gqij0WnWWG1UUIfaDcro0G95+IrMAune6Lq32Nv1KIeJAvVe2WgeTjaKqTzhw586VfLLfGEyMAxxMTrYz6A+fM+iahqp+9nIc61tVkskQi8vbjGQ0TDfNaLjLj17d4Ld/+DJXLl9Feocolcss3FpmsxIiFcxSrZaJ+rtsVppMpiIf+jt2u8Lrb10kOzROt13j5pVFIoVR/G6Djd0miViAt89f5blnQ6wvL1LIZ9jb3CGVT7G3vUsqM0KztkO94zE1Oc7K0gKpXIFqcRsjlmZqKEdpd42FlT3GZsaprq/SdE1OHp9l88ZFbu7U8dHj2kKGE8emaO6t0ZVBZqfGKW4ts12xGBnKsrm6TDCWZGengd2t0HQVEgGFvXKXqZlpgr7P1rv3SOaZoqqYHxDepqjqgd9W3SczoSjoinIfBSnv+ft9L+MLVglEAJ7n0XvMChgDfDbwXO8Td0GfMahgP8DDMTU2zMLGDmbUoGuFobXDXANeemaK82+dJz06jZQuO9u7+KNxUokYmVQWv88gYigo2qMRfbdaxgskOTw9we2rbyFCCUqrcxSbMJFKsLS5zaGZaZZvXaNkeVR2tvAl84iVea6uVyiUG6AbJCMKP/nJz5k5+TSiuc3Fq3Ok8y0mCmmu3bjN8NgYF998g2CkgOnssVYfxWf4SaZ0ZLeN6fPx9muv0Oo5BANxxsfH6LZaNNo25XKVrc1lerU2ccXjzXf3iMSiNBNhPLevEgVfAJIc4EMsSPr7mo87umyAzwa9Xg/XdRkUoB/gSSA/OU1iaAyfz8CTcGhyBMcDXVMZG+th+PrqUF/75rdwpUC/k/uTyX6k3wlmCkSXL/DW+cukYwlamzvokSgjsSDpSIi28AiFouSCBu5ujbFsHAIx4nqYrYZkeGwcx3GIBDxGhkxqxVVCmQSFTIZUoYAqFHLpJGtrW2SGhwkH0hg9A6EIYokIt2+ukIynyccidOnSazbxR/L4dUEoHMHZWmBtrY4lDRLREBHNDwL0UJyRZIhrc7dod2wi/s92wTkgyQEGGGCATxm+/QW1Iujnuu4bh3cIEvo5sp/EOaxofp564Xna7Q7+QIDh4RFUw3dwzlQhf3BsZrSLes822jdeyiOFhrGfRJwfAtvqITSD0ZERbA9AMHP0JKO9HubBdd855zAvPp1F0TQUIUjmc0jPpWf3g5XCySzPPZfHZ2hYlo1xx/MiJ+laNqoQvJQu4DM+e4oakOQAAwwwwKcA23PRFPVTDg0UBAJ9yUbdeH/9Yt970qEeduzBe4rOvZ+avoef9/60LBCKirm/v6jfk75l3Ls1IZT3Pd9nBWXQdQcY4MlCSnCdNt3aOrXSKhIHGAT1fJXgejavb8/zp1sreJ7Dz9YWWe606DodFpo1Oo5N17PpOj02mjU6nqRtd1jvtmjZHW41qhS7TRaatcfac6R03reaSLlUwv6AH+v2up/kl78wI2BgSX4KM+Ryt4tP1cgbOpbnYEsFz7XoSI3MQ8KypfQo2S4pQ6fl2LhCI/JhQgpS0u12Mf1+9na2iaZy3KtWVtvbxtP8RKJRHhbg5zkOnmdRrPbIZeL3febYDtq+sozn2PRcD/9HXe1Jj06nhz/g/0hfc2wbWwr8D3G7tNodgu93PrfDZrFNIftZh5Tb7Gxc591Xf8HhQpC1nTLh3DjHThxF98dQjCxCPBiY0GjU8AUiGI8goOE6FtvbO5jhOMnoR9PZ9ByLVs8jHDSp16r4gmF82v3X0+t28Jl+PNfCkSqGptBsNvEHwvf1pV63+4BF8sSHl+ewu1ciGIoSDJqf2wQuRdE4Hc0w37IR0mWv06C23UMoHqaq81qjwemhHBulTTpE+d5omAu7S/ysXONYKMBaz2LIDKALhZ6ncjQSeqQxVy4X0cwITreJLxTB6zbpWBAMBvAZKs3qBpcXN9CJcGR2lG6nSyKdpbpyndfmNvn6c0/RthwK6SSlUpFQLEl9c4mtRodOp0qyMM3UcJ5GqQhmiGjQxOq02C1XSaWz9Fp1UE2E08XVdPw+E131WF3ZJJXP0qhUiCVSqKKfxeC6No1aAyMYIRryfy6e3YAknyg/ery1V+TNThuEym9mMpQbVVY9H+eCsGtpLHRskrqJtC3mHYfnY3ESis2/WF7lb08c4i/W18lE08RVB6EZhDyLXU+gS5emFDwVDrPTtZgyVa5fusJTzz3D2uItLs4tcPLYKezWLuWOi69Tw9J0nA0f04dGqe3u0Wo28fwxZieHeOOVH0MkRrVYITM8yfTkCJtLC/gCYS5dusTXv/09khE/nfI213daPH1iluWFW5SaHmMjWdbXN8mm0mzv7VAYy1Nd36RpubhSMDIxTT5qcOvaFaLpGHulDqOjeYrbO4RiMQwjSMgnqHcaFLeL2KpAcQ0OnziMaNZY2S3i9HrEsmMUUgFu3pjDCMWQThdNhWKpAQpEEjnCWo+17RqF4ThzV1fQfU/hdupEEjkCn3Ioub29Sn35DXzpNM+dHKG8vsLC+RtkpiwyEZXh2WOcf+cqh6bOEosn71tlv/LT/8z0098hrjqEo1F6rTpdW5DLJintFdEMjWuXrzF79hmU8gp/+B/+nEAsy1/9Kz+gWa2SyqRoVMr4w3GsVhVPNTENDel5CEXg2DY9y6axt8GNbYuvnZth4fY8k0dOo+NQrDRIJGOU1pa5vVbi9KlZLl+7QHb6HKMBh5/8xVt847vfIxbwKO3t4qp+thZvQCDNkekJWtU9PD1Iq7qHP5rC6zUxI3GiAZNus0a5aZFKRNjb3SWcSH/sUkyObVPc2uB24zatnsuJM6fJx3xcu36bcCrO7vo6wWgEx/KYnJohaH42U550uvy71Zscyh5CAsfiI/iFzUKvRscTTMRiXNjbIaL6OZXMElChYnU4FIjiWTa6oZMyNfa6ktAj5oz3Wru88c41RkeSzN1YIZqKoyHJZPLML9SYmRhhbXUdz2tRbgiWF25T7QqeTWVwLJtEyM+tGzcxAz425+aoevDSi89Trlap9zwUy2Z3aZn12zfo1OqIYIrvfesllq9epiIMlm8v0ug5TBRy3Lo5hxoIEE3lSPg8SuUWxe118IdZW5jH8kU5NJ5leX6RtuVx+MTpAUl+FdC2umx0LY6bAWr0WGvVWe30qGIzpPtxHY8dr8vNao+4IUj4VC5XW3wzZTKs6/xsZ4eeEGiey67d42a3zrhPZSocZq7qcDLm5y+2togGokwHNDyvL4QshcroSIEr7/6UUs0lGosSCfjwBS0a3SaXLpTpNppU6g1C8QyT40NoZpB4Ko7naqidKpdvO1BcpayEiKQyxEI+pOznggpVB9lgYb3KeCHBa6+9y/D4JKvzV1itWtTbRTQ9ht2qEw6EWF5fJ5+YRng9VrZ3GUpluHL5KqFYGK+2R71TYzgimNveJBnMUasUicdM1ipNxmSXZrmCo3r42haeq1FrNAgpBm6rRM3x0FUTt+fi7S6zZsF4PsPVyzcJBSPMX7tET/p4PvPpVqvo1mr85B/+t3TW18mfHufI3/0WEy+8RIsou0vLbCyuEEnkcK0mO5s3icVfuO/7uq6xtXSDP/rpTxk+egbF2lefSoS4dv0mo4em2FhbI3/8KRIKtBoNEiOHuPDWK9xa3iUairO3vUJhfIZ2ZQ8UFdNQ2K2U8BQfmUSUzfVtjhw/xrW338TwgdLZYcyF4vYyP/7FRVKFIZJhE7td59LVBWzLw3YdVDPGUD6DlOB0Sly5douA38dOqUos7vL6axsEQkGstkO96xJPlBCeR89Z47lzp7hy5TpS1bl4uUTAb2LutHju7OGPaUm6VFtdAtE4WqfFXqNMGJ033n6DdH6MbqdGqp3DtbsE40NMDkU/G0tSNflbM+fwECiqxrF03xMzSYa26xFQVc66DqaqHVjDvz5+Bsd1eGXzJg1HMp0Y4xlVx/+IavOu55EdGicd8bipauSyQwS1HivrWygo3Lh9G0W4BEJhsDSy2SzFG9epNLrEYnEyrk6j0UBVFGxHMnnoEAGfTjgSoVaq4ktlGY3GeePCBaTmI5tJoQhwXA+p9xdiqdwQ+XSQ67cUhkcn8feKLBc9ZjNRNstFgpqKraq43RY3b8wTTeQI2btsbRcZTkcGJPllh0/TCWsKNztdfLpBTlM4lcyQFDYXG21MT1B0PIZ9PlKmRtbQ2LElSJiNRrnd7TIdiWJZFpu2zZDPYCRokvf56PoFh4JhXtstcjoUAhwCwb5qRjDoZ311jVR+lmishDTCZPw6dbfD1FCW+Ss3OHrmNAtXrxHKFzAUiCdCFMt1srkhIkqXi8vLuJZKfjSDbFa5ev4y2cOHSQX8VK/eZs4URIIK23tVRsdHyWRyaEGXBiVGh9LYqonXCBLxm9T2FQUD4QilnS2W1gVDYxM4zSKtDmh2lVsbDslMlkwsQyCgEYlqeJqKInXC8SS9ToVKrc70RJJYyM/uXoV0KkLK58P0mcieg0KPxtoqS6uSzFCOSDBNY/MGIj6CqX66jrjbf/qfufXqefzhMK3rq6T36sQmXE4/e4y39rZpt3usXbtG1TEI+JuAczAcpfRotC1cpUkqP0TUHyA2UkDHod3sMFTIMzN7nJBKX6RZMzjzzIsEfOBIh5DfTzKTRXUbmL4ARjiI648xmTKQ60Fwuhw6ehi33UEqKlPThzFUF2n40VXYrTSJxRPEwhFct4U/EsNnqFQtnYChIYQgGPTvu1olzUYdnz9HLldgaqrAxuoa3Y6F7g8yGlHpSAvHbmMGIqiKStDUqXQliVSasYkxWsXOx25nIRQKhQLheIKw349UJKr0+N73/hKN4jZzSxaTU1PowiOXi352k4EQ+NWHpTIIAvuk51fvn44VoWBoBt8aOYolBX7lo4WQmME0hyddggGTr+shFCOA22tz4vQIQcVlu9IgnUqgaSqtep2eIzly7BTZmAl2lolEHtlrsV1tc/jwUdx9cYzCyDiqv0QwEsOvq/zat75Nt1nHEgYCUBWBYfg5/sJRFCSBgJ+Xv6bjqCbx0AhDtoepKoxq02xu7JCcOQy9BsVam3g8Sr0WJJ78/JSwe6QqICBxXe+gPqSiqA/Uh3RdFwlo+w/cdd2DEleO46Bq2vvsF8h9C8UDlM9l3clPUgXEch0Wuj2ShknmnppMd0qBdT0Pn6J86F5K1/Mw9uv53cFmq8Xb7Q4/TKceSLft9Xr4fD5A0u1a+Hy+B/L+pOvQc7z9/E6JbTvoBxFpEstyMAwd6bnYjodu6AjA7vVwUTANlZ7t3pc4b/W6CE1Hf+hq1+Hq9Svkx4+RDBh0Ol38fhPpOthSYGjq+1gLHt2etd++/b1Xw+d/iBi95PqVS6RHj5CO+ug065y/eJkTZ5/9SLlWj6MKyH/+L3+PpV++juoziBwp8Mz/6gdkC1nW5ta49vY1Zs5NoqgGdV+MeLbAkRPPgwgeuBDfvnyTc2eOoSLfI8LRt548FFQFHFcehO3fOxZVVcVx3H7JLOkhxXv7mIfrcqBAIz0PKcS+stXdvmBZPTTDh/BcLMd7QCTB6pS4emuXE8dm7ubz0a/QIlQDVXi4Xl8DWjX6FVuQ3gP95gk5ObGd/z977xVs2Xnl9/123ifnfHPqcDs3GpFgGDDMUMNglz1jWSONNS4/+EmamnKoUtlVLvvJLrv8YD24bFW5JI/Kki3VSJzhaEgOySFBAATQ6BxvjueenNOOfji3b3cDDaAJNti3gfN/OvfuvU/4wkrfWv9lozxGeHLUBeQJfpduF93rPdQOzBPuAuICEvF4HFUZpi+3Ww1a3f7BB9iOSzyRRpMcCsUi3YFJNjeB1apS6gyYnZyklN+hZ9vYlo0oScNNiYssqSiygCeUQDFb5CtNZElGEIaKWZQkcBwQxQMF/CxBlWSO+T44zPdo9vTHtA4fdV/S5+VbPt8jU5S1g8QaAV1/dJKNIMno0n2LVnlfJ417qdmCKKE+kAWkaNpBU2RNffjTVU3/yMDFieNnD/66Z1QIksxHbW9BFB8wQAR0/cPOKgSOnzxzfwy8Pl54+WVk8TebxO2YFt2dArIg0m33SYU1ZuZzWFKIWKJNOKSgyCrxbJZ2zcBxBcC5P0qKwkvnTxz8pg+Oh3RgFMmP8JDvtXqTD7pMP8oIEx/qESk8ZKjdXwvqQdq/hPaIvpWqJ8a50x9MjrrfoWX4OZKkPvhhH1g3n5IP8FgKcoQni8OuIH/lUPnHx/wd1ECMmbExbHOApPqZSedwbXtfI1tMzZ3g7OIRwsEA4USW586eZSqbIBCMcerMc5xfPIpkm3hDcS48d4GxVIz5hUXOnzzB2PQCr33pFdLJCMFgiJOnzjM3kSWbneb5555jMpNh4dhJ5sZz4DrP5CC3q0Wa/U9GWefa9v2mq++/ZjkfmMDy7gYrG3vg2Di2RbFQ4PH6p7j0eoMHJx7Htul3P1mad353DxewzU/wux0H23GxHRvLGmCY1idb3KL0G1eQ91wOSZKwDJOeafDe20usXb3JYHUZxWqQnUziCwQQJZGpXJJ4NIjrPDxON6++zdpejb31O1y5s/XIj1lbXuVRo2ubXd5+4+dcub36fh+ZlfUNbBdcq8vt5dWRRP8M4/2OseO6B1GCe3veuidbbJMb129hA3sbS2wXauAO9yGAbQ3LliqlCg5gmia2bd9/fj/CYbuws32H3Wb3oHOTbZnsvw2mYexvcfuZGcfHMrNcx8G0LAaDASgGliAdVLnYjkAmkWBt+QbB5ARHU2Hc3g49W+XI4mlazR1qnT62DYtHF3E7LU6cuoBsDSiUWyzMJ2hVd7BEjeOLp9kr7aHFjxHVZHarDWYWZnDw4HYkNrZ3cASemT4drmuzunSLu0sbJOZmmU2N4Vgd2u0WpUoTRJdAMIlfM8kX6ggieLQQwWiAoC4zcFW6e0tc325zbn6MUtsgHA4gijbN4h431ip847e/hoc2V64vkUgluPL2W8w8/1UKa7e4tFrAp9gYS1FOLM7Tr+3QNnWOLczQLue5s7ZDZnwcp1OnNRgge0JgtOgOJGS7w06lxcx0DlEUqFZajE1M0q3nKTYGnDl/Htmoc/POFpnJNLXtHXqSl7lsjLu3blPoOHwzm+bnP/4rbF+a584t0i4XqbaaWJbM7PwEm8t3Cccy9JtVBH8Ev2BQqPex+lWK5QGG1WZsboGYotNslRG9YVJhD6urG4SSUxyZSR9Oy1OWCExP0r98lRXXpVzr8r//X2/wh7/3CncvXSUxlsEbs5FEgU61SCw7gyv5H1rXVy++Ts9fJ9hdohk6ideqUOpJzKSD3F5aJZkdZ9Bo4qyssFeqMTOZ4vbtVY6dfZ6gUeL1Ny/z9W9PcvPKRUqtHoILiXSSer3K5Yu/JD42xuqN62zvneblF57Hq4w4+D5rqBXWqXUljHaZcqND14EzJ46zeu0S3sw0tfw6M0fPMZEOg2tx6d230aMxlt57D//YHMVNg76gEwkI5DdqBNMRvF6Vzb0NHEdnIhPk8pWbHDnzImNhi9ffvIrsCeD1udjNFW5ubZOcmCfmcbi9USYaVOjbGtmIys3b64wtnOTkfO7ZV5IuAn6Ph0A4zLnoeQRBoF2v4Nc0OpaNLLksr69xYu4IkgC1Zp1CfgPVN4bZNwnFQmAOcATY3dtjYTxDsbBNJj1BOGSxvrJEPBbDp/bZ2trEG4phNivsWLBTq5FJBDHtHpmQB0l4MCh1+NErbbNV6zM9kWN5Z4WQGKDbXKfYtQkpPgZ2H4FN1lo2MdVHz+7jOH1qW2V6jS7Hn3sRSfMQD7tcvnIFW/GiKNNcufg2J58/TSwaI6BL3Hj3Gp5Qhr3tVbzJHGPJCL3dEtFEDNkaEFG8XHrrb2j1LbzeEJPTU5R2ttBDUTZvXaFmyZw8Nc3m1g6WqZEIuCxvN5meTmFYNbb2ekxFEty4cRlj0EcPpJEkqNeq7K6vUW3k8QaSeHs1vv/TOzx3cpHO7t5wgXmDpGMBLr/zFq6gIqh+cmGbv/r+95EkjUi9R1BXkF24eusmuj+MKLvk0pO02iV8us7O0iZqPIhTK3J1q029PSA2Pn+o537h29/kn//Z97hoC6gDke6bN5kLDugOYGOrhh6OUHV14rkxjIGDL6A8tOsi8RSllZvURB9j/ipvXFxjYAms3BBRvSJb21sEPAGK71WYWDzBjctv8e9+8g4tLcrfurDAucUsv3jj5+iygtnvo4saK0t3CaaiNDpNwpaDJxBkfekOeiDBc0cn0LVRaPKzhFA0weXLP0UMhKkVS4RTKdZW16h1mhR3N0j4M6QjOu1uD68M4xNZrr/9JqI3AY0yZmqcuNbnzlaBU8dPs7N8jbah0apafPnVV9hevkat2qBcbpL1CUi+CBF5wFa9i9Mr0BuIhHs1Nqs9aoUSudRJrHaD2zc36AsqltF/JsbxY3eFKIq06gXefmfvIHFHEEVsZ5h4giRT2l3l9fIOIg6mZQ/PKktLOI6Doqi4joUjK+Q37lLeXcN2BTRZ58aNy7QGFhsbmwi4mJaJrKi4tsWwp7NAeQ8UReG2aeAK0jPV7VENRPC4W+zVJSazE+S3bmNrHtKpDEFFx3QNJLEPqkjc68d0BwgyeASHX5Y6ZMMe6oYPc7dKOp2mL3mQZJian0ewBUTXpNE1SY9nuXF3h3A0QUCSUEQRJRKkmy8RiybIRqIMhD7BThvNm8SriuA6rK9vMJ5MEPL4CAdDVDxN9GiSsLdHpivTazfxh30kEyGS0TAtq0OnLhH0exAti3K+gCUrREJRQukUeqfNJCKF/A6yHgAg6tMQdC/uoEdmboGNpWvs2RGOnzpNKZ8nOzGGNGiwXWkxPj6OIWrkYjp7ey0kSaTV6RGMhomlEnTbNRyjjxvWUMTDzdcx9tUvE/zKV2j86b/B4/Xzna+PIzDsamDi8k/+xRu46TRf/fpLfPMbx3l/fGT++HkyYz1sSSUYCDJo7lHqSkymQkiqTLvZRBA9LGKyW67hy0zzzd9JMjWTxTb72HKAFy6cxKsqCK6LKii0umVkXwjB7NDoGEw89yKSa9MZGHR65khJfsYgKjqKJDGxcJJjuSLlgYBfdxCccWLZNH49SKfdomsK+FNhFo6dpNNpoXp86KpEs1KkZfh4/vRpdM2PND2H4/EipnusLq8gSx6mZmYYS0ew3Tql/Ca+mSOcOTKBg0Jld4dwLE69WEA/Hifg0+kN+px58QKFnSLJdPKZGMfHy251P0gh9P6soHuZYR/3f9d1P/D6wXtc1wXh4c6Ow+vCU+vK8Otkt7qOhWmDqsiYxgBR0fjIagTX4fqld9DjU8xNDFn/LctCliX6/QGirKDKEq7j4rg2CBKSKGAYAxRVe2jcLMsckiTfGzjXpj+w0HWN7aWbDPxxZjMfvlAt0zwgKAZo1wpcvHwLE5EXXniegEfDsCzU93E0GoNhRuQw+9Slmt/i5nqZ8+cWuXNzjWOLc2iqjGUOk1Zcx0bRdEQBev0+uq5jWxaiKGDvd0e49/2vXb7IXrlJLDPHuRNTn8p8P4nsVoBqqcKf/Cf/EDN/nZePxqh1LLYbFslsjKqr0FJ9/Md/72/ztde+MWr2/ZTxWcxubTeKrO3UWTy2wKddNGD06pS7DtlY9JmY718lu/UxS0CePFyenbPFX0dJfhIM0+8Pp1VvGgMESflA2cFHwbEtEOUns1Fdh/7A/NCM3cOkJIdzafLDf/n/8PZf/CWKI/HO7U326i2e/+Lz/P5/9ge8/IUvjFpyjZTkp6IkR3gySvKpSeLPh1wY1oC+fyIGgz6q9uE8k4dVQcJHdxL40LCP9AR/jyB+qgryiY+XovDNv/N3ee0/+I/o1Ru0mk0EVWFscvwjn2s369iCSigwTKc3LQNF/jWFoOtSr9fx+INoMtRqTXwBH+1mi2A0hjxS1p9BEeTiPhCFc2wb23H3ZYyL7YDgOogilKp14rEY9n59rbtfeic8YPBJkjisex1UWSn3OD45juMKiAIYhoGiqrRqVXq2QioewHFcRME9qNMdRsVkcB3W1m+jRSdJelVEScbpd2laLpGAF8cVkA5JzfzoEOLTtFbMDjv5FuGgRrtnkc0kKRd3uXFziaMnLxAPqVi2RbfTxrZsVtdWmVg4jmT2kHU/Eb+H3sDE69FHg/mMQ9MUtFSccCr+WN7yoNNhs5zn5IkF9jZWyDc6ZGNxuqZDLByi127SNR1mZ6aoFbdp9yREp0vHAo8iIHtD5JIxtjZWMR0Ty9aZGotz+8Zl/JlpcokQW+vLWJKELMoEmi1c18Hn1ajUGoiuRHpiirBfG03eMwqz1+Stt3+JIwdJBQMUex2OjuXY2FxG1OKYgzrtZh9bFsjEMnglg7U7d2iaNhOZNKWtDSxfki+8cILbl96kKUU5NpXg6rtX8SRCIMu89cYahqsRUAS6gocLz51k9fZ77HWChNQ+gXiU2l4BwZ/CqxjUqnWSY5NYnQr5YoVArMWdvsvZc2fRBm3Wd3a41WgxsBTOvHCeqOfpr7+RkvwU4VgGe7s7LK920VWBpbsreH0aIiaXL1/h/Kk5Vrfv0mrYTGaz1MoNRP0WrZZIyCexZtsEktMsTIyU5OcKgkir3UbVQ2B1KBSrOMDdpVtYgo92rYqmyZTqTXK5DFsrS+zWLfyajOj34VcF6AxIBFVuX78CwQiT6WksY4BhODiWi+g6qJJE37bQdQ+Nyh7b+QLhaJpoLIxlDWhV64T9qdF8PKMYNMps5auMTUYQxR4b6wXGIyEqlSY90yQ3kSIblRhEEnR3ylhCH0PxMTMV4fq772GJCgmfjYtAJJaksVtjabVPu9WkIdpE/DK7e3UyqSy+cIROqUR3YBGKhpF8YXqDGrGgzvVrNca9YRpNOHZ8lotvv0dkbIGpMZG+FsIsluh0+6iuSa1WIRyZJjIok290Rkryc6AmMU2TcCRFNiZw6coWvoAPVfVgmDZLt+5ieHUmUjrlUolgKIArSEzPHCOrl/g3f3Obl1M5CpUOqZhvNJyfIwRCIbySjqwEmZ+bw0QG18S2bIqVKpMzkyTbA3RFZfrIKXLmgLWlu6iBCJOpKKLmQ9Fkzl54BdXnwbFcNL+X46dOoaoeECxi2QkmgwG6rTba2Bi5iVk8Ph+aquK6NsKo3ewzDW9inAtnOjiiD02S+fIrGdqNGrFUmlAoSTDoRXYMbN2LrXoQXRNL0fDqChdefIlWvY7gjyALAqIk4fX58Woi7tgE0WQEvz9ILlrBQCGgi7Q6AVRZJJ0c4+56iXRmnEQmyrmTPQQ9gk/X8ftlzpx/gX6nSq2jkov7KLXaqLqCJoWYnZ7D44kgmR4IHA7mnqeWuPMs4ZMm7riORac7QBAlZMnFcWUatQJIPsIBhb1ChXA0Qr/dQguGkaw+XdMlEo5QWLvBdlfhzGwOW9IJeEeH8r8xC/wJJu58GrAdB+kRTEK2bSOK0igR6BNglLjz+cIzkbjz+Yiayfj9Dw+xJzN28Hpqar9xavBeSxgfw1cuWijFuZkEujyy5kd4GNKHUO1JzyC38QgjHHaMJPDhVK+kUqmRghxhhBE+Rbjs7u5+oAbeshwG/T6fhK6jsJdn8JhUy8X83iP/b5iHi9f1sTxJx7FxnPtD9v5WWe8v9nfdYemDKArDNGJBOJQhiofXizsMY42s8RFGGOEzAMfqcfvWHTq2CzZMTs1htwvUTYmgKlCttWl1OhiAJsBeqULA53DjZpHZ2UlCHoW9UpnE2DjSoMVWvsKRE2eIeQWu375NOJqh1yrT6DrMz06xuXaL1a0aX/tGhnphh7sbecYmJhg0yrgeP063Qdv1Mj8W4fb1W1RbfY4jEPR7MLs9SuUyhmOyvFri+MIEBiJzC7N4pKfrLHw8d6vr4gtECPk9uPs9ENvNBs3uMJ47bNszZMmxLRPTdtB1D4oArW4PfyCAaw7oDoxh2yvXwXWFgz52h0VBupJKNh2lVNjDGbGfjDDCCM84Bt0KxZqB4PQIhn2sbNwlIDrcXqvg8+icOnWM7buX6Ekanm6RfNsmGhGJp3KI9oDVlS2C2Rzrd65jWQYDwYemSHTrFYp7u6ysVokm/ET88Nd//TMWjh0hER4gSrC3tYk/nGTt+ns0RA/HJ0V22zYJf52//NENTp0+hdVf4u7KGgszOa6+9S7J+VMcnwxRrNoogk2l2cGybFxJfKoSWf44d9y0XI4dv8CZYzkMw0RRRO6++w5/c+UGoiziC8V44dxZzFqeK0sbSCLowRjHxzK8efFtpheOYeU32B3Y2P0OoupFl1xqjQbuIVFGpuOyePo0QmuLXfvJepOOOaDc6JCMRz9WUY8yLj47MAwTx3VHU3p47GAURf7Q89zPIgRJI51JI1hdQlEfe4UC+WKdSChEJBohGvYzNjdP13LwBJPElAFzs2nWl/MYepBoIkE8mUAaNKm3uujeEDYCjWqFdt8hFguTTMYIeEzG+x5atQKmoyALILg2q+sbjCdShL1+UtkUhdJVyi0PJ4/NUNjewhOMkhBcrt26S3pyCqNVptTIoAk9LMGP1W+zdPMWufl5Un7P4fUkBUHC6LZY29jAsi0kwaXdtxDEYdi1UcpTqs/Q39xG8oZ56fxJWrU8oqxx9swFkF3EyaPMxfx06k1kb5B2eZ13rtRxxcPBWCkK0CiVCe3zhz4xQdlpcvnSZdrdPsHUGOdOHWflxjX05CTjySDtRo2+6SCKMpJr4UoSpmXjC/hQRAVz0KPcaOD3epBljWDAR7vZQFA1MAcMLJBFB1fUDphZRjgcUBQZdzQMh0tpfM4iRLovwdEHmuWkU+PYlgmifMBmc/Lsi/fl1aCPpGhkkzncfU5ogHhA5p13rtBu1Gm1BowtLJKcmkdW1YMRzWTBNA1ESUESQA9GWJzIMJ267xw8f+FFTFdElUWmpwfImobousybJpqqYpsGNhLjuRx9w2R6dg5FEp9656fHOJMcejiKouAKDK0EXO5JAEEQhmaapDA3O40qCsiqhG3ZIAzpigRJAsekUi1jtQbM5lJoN27SszkU/HSSKLK7vUpJURBF6YkJt2JxHVsJcGJxiqXlVdqDY4QiEdqmDa7JyvIq7UEfzePBoyrIvQF9WaHXb5HKLdAsbdFTZLRiD08wh19XuXXtMl286IqF4YgEA34cW2D+yFH82ijR59AIZGFEWT7C4YMkKx96TdX0R6oFRQvxwosvYbsC6n7Jk6KqjzAM7/9v8sjiIzxbGfXgs7R7GwVt/70kReVeDM+j34/mPW2pJn+c7SVLLqtrtygV9YOuHZ1mA1EePirLMqt3b+EYfQo3r7OpCHS6XXyBMI7RpdM3cC0bbyiMa/YQ5BqlnQF9WzxUoaghJ6H1RK3NeDzH2volbiw10AIRvJqAq3swHRlciCSyhAULWRPo1puocphMNEypVKCW30TyeAmqCqqm0O0PsI0+rghh3c+gU8Mf9aCILqagIksjkTzCCCM87OCUCnsYrkQ2ndyXbC47O3myuezHSzrXYme3TC6XRpIVPu4QyjI63F3eIDM5TcT3cHi0XCzgC8fRpGHXn1K1Sjr1bLA5PUa4VaDdqtFsPDq7VRAEOu0WgiDQq5Wp72e1NlvtoTUtCCAIdAt5EESgDoiHK3HnUwrH6IEYL7z0AnvFJrmJHBIQisUI7V+fmMjcv/mBjlXBRBzLMpFkBde2MC0HRVURBTj//CsY3SZ3bjfA1ZiZm0URpUNDBjzCCCMcDpi9FleuLaFoAr0uGN09NL+faqmCLRoUdhskUjH8qkK93SXk9xGKxqkVtljfLZNNZcgX9pCsHnstk+nJDNurq4STWeqVPKF4Frtboz6AE0fmWLp+iRsbbRBk6pJDsdXnyNwMxc11bq5v8dWv/w63r7xJvi7DoMpyMs2JuVlKW+u4/jhzU9lDWZP4WCUgQ6X4UdfFfXdaOviR4vsfkOVD4jz/ZqHqASYmAr/6xOyHRQRJRpMe9HhlPIEoJ86eRxQVxFGE9Zmy7MEBRmVGI/xmVpttO/h1LxsrV6i2OkSjYbyKxM3bmxxdGOPmtSvgOjSbfYLRNF/7rSRbm9tEkhlu37yBP+DnjXfeQ/MFsWyX1t4Gm+02cc0LlQ1u3FjHEwiSnZomHE4waftpFLYoix5CsQA/+/GPmVo4RiYewnEFZE0kEU/Q79iomsQvfvJjBraDL9JiYjyLfgi3xohx5xmF/BFnCyMcHti2Q7+Vx+5scfPKO+S31kjkFlg4eQFPZIZAMDIapBE+FYiihFdXsW2bbDqLolWJpXOIVg+vY7C+mufoseNsrGwwfnScSk9AkcCxDdbWt0imx/CoAroMhuJHtOt0LJl0NI7X6lHvOEyMpxH0EBFdpuH1EbYUBpKF5IsQDnlwxwcMWjW6possQzQU5c56mUgiTSSkIwxM2u0OgXT2IWdgpCQ/q5abO8pnHOHh9XDprb/k7sV/x6Dd4C/+/Ps0OzaO6OPlV7/EF37vHzAxOcvR8dgHnm1XC7zx7jWyY2P4/XGmJu632NpcXyU+NoN3f/furS9jeuKMp8IArK7cITl1BP+HCB3HcT4Y6bl/ldtXL7Ja6PDiK68Q9Sof6ak8Ksi/tbaCJz5BPPDJDLm9fJ5YOoPyGCcIhtHm9WqJGW8EVdLJ+vSHvpvtuogCWK6LIny+wi6y5uOll89jOSK6pnDEMjEd0NThvAwGBpqmMjM5/dBzwUicyfQUqVjgYKb7fQNNVzlp2iiyRL8/QPPoCPvXZAFi6TFiaYCZg/fKprPYpokrSsiSgHfsCKGUiSwrCAJk0lkc28S0D2+P4ZGSfAIQ9gXPwDBHg/EZgGM7TySprFLYotcus3zrl1x6d4NTuXHSkQSe2BQ91UO33ePiRoeGKfHCTPhB/5Of/uiHRI+8SFzq8Gd//j3OvPQ82bDOVrGE6Nq0mi0q7QEvvPA8u0u3qPnGKG30kIIptm9f5M1rq7xy4SS1/BZtS+fE0QmuXblONpfjrTfe4vkvv0Z9e5lgagq5V2W93OTscy8i11d58+o2p+dj/Ot/+a/50hdfRrR7DAyDcr3N5ESa/NYu5dIOeDIsTKbxh1TajT6NahFHj9DZ26Cvl1icn2Ui7efq9bv4Qhr5UoeZbIJSpU06GqDUqFOvN5geH2evWCY5kaOV32Rlr8030pnHGmPT7LPVqYNhcblV4gtjR3jOq/N/rt1k0h/hTqtITg/iOgLPJ2eZ8H2+2s7JinYg5EVZ4cHGU9qHEKIfXTz5AQl3r9H5PUJ//aCZg/CxTdAl5WFjSXnf36KkHFovcqQkn5THwLCMZMTC/9nAYDDAtu1fS1Fuba5TzG+ie33kqyavnZziD144Qa3tRYrM4Jk5wut7eRKJaXbLPdrZAP6DAxkX07RQdA1Z6hHwe1i5fpk7hkXm2CI0tynv2Lx7a4sjp84TDAa4vXqbjX4fQVhG82pAh5/+zU9QJQnHdtjYWebOxSvMnnoJy3TY3bjDz3/4I1KTR0h6NBr9LkogxbmcBIKIKit4NIk3f/w9BloCmrtUbQ/V4jp9JU5agGq/z/V3fompCfTaBrrmw7E3kSWHd25cZHJ2FsfqU6kU6RBE1TS2N9ZY2dijGgoxs7iI3euxsXyH7bpBrVMj4o/j96iPXYalqD7CmkzLht9OzSJKLk2zR3HQRbFFWo6LB42W28MZRXp+42g3aziyh6B3qFT7/cHHKlUAxzSGXu8hkKkjJTnCCJ8C/tk//SfkEnGOHx1DdkQWp3J873oBTQiRNsO0eiuE5k+RCEW5ud7k7maDcwvRg235pa9+hTcu3sQ3Pckrr76KY7bp9C3GZmdpFv10uwbeaAaP2+GtpQ1mTr2E2C4gBRKEfTKy6qFeq+APBJFdk1K9RS6aIDc5z6C+RweXV1/7GrFYHJ/mRRRd0HwE0gmeO1pktdDmm9/9NpXV61j+HCGnxlK+zVgmghKIEXYbXFurEZlOsLFX5cTxJD5vBMds0TMdjp48i2T3EeUkiXgcTzCGZbTpCyGOn4wTDwRIjaVx7Q6hSJRA0iSbibG7tUkslUF9TANFkTW+mj6GT35YlP1XJ15lr1HkjUadc+kJQrKER/r8ibt6pcjAEQkFgkgSWPYwCqGpOoZl4vdotHsmkZCPUqmE7g+xeusmqenjjCV8lMslLMNgbWOH4ycXGfS6KBLcvLPN4vEFfH4dx7Lo9zr0LZFUIoI16LBXbhIMKPzohz/j5d/6OpXt69Q6Aq1mjfmFI2QzCcqlInogjF9XaTVqdA2HoEel0e0jdRtUDYlMPIijeAkHDjHjzggjjPArRhZch83NdcJBHVHUOOXxkoh42S2auGYVtCPguvjtFu9d/gF7lRKCMcW5hW8cvEc0NcnvfnPyke8fmT4KwLFFwBpw9ktfJTueQ2bhofsmx3L3Xz90JfeR3//k+Ze5F3CLLJ7bf5Ui89DRVZiXE8N3PXbyo8fj5OmzH3ptevboQ3/H48lfaawFQcT3iG45iiAyHk7z++H053Yddiu7vHdznSPTca5sVpjIytxe20MWvATtNmYgQqewSc1QCARkdFHHEgZUai2SMyfoN8pcunyNsbEsxVqD+UGfW5cv0pZBdkKs3bxJeG6a2voqzXaXaG6GVCLEpUuXEDQvK6sdvIEYsaCPG0t7tK0kpjlgbeUOS0t3qVbK+BNZvvryWW5efg8tMYUSV3n37SvEwnE8ssXPbl3D1SN8/Ruvoj2lcRwVEIwwwhOHgCyKNOt1YplxXvjq7yLbAnOxDAFJJKx5mI/H8Ugd/NYq2WCTscQHRYBtP0bLIFljYjz3a1m7juP8ytc/7pkRDoex5iKg6T56rQJLd7exRZXpqXnCIT/z05OIgkskGibk8zIxNUtAk/EFfOC46P4QqViAYqVONBRgY3WJcqePousEfBqSLLBx5y71nsPkeJq93R0Me6hWRFFAUb0kUwkUSSAYDCPiksyMMTURp9vuI2s6yXgMQZQZmxinUtzk6s27DCwHy7BAcBFlhUwqyvbqCr3B02mhNfIkP2W0BgPeaLXxyCpnfB6utZpoqkZSEIjqXjzikPZPAvqOw0qjTtQfJClL4Fq83ejwUiTMrUYDj+YlrUro+5mJhuui7h+cFbZX2Sq28Ht1ZD3K7FQCgWF4RZYkHNuiXSmw23E4MpUDQaCQLyDaFs2eyczcNK16FY8/iOA6SMqQvMC2TAb9NtWOyVgqOTwrU2RwbHrdNqtbdRaPjeO6QwYl0zDIry6jxbOk4uGHuCJty6KwVyIQTRDwyrhGj+s3btC2BAKKRHhsmrF4iEqlQigWxTEs1P1MPMuykPdDav1Wk44rEgt4MW0XRRZx3CEFYrteA9WPrgzrdp8GobUgCMian1a1zu7yZczcAla1wLs3LpEJRujv9ehVbvPqd36LL84tcK1oIPoe9qDuXL+IqSY5OpNBdC2uXF1C9kU4eSSL7QoPkUd023UcyYeuCMMxch0sx0WWJH7wb/85nskXCbWX2LAyfOtLpx4QoiAIDjevXmf+5ClkbERJOsgy7DcK/H9/9lfMnn6el8484PE5A65eXyKTSSNLAy5dW+FLX/oio6KkwwVffIwzR0RswcuZk0do9iEWDaJIKm74CLLu5cUvfolipU0wFERTFGKxc8wZPYz9hguxZJapSAy738ZyXTJjU4QiEfrtJrLmJVKr4A9HMHsdzp7OokoiZ86eYSdfJr2YxTEMAManF9GDDYLhMIrk8pXUHO1GGUH1AaB7g5w4mUSXXDq9AcFAAE1XmG41GdgissRTYxV7LCVp2xaOy0FPSNd1kSQJ8YHMBtu2cQH5gQ4aljXsvilJ8qHvhuA6Dq4gPlGCc9M2eKNcYdexcaUeptGhZAq86PPyw71dxr1RBvYATdZIS7DlOPhMg+V+lTORMGOqzevFAmld5+fFPU7Hx1hptTEFGb9ts2rbnIvEWDRrXF3e5qXnL1DPb/DLy29SqUwT8MHmRp7piWmqjSrRgJ/dYhmAuakUv3zzdTLpafZKeQrVCiGvj17vDj1L5dz5s1iNDS7ezpPywK1Ci6PTCSrVPplsnEaxSiiepLS3y1XX5OjCHLurNyh0XOR2ie2VLaZnZkn64fpKgWxEp9ozKW5uMH/uNU7OxREUDb9Ho9MT8dLm7bd+QWEsh0cSuH7rGsHIGGcW59i5dY27hSqpeIp2rYzs8aL6VFZaLSKJNNXdDZoDmS984WU63TJrK0t02hZnzp4hFnw6xO+/953fpbl3DV1toxjb1Oig6hZBr4bH66U/s8ggdpxyF2anZSJ+34OLkdXVAsG0wMWL28iyl07bQBxUeO9ykf7AQPN5oddH1H2YgxZoAq1Sm0gihdWqUem5fP21V+l2Gqy99y6aUURJy/zkB39BuS8zmfBxZ2mV1NgUQUXmrZ/9lLYtMp/186Ofvs0rv/3vcSw+3Muy4PJXf/Fv2au1kYDMxDyyPODd771Janqa8soS/2y7wDe/9V3SwZGqPEyIJbMPBMgfxHBfSJqfXNZ/8F9VVcB7f8/kxsb2Ne7DZ4K+/ezWUHD/2VDwfqhb8zI1NbGvYfa5XjUP2ezD76En74fCY6n7r0MPfNFQJP7Ux/BjzWzbccnmZjm9uMjR+Xlmp6Y5eew4IV07yBazHZd4MsNYOoUouBiGge0KTE3OMD09hS47DAYmtm1jmiamaWLbDrZlcRgSzlzXQQ8lODo/heA+uTCSYVm0bZucoqK5Nj6Plxcjfn5RLhHXvXhck4jixe8YvF1v8VwwRACbN+tNArKM7cLRkJcf7BUI+7w0jQ5lw2K91aEDnPd5We92wQVRUJEkCccVOXbiNIpd4crVJURFJ5/fQPInmZ1IsHz3OgNLQhZU4qkUsVCQ+SPH8MsOmzt5wpEEktul1emh+kIEFZG+LTCRidOo95iaz3H32lX6aoC5mUm2Vu9QbFsossvWTp6p2QVCPh+nT5+kvLvC2tYe7UqRvb0qU8eOMDmeJeRTabS7IIjouoauqsiqzuKpU/Qre9QaHZKpBO1GA8OCTrtNdmyMys4GhqAyP5Vjb2ONruhjIhVgbbuALIuYuPT7bZRAmIAi0Gq1n9qaeuHVr3D0aJpK402W1t7D024hqBrX6nUqkshPbzUpbq9S3FvHtUwCvgfCrYLIxNQUXlwkWabZaCCIMrbVo2e5iEC7UmKvWiW/vYEli9TbLaaOHUMxHMqlOp5ABFGAYCyF2C/RlSIEJINCpU6zXmV9s0BuIkOjvE2hVGFjYwtBErh99xaFUpHdchkUjWhQ4t333qVhqQR9QWLBOKWtVWqtDpFYGNe2iY7NEAtoXL12jWqjP9JMI3ym8LH9JB1HJJmcJBeyeevqNTLJNLatEfP7qHWHadUzR84wlw2T39uh3moxO3+cfrvOxPgUsmLhWB1mwhmqxSKBaAKfKrK9s4niDdMo79AdOE/V07QcgYWFI/SKS5iOi/yEana8qs6s38NbnT5pPci85uFqu8XxUATNsem7Ml1r6A18JxDgvWaTaX+I/9QbpGSahHWFs+EYY7pJVFPoGhauIbLgV4koMn5JQrUdBG+IY2MNrl2/STKRIBMK0ffJpMZEypUyU+MTbGyssVYU+da3vkunY2ADY+kk7T5k0wnMvpdg1ERVBDxePz5dQcJA1XTC8TitdoNAKkp+s8zLX3mN8tYWK+vbvPY736LTbWCYLidPLLK8eptkPEM0HEKcnaNZb6EvREgEA4Q9AZRsmu38Jg4pQn4v/nAMwQdeIYRf9eCbXQBZYTDoEQhISCLgWKytb7F4/BQeRULzeFg89xytSpHN4oCXLpyjY4r4VQk3mkPsDKh2dHTv08uIkxSdxMyrvHH3p/jGvkxnUGI2cpnwsReJLrzET//vP+W//0f/M//ln/wxmdjiBwqpp+emURWJfD7PwtEkkusiyjKDTp2OJZGM+OmbNqLrIikShmWiqTo9TPIVhX6nQadnc+Gl1zh3wcEVBBRFw+43aRoi8ZAX23GwTAtEGVVyKZRr+AJHOXfBJByLI0kOCydf5OVUBtG195uui1i2iSApSFjUWx0CwRASLgPTQNdGlHsjfLYguK7Lf/Hf/U/uD3/6xiOVpOVIHJ8/RcinMHlkllPz01z75SV+8fbP2aw3sW149dXXKG3eIJKZplurEJucJ6Q0qdUcXNHBHwigywq1ehu/T+Xa7WWOHjuK063y+htvYQryU2VbcF0H3RMmFQuwtb2F+z5mjla7w3/7J/85f/j736Xd6T7ieRdZlvF4Hl2o3HccFFEcMXZ+QlTyO/hiGXT1N3O+OBgMMAzz4Hjh0WvGRdf1g+LqD0OzXmNpeZuV7QbNuzeYEBss9ySiF36H+va7/P6//00i0ScZUrLZy+8h6wFikeCoXddjotPpfixjliCA1+v9yHXxtNAfGJ+oTtt2HUzHRtqXeYooPbTGh7/7s7eKLMum1+t96G8TBIF+vzcZi8U2P/ZM0nVsZN3LzFwORXS5cfsOliAecAjJksvS+ion544gCS6iE0UXLMrVOv2eDJJDrVknGYuzt1PCG5RYXrnD/OIZWqU8HctFe8rHGIIg0u/WWevUkKQnr8r0EQv5r4VYJvfMfvdgOMK58xEmZtqUTh6lvnSJM54Ap188jk87/mn4sKSf4fEa4cniSjlPSNWYCkYfeX273eBWtYhPUelYJr89cb+M6PX8OmcTWcr9LuVem+eS4/zV5h1eG5tDFj8/Jv9j9ZNcX79KMX8bez/tWxJF6u0ekighCFDeXeP18i4iDsY+t59tD5suwzCpZ1nTwLExNyyi8TGMxi631ndR5MORYCs8ZU9v0O8hyiqKPPI3P3PhGgESUT+JqB9mv/ax9zu2Ra3awhVsgpEoqiTiui6WaeCKEur+nnH3z8/L5TrBSBjtgXpB2+izs1ciO5bDaDbYKdWIx4N0ey65bAJcF9tlmHVs2wiC8BCfa69epjoQCWtQN11yiRiF7TX6eAioLoaok4oF2d5YR9CDOL0mWiCC1e+SyOQwW1V6rko8EhgtgKeIn+ZXSWg+Gkafcr/LdqfJHx45x3vFHVJeP+utGncbJRRZoTboHSjJvmXyw60lFqMp/mzjNn+6do1/9aX/kP/t9juciGfJeT8/8/qY/SSbNBsPJ7RI8v2MVUmSsC0Tm2EvSWt/0x3cK0lYpgmCgCCKGL06b73zLrbjPpQh+1mD61os37mJq4axew28kQRWu46tBdDtLjvFKtmJOWJelzd/eZlTF14gFR0Jlc87RFGkUtikZcs4y3cQvUEk10JAwsBm0GgQiKaQcBGxqbb6hIM6rXqPZCqK5vGTTkQo1cv4YyFkR8Z1LPq9PsXigFw2wfLSdVo9kATo99rYosbckWN4BQNR8eI4LoVSA39Gp9jokouHqDdtTLPIjZ09Zo4dJRUP4/VobG1tEQj4MMtlTKOL7vGxu3wLLTY9UpJPGavdJt/bXSa6oWKLAkudOinNw4/21rlU3uVUJIUsS0iywk/21vkHJ15iq9Pkj9/8PgPb4m93W/ysvMVlo84/uvgjmoKD8DnrXSs/7qYVPyZk+KBSfFSc9+B/goDj3EsC+GwPdq+0w3q5x5efn+Ovf7LB82NZ7i7vUmy7nF+cxOcPUdtZYa03IBGPH7Dzj/B5dz1FEukcAUdgd7WOJICEg6sG0a0efQREQSCRyNKsbuHRFTr1Fpak0qzXiAUTyKpGIh5FEiXq1TyVRp+x8QkMowG4tNotDEfH5wszno5hd20cy8aVHVzXxRMMEWm7+IJ+IpY7bKLuGqDoTOZStJp1KjUP29vb+KJJzG4TLZAmEw0wMHrYyDiuPZrLpwjbcVjt1PmbVoEAEorlYKkyf/+Xf4EuKxScAWWjz2wwgiHA290Kf/f1P2PSE+AHjR2CyPxwZ4WrrTI+RePPC6uEvb6D88uRkvzUQ1CffWtEDUbwChusbOSZnJlFHHSoNHpEY2GWl1eJTBwnoZoUewKBkI+ebb2vlmmEzysi8WEyTyb5Co4zVFyiOAy73ts7giCQjPuHRAoi2IMeW3sVsokQABPZSRzHxjs5SWbSRZIUJqdSgENuYoZAKIFH+fDw/vTEkOBgKuXFtm3mjh0BQUIUXGx72EA6dOo8oigh4CI8QESQzGRHk/iUcateomobPB/LIrjg2g6CIg3Xk+MwJivU6nW2ey1kVeULyXF2jT6lWpeX0pPYls33t++S9QfJCAKmxyKgasgjJTnCExtcPcjLL73MwHQOMs++8dsZRFnGsSxMs8fNq9scPbrIWNz3uTAcRvjV8WAU5/1rRBClg7N0WfcxPeV737MS4geSLESS8V+N0/ThhDYBSRIAEWl0hH5ocTSS4Mev/QHiPdNFYEizhLD/GlrmANt18MoKmiTjuC4OICFguw61QY+4x3f/OUAWR0pyhCfpMYsyD3aGkfd7qYmKgqzInHruwihZZ4QRRnjywl0Qkd9vdwsPv45qng+9riCSuZeg8zm230e1CU9XhY4U5AgjjDDCyJMcYYQRfhWYloVt/+pMVPu81KiKguu6GKb1idmsXHeYra4qo4SyEUZKcoQRRjgkcBwHy3KG2c7C8BxyeJw0PBcSBB5K4HFdlwe5YoYcyRau66Io8kd2QnE+hmXGMIacy9Lo8PGpwHYcHMdB+Jh4p207mPsNJT6vkEQJ8VMoTxkpyRFGOIQQReH+hrfaXLm9zekTR8E22ClUyWVT9NpNqq0euUzqYREqipiODcKQ+GPt1hVubpaJhL3U6l1efvVVZLOOKQeI+jwf+z3c0XQ8NfT7A1zX2Sd7kJAlCRcX27L2DRzhQJl+rsX5p7hIH39UXRfLHvab+43VN7ouzn7q+2/is2zHGVnMTwjXGyX+4ZW/ZmDb/NdHX+RvZWY/cM+1Rok//ph7Pr8QwLUoFivcufQT/sUPrvL3/uiPeP5ojvX1LbKpOGurq5QqTSzLRjA65BtdTp08gX7Qd08EXH7xw+/xr16/TTioU+9YpGYWyagFuh6VgDDg+u1VvIEwiUQcZ9ChWCrTdzVOHV8Ycb8+7VUgCEiihCRJDHotCpUGgqySSCbwyCKmZR/M0WFhL/us4d6o9gDPRykQZJV0IkSnWaM7sB5KRR/SYwkHISDXdffrugRsx0EQhknI9649XO/l7tNiiQ+FkhzHQdZ0AqpMs9UGQUSSPiVl6bq4kkouHaNYyOOMRMOvjarR5/XyNoZjUxh0PvE9n19PUsI1i/wf//h/YWW3Sqvd4a1Lyzx/YhrHtun1+lSqDUr5XZRgkOr6ErY3xtxRG12+d4Y49C5e+863uLFRYK3Q4gtf+TbHp5LsrW9jqxaby2s4gsz2xgb57Q0EWSS/myeamsRyQR6VJR0OQa0orFx/l//xf/1TvMkJzp45zdd/5+tkAp4DutARnjiMAyVZrTX/Bxf+G+CRbSxcx0H0BPjOt7/L6z/4f7m6VkVVpKH3JYh86Yu/xfq1txETC4x527x9Y5OAV6XVNYj4fViDHoYNjuugSNBsDTh16hz5rZtUWwOisTjmoI9j29gIyKKEpspYWpBjuSA37m6gyiK1RotPo6eW7cDC4nGE9i6W7SI8ogP2YGDQanfodHuP0LHDLiCWPWIYOVhd3T4+S0B1BOzecOw+yT1P5bsbxmN1ATFt+1Ox3h3HwXZcZEHkxVe/wlShyLVbqywem6XV7qFKNlduLROOp0nlcji2RXB2ga4rIVkGrbaBadmAi2GY+GNz/NHf/zv87OIO3/7uN7AHPRQ1wPrdO6RTUXrlCuNzR7BbJeRQkngogCH6MfodutbQIJY/4xGWbrf3WF1AbMf9jdYz9/oDRAEMy6bd6aEHY8xOZrn93pu4nji///ULGIaBZQ/PLkd4PFi2Tb/X/7C5tPuDwT8OBXx7sN8qa4QRRhhhhBFG+CD+/wEA+fhHogdMGBYAAAAASUVORK5CYII=\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/assets/img/dashboard.png\n// module id = 625\n// module chunks = 0","module.exports = \"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/4gKgSUNDX1BST0ZJTEUAAQEAAAKQbGNtcwQwAABtbnRyUkdCIFhZWiAH3gAEABcAEAA4AAxhY3NwQVBQTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWxjbXMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAADhjcHJ0AAABQAAAAE53dHB0AAABkAAAABRjaGFkAAABpAAAACxyWFlaAAAB0AAAABRiWFlaAAAB5AAAABRnWFlaAAAB+AAAABRyVFJDAAACDAAAACBnVFJDAAACLAAAACBiVFJDAAACTAAAACBjaHJtAAACbAAAACRtbHVjAAAAAAAAAAEAAAAMZW5VUwAAABwAAAAcAHMAUgBHAEIAIABiAHUAaQBsAHQALQBpAG4AAG1sdWMAAAAAAAAAAQAAAAxlblVTAAAAMgAAABwATgBvACAAYwBvAHAAeQByAGkAZwBoAHQALAAgAHUAcwBlACAAZgByAGUAZQBsAHkAAAAAWFlaIAAAAAAAAPbWAAEAAAAA0y1zZjMyAAAAAAABDEoAAAXj///zKgAAB5sAAP2H///7ov///aMAAAPYAADAlFhZWiAAAAAAAABvlAAAOO4AAAOQWFlaIAAAAAAAACSdAAAPgwAAtr5YWVogAAAAAAAAYqUAALeQAAAY3nBhcmEAAAAAAAMAAAACZmYAAPKnAAANWQAAE9AAAApbcGFyYQAAAAAAAwAAAAJmZgAA8qcAAA1ZAAAT0AAACltwYXJhAAAAAAADAAAAAmZmAADypwAADVkAABPQAAAKW2Nocm0AAAAAAAMAAAAAo9cAAFR7AABMzQAAmZoAACZmAAAPXP/bAEMABQMEBAQDBQQEBAUFBQYHDAgHBwcHDwsLCQwRDxISEQ8RERMWHBcTFBoVEREYIRgaHR0fHx8TFyIkIh4kHB4fHv/bAEMBBQUFBwYHDggIDh4UERQeHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHv/AABEIAIAAgAMBIgACEQEDEQH/xAAcAAABBQEBAQAAAAAAAAAAAAAHAwQFBggCAQD/xABFEAABAwMBBQMIBwUFCQAAAAABAgMEAAURBgcSITFBE1FhCBQiMnGBkaEjQrGywdHhFSRjovAzQ2JyghcmNTZSZHST8f/EABQBAQAAAAAAAAAAAAAAAAAAAAD/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwAkg10DSWa6B+NAqDSiDTdJpVJoHCT3Uqim6DxpdBoFk8q4mSWYcR6VJdS0yyhTji1HASkDJJ91ejhQa8rLVTln0VFsMZZS9d3SHSDyZRgqHvUUj2A0Al2o7Rrpr7UaosV19qzNubsSKOG907RQHNR+XKpOy7IVXK2dsuS43IUnITmqrsrt5Lr14VGMgtndaRkAFXU5PAAd9GCw6tvMYB9MSwyoiFbrgZnkutjxBGKAG6s0tcdMzyzKQVIz6wHAj86kdFXS5abvUa8Wt7ccQeIPquJP1VDuPL4d1aD2y2Ri7bPRdo8WO6t3i2pxwI3fHNZ7tLYRHWy4Eko4EpOeHT8aDVUK7x77YI11icG5De9uk5KFdUn2HIod6wViR/qpHYtdSmFMs7qzwHbtA9OOFfhXWrz+88D9agIOwjjPnnujo+9RdSBwoSbBRmVcj/Bb+8aLaaAeZr0muM+Nfb3jQKpPClUmm4NKJPI0Dls91OEU1bPGnLZoFkmsr+WA7Ik7QbdFbbWtuLa0qOBkArcWePwFanB4VnHbxGjz9rr0V5pLjhs7K2kk43jvKB4+GRQRuz+yMTdCwYG8ptL6FFxSFbpJKj1qbRoe0afZ+hW8+444FYVjnjAAAFMdngXGtCY5BHm7y2gD0AV+tWTUV3hxojKZTm44VZaIVhRV3j40BARpZOvdjzVuffU2pp1XZltXHh08azTqXTknSd9csz5J3UlOd3d4Hkfl861Zscn6QdgwrPF83i3CNHUhhtS075bUQVBJHMbyc4oaeV7Ajx9UWmY2EhbrHZuDqQlWc/OgoWzuYWdW21YJCHkqQrHXeH54q06vOZQ4/Woc6RdKNRw0oUreadbAH20QdXq/fU8/WoCdsC4uXQ/wmh/MqiymhPsB4/tU8/QaHzVRZTQDXPCvs0lveNfb1AslVLIVypohXH2Uu3yoHbZ406bNMmj1p22c0DlNZk8sBiVC1lYbxFccYWuCttLrasEKQsnn7FVppBoc+UTpIao2fSnWkgzLY2uSwfYAVJ94TQZ62N6ndMubb7i+t1bqu3Q4s5JVjCs/KitHVa5EtMi4YcS1gpAPGgbsqt8h3UaJfZK7ANqySOea0Xs+sEafcU+cBPZIwVBQ4UBx0DBgosjL6Cy80MKZcWkFScj5HpWXfKs1jbrztTh2u2Sm5TdvaLMpxtW8kOKPFII4EjAz3HhWi7MwwubcdLJS4zEeb3oylJwN4p5o70g/iKyxfdh2p9O6udt+E3BkNCS3MbQUtOIOc8+SgQQRQROztK5GuG07pUA4PliiBq3hOTnvqa0LoaPZIqLk8FGYUqK88gT091Qurf8AiCc8t6gKfk/D6K6nwZH3qLCaFXk/DEW6n/EyPkqismgFRVX2aT3sjpXwUaBVCjmnDRpog0u0e6g6m3JmCgFeVuK9RtPM/kKYqv0/G81FZQP8RKj+FQcuQZV+kHJKUK7NI7gOH25qWZb3keGKCM1Drq62uOShmGp1R3W0lJ4n48qGN41BqPUs8267XKQ/AKSt2OMIbXx4ApHMZ6eFSesJAl3V1aVfRskto7j3mnGmWoxglEiKCoLIKiOOf6zQR1jtEWGUoisJbSBgAUSNHR48harc89IhundcZkJHob3TI5KHQikrHabept2Vjd7NOQCetd2/JYU/vFJ84QlvwHGgJ9vgS3fNpshK2psFJI3VZQ4gkcQevKp3U8EP2tL6UFW7xKefoq5j3GurO6ZECK7yy1uqHcRTm/LKIkdO+EgLyR34T+tAL7yhLbSggbo4nA8aD+q+NyH+Y0f58K13TtG48ncdHBRQQoA+IoN7StMXayTWn5TG/FdUQ3Ib4oUe49x8DQX7yf04tt0V07VofymimOlDHYGMWO4n/uUD+SianlwoBEFdxr3PjSAV4V0FUDhJ6UsXOzbU4TwSkqPuGaaoNeXFe5bJShwwys/ymgq1kUVvbxOSo5Pvp3frwLdHlNpV9KhA3fargKaaZAUpOegqq7UJRY1I2hKzuuR0qUPFKj+dA3Qjz64tRkkFOQFKz3n/AO1eW7c3HYSjd8T76otkzCjx5bp3XHpac73RI5D50Su17VCSe7nQcNLbYjn0t3PTvryQsC2KKFDKFJWPcRUJqO4IaW2wheDzNNo0l+YgRkr3EEfSL6JT199Afdn83z61IWFe7uNe7RUSZTbcOOpQUpvewOozx454VTNj9vuDN4duIuK/MVNBoxDxG9zChnl7B+lXrWcyNDaS5IXhS0pQhI9ZZJPAUA4s9nuSJyxFDoUpWN9AICe855cO6is5ZGLrpSTaLintUvMFClKGTvY4K9oODTDTranGkKUgIHRIHAVKatuabFo+6XQqCTHirKPFZGEj4kUA12EI3LBcQTkiYAfcgUSE0NtgpJ01PJ4nzwZ/9aaJCTQBkHxpRKhypslVKJUBxoHKDypC+KKbJMP8FQrtCutNr+rNjmcP7o/hQQenDutZPdVE1RI891w8lSQtEaOBk8cEqz+FXq1fRwFuHkEmhqxJS9cLhJJ4vSSkHuCQAPxoJ+4x1u2SO0jPo5J8M9adW/WEpm2iLKtch19Cd0us4IV44PI1GXC8LiQVOtxVyQ2nO6g8SOtQ8e8v3SKuSlpxltSseljj06UEg/LcXJXLlkoWfVbJBV8B+dSmmJjj8hQUcBXJPTNVJSD2pWeic8KsGzfemXlaU8Ut4HDvJ/Q0GjtnKSzCbHLODS2pI4f18yp/K0IiN9kk8kZJ3iPE4HwrnRykocQyOgqbusXttRMO45R0jP8AqNBMwI6W2UlIob+UpfUxNNwbE25h2c+HXEg/3Tff7VEfCik3huMASAMcz0rJu1fUS9Ra8lzQsmO2exjDubTwHxOT76ArbA/+VZh55mn7iaI6DQ12BK/3Qlf+cr7iaI6TQBME5pVC6bhQ9tdpNA6Qvh0prqBR/Ykod6APmKVQaZ6gd3YCUHk46lJ9nP8ACga+bqbsRBHrIOKCUNxxmZOaUf7OYefsBrQj6FOWxG439Hu8T3cKBcOB53r25Wxw7iPOUurwOO7uDP2YoJqFYb1fWQ5p9CSh5JSvfXuIaVy9b8s1ddO7FNSr0+0w3ebUuShJPZFKwlRznG/j8Km7G4iMlmPHQlptIACUjAA7hRc0s60uI3jIVn40GKdaWjVOndUi0X+DKg5Tvbrit5tzB9ZChwUP8tEvZFESxFbeVgKeWXD7OQHyrT2sNJ2TV1iXar3DS+yv0kK5OMr6LQr6qh8+RyKBp0lO0XfWbRLUXY4H7tJCcJeQOvgodR09lAQ9LuhNwAHI4q7uoCpjLne3j4H9aG1reU3OQU94okwlh5phZI4ZHyoIXabeP2ZpZ9tteH5KSy34Aj0j8PtrKN4UBchijVtTuq51yfByltglttJ6AHifefwoGXZwm4ig0BsCIGi3yOs1f3EUR0Koa7BDjRCz3zXPsTRFSqgCma7SodabhfjXQVx50DtKsHIqP1MrEFlfHg8M/A06SrlXNwY88gOxc4UtPonuVzFBLaUfbkw+y3gcDFCnXduVYNrUWS2jdauMdSM95H9CrHYLs7Ac3FZSpKilaeoI6Uw2lXmNP/ZkpwYegywpRPMIWkpPz3aCZsMrecTkgkUStK3dKJLLajwzQQts3s3kuIWN08edWIa705ZAl+7XiLHWg8W97eWfYkZNBqCO8lyMlaSOVR9/g267x0224JTlfptK+shQ+sn+vCsyak8qaHGgmJpSyvvvlJAkziEIQe8IBJV7yKomzfatd/8Aa3F1XqK4LeEtwMzCDhCG1YHop5JCeBwO40GmpNkmWu5lp9O8kcW3AOCx3/pVkhyd+J5kl1KHnUKSjjxHDBI9lWcojzYyQ4lDragCD05cCKqd8t0eztiRLlu+b9rlqSpP9gSeCVEfV7s/GgD2u1vNzZTUjHaoWUK93ChHcl71wB8aOm2CC5IzeoaQ+0pAElTQyAoD1/AEY94oDTFZnZ5caDQ+wtWNCoP/AFS3T9lEFtdDrYkrGg4+Osh4/wA1X1tzPWg//9k=\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/assets/img/avatar3.jpg\n// module id = 626\n// module chunks = 0","module.exports = \"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/4gKgSUNDX1BST0ZJTEUAAQEAAAKQbGNtcwQwAABtbnRyUkdCIFhZWiAH3gAHABgADwAnAAdhY3NwQVBQTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWxjbXMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAADhjcHJ0AAABQAAAAE53dHB0AAABkAAAABRjaGFkAAABpAAAACxyWFlaAAAB0AAAABRiWFlaAAAB5AAAABRnWFlaAAAB+AAAABRyVFJDAAACDAAAACBnVFJDAAACLAAAACBiVFJDAAACTAAAACBjaHJtAAACbAAAACRtbHVjAAAAAAAAAAEAAAAMZW5VUwAAABwAAAAcAHMAUgBHAEIAIABiAHUAaQBsAHQALQBpAG4AAG1sdWMAAAAAAAAAAQAAAAxlblVTAAAAMgAAABwATgBvACAAYwBvAHAAeQByAGkAZwBoAHQALAAgAHUAcwBlACAAZgByAGUAZQBsAHkAAAAAWFlaIAAAAAAAAPbWAAEAAAAA0y1zZjMyAAAAAAABDEoAAAXj///zKgAAB5sAAP2H///7ov///aMAAAPYAADAlFhZWiAAAAAAAABvlAAAOO4AAAOQWFlaIAAAAAAAACSdAAAPgwAAtr5YWVogAAAAAAAAYqUAALeQAAAY3nBhcmEAAAAAAAMAAAACZmYAAPKnAAANWQAAE9AAAApbcGFyYQAAAAAAAwAAAAJmZgAA8qcAAA1ZAAAT0AAACltwYXJhAAAAAAADAAAAAmZmAADypwAADVkAABPQAAAKW2Nocm0AAAAAAAMAAAAAo9cAAFR7AABMzQAAmZoAACZmAAAPXP/bAEMABQMEBAQDBQQEBAUFBQYHDAgHBwcHDwsLCQwRDxISEQ8RERMWHBcTFBoVEREYIRgaHR0fHx8TFyIkIh4kHB4fHv/bAEMBBQUFBwYHDggIDh4UERQeHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHv/AABEIAIAAgAMBIgACEQEDEQH/xAAdAAACAgMBAQEAAAAAAAAAAAAFBgAHAgQIAwEJ/8QAORAAAQMDAgQEBQIEBQUAAAAAAQIDBAAFEQYhEjFBUQcTImEUMnGBkUKhCBWxwTNSctHwIzRiguH/xAAWAQEBAQAAAAAAAAAAAAAAAAABAAL/xAAXEQEBAQEAAAAAAAAAAAAAAAAAAREC/9oADAMBAAIRAxEAPwCj4kbYbUQ+HyUNgH1bmveHH5bVteVwvqOPlAHKstNy3xsFPQUyW+GNjjNadnYDqQlWy+gFMceM6wkFSCAD1qqEbdFHCnOaKphkkEisbW0FIQcUwxoilgbZ2oQW1FOMjYfSiEWOEAdvpRJqAoJxw7V6GKpDeAM4o0hUphKhnG59qC3GAhXQfamhyM7zKCaE3NpYCspIH0qBGucQIeBAynlQSZDStWCkb0z3wlssApxxOJTjHc1ouRyXPlp1Fd+1NkZAKT3FDZMCQ3/hukjsac32MA5FD5TI7UokyVSW8hxrI7ihkl5tWeIFJ9xTlLjjf01qP25os+tsHruKkxiMZxtW/BhodkOhY32AFekJnltW6mFIdeAhoKn1pCU4HIlQSFfbNSbS40vT9odvcm3vOxmUlTqmE+aptI6kDf69utDLH4x6QnyRClOuxgs4Qt9rhT+d8fen6xpNnbajJkxwoKCHjx5LhJxkDtWrqHQGm7vKabkWyL8O6okp8oenuEkcvahGmxR23oyJEVxLzSvUlQOQR7EU12+KpbSTwlJFVrB8Mr1ZWDK0RfnGuFP/AGryinIHQEZSfopJ+tF5XiBc9H2n+Yantjq4yCAohgtOqBOPSRxMuEZ5BSDgcqEs6FbVONelJKuVZm0LQoFxSEj3UKR7Z4z6OmWsTLfemIiVrDSmpR4HuMjZIRzJO/y5pY11qNm5Q1uR9SS4p5pDcJ5PF91JxUVtzUMtt8HChWOoNB5UaItoKWAM8zVMaP1A0oltV+kNuI2V8UFhCh34iMD803601C7Y7FEuReZeYknhaWh1KkqOM/MDirBra1hBZkFKIrfEpCwrbfGKFrt/qVtj7VX6tSXW5z0vt6igR2s8Rbac4/t6aZLF4iabQGoF9ukeHJdcWhl1xQ8tWCBhR5oO/wCoAHOxpTelwTvkUHmxFAZxTxJYSpHEgpUlQyFA5BB6ig02Nz2qRKdiqU4E4O5rzuTIbYP0poahcTqlY2SKEaiZ4WyjHOlNKG2MCjNofMC4syCkKQfQse2Qf7VpQ29httW+62tERTzeCtohwDGc4OT+1VQ5B0ylu4JjKWotSZQdZfVsFtqOxz1xuMf7093iHFhsx48dJUgL2zzz3NaFhuMO+6e+Ee4GgAFcSHAgtEbgg9KJPufEOJX8x3xjvWSMWcFKUhtOcjOcdaIXOA2YT0eSwtcGSR5gQRhJPPIIwQayskbymgrdW2cUbhNx5EN1mT60L9JzuPtUlK6l/h10/JvduvdikSrYhl9x53iWENKy3hPAOm+OWBjNV3rDwqhTbw7aU2F5+YCB5iHV4WOiic4rrQw5Mm0tMrmBlMccKlAAkgcuftS7dI8Wy8br11jFKxjicaHH9NjVoUfZfCbVWmrLDg2YDz3zg8C8lON0pBOcHPU7AV7eLX8ONgtnhW3PgMuO6pYU3MnyfiF8Elziy/hGeEfMcYHSukNFJjuxRNbjyFrWnAfdGMp6cI6D+tZalhG6W+Q0F5HCpKk/XY06nA0PQKpfHMiLnpmIAUFMvlKBj2Aq4PEPw3g6qsunrPDtjMV5ENoSbgUjzWWl4U4OL9asZASepztimGxmJFjS4b0dXGytTaw2cHION6dbKW3rDDcayUKaGPfG352q1YAPwm48dEdlsIaaQEISOiQMAfgUFnM89sU4T2eeBS/MYKl8OOZxQQhmNiOVEc96VNQp4nykdKsGayGYx25CkK6DjeWo96YGMFhW2U0A8V9asaLsjbbbaX7nNBEdtXypSNlLV7b4A6n6UfOvdAwZaocvUEQPpGSlsKX0zjKQRn71y/4half1lrKRdXQWmXFhqO0T/hNA4SP7n3JpkDqvRzjEu0IWE8SVhJPuDvTxapY+KQFZwFCq10C38HHftHESYqix8254TgftinK1OKUotuZ40jI98UUrWhSx8IOE4z3rZYmOJPA3gknb2pRt7ylRkknHsTy/+UetDityo49OM460Fr6p1O/CYMWMCt4jPCnp7ntSvZ2HLhcFP3MKdyDxK/y+yR3FDNVDULU+e/ZQ09LLilpakAlKxtgbdcA4or4f3W631hwsN21qShp9xTOFBxKWzg8SCcpJyKQwY8QdQ6RW5CLAmMMuFKFrVhRRnYEd6KTfGeD/AC55am0NPOowWlbEHv7igur9L6sll0vWVLreWyr4dfq4l/LjO/t7VUmoBcUanRYXbMth5TPnqdecB4QTgZHc4O1SEDqqbfNQTZESOUuyHEpSAMcR2SNu5OKv+0Why12KHAWrjcYZShZ7qx6v3zSD4TaMixJSbm635hjL4uJXJb3T7JBz9SO1Wa9K3walAWeysJOU0Ibj+ZLGRsnemSQ82pJGRQ3zGm1rO2TQS/qXDcZQ6mkCcgZJp31O+l4hKTypNufpaUfakOOG1LiP+dgIXjZJHcc68lPKkTA68oAqUMkDGKxKlOk5VlR79awSCSccxyrbLre2uHzY17bBSJaAiQkfpfQkBX5ACh3p6grRxoeBwSnf3FV/4ZPs3S2QIbqw01e4DTjLix/gy2hgK+/I9wT9nCyyvKJiTEKZksLLbjKxulQ5j+4PUVitHO2vABOF4TgHA3zRyI6pIKupO+R+1KrDqUIStJSEntvW+iY882ltBCAkjiyeYHagve5yURr3FCkkqecGMAZTgZ3p0NrsE+Gqc9BAllsoccjuFmRg/NhacHBxuM4qmpV4bm6tHAvidgr8pASTnKtt/sf+YqwpDUwwlFKlJUhPEClW3XINQCdU6tv1p8wWfU8pbAVxeXNjIdcSQMY4sDIFUHqvUitO+ff7g+/LluJwlbu6nOEbD2HIUz6zGpXp7i3Vhpgp3UhXpVg9Kofx1uHFcIdsQ6taWkca1KVniJ/2rUDr3+HXxGs/iFoZDUNlqDdLcA3OhJUVYyTh0E7lKtznocjtT7JZUDX57eBPiG54Z+IEfUXwQnRlNKjSmOMpUppZHEU9OIYyM7f1r9BtLai05rOxNXvTNyYnxHU59Bwts9UrTzSodQaLMMofKTgHpQKeSCcE01XKOQk7b0s3JspJyKCW7hvnO9K2onPLjkZ5003AYzmkXVz/AApUM+1Ich1mMn1g7isK+g4ORW2V4+EN4W9oaMhC8SLTNyk8WSEqOeXQbn8fXPQ1/tq9U6UjatsqSq5x2gJTSOb6E8x/qTuR3HEO1cf+EdwMe6TYPGhKZkbCQrbiWk5AH24vxXTWjdVzbNYLjCt6+GTIWyIpUnPAt3YnHLbB596zYY2tK33jSELcQtC9sHpRxU0sAvMLBQnfGP70party7Re2ruGFMw7gcODmG5AHq3HILIJHuDXtHuLcVrieUpxHM43/wCCghGo47rOoP5/ZCp5CiFSoaV4cQsZ9aB1+nOiUPxLWmUXET8JQglaVKwVKAx6vfP9KFXRb93cxGZMdrorHrV/tXhpPRulnNUx5uqpq1MrcLDDClLV8Q6rbcDPpTkZJ2yRUmjqnxIgOR5TsqXh3Hy5z05bD6VzdqK5ru94kT1gjzFZCSeQroDxNtFqj6OuVyh2yOy6+lSipKMcCFZ4UjtgY/r2rm6tQV9A2JNMGjdVXjTE9Eq03GVDWDnLDhSQRyPv96Xq+0h1Rof+JqYgsQtZQEzW1gBM+KAlz/3RyJ+mKuGz6r0/qq3fH2O4tS2eSgNlIPZSTuk/Wvz7U8opAycjlRGw6gu9knpm2u4PQ5GRlxtRGfY9x7Gs3k67luZQQogiq31bHddUrg3yaUNIeNbNxS1F1A2iI8vCA+g/9Mq9x+n68qdZE5t5eTgjHFkHmKsTkWpUqVoNi3yVw5rMpv5mlhY+1dL6DkfzuFFusRZU00WnFJUnYhKcKSfoVVzBVm+BetjYLv8Ayee6BbpivSVHAacOP2VgA/Y96KnU5QqbY5NunoL1vmoK8g5UwSc5HuFYUPp71XbDkm1XBy1XEMqdaGzgxh1H6VpPYinOxXYsNMvuZUwVFpzskDO5oB46shUXT9zt7fHJXIXHPAMlQUniSPylX5NZaRL6pUhmHH4fMfWG0YGAMnnt0615RoT83Usow0ZiNt+Qw816/QgYccBxuVqV+Ce1fbWxJs7aWygSbzMaLTTKFYTHQr5lqV3xttyyd9qH6+1dadC2pTLkxS7q6ySkN7FZ2HCAPlQMc/aoFj+IS4s2zSirZ5qSuapKG0pVnjSCFFY9hyPur61ztR3WWqLnqi4IlXBwcDSOBhlPytJ7D3PMnrQKtQJUqVKUlSpUqT7nbFWB4Z62XbXBabo6pcR08LLqjnySen+k/tVfVKklSpUqSVKlSpOivALWC7raVWe4KLr8f0qUo7rSeRP4IP271ZN5cUiypZcIV8JJbfQpQzjpj8KrknQl7csOpYs5LhQ2T5bpz+hWxP25/auqZ9yYe0pImqCW0txVKUVHOyUZ4j/Ws0wH1fqeFoawSrpIUJF1l+hpBO5/8Qem2Ce1cv367Tr3dX7ncXi9JfVxKV0HYAdAKLeIep39UagdllavhWyURkHon/NjueZ+3alumQJUqVKUlSpUqSVKlSpJUqVKk//Z\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/assets/img/avatar1.jpg\n// module id = 627\n// module chunks = 0","module.exports = \"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/4gKgSUNDX1BST0ZJTEUAAQEAAAKQbGNtcwQwAABtbnRyUkdCIFhZWiAH3QAKAA0ADQAnACBhY3NwQVBQTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWxjbXMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAADhjcHJ0AAABQAAAAE53dHB0AAABkAAAABRjaGFkAAABpAAAACxyWFlaAAAB0AAAABRiWFlaAAAB5AAAABRnWFlaAAAB+AAAABRyVFJDAAACDAAAACBnVFJDAAACLAAAACBiVFJDAAACTAAAACBjaHJtAAACbAAAACRtbHVjAAAAAAAAAAEAAAAMZW5VUwAAABwAAAAcAHMAUgBHAEIAIABiAHUAaQBsAHQALQBpAG4AAG1sdWMAAAAAAAAAAQAAAAxlblVTAAAAMgAAABwATgBvACAAYwBvAHAAeQByAGkAZwBoAHQALAAgAHUAcwBlACAAZgByAGUAZQBsAHkAAAAAWFlaIAAAAAAAAPbWAAEAAAAA0y1zZjMyAAAAAAABDEoAAAXj///zKgAAB5sAAP2H///7ov///aMAAAPYAADAlFhZWiAAAAAAAABvlAAAOO4AAAOQWFlaIAAAAAAAACSdAAAPgwAAtr5YWVogAAAAAAAAYqUAALeQAAAY3nBhcmEAAAAAAAMAAAACZmYAAPKnAAANWQAAE9AAAApbcGFyYQAAAAAAAwAAAAJmZgAA8qcAAA1ZAAAT0AAACltwYXJhAAAAAAADAAAAAmZmAADypwAADVkAABPQAAAKW2Nocm0AAAAAAAMAAAAAo9cAAFR7AABMzQAAmZoAACZmAAAPXP/bAEMABQMEBAQDBQQEBAUFBQYHDAgHBwcHDwsLCQwRDxISEQ8RERMWHBcTFBoVEREYIRgaHR0fHx8TFyIkIh4kHB4fHv/AAAsIAIAAgAEBEQD/xAAcAAABBQEBAQAAAAAAAAAAAAACAQMEBQYHAAj/xAA4EAACAQMDAgQGAAUDAwUAAAABAgMABBEFEiEGMQcTQVEUImFxgZEVIzJCoQhSsTNy8EOi0eHx/9oACAEBAAA/AKtYiXLhsj2r3w8bf3YNOfw8Y3ebin4I5Il+RxT5aTZu3A49KSK7ugCSmRTr3TPEwMeM1BWVoB8sZbNOXeovLGiJbFT68VFaW6H/AKQ/VTG+JeFD8NnFLcTXK2+PheftUZLmXy1BiwadF55aEGBiaZS4dQx8o/MaD4+QvsEByKlR2ZVMbxQ/D7RkkHHtSBZHQ+WMmvW7yqhEg+YUqTYUkq32ojJkBQCDUC/1W2smAuLhYzkfLgsX+mADVTqHVelWZ2Pcl5OCVVM7QfRj2z/59aiRdeaP8TGJYrhI84LYBI+uPb91c23UFjet5dpIkjg8AsPm9sehq0j1t1h8sW7bh9KQavJLCwkiYH0FRkvFxhkYGvNdpnBJFK1yABw3B9qCO5jExYqxyPapovARjYRSRT7pNpQ7alRMin+lhUGdpVnJSNiufSvLMD2Ru/tWW6v6oNiyQ2EsbTEncMZwAcd8+/oKz+laf1Rr10TZWl5cyydjsO0bu59vp9q0sHgj1zcRiSWzt48jOTIu7/5pjUfBbq62gMkdi07AHIQ8g1i5dI1jRrg/FWU8DRN8wdCuP/O9dN6d1q3vNMSaZlSVQFYE7i/HJGPY5qzjvrUjBLflCB/mlM1q0g5Uj7Ukptycjb+qYS4jVyjY/VI80BfIwRj0FFHIePlyPtVraCNFBbFSA0Wc5AApRcJ5hAUYx7VVdWapBpHTV1dtgSFSkWByXPaoH+n/AMPLfqGRuo9eQzwRSbYYmPDsPf6CvpHS9PsrFAtvbxxL7IoFT2ZM/wBNOxGIgZH+Kg6701oetREX1jBPuXaSVGcV81+M/TJ6DubabTd8dr5u+EnkEZ+aP/8Aa9FPZXVuk8OySKVA6OvqD/wR2I+lORrCF7LSqIeclcfek2W5JBC0tlFbo75AP3pUlB7JmnRIxAJGBTsbHHP6oopxyOKxXiw8kzabao22P5nPtuJAH6AJrvngrDBb9Cadb2YLoEznH9RPJJreiaCL+uRAfbcM0iX1pL/S6Ee4bNOxXVshAYr+6mbo3TMbrn2zXMf9QdgNT6CuLZlQTiRTF5g4LZxj857189+FU2bW+sJgVa3lD7W+uQQfyK3lvHbv3x+69NBbEEAAH71FiggG4sR+6WJbfnJH3zSoSqEA96KF2bKkg04u7djAxSMFRv6QKwXizLIt7YW0W3DxllAPO7cRz9Of+a0nS9nqiXUUWq61dT6HFpyXFnaxzMIssxXDouNxBBOOc5FV/WL6RFIoXWnhuz8rW1uFBA9jsXAP0zmrTpG66mnv9G03prW3g+PnaGR5YhJwq79208ZADc+uRmi8RNU600bqa+0jWNdd4YAjRNDbrGJFZcgkD0+nbP2p/wAOtQ1C+Mjvr9peMgJNtJFFJIg9TtzuP4ofFK4vYFsrnRNXl/hNxG7ahatMz2yFGQCRAc7dxccL2IzWa8PbLzrnVtUZyDLcGMKO3+4nP3NaeeE4yrkH6Gm4onc4LmluLfavDM1DbQJn+YeD9anKg2liRigRUyT61KhIVcAfmkkbIyKofEToqW/uNEvI762kMt0llPGpIaPewx3HzYyRxXbNV6StWtbUWlmkkdsnkGBW8vdCSMgH0IIBHvyMjNZjVOi+lo51Dx28LxLiJRbMWXn04NXHht01bW+pNqkVibW3t1aGxV02uxYgyylf7c7VUA84BJ74qX4r9JR6zqVvfNbC5hlt/ImjVdzDaxdHUepGXGO5B45GDi7Hw40e1vxeT20Ymddwki8wSMfcKATn8VadTeHnndBa+Xikid7Mm0ifHmIFPmFnxxuZhyPQAeua530v0++mdDWd0+pBpZ2MzWwjI8pHzsO7sSduSPTIqRFyOZM/mglDAERsd3vQReeeHbJopY5GwfMxVgINzYDGm3haOTG807EG3Y3V4IRMpLHbuGftmui9QaHJfdNWtvZxR/xCG9S8tndsAbH3n75UEfmtjBdCSLI4pu5VZI+zPn+3PB/FYTrLXOp7LXLKw0+zjj05AZLuWRGJf2VSO1F0xq3Vl1rvwUemCfSJ7fet0zneko+/A+1bvRtVDM0VxlJk4dDwQaLq2SW76a1G1sgrXM9rJFECcDcylRz6d8/isF1tZ2cvQ2mCxQxxRJFAuPUoGB+/vXPbbTMJzLg1ISxRc5kzR/AAjIamZrNi20NwalGJlYYavSQo7Z3HNIsCoeG5NEbfPIeum9B3sOoaWkV0ym409du4tj5PQ/rirK3ZUUOCCh5B9Kem1W0sLc3Vw6RqO7uwAH5rHa11/wBLAt5t8bjPHyDg/Y45otF8Qul7IqkTXeJBvB2k49McDFXl1qFlryw6rpTscDBkKld459D3wRV1pUOWiMnLMCACe/HaufeK2pi11K20OyiCRWal5Pq7gH/A/wCawr3U/J215JbiQgKQDUtVu1Aw4NDceckZkJyR6U88sZ7tRDbkfNwfejMce8HfSSE7vlwaZlWeRJYo5Xi81CjMjYIBrd9A6sdQ6Qs/MXy5oFNvKmOzIdvb7AH81a3cdvcW5juIUlhxyrqCD9way2sa1e6ZuNlp/wAUoOFQIBx7Din+lupNdvrhVuNIezjb+3OP8AVr7mZdykjAZQMfWsl4m6vcww6ZBYSyRTLKZ96NgrtG0f5J/VYO6ku7qVp7iVpppDl3Zslj9aH4O5ZcnAzRW0NxFNkjIqdHLKXKhV4PNNXUsqMBtBz2FNPDLuHYgUcqyOQFxwKcihlIwT3omR4lLGiimYcmM1q+loZpOnZLu3Xa6XLZHvwtOQdTR6cS2oQt5WcEjnH3qXc9c9Pi2LQKkm44yMH80uleInTsNuVunSMKRglcE5pq41s63eqmmxlkZuCRgAVlOu/iI+p5rYozpbxxxhs9ztBJ/ZNVUQk3A+XwKlrKJOBnI9KXcEP81cCkjMJLGM8tQXIyo2jJHemG84sTtyKDL+Z9fapUTEYYntRXEwbC7c/Sje7jCAbe3eujeGXl3fS0kiEMr3Mg/IwDULqHpxbh3CAqrZrmus9ET2szNEI3BOPbH1470eieHN5czpcXW1V3bgByTXYeidAjsIlLIAwGKw3iGVj6q1SZXWRVnVZQp5iJUYDD0z6HsfvWdW4jyTkkYps3cMT5XIJ+lKL5JeG5oI54w2ApFEJsMTzinVlIUc1GndxPwpwfpXhKxfad36pfNw2Tmnbq0vD0/qWrxLstrNQJJWOAGYgBR7tznFdD8CWRPD21hWTe63E4k+jGQnH6IrZXcakcYrO6xGVIxHvOexFS9IDKgZxtHbFaWx2hAfcV8/8AjM8sfiDqd7pgDT2JEt5Ez8SQeUjMMeuc/tQaCVIoXRo23QSKGiYjupAI/PNVlxLF5rcg896JJoQOWFEk8Z7dqd81U2nPepmYwQPanXkiOCMdqK2iEgMmBtH9x7funLKzfUtTg06x2T3FxII0VRkAnPJPbAAJ/Fbnxs0mDRfCGDRbMqsbX0CyO3G/AZ3Y/fbn9Vz/AMC9a/gtz/BLpyBd24ulXacIRgd/XIIz7V2g3KzwiRG4NVF9OAx3Me/tT9pNuiAXIAo5NcS1QlskL6CuZ9ULC93r1+y5udQieaUE5JCxFQoH+0Afs1d6p0dqGj9M6dfwn4uxm0+DeTHloW8pf6h6jPqKwEl1o1wxinje1m4B2KwGf+1h/wAGjTSbWVsW2pWMx7bWlCN+jTtxo17axs8lq/lr3dCHUflc1D/llcbhirbyQkTSTSFmwcLCu7kfU4A/dQr7Uvh4i62UUeeEaaXec/8AavHv61WzSTXcoN3fXBhRcsI1CD9nP+K0Pgzq2laPq9/1NNDNO8UJtrOAH+9zySx7YVe/J+apHiv1pq/UOm2sd1ZrLafHoFs7YYLFkcDLHk4z9Kymg6pPDqaSbo0kjzut3t3V/sCRjPvj05ruXRKXOoaZHPBC729xGJIXHzKR9COO9WE/T2syy5XT5GHuSAP8mraw6auktiJmjiYj33Yqk6k0HSYdPuPjr0zHy23RnGGG05BH2zXDtFkmg0rWdLknPn6K08VnNI24+SYy8at7gqQP17V9YaHGqaDYQuAwW0iUg8g4jUYr5z8QtJj0/q/V9LRAI5GcRemzOHUD9jHtVNo9xHqWmg3G4XMClJc9zjjn6/Wpuj6lPFpkb+bmeBvLLf7uex/FHfaXa6kGubCLypmQSNCD8rAnBK+xyO1UGq6qskTRxyBpAcud3b2qla8lnfdvyV/pPc/in3lK2L5YsWU8mrDosbenVHHzXDt+AFFWVzZXepiysLDyjcyahEEMh+UfK/J+nf8A+6rRqVjZdRQ6Pe27X6wkyXJS4VgmG4Acj5lbBycA7SBxXePA+zuIelHWKcWsEl1LJDDCg8tEJ4CgjIA7Y+ldDW2uz/XqD49f5aihltLVgVlaS4J773OP0OKyXXuu6NoOnz2zrA9xNEy+SGCKqkEFnb0H+T6Cvl5brTbC66sWfUZrtJrGI29xEvHn7NiqQO4BIX6HHtXeOm/E3UbJltdUt0vIY1VQ0eI5AAB+D/isp4o6rZa11WL/AE4uYp4IndZE2sGAKkf+0VgunZZl1O9j3YzITg+ueKXRZA2sX9o24RzSZC/XHpUzp/UV2WEE5H/Wa3Zy39r7u/2ZVNf/2Q==\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/assets/img/avatar2.jpg\n// module id = 628\n// module chunks = 0","import React, {Component} from 'react';\nimport { connect } from 'react-redux';\nimport { Link, Location } from 'react-router-dom';\nimport Auth from '../../Auth/Auth.js';\nimport { AUTH_CONFIG } from '../../Auth/auth_variables';\nimport history from '../../history';\n\n\nimport { validationRules } from '../../components/common/validationRules';\nimport Input from '../../components/common/UI/Input/Input';\nimport loading from '../../assets/loading.svg';\n\nimport Blank from '../../hoc/layouts/Blank';\n\nimport config from '../../../server/config';\nimport axios from 'axios';\n\nclass Register extends Component {\n    state = {\n        registerForm: {\n            firstName: {\n                elementType: 'input',\n                elementConfig: {\n                    type: 'text',\n                    placeholder: 'First Name'\n                },\n                value: '',\n                validation: {\n                    required: true,\n                    mustMatch: false\n                },\n                valid: false,\n                touched: false\n            },\n            lastName: {\n                elementType: 'input',\n                elementConfig: {\n                    type: 'text',\n                    placeholder: 'Last Name'\n                },\n                value: '',\n                validation: {\n                    required: true,\n                    mustMatch: false\n                },\n                valid: false,\n                touched: false\n            },\n            username: {\n                elementType: 'input',\n                elementConfig: {\n                    type: 'text',\n                    placeholder: 'Username',\n                    autoComplete: 'username'\n                },\n                value: '',\n                validation: {\n                    required: true,\n                    minLength: 3,\n                    maxLength: 15,\n                    mustMatch: false\n                },\n                valid: false,\n                touched: false\n            },\n            email: {\n                elementType: 'input',\n                elementConfig: {\n                    type: 'email',\n                    placeholder: 'Email'\n                },\n                value: '',\n                validation: {\n                    required: true,\n                    isEmail: true,\n                    mustMatch: false\n                },\n                valid: false,\n                touched: false\n            },\n            zipCode: {\n                elementType: 'input',\n                elementConfig: {\n                    type: 'text',\n                    placeholder: 'Zip Code'\n                },\n                value: '',\n                validation: {\n                    required: true,\n                    minLength: 5,\n                    maxLength: 5,\n                    isNumeric: true,\n                    mustMatch: false\n                },\n                valid: false,\n                touched: false\n            },\n            password: {\n                elementType: 'input',\n                elementConfig: {\n                    type: 'password',\n                    placeholder: 'Password',\n                    autoComplete: 'new-password'\n                },\n                value: '',\n                validation: {\n                    required: true,\n                    isPassword: true,\n                    mustMatch: false\n                },\n                valid: false,\n                touched: false\n            },\n            passwordConfirm: {\n                elementType: 'input',\n                elementConfig: {\n                    type: 'password',\n                    placeholder: 'Re-Type Password',\n                    autoComplete: 'new-password'\n                },\n                value: '',\n                validation: {\n                    required: true,\n                    minLength: 8,\n                    mustMatch: true,\n                    mustMatchField: 'password',\n                    mustMatchValue: ''\n                },\n                valid: false,\n                touched: false\n            }\n        },\n        formIsValid: false,\n        loading: false\n    };\n\n    componentWillMount() {\n\n\n    }\n\n    inputChangedHandler = (event, inputIdentifier) => {\n        const updatedRegisterForm = {\n            ...this.state.registerForm\n        };\n        const updatedFormElement = {\n            ...updatedRegisterForm[inputIdentifier]\n        };\n        updatedFormElement.value = event.target.value;\n\n        if (updatedFormElement.validation.mustMatch === true) {\n            updatedFormElement.validation.mustMatchValue = this.state.registerForm[updatedFormElement.validation.mustMatchField].value;\n        }\n\n        updatedFormElement.valid = validationRules(updatedFormElement.value, updatedFormElement.validation);\n        updatedFormElement.touched = true;\n        updatedRegisterForm[inputIdentifier] = updatedFormElement;\n\n        let formIsValid = true;\n        for (let inputIdentifier in updatedRegisterForm) {\n            formIsValid = updatedRegisterForm[inputIdentifier].valid && formIsValid;\n        }\n        this.setState({registerForm: updatedRegisterForm, formIsValid: formIsValid});\n    };\n\n    registerHandler = ( event ) => {\n        event.preventDefault();\n        this.setState((state) => ({loading: true}));\n\n        const formData = {};\n        let authResponseData = null;\n\n\n        let webAuth = new auth0.WebAuth({\n            domain: AUTH_CONFIG.domain,\n            clientID: AUTH_CONFIG.clientId,\n        });\n\n        webAuth.signup({\n            connection: AUTH_CONFIG.connection,\n            email: this.state.registerForm['email'].value,\n            password: this.state.registerForm['password'].value,\n            username: this.state.registerForm['username'].value,\n            user_metadata: {\n                firstName: this.state.registerForm['firstName'].value,\n                lastName: this.state.registerForm['lastName'].value,\n                zipCode: this.state.registerForm['zipCode'].value\n            }\n        }, function (err, res) {\n            if (err) {\n                return alert('Something went wrong: ' + err.message)\n            } else {\n                return authResponseData = res;\n            }\n\n        });\n\n        for (let formElementIdentifier in this.state.registerForm) {\n            formData[formElementIdentifier] = this.state.registerForm[formElementIdentifier].value;\n        }\n\n        setTimeout( function() {\n            formData.auth0Id = authResponseData.Id;\n\n            axios.post('/api/register', formData)\n                .then(response => {\n                    webAuth.redirect.loginWithCredentials({\n                        connection: AUTH_CONFIG.connection,\n                        username: formData.email,\n                        password: formData.password,\n                        audience: AUTH_CONFIG.audience,\n                        responseType: AUTH_CONFIG.responseType,\n                        scope: AUTH_CONFIG.scope,\n                        redirectUri: AUTH_CONFIG.loginCallbackUrl,\n\n                    });\n                })\n                .catch(error => console.log(error))\n\n\n        }, 1500);\n\n    };\n\n    render() {\n        const style = {\n            top: 0,\n            bottom: 0,\n            left: 0,\n            right: 0,\n            backgroundColor: '#f3f3f4',\n        };\n\n        const formElementsArray = [];\n        for ( let key in this.state.registerForm ) {\n            formElementsArray.push( {\n                id: key,\n                config: this.state.registerForm[key]\n            } );\n        }\n\n        let form = formElementsArray.map( formElement => (\n            <Input\n                key={formElement.id}\n                elementType={formElement.config.elementType}\n                elementConfig={formElement.config.elementConfig}\n                value={formElement.config.value}\n                invalid={!formElement.config.valid}\n                shouldValidate={formElement.config.validation}\n                touched={formElement.config.touched}\n                changed={( event ) => this.inputChangedHandler( event, formElement.id )} />\n        ) );\n\n\n        if (this.state.loading) {\n            form = (<div style={style}><img src={loading} alt=\"loading\"/></div>);\n        }\n\n        return (\n            <Blank>\n                <div className=\"text-center\">\n                    <img\n                        src={ require(\"../../assets/img/GLP_Web.gif\")} alt=\"Grocery List Plus desktop and mobile grocery shopping application logo\"\n                        style={{width: '600px'}}\n                    />\n                </div>\n\n                <div className=\"middle-box text-center loginscreen animated fadeInDown\">\n                    <h3 style={{marginTop: '-20px', color:'#F3752C'}}>\n                        Register for\n                        Grocery List Plus\n                    </h3>\n                        <p className=\"text-muted text-center\"><small>Already have an account?</small></p>\n                            <Link to=\"/login\" className=\"btn btn-sm btn-success btn-block\">Login</Link>\n                        <br />\n                        <p>OR</p>\n                        <p>Create your FREE account and get started today.</p>\n                        <form className=\"m-t\" role=\"form\" onSubmit={this.registerHandler}>\n                            {form}\n                            <div className=\"form-group\">\n                                <div className=\"checkbox i-checks\"><label> <input type=\"checkbox\" /><i></i>I Agree to the Terms and Conditions </label></div>\n                            </div>\n                            <button type=\"submit\" className=\"btn btn-primary block full-width m-b\" disabled={!this.state.formIsValid}>Register</button>\n                        </form>\n                </div>\n                <div style={{paddingTop:'37px'}}>\n                    &nbsp;\n                </div>\n            </Blank>\n        );\n    }\n}\n\nconst mapStateToProps = state => {\n    return {\n        error: state.auth.error,\n    }\n};\n\n\nexport default connect(mapStateToProps)(Register);\n\n\n// WEBPACK FOOTER //\n// src/components/Register/Register.js","import React, {Component} from 'react';\nimport { Link, Location, Redirect } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport { AUTH_CONFIG } from '../../Auth/auth_variables';\n\nimport { validationRules } from '../../components/common/validationRules';\nimport Input from '../../components/common/UI/Input/Input';\nimport loading from '../../assets/loading.svg';\n\nimport Blank from '../../hoc/layouts/Blank';\n\n\nclass Login extends Component {\n    state = {\n        loginForm: {\n            email: {\n                elementType: 'input',\n                elementConfig: {\n                    type: 'email',\n                    placeholder: 'Email Address',\n                    autoComplete: 'email'\n                },\n                value: '',\n                validation: {\n                    required: true,\n                    isEmail: true\n                },\n                valid: false,\n                touched: false\n\n            },\n            password: {\n                elementType: 'input',\n                elementConfig: {\n                    type: 'password',\n                    placeholder: 'Password',\n                    autoComplete: 'current-password'\n                },\n                value: '',\n                validation: {\n                    required: true,\n                    minLength: 8\n                },\n                valid: false,\n                touched: false\n\n            }\n        },\n        formIsValid: false,\n        loading: false\n    };\n\n\n    inputChangedHandler = (event, inputIdentifier) => {\n        const updatedLoginForm = {\n            ...this.state.loginForm,\n            [inputIdentifier]: {\n                ...this.state.loginForm[inputIdentifier],\n                value: event.target.value,\n                valid: validationRules(event.target.value, this.state.loginForm[inputIdentifier].validation),\n                touched: true\n            }\n        };\n\n        this.setState({loginForm: updatedLoginForm});\n    };\n\n    loginHandler = ( event ) => {\n        event.preventDefault();\n        let webAuth = new auth0.WebAuth({\n            domain: AUTH_CONFIG.domain,\n            clientID: AUTH_CONFIG.clientId,\n        });\n\n\n        webAuth.redirect.loginWithCredentials({\n            connection: AUTH_CONFIG.connection,\n            username: this.state.loginForm['email'].value,\n            password: this.state.loginForm['password'].value,\n            audience: AUTH_CONFIG.audience,\n            responseType: AUTH_CONFIG.responseType,\n            scope: AUTH_CONFIG.scope,\n            redirectUri: AUTH_CONFIG.loginCallbackUrl,\n\n        });\n\n    };\n\n\n    render() {\n        const style = {\n            top: 0,\n            bottom: 0,\n            left: 0,\n            right: 0,\n            backgroundColor: '#f3f3f4',\n        };\n\n\n\n        const formElementsArray = [];\n        for ( let key in this.state.loginForm ) {\n            formElementsArray.push( {\n                id: key,\n                config: this.state.loginForm[key]\n            } );\n        }\n\n        let form = formElementsArray.map( formElement => (\n            <Input\n                key={formElement.id}\n                elementType={formElement.config.elementType}\n                elementConfig={formElement.config.elementConfig}\n                value={formElement.config.value}\n                invalid={!formElement.config.valid}\n                shouldValidate={formElement.config.validation}\n                touched={formElement.config.touched}\n                autocomplete={formElement.config.autocomplete}\n                changed={( event ) => this.inputChangedHandler( event, formElement.id )} />\n        ) );\n\n        if (this.props.loading) {\n            form = (<div style={style}><img src={loading} alt=\"loading\"/></div>);\n        }\n\n        let errorMessage = null;\n\n        if (this.props.error) {\n            errorMessage = (\n                <p style={{color: 'red', fontSize: '16px'}}>{this.props.error.message}</p>\n            )\n        }\n\n        let authRedirect = null;\n        if (this.props.hasProfile) {\n            authRedirect = <Redirect to='/home' />\n        }\n\n        return (\n            <Blank>\n                <div className=\"text-center\">\n                    <img\n                        src={ require(\"../../assets/img/GLP_Web.gif\")} alt=\"Grocery List Plus desktop and mobile grocery shopping application logo\"\n                        style={{width: '600px'}}\n                    />\n                </div>\n\n                <div className=\"middle-box text-center loginscreen animated fadeInDown\">\n                    {authRedirect}\n                    <div>\n                        <h3 style={{marginTop: '-20px', color:'#F3752C'}}>Welcome to Grocery List Plus</h3>\n\n                        {errorMessage}\n\n                        <form className=\"m-t\" role=\"form\" onSubmit={this.loginHandler}>\n                            {form}\n                            <button type=\"submit\" className=\"btn btn-primary block full-width m-b\">Login</button>\n\n                            <a href=\"#\"><small>Forgot password?</small></a>\n                            <p className=\"text-muted text-center\"><small>Need an account?</small></p>\n                            <Link to=\"/register\" className=\"btn btn-sm btn-success btn-block\">Create Account</Link>\n                        </form>\n                    </div>\n                </div>\n            </Blank>\n        );\n    }\n}\n\nconst mapStateToProps = state => {\n  return {\n      loading: state.auth.loading,\n      error: state.auth.error,\n      hasProfile: state.auth.token !== null\n  }\n};\n\n\nexport default connect(mapStateToProps)(Login);\n\n\n// WEBPACK FOOTER //\n// src/containers/Login/Login.js","import React, { Component } from 'react';\nimport { withRouter } from 'react-router-dom';\nimport loading from '../assets/loading.svg';\nimport Auth from '../Auth/Auth.js';\nimport Blank from '../hoc/layouts/Blank';\nimport { connect } from 'react-redux';\n\n\nimport * as actions from '../store/actions/index';\n\nlet jwtDecode = require('jwt-decode');\n\n\nclass CbLogin extends Component {\n\n\n\n    componentWillMount() {\n\n        console.log('componentWillMount() -- CbLogin.js');\n\n        const auth = new Auth();\n        auth.handleAuthentication();\n\n        // TODO: replace this with a promise\n\n\n        setTimeout(function(){\n            let tempToken = localStorage.getItem('id_token');\n            let profileInfo = jwtDecode(tempToken);\n\n            this.props.onAuth(profileInfo.email);\n\n\n            setTimeout(function() {\n                this.props.history.replace(\"/home\")\n              //  this.setState({ doRedirect: true });\n            }.bind(this), 1500)\n\n        }.bind(this), 1200);\n\n    }\n\n\n    render() {\n\n        const style = {\n            top: 0,\n            bottom: 0,\n            left: 0,\n            right: 0,\n            backgroundColor: '#f3f3f4'\n        };\n\n\n        return (\n            <Blank>\n                <div className=\"text-center\">\n                    <img\n                        src={ require(\"../../src/assets/img/GLP_Web.gif\")} alt=\"Grocery List Plus desktop and mobile grocery shopping application logo\"\n                        style={{width: '600px'}}\n                    />\n                </div>\n\n                <div className=\"middle-box text-center loginscreen\">\n                    <div>\n                        <div style={style}>\n                            <img src={loading} alt=\"loading\"/>\n                        </div>\n                    </div>\n                </div>\n            </Blank>\n\n\n\n        );\n    }\n}\n\n\n\nconst mapStateToProps = state => {\n    return {\n        loading: state.auth.loading,\n        error: state.auth.error,\n        hasProfile: state.auth.hasProfile,\n        isAuthenticated: state.auth.isAuthenticated\n    }\n};\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        onAuth: (email) => dispatch(actions.auth(email))\n    }\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(CbLogin);\n\n\n\n\n// WEBPACK FOOTER //\n// src/Callback/CbLogin.js","import React, {Component} from 'react';\nimport {AgGridReact} from \"ag-grid-react\";\n\nimport { connect } from 'react-redux';\nimport { Link, Location } from 'react-router-dom';\nimport Auth from '../../Auth/Auth.js';\n\nimport config from '../../../server/config';\nimport axios from 'axios';\n\nimport Aux from '../../hoc/Aux/Aux';\nimport Blank from '../../hoc/layouts/Blank';\n//import WalmartCategory from './walmartCategory';\n\nimport * as actions from '../../store/actions/index';\n\nclass Admin_WalmartCategories extends Component {\n    constructor(props) {\n        super(props);\n\n\n\n\n        this.state = {\n            categoryArray: [],\n            totalNumCats: 0,\n            temp: {}\n        };\n\n        this.props.getAllCategories();\n\n    }\n\n    componentWillMount() {\n\n    }\n\n    componentDidMount() {\n\n    }\n\n\n    submitHandler = ( event ) => {\n      console.log(event);\n\n    };\n\n    render() {\n\n        const WalmartCategory = ({data}) => {\n            return (\n                <Aux key={data.id}>\n                    {data.map(info => {\n                        return (\n                            <div key={info.id}>\n                                <div style={{padding:'10px 0 5px 25px'}}>\n                                    <input type=\"checkbox\" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{info.name} -- {info.id}\n                                {info.children && <WalmartCategory data={info.children} />}\n                                </div>\n                            </div>\n                        );\n                    })}\n                </Aux>\n            );\n        };\n\n        return (\n            <Blank>\n                <form className=\"m-t\" role=\"form\" onSubmit={this.submitHandler}>\n                    <WalmartCategory data={this.state.categoryArray}/>\n                </form>\n\n\n            </Blank>\n        )\n    }\n}\n\nconst mapStateToProps = state => {\n\n    return {\n        allCategories: state.walmartCategory.allCategories,\n        hasProfile: state.auth.hasProfile,\n        isAuthenticated: state.auth.isAuthenticated,\n        user: state.auth.user\n    }\n};\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        onCheckTimeout: () => dispatch(actions.checkAuthTimeout()),\n        getAllCategories: () => dispatch(actions.walmartGetAllCategories()),\n    }\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Admin_WalmartCategories);\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/containers/Admin/Admin_WalmartCategories.js","exports.AgGridReact = require('./lib/agGridReact').AgGridReact;\nexports.AgGridColumn = require('./lib/agGridColumn').AgGridColumn;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid-react/main.js\n// module id = 633\n// module chunks = 0","// ag-grid-react v15.0.0\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ag_grid_1 = require(\"ag-grid\");\nvar agReactComponent_1 = require(\"./agReactComponent\");\nvar agGridReact_1 = require(\"./agGridReact\");\nvar ReactFrameworkComponentWrapper = /** @class */ (function (_super) {\n    __extends(ReactFrameworkComponentWrapper, _super);\n    function ReactFrameworkComponentWrapper() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    ReactFrameworkComponentWrapper.prototype.createWrapper = function (ReactComponent) {\n        var _self = this;\n        var DynamicAgReactComponent = /** @class */ (function (_super) {\n            __extends(DynamicAgReactComponent, _super);\n            function DynamicAgReactComponent() {\n                return _super.call(this, ReactComponent, _self.agGridReact) || this;\n            }\n            DynamicAgReactComponent.prototype.init = function (params) {\n                return _super.prototype.init.call(this, params);\n            };\n            DynamicAgReactComponent.prototype.hasMethod = function (name) {\n                var frameworkComponentInstance = wrapper.getFrameworkComponentInstance();\n                if (frameworkComponentInstance == null) {\n                    return true;\n                }\n                return frameworkComponentInstance[name] != null;\n            };\n            DynamicAgReactComponent.prototype.callMethod = function (name, args) {\n                var _this = this;\n                var frameworkComponentInstance = this.getFrameworkComponentInstance();\n                if (frameworkComponentInstance == null) {\n                    setTimeout(function () { return _this.callMethod(name, args); }, 100);\n                }\n                else {\n                    var method = wrapper.getFrameworkComponentInstance()[name];\n                    if (method == null)\n                        return null;\n                    return method.apply(frameworkComponentInstance, args);\n                }\n            };\n            DynamicAgReactComponent.prototype.addMethod = function (name, callback) {\n                wrapper[name] = callback;\n            };\n            return DynamicAgReactComponent;\n        }(agReactComponent_1.AgReactComponent));\n        var wrapper = new DynamicAgReactComponent();\n        return wrapper;\n    };\n    __decorate([\n        ag_grid_1.Autowired('agGridReact'),\n        __metadata(\"design:type\", agGridReact_1.AgGridReact)\n    ], ReactFrameworkComponentWrapper.prototype, \"agGridReact\", void 0);\n    ReactFrameworkComponentWrapper = __decorate([\n        ag_grid_1.Bean('frameworkComponentWrapper')\n    ], ReactFrameworkComponentWrapper);\n    return ReactFrameworkComponentWrapper;\n}(ag_grid_1.BaseComponentWrapper));\nexports.ReactFrameworkComponentWrapper = ReactFrameworkComponentWrapper;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid-react/lib/reactFrameworkComponentWrapper.js\n// module id = 634\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Events = (function () {\n    function Events() {\n    }\n    /** Everything has changed with the columns. Either complete new set of columns set, or user called setState()*/\n    Events.EVENT_COLUMN_EVERYTHING_CHANGED = 'columnEverythingChanged';\n    /** User has set in new columns. */\n    Events.EVENT_NEW_COLUMNS_LOADED = 'newColumnsLoaded';\n    /** The pivot mode flag was changed */\n    Events.EVENT_COLUMN_PIVOT_MODE_CHANGED = 'columnPivotModeChanged';\n    /** A row group column was added, removed or order changed. */\n    Events.EVENT_COLUMN_ROW_GROUP_CHANGED = 'columnRowGroupChanged';\n    /** A pivot column was added, removed or order changed. */\n    Events.EVENT_COLUMN_PIVOT_CHANGED = 'columnPivotChanged';\n    /** The list of grid columns has changed. */\n    Events.EVENT_GRID_COLUMNS_CHANGED = 'gridColumnsChanged';\n    /** A value column was added, removed or agg function was changed. */\n    Events.EVENT_COLUMN_VALUE_CHANGED = 'columnValueChanged';\n    /** A column was moved */\n    Events.EVENT_COLUMN_MOVED = 'columnMoved';\n    /** One or more columns was shown / hidden */\n    Events.EVENT_COLUMN_VISIBLE = 'columnVisible';\n    /** One or more columns was pinned / unpinned*/\n    Events.EVENT_COLUMN_PINNED = 'columnPinned';\n    /** A column group was opened / closed */\n    Events.EVENT_COLUMN_GROUP_OPENED = 'columnGroupOpened';\n    /** One or more columns was resized. If just one, the column in the event is set. */\n    Events.EVENT_COLUMN_RESIZED = 'columnResized';\n    /** The list of displayed columns has changed, can result from columns open / close, column move, pivot, group, etc */\n    Events.EVENT_DISPLAYED_COLUMNS_CHANGED = 'displayedColumnsChanged';\n    /** The list of virtual columns has changed, results from viewport changing */\n    Events.EVENT_VIRTUAL_COLUMNS_CHANGED = 'virtualColumnsChanged';\n    /** A row group was opened / closed */\n    Events.EVENT_ROW_GROUP_OPENED = 'rowGroupOpened';\n    /** The client has set new data into the grid */\n    Events.EVENT_ROW_DATA_CHANGED = 'rowDataChanged';\n    /** The client has updated data for the grid */\n    Events.EVENT_ROW_DATA_UPDATED = 'rowDataUpdated';\n    /** The client has set new floating data into the grid */\n    Events.EVENT_PINNED_ROW_DATA_CHANGED = 'pinnedRowDataChanged';\n    /** Range selection has changed */\n    Events.EVENT_RANGE_SELECTION_CHANGED = 'rangeSelectionChanged';\n    /** Model was updated - grid updates the drawn rows when this happens */\n    Events.EVENT_MODEL_UPDATED = 'modelUpdated';\n    Events.EVENT_CELL_CLICKED = 'cellClicked';\n    Events.EVENT_CELL_DOUBLE_CLICKED = 'cellDoubleClicked';\n    Events.EVENT_CELL_CONTEXT_MENU = 'cellContextMenu';\n    Events.EVENT_CELL_VALUE_CHANGED = 'cellValueChanged';\n    Events.EVENT_ROW_VALUE_CHANGED = 'rowValueChanged';\n    Events.EVENT_CELL_FOCUSED = 'cellFocused';\n    Events.EVENT_ROW_SELECTED = 'rowSelected';\n    Events.EVENT_SELECTION_CHANGED = 'selectionChanged';\n    Events.EVENT_CELL_MOUSE_OVER = 'cellMouseOver';\n    Events.EVENT_CELL_MOUSE_OUT = 'cellMouseOut';\n    /** 2 events for filtering. The grid LISTENS for filterChanged and afterFilterChanged */\n    Events.EVENT_FILTER_CHANGED = 'filterChanged';\n    /** Filter was change but not applied. Only useful if apply buttons are used in filters. */\n    Events.EVENT_FILTER_MODIFIED = 'filterModified';\n    Events.EVENT_SORT_CHANGED = 'sortChanged';\n    /** A row was removed from the dom, for any reason. Use to clean up resources (if any) used by the row. */\n    Events.EVENT_VIRTUAL_ROW_REMOVED = 'virtualRowRemoved';\n    Events.EVENT_ROW_CLICKED = 'rowClicked';\n    Events.EVENT_ROW_DOUBLE_CLICKED = 'rowDoubleClicked';\n    /** Gets called once after the grid has finished initialising. */\n    Events.EVENT_GRID_READY = 'gridReady';\n    /** Width of height of the main grid div has changed. Grid listens for this and does layout of grid if it's\n     * changed, so always filling the space it was given. */\n    Events.EVENT_GRID_SIZE_CHANGED = 'gridSizeChanged';\n    /** The indexes of the rows rendered has changed, eg user has scrolled to a new vertical position. */\n    Events.EVENT_VIEWPORT_CHANGED = 'viewportChanged';\n    /** A column drag has started, either resizing a column or moving a column. */\n    Events.EVENT_DRAG_STARTED = 'dragStarted';\n    /** A column drag has stopped */\n    Events.EVENT_DRAG_STOPPED = 'dragStopped';\n    Events.EVENT_ROW_EDITING_STARTED = 'rowEditingStarted';\n    Events.EVENT_ROW_EDITING_STOPPED = 'rowEditingStopped';\n    Events.EVENT_CELL_EDITING_STARTED = 'cellEditingStarted';\n    Events.EVENT_CELL_EDITING_STOPPED = 'cellEditingStopped';\n    /** Main body of grid has scrolled, either horizontally or vertically */\n    Events.EVENT_BODY_SCROLL = 'bodyScroll';\n    /** The displayed page for pagination has changed. For example the data was filtered or sorted,\n     * or the user has moved to a different page. */\n    Events.EVENT_PAGINATION_CHANGED = 'paginationChanged';\n    /** Only used by React, Angular 2+, Web Components, Aurelia and VueJS ag-Grid components\n     * (not used if doing plain JavaScript or Angular 1.x). If the grid receives changes due\n     * to bound properties, this event fires after the grid has finished processing the change. */\n    Events.EVENT_COMPONENT_STATE_CHANGED = 'componentStateChanged';\n    /** All items from here down are used internally by the grid, not intended for external use. */\n    // not documented, either experimental, or we just don't want users using an ddepending on them\n    Events.EVENT_BODY_HEIGHT_CHANGED = 'bodyHeightChanged';\n    Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED = 'displayedColumnsWidthChanged';\n    Events.EVENT_SCROLL_VISIBILITY_CHANGED = 'scrollVisibilityChanged';\n    Events.EVENT_COLUMN_HOVER_CHANGED = 'columnHoverChanged';\n    Events.EVENT_FLASH_CELLS = 'flashCells';\n    // these are used for server side group and agg - only used by CS with Viewport Row Model - intention is\n    // to design these better around server side functions and then release to general public when fully working with\n    // all the row models.\n    Events.EVENT_COLUMN_ROW_GROUP_CHANGE_REQUEST = 'columnRowGroupChangeRequest';\n    Events.EVENT_COLUMN_PIVOT_CHANGE_REQUEST = 'columnPivotChangeRequest';\n    Events.EVENT_COLUMN_VALUE_CHANGE_REQUEST = 'columnValueChangeRequest';\n    Events.EVENT_COLUMN_AGG_FUNC_CHANGE_REQUEST = 'columnAggFuncChangeRequest';\n    return Events;\n}());\nexports.Events = Events;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/eventKeys.js\n// module id = 635\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar PropertyKeys = (function () {\n    function PropertyKeys() {\n    }\n    PropertyKeys.STRING_PROPERTIES = [\n        'sortingOrder', 'rowClass', 'rowSelection', 'overlayLoadingTemplate',\n        'overlayNoRowsTemplate', 'quickFilterText', 'rowModelType',\n        'editType', 'domLayout', 'clipboardDeliminator', 'rowGroupPanelShow'\n    ];\n    PropertyKeys.OBJECT_PROPERTIES = [\n        'components', 'frameworkComponents', 'rowStyle', 'context', 'autoGroupColumnDef', 'groupColumnDef', 'localeText',\n        'icons', 'datasource', 'enterpriseDatasource', 'viewportDatasource', 'groupRowRendererParams', 'aggFuncs',\n        'fullWidthCellRendererParams', 'defaultColGroupDef', 'defaultColDef', 'defaultExportParams', 'columnTypes',\n        'rowClassRules', 'detailGridOptions', 'detailCellRendererParams', 'loadingOverlayComponentParams',\n        'noRowsOverlayComponentParams'\n        //,'cellRenderers','cellEditors'\n    ];\n    PropertyKeys.ARRAY_PROPERTIES = [\n        'slaveGrids', 'alignedGrids', 'rowData',\n        'columnDefs', 'excelStyles', 'pinnedTopRowData', 'pinnedBottomRowData'\n        // deprecated\n    ];\n    PropertyKeys.NUMBER_PROPERTIES = [\n        'rowHeight', 'detailRowHeight', 'rowBuffer', 'colWidth', 'headerHeight', 'groupHeaderHeight',\n        'floatingFiltersHeight', 'pivotHeaderHeight', 'pivotGroupHeaderHeight', 'groupDefaultExpanded',\n        'minColWidth', 'maxColWidth', 'viewportRowModelPageSize', 'viewportRowModelBufferSize',\n        'layoutInterval', 'autoSizePadding', 'maxBlocksInCache', 'maxConcurrentDatasourceRequests',\n        'cacheOverflowSize', 'paginationPageSize', 'cacheBlockSize', 'infiniteInitialRowCount',\n        'scrollbarWidth', 'paginationStartPage', 'infiniteBlockSize'\n    ];\n    PropertyKeys.BOOLEAN_PROPERTIES = [\n        'toolPanelSuppressRowGroups', 'toolPanelSuppressValues', 'toolPanelSuppressPivots', 'toolPanelSuppressPivotMode',\n        'suppressRowClickSelection', 'suppressCellSelection', 'suppressHorizontalScroll', 'debug',\n        'enableColResize', 'enableCellExpressions', 'enableSorting', 'enableServerSideSorting',\n        'enableFilter', 'enableServerSideFilter', 'angularCompileRows', 'angularCompileFilters',\n        'angularCompileHeaders', 'groupSuppressAutoColumn', 'groupSelectsChildren',\n        'groupIncludeFooter', 'groupUseEntireRow', 'groupSuppressRow', 'groupSuppressBlankHeader', 'forPrint',\n        'suppressMenuHide', 'rowDeselection', 'unSortIcon', 'suppressMultiSort',\n        'singleClickEdit', 'suppressLoadingOverlay', 'suppressNoRowsOverlay', 'suppressAutoSize',\n        'suppressParentsInRowNodes', 'showToolPanel', 'suppressColumnMoveAnimation', 'suppressMovableColumns',\n        'suppressFieldDotNotation', 'enableRangeSelection',\n        'pivotPanelShow', 'suppressTouch', 'suppressAsyncEvents', 'allowContextMenuWithControlKey',\n        'suppressContextMenu', 'suppressMenuFilterPanel', 'suppressMenuMainPanel', 'suppressMenuColumnPanel',\n        'enableStatusBar', 'alwaysShowStatusBar', 'rememberGroupStateWhenNewData', 'enableCellChangeFlash', 'suppressDragLeaveHidesColumns',\n        'suppressMiddleClickScrolls', 'suppressPreventDefaultOnMouseWheel', 'suppressUseColIdForGroups',\n        'suppressCopyRowsToClipboard', 'pivotMode', 'suppressAggFuncInHeader', 'suppressColumnVirtualisation', 'suppressAggAtRootLevel',\n        'suppressFocusAfterRefresh', 'functionsPassive', 'functionsReadOnly',\n        'animateRows', 'groupSelectsFiltered', 'groupRemoveSingleChildren', 'groupRemoveLowestSingleChildren',\n        'enableRtl', 'suppressClickEdit',\n        'enableGroupEdit', 'embedFullWidthRows', 'suppressTabbing', 'suppressPaginationPanel', 'floatingFilter',\n        'groupHideOpenParents', 'groupMultiAutoColumn', 'pagination', 'stopEditingWhenGridLosesFocus',\n        'paginationAutoPageSize', 'suppressScrollOnNewData', 'purgeClosedRowNodes', 'cacheQuickFilter',\n        'deltaRowDataMode', 'ensureDomOrder', 'accentedSort', 'pivotTotals', 'suppressChangeDetection',\n        'valueCache', 'valueCacheNeverExpires', 'aggregateOnlyChangedColumns', 'suppressAnimationFrame',\n        'suppressExcelExport', 'suppressCsvExport', 'treeData', 'masterDetail'\n    ];\n    PropertyKeys.FUNCTION_PROPERTIES = ['localeTextFunc', 'groupRowInnerRenderer', 'groupRowInnerRendererFramework',\n        'dateComponent', 'dateComponentFramework', 'groupRowRenderer', 'groupRowRendererFramework', 'isExternalFilterPresent',\n        'getRowHeight', 'doesExternalFilterPass', 'getRowClass', 'getRowStyle', 'getRowClassRules',\n        'traverseNode', 'getContextMenuItems', 'getMainMenuItems', 'processRowPostCreate', 'processCellForClipboard',\n        'getNodeChildDetails', 'groupRowAggNodes', 'getRowNodeId', 'isFullWidthCell', 'fullWidthCellRenderer',\n        'fullWidthCellRendererFramework', 'doesDataFlower', 'processSecondaryColDef', 'processSecondaryColGroupDef',\n        'getBusinessKeyForNode', 'sendToClipboard', 'navigateToNextCell', 'tabToNextCell', 'getDetailRowData',\n        'processCellFromClipboard', 'getDocument', 'postProcessPopup', 'getChildCount', 'getDataPath', 'loadingOverlayComponent',\n        'loadingOverlayComponentFramework', 'noRowsOverlayComponent', 'noRowsOverlayComponentFramework', 'detailCellRenderer', 'detailCellRendererFramework'];\n    PropertyKeys.ALL_PROPERTIES = PropertyKeys.ARRAY_PROPERTIES\n        .concat(PropertyKeys.OBJECT_PROPERTIES)\n        .concat(PropertyKeys.STRING_PROPERTIES)\n        .concat(PropertyKeys.NUMBER_PROPERTIES)\n        .concat(PropertyKeys.FUNCTION_PROPERTIES)\n        .concat(PropertyKeys.BOOLEAN_PROPERTIES);\n    return PropertyKeys;\n}());\nexports.PropertyKeys = PropertyKeys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/propertyKeys.js\n// module id = 636\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\n/**\n * There are many instances of this component covering each of the areas a row can be entered\n * eg body, pinned left, fullWidth. The component differs from others in that it's given the\n * elements, there is no template. All of the elements are part of the GridPanel.\n */\nvar RowContainerComponent = (function () {\n    function RowContainerComponent(params) {\n        this.childCount = 0;\n        this.rowTemplatesToAdd = [];\n        this.afterGuiAttachedCallbacks = [];\n        this.eContainer = params.eContainer;\n        this.eViewport = params.eViewport;\n        this.hideWhenNoChildren = params.hideWhenNoChildren;\n        this.body = params.body;\n    }\n    RowContainerComponent.prototype.postConstruct = function () {\n        this.domOrder = this.gridOptionsWrapper.isEnsureDomOrder() && !this.gridOptionsWrapper.isForPrint();\n        this.checkVisibility();\n    };\n    RowContainerComponent.prototype.getRowElement = function (compId) {\n        return this.eContainer.querySelector(\"[comp-id=\\\"\" + compId + \"\\\"]\");\n    };\n    RowContainerComponent.prototype.setHeight = function (height) {\n        this.eContainer.style.height = height + \"px\";\n        // can ask niall about this - was testing different ways to get the browser to display\n        // unlimited number of rows\n        // if (this.body) {\n        //     let eParent = this.eViewport;\n        //\n        //     let FILLER_HEIGHT = 1000000;\n        //\n        //     let fillerCount = 0;\n        //     let colors = ['#000020','#000040','#000060','#000080','#0000A0','#0000C0','#0000E0','#00F000','#00F020','#00F040','#00F060','#00F080','#00F0A0','#00F0C0','#00F0E0'];\n        //     _.removeAllChildren(eParent);\n        //     let pixelsToGo = height;\n        //     while (pixelsToGo > 0) {\n        //         fillerCount++;\n        //         let pixelsThisDiv = (pixelsToGo > FILLER_HEIGHT) ? FILLER_HEIGHT : pixelsToGo;\n        //         pixelsToGo -= FILLER_HEIGHT;\n        //         let eFiller = document.createElement('div');\n        //         eFiller.style.height = pixelsThisDiv + 'px';\n        //         eFiller.style.backgroundColor = colors[fillerCount%colors.length];\n        //         eFiller.innerHTML = '' + fillerCount;\n        //         eParent.appendChild(eFiller);\n        //     }\n        //     console.log(`fillerCount = ${fillerCount}`);\n        // }\n    };\n    RowContainerComponent.prototype.flushRowTemplates = function () {\n        // if doing dom order, then rowTemplates will be empty,\n        // or if no rows added since last time also empty.\n        if (this.rowTemplatesToAdd.length !== 0) {\n            var htmlToAdd = this.rowTemplatesToAdd.join('');\n            utils_1.Utils.appendHtml(this.eContainer, htmlToAdd);\n            this.rowTemplatesToAdd.length = 0;\n        }\n        // this only empty if no rows since last time, as when\n        // doing dom order, we still have callbacks to process\n        this.afterGuiAttachedCallbacks.forEach(function (func) { return func(); });\n        this.afterGuiAttachedCallbacks.length = 0;\n        this.lastPlacedElement = null;\n    };\n    RowContainerComponent.prototype.appendRowTemplate = function (rowTemplate, callback) {\n        if (this.domOrder) {\n            this.lastPlacedElement = utils_1.Utils.insertTemplateWithDomOrder(this.eContainer, rowTemplate, this.lastPlacedElement);\n        }\n        else {\n            this.rowTemplatesToAdd.push(rowTemplate);\n        }\n        this.afterGuiAttachedCallbacks.push(callback);\n        // it is important we put items in in order, so that when we open a row group,\n        // the new rows are inserted after the opened group, but before the rows below.\n        // that way, the rows below are over the new rows (as dom renders last in dom over\n        // items previous in dom), otherwise the child rows would cover the row below and\n        // that meant the user doesn't see the rows below slide away.\n        this.childCount++;\n        this.checkVisibility();\n    };\n    RowContainerComponent.prototype.ensureDomOrder = function (eRow) {\n        if (this.domOrder) {\n            utils_1.Utils.ensureDomOrder(this.eContainer, eRow, this.lastPlacedElement);\n            this.lastPlacedElement = eRow;\n        }\n    };\n    RowContainerComponent.prototype.removeRowElement = function (eRow) {\n        this.eContainer.removeChild(eRow);\n        this.childCount--;\n        this.checkVisibility();\n    };\n    RowContainerComponent.prototype.checkVisibility = function () {\n        if (!this.hideWhenNoChildren) {\n            return;\n        }\n        var eGui = this.eViewport ? this.eViewport : this.eContainer;\n        var visible = this.childCount > 0;\n        if (this.visible !== visible) {\n            this.visible = visible;\n            utils_1.Utils.setVisible(eGui, visible);\n        }\n    };\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], RowContainerComponent.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], RowContainerComponent.prototype, \"postConstruct\", null);\n    return RowContainerComponent;\n}());\nexports.RowContainerComponent = RowContainerComponent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rendering/rowContainerComponent.js\n// module id = 637\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LinkedList = (function () {\n    function LinkedList() {\n        this.first = null;\n        this.last = null;\n    }\n    LinkedList.prototype.add = function (item) {\n        var entry = {\n            item: item,\n            next: null\n        };\n        if (this.last) {\n            this.last.next = entry;\n        }\n        else {\n            this.first = entry;\n        }\n        this.last = entry;\n    };\n    LinkedList.prototype.remove = function () {\n        var result = this.first;\n        if (result) {\n            this.first = result.next;\n            if (!this.first) {\n                this.last = null;\n            }\n        }\n        return result.item;\n    };\n    LinkedList.prototype.isEmpty = function () {\n        return !this.first;\n    };\n    return LinkedList;\n}());\nexports.LinkedList = LinkedList;\nvar LinkedListItem = (function () {\n    function LinkedListItem() {\n    }\n    return LinkedListItem;\n}());\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/misc/linkedList.js\n// module id = 638\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = require(\"../../widgets/component\");\nvar context_1 = require(\"../../context/context\");\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar componentAnnotations_1 = require(\"../../widgets/componentAnnotations\");\nvar utils_1 = require(\"../../utils\");\nvar eventService_1 = require(\"../../eventService\");\nvar events_1 = require(\"../../events\");\nvar rowRenderer_1 = require(\"../../rendering/rowRenderer\");\nvar paginationProxy_1 = require(\"../paginationProxy\");\nvar PaginationComp = (function (_super) {\n    __extends(PaginationComp, _super);\n    function PaginationComp() {\n        return _super.call(this) || this;\n    }\n    PaginationComp.prototype.postConstruct = function () {\n        this.setTemplate(this.getTemplate());\n        this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_PAGINATION_CHANGED, this.onPaginationChanged.bind(this));\n        this.addDestroyableEventListener(this.btFirst, 'click', this.onBtFirst.bind(this));\n        this.addDestroyableEventListener(this.btLast, 'click', this.onBtLast.bind(this));\n        this.addDestroyableEventListener(this.btNext, 'click', this.onBtNext.bind(this));\n        this.addDestroyableEventListener(this.btPrevious, 'click', this.onBtPrevious.bind(this));\n        this.onPaginationChanged();\n    };\n    PaginationComp.prototype.onPaginationChanged = function () {\n        this.enableOrDisableButtons();\n        this.updateRowLabels();\n        this.setCurrentPageLabel();\n        this.setTotalLabels();\n    };\n    PaginationComp.prototype.setCurrentPageLabel = function () {\n        var currentPage = this.paginationProxy.getCurrentPage();\n        this.lbCurrent.innerHTML = this.formatNumber(currentPage + 1);\n    };\n    PaginationComp.prototype.formatNumber = function (value) {\n        var userFunc = this.gridOptionsWrapper.getPaginationNumberFormatterFunc();\n        if (userFunc) {\n            return userFunc({ value: value });\n        }\n        else {\n            return utils_1._.formatNumberCommas(value);\n        }\n    };\n    PaginationComp.prototype.getTemplate = function () {\n        var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n        var strPage = localeTextFunc('page', 'Page');\n        var strTo = localeTextFunc('to', 'to');\n        var strOf = localeTextFunc('of', 'of');\n        var strFirst = localeTextFunc('first', 'First');\n        var strPrevious = localeTextFunc('previous', 'Previous');\n        var strNext = localeTextFunc('next', 'Next');\n        var strLast = localeTextFunc('last', 'Last');\n        return \"<div class=\\\"ag-paging-panel ag-font-style\\\">\\n                <span ref=\\\"eSummaryPanel\\\" class=\\\"ag-paging-row-summary-panel\\\">\\n                    <span ref=\\\"lbFirstRowOnPage\\\"></span> \" + strTo + \" <span ref=\\\"lbLastRowOnPage\\\"></span> \" + strOf + \" <span ref=\\\"lbRecordCount\\\"></span>\\n                </span>\\n                <span class=\\\"ag-paging-page-summary-panel\\\">\\n                    <button class=\\\"ag-paging-button\\\" ref=\\\"btFirst\\\">\" + strFirst + \"</button>\\n                    <button class=\\\"ag-paging-button\\\" ref=\\\"btPrevious\\\">\" + strPrevious + \"</button>\\n                    \" + strPage + \" <span ref=\\\"lbCurrent\\\"></span> \" + strOf + \" <span ref=\\\"lbTotal\\\"></span>\\n                    <button class=\\\"ag-paging-button\\\" ref=\\\"btNext\\\">\" + strNext + \"</button>\\n                    <button class=\\\"ag-paging-button\\\" ref=\\\"btLast\\\">\" + strLast + \"</button>\\n                </span>\\n            </div>\";\n    };\n    PaginationComp.prototype.onBtNext = function () {\n        this.paginationProxy.goToNextPage();\n    };\n    PaginationComp.prototype.onBtPrevious = function () {\n        this.paginationProxy.goToPreviousPage();\n    };\n    PaginationComp.prototype.onBtFirst = function () {\n        this.paginationProxy.goToFirstPage();\n    };\n    PaginationComp.prototype.onBtLast = function () {\n        this.paginationProxy.goToLastPage();\n    };\n    PaginationComp.prototype.enableOrDisableButtons = function () {\n        var currentPage = this.paginationProxy.getCurrentPage();\n        var maxRowFound = this.paginationProxy.isLastPageFound();\n        var totalPages = this.paginationProxy.getTotalPages();\n        var disablePreviousAndFirst = currentPage === 0;\n        this.btPrevious.disabled = disablePreviousAndFirst;\n        this.btFirst.disabled = disablePreviousAndFirst;\n        var zeroPagesToDisplay = this.isZeroPagesToDisplay();\n        var onLastPage = maxRowFound && currentPage === (totalPages - 1);\n        var disableNext = onLastPage || zeroPagesToDisplay;\n        this.btNext.disabled = disableNext;\n        var disableLast = !maxRowFound || zeroPagesToDisplay || currentPage === (totalPages - 1);\n        this.btLast.disabled = disableLast;\n    };\n    PaginationComp.prototype.updateRowLabels = function () {\n        var currentPage = this.paginationProxy.getCurrentPage();\n        var pageSize = this.paginationProxy.getPageSize();\n        var maxRowFound = this.paginationProxy.isLastPageFound();\n        var rowCount = this.paginationProxy.isLastPageFound() ?\n            this.paginationProxy.getTotalRowCount() : null;\n        var startRow;\n        var endRow;\n        if (this.isZeroPagesToDisplay()) {\n            startRow = 0;\n            endRow = 0;\n        }\n        else {\n            startRow = (pageSize * currentPage) + 1;\n            endRow = startRow + pageSize - 1;\n            if (maxRowFound && endRow > rowCount) {\n                endRow = rowCount;\n            }\n        }\n        this.lbFirstRowOnPage.innerHTML = this.formatNumber(startRow);\n        this.lbLastRowOnPage.innerHTML = this.formatNumber(endRow);\n    };\n    PaginationComp.prototype.isZeroPagesToDisplay = function () {\n        var maxRowFound = this.paginationProxy.isLastPageFound();\n        var totalPages = this.paginationProxy.getTotalPages();\n        return maxRowFound && totalPages === 0;\n    };\n    PaginationComp.prototype.setTotalLabels = function () {\n        var lastPageFound = this.paginationProxy.isLastPageFound();\n        var totalPages = this.paginationProxy.getTotalPages();\n        var rowCount = this.paginationProxy.isLastPageFound() ?\n            this.paginationProxy.getTotalRowCount() : null;\n        if (lastPageFound) {\n            this.lbTotal.innerHTML = this.formatNumber(totalPages);\n            this.lbRecordCount.innerHTML = this.formatNumber(rowCount);\n        }\n        else {\n            var moreText = this.gridOptionsWrapper.getLocaleTextFunc()('more', 'more');\n            this.lbTotal.innerHTML = moreText;\n            this.lbRecordCount.innerHTML = moreText;\n        }\n    };\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], PaginationComp.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('eventService'),\n        __metadata(\"design:type\", eventService_1.EventService)\n    ], PaginationComp.prototype, \"eventService\", void 0);\n    __decorate([\n        context_1.Autowired('paginationProxy'),\n        __metadata(\"design:type\", paginationProxy_1.PaginationProxy)\n    ], PaginationComp.prototype, \"paginationProxy\", void 0);\n    __decorate([\n        context_1.Autowired('rowRenderer'),\n        __metadata(\"design:type\", rowRenderer_1.RowRenderer)\n    ], PaginationComp.prototype, \"rowRenderer\", void 0);\n    __decorate([\n        componentAnnotations_1.RefSelector('btFirst'),\n        __metadata(\"design:type\", HTMLButtonElement)\n    ], PaginationComp.prototype, \"btFirst\", void 0);\n    __decorate([\n        componentAnnotations_1.RefSelector('btPrevious'),\n        __metadata(\"design:type\", HTMLButtonElement)\n    ], PaginationComp.prototype, \"btPrevious\", void 0);\n    __decorate([\n        componentAnnotations_1.RefSelector('btNext'),\n        __metadata(\"design:type\", HTMLButtonElement)\n    ], PaginationComp.prototype, \"btNext\", void 0);\n    __decorate([\n        componentAnnotations_1.RefSelector('btLast'),\n        __metadata(\"design:type\", HTMLButtonElement)\n    ], PaginationComp.prototype, \"btLast\", void 0);\n    __decorate([\n        componentAnnotations_1.RefSelector('lbRecordCount'),\n        __metadata(\"design:type\", Object)\n    ], PaginationComp.prototype, \"lbRecordCount\", void 0);\n    __decorate([\n        componentAnnotations_1.RefSelector('lbFirstRowOnPage'),\n        __metadata(\"design:type\", Object)\n    ], PaginationComp.prototype, \"lbFirstRowOnPage\", void 0);\n    __decorate([\n        componentAnnotations_1.RefSelector('lbLastRowOnPage'),\n        __metadata(\"design:type\", Object)\n    ], PaginationComp.prototype, \"lbLastRowOnPage\", void 0);\n    __decorate([\n        componentAnnotations_1.RefSelector('eSummaryPanel'),\n        __metadata(\"design:type\", Object)\n    ], PaginationComp.prototype, \"eSummaryPanel\", void 0);\n    __decorate([\n        componentAnnotations_1.RefSelector('lbCurrent'),\n        __metadata(\"design:type\", Object)\n    ], PaginationComp.prototype, \"lbCurrent\", void 0);\n    __decorate([\n        componentAnnotations_1.RefSelector('lbTotal'),\n        __metadata(\"design:type\", Object)\n    ], PaginationComp.prototype, \"lbTotal\", void 0);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], PaginationComp.prototype, \"postConstruct\", null);\n    return PaginationComp;\n}(component_1.Component));\nexports.PaginationComp = PaginationComp;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rowModels/pagination/paginationComp.js\n// module id = 639\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = require(\"../../widgets/component\");\nvar column_1 = require(\"../../entities/column\");\nvar utils_1 = require(\"../../utils\");\nvar context_1 = require(\"../../context/context\");\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar sortController_1 = require(\"../../sortController\");\nvar touchListener_1 = require(\"../../widgets/touchListener\");\nvar eventService_1 = require(\"../../eventService\");\nvar componentAnnotations_1 = require(\"../../widgets/componentAnnotations\");\nvar events_1 = require(\"../../events\");\nvar HeaderComp = (function (_super) {\n    __extends(HeaderComp, _super);\n    function HeaderComp() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    HeaderComp.prototype.init = function (params) {\n        var template = utils_1.Utils.firstExistingValue(params.template, HeaderComp.TEMPLATE);\n        this.setTemplate(template);\n        this.params = params;\n        this.setupTap();\n        this.setupIcons(params.column);\n        this.setupMenu();\n        this.setupSort();\n        this.setupFilterIcon();\n        this.setupText(params.displayName);\n    };\n    HeaderComp.prototype.setupText = function (displayName) {\n        if (this.eText) {\n            this.eText.innerHTML = displayName;\n        }\n    };\n    HeaderComp.prototype.setupIcons = function (column) {\n        this.addInIcon('sortAscending', this.eSortAsc, column);\n        this.addInIcon('sortDescending', this.eSortDesc, column);\n        this.addInIcon('sortUnSort', this.eSortNone, column);\n        this.addInIcon('menu', this.eMenu, column);\n        this.addInIcon('filter', this.eFilter, column);\n    };\n    HeaderComp.prototype.addInIcon = function (iconName, eParent, column) {\n        if (eParent == null)\n            return;\n        var eIcon = utils_1.Utils.createIconNoSpan(iconName, this.gridOptionsWrapper, column);\n        eParent.appendChild(eIcon);\n    };\n    HeaderComp.prototype.setupTap = function () {\n        var _this = this;\n        if (this.gridOptionsWrapper.isSuppressTouch()) {\n            return;\n        }\n        var touchListener = new touchListener_1.TouchListener(this.getGui());\n        if (this.params.enableMenu) {\n            var longTapListener = function (event) {\n                _this.gridOptionsWrapper.getApi().showColumnMenuAfterMouseClick(_this.params.column, event.touchStart);\n            };\n            this.addDestroyableEventListener(touchListener, touchListener_1.TouchListener.EVENT_LONG_TAP, longTapListener);\n        }\n        if (this.params.enableSorting) {\n            var tapListener = function () {\n                _this.sortController.progressSort(_this.params.column, false);\n            };\n            this.addDestroyableEventListener(touchListener, touchListener_1.TouchListener.EVENT_TAP, tapListener);\n        }\n        this.addDestroyFunc(function () { return touchListener.destroy(); });\n    };\n    HeaderComp.prototype.setupMenu = function () {\n        var _this = this;\n        // if no menu provided in template, do nothing\n        if (!this.eMenu) {\n            return;\n        }\n        // we don't show the menu if on an ipad, as the user cannot have a mouse on the ipad, so\n        // makes no sense. instead the user must long-tap if on an ipad.\n        var dontShowMenu = !this.params.enableMenu || utils_1.Utils.isUserAgentIPad();\n        if (dontShowMenu) {\n            utils_1.Utils.removeFromParent(this.eMenu);\n            return;\n        }\n        this.eMenu.addEventListener('click', function () { return _this.showMenu(_this.eMenu); });\n        if (!this.gridOptionsWrapper.isSuppressMenuHide()) {\n            this.eMenu.style.opacity = '0';\n            this.addGuiEventListener('mouseover', function () {\n                _this.eMenu.style.opacity = '1';\n            });\n            this.addGuiEventListener('mouseout', function () {\n                _this.eMenu.style.opacity = '0';\n            });\n        }\n        var style = this.eMenu.style;\n        style['transition'] = 'opacity 0.2s, border 0.2s';\n        style['-webkit-transition'] = 'opacity 0.2s, border 0.2s';\n    };\n    HeaderComp.prototype.showMenu = function (eventSource) {\n        this.menuFactory.showMenuAfterButtonClick(this.params.column, eventSource);\n    };\n    HeaderComp.prototype.removeSortIcons = function () {\n        utils_1.Utils.removeFromParent(this.eSortAsc);\n        utils_1.Utils.removeFromParent(this.eSortDesc);\n        utils_1.Utils.removeFromParent(this.eSortNone);\n        utils_1.Utils.removeFromParent(this.eSortOrder);\n    };\n    HeaderComp.prototype.setupSort = function () {\n        var _this = this;\n        var enableSorting = this.params.enableSorting;\n        if (!enableSorting) {\n            this.removeSortIcons();\n            return;\n        }\n        // add the event on the header, so when clicked, we do sorting\n        if (this.eLabel) {\n            this.addDestroyableEventListener(this.eLabel, 'click', function (event) {\n                _this.params.progressSort(event.shiftKey);\n            });\n        }\n        this.addDestroyableEventListener(this.params.column, column_1.Column.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));\n        this.onSortChanged();\n        this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_SORT_CHANGED, this.setMultiSortOrder.bind(this));\n        this.setMultiSortOrder();\n    };\n    HeaderComp.prototype.onSortChanged = function () {\n        utils_1.Utils.addOrRemoveCssClass(this.getGui(), 'ag-header-cell-sorted-asc', this.params.column.isSortAscending());\n        utils_1.Utils.addOrRemoveCssClass(this.getGui(), 'ag-header-cell-sorted-desc', this.params.column.isSortDescending());\n        utils_1.Utils.addOrRemoveCssClass(this.getGui(), 'ag-header-cell-sorted-none', this.params.column.isSortNone());\n        if (this.eSortAsc) {\n            utils_1.Utils.addOrRemoveCssClass(this.eSortAsc, 'ag-hidden', !this.params.column.isSortAscending());\n        }\n        if (this.eSortDesc) {\n            utils_1.Utils.addOrRemoveCssClass(this.eSortDesc, 'ag-hidden', !this.params.column.isSortDescending());\n        }\n        if (this.eSortNone) {\n            var alwaysHideNoSort = !this.params.column.getColDef().unSortIcon && !this.gridOptionsWrapper.isUnSortIcon();\n            utils_1.Utils.addOrRemoveCssClass(this.eSortNone, 'ag-hidden', alwaysHideNoSort || !this.params.column.isSortNone());\n        }\n    };\n    // we listen here for global sort events, NOT column sort events, as we want to do this\n    // when sorting has been set on all column (if we listened just for our col (where we\n    // set the asc / desc icons) then it's possible other cols are yet to get their sorting state.\n    HeaderComp.prototype.setMultiSortOrder = function () {\n        if (!this.eSortOrder) {\n            return;\n        }\n        var col = this.params.column;\n        var allColumnsWithSorting = this.sortController.getColumnsWithSortingOrdered();\n        var indexThisCol = allColumnsWithSorting.indexOf(col);\n        var moreThanOneColSorting = allColumnsWithSorting.length > 1;\n        var showIndex = col.isSorting() && moreThanOneColSorting;\n        utils_1.Utils.setVisible(this.eSortOrder, showIndex);\n        if (indexThisCol >= 0) {\n            this.eSortOrder.innerHTML = (indexThisCol + 1).toString();\n        }\n        else {\n            this.eSortOrder.innerHTML = '';\n        }\n    };\n    HeaderComp.prototype.setupFilterIcon = function () {\n        if (!this.eFilter) {\n            return;\n        }\n        this.addDestroyableEventListener(this.params.column, column_1.Column.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n        this.onFilterChanged();\n    };\n    HeaderComp.prototype.onFilterChanged = function () {\n        var filterPresent = this.params.column.isFilterActive();\n        utils_1.Utils.addOrRemoveCssClass(this.eFilter, 'ag-hidden', !filterPresent);\n    };\n    HeaderComp.TEMPLATE = '<div class=\"ag-cell-label-container\" role=\"presentation\">' +\n        '  <span ref=\"eMenu\" class=\"ag-header-icon ag-header-cell-menu-button\" aria-hidden=\"true\"></span>' +\n        '  <div ref=\"eLabel\" class=\"ag-header-cell-label\" role=\"presentation\">' +\n        '    <span ref=\"eText\" class=\"ag-header-cell-text\" role=\"columnheader\"></span>' +\n        '    <span ref=\"eFilter\" class=\"ag-header-icon ag-filter-icon\" aria-hidden=\"true\"></span>' +\n        '    <span ref=\"eSortOrder\" class=\"ag-header-icon ag-sort-order\" aria-hidden=\"true\"></span>' +\n        '    <span ref=\"eSortAsc\" class=\"ag-header-icon ag-sort-ascending-icon\" aria-hidden=\"true\"></span>' +\n        '    <span ref=\"eSortDesc\" class=\"ag-header-icon ag-sort-descending-icon\" aria-hidden=\"true\"></span>' +\n        '    <span ref=\"eSortNone\" class=\"ag-header-icon ag-sort-none-icon\" aria-hidden=\"true\"></span>' +\n        '  </div>' +\n        '</div>';\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], HeaderComp.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('sortController'),\n        __metadata(\"design:type\", sortController_1.SortController)\n    ], HeaderComp.prototype, \"sortController\", void 0);\n    __decorate([\n        context_1.Autowired('menuFactory'),\n        __metadata(\"design:type\", Object)\n    ], HeaderComp.prototype, \"menuFactory\", void 0);\n    __decorate([\n        context_1.Autowired('eventService'),\n        __metadata(\"design:type\", eventService_1.EventService)\n    ], HeaderComp.prototype, \"eventService\", void 0);\n    __decorate([\n        componentAnnotations_1.RefSelector('eFilter'),\n        __metadata(\"design:type\", HTMLElement)\n    ], HeaderComp.prototype, \"eFilter\", void 0);\n    __decorate([\n        componentAnnotations_1.RefSelector('eSortAsc'),\n        __metadata(\"design:type\", HTMLElement)\n    ], HeaderComp.prototype, \"eSortAsc\", void 0);\n    __decorate([\n        componentAnnotations_1.RefSelector('eSortDesc'),\n        __metadata(\"design:type\", HTMLElement)\n    ], HeaderComp.prototype, \"eSortDesc\", void 0);\n    __decorate([\n        componentAnnotations_1.RefSelector('eSortNone'),\n        __metadata(\"design:type\", HTMLElement)\n    ], HeaderComp.prototype, \"eSortNone\", void 0);\n    __decorate([\n        componentAnnotations_1.RefSelector('eSortOrder'),\n        __metadata(\"design:type\", HTMLElement)\n    ], HeaderComp.prototype, \"eSortOrder\", void 0);\n    __decorate([\n        componentAnnotations_1.RefSelector('eMenu'),\n        __metadata(\"design:type\", HTMLElement)\n    ], HeaderComp.prototype, \"eMenu\", void 0);\n    __decorate([\n        componentAnnotations_1.RefSelector('eLabel'),\n        __metadata(\"design:type\", HTMLElement)\n    ], HeaderComp.prototype, \"eLabel\", void 0);\n    __decorate([\n        componentAnnotations_1.RefSelector('eText'),\n        __metadata(\"design:type\", HTMLElement)\n    ], HeaderComp.prototype, \"eText\", void 0);\n    return HeaderComp;\n}(component_1.Component));\nexports.HeaderComp = HeaderComp;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/headerRendering/header/headerComp.js\n// module id = 640\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = require(\"../../widgets/component\");\nvar utils_1 = require(\"../../utils\");\nvar columnController_1 = require(\"../../columnController/columnController\");\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar context_1 = require(\"../../context/context\");\nvar touchListener_1 = require(\"../../widgets/touchListener\");\nvar componentAnnotations_1 = require(\"../../widgets/componentAnnotations\");\nvar originalColumnGroup_1 = require(\"../../entities/originalColumnGroup\");\nvar HeaderGroupComp = (function (_super) {\n    __extends(HeaderGroupComp, _super);\n    function HeaderGroupComp() {\n        return _super.call(this, HeaderGroupComp.TEMPLATE) || this;\n    }\n    HeaderGroupComp.prototype.init = function (params) {\n        this.params = params;\n        this.setupLabel();\n        this.addGroupExpandIcon();\n        this.setupExpandIcons();\n    };\n    HeaderGroupComp.prototype.setupExpandIcons = function () {\n        this.addInIcon('columnGroupOpened', 'agOpened');\n        this.addInIcon('columnGroupClosed', 'agClosed');\n        this.addTouchAndClickListeners(this.eCloseIcon);\n        this.addTouchAndClickListeners(this.eOpenIcon);\n        this.updateIconVisibility();\n        var originalColumnGroup = this.params.columnGroup.getOriginalColumnGroup();\n        this.addDestroyableEventListener(originalColumnGroup, originalColumnGroup_1.OriginalColumnGroup.EVENT_EXPANDED_CHANGED, this.updateIconVisibility.bind(this));\n        this.addDestroyableEventListener(originalColumnGroup, originalColumnGroup_1.OriginalColumnGroup.EVENT_EXPANDABLE_CHANGED, this.updateIconVisibility.bind(this));\n    };\n    HeaderGroupComp.prototype.addTouchAndClickListeners = function (eElement) {\n        var _this = this;\n        var expandAction = function () {\n            var newExpandedValue = !_this.params.columnGroup.isExpanded();\n            _this.columnController.setColumnGroupOpened(_this.params.columnGroup.getOriginalColumnGroup(), newExpandedValue);\n        };\n        var touchListener = new touchListener_1.TouchListener(this.eCloseIcon);\n        this.addDestroyableEventListener(touchListener, touchListener_1.TouchListener.EVENT_TAP, expandAction);\n        this.addDestroyFunc(function () { return touchListener.destroy(); });\n        this.addDestroyableEventListener(eElement, 'click', expandAction);\n    };\n    HeaderGroupComp.prototype.updateIconVisibility = function () {\n        var columnGroup = this.params.columnGroup;\n        if (columnGroup.isExpandable()) {\n            var expanded = this.params.columnGroup.isExpanded();\n            utils_1.Utils.setVisible(this.eOpenIcon, !expanded);\n            utils_1.Utils.setVisible(this.eCloseIcon, expanded);\n        }\n        else {\n            utils_1.Utils.setVisible(this.eOpenIcon, false);\n            utils_1.Utils.setVisible(this.eCloseIcon, false);\n        }\n    };\n    HeaderGroupComp.prototype.addInIcon = function (iconName, refName) {\n        var eIcon = utils_1.Utils.createIconNoSpan(iconName, this.gridOptionsWrapper, null);\n        this.getRefElement(refName).appendChild(eIcon);\n    };\n    HeaderGroupComp.prototype.addGroupExpandIcon = function () {\n        if (!this.params.columnGroup.isExpandable()) {\n            utils_1.Utils.setVisible(this.eOpenIcon, false);\n            utils_1.Utils.setVisible(this.eCloseIcon, false);\n            return;\n        }\n    };\n    HeaderGroupComp.prototype.setupLabel = function () {\n        // no renderer, default text render\n        if (this.params.displayName && this.params.displayName !== '') {\n            if (utils_1.Utils.isBrowserSafari()) {\n                this.getGui().style.display = 'table-cell';\n            }\n            var eInnerText = this.getRefElement('agLabel');\n            eInnerText.innerHTML = this.params.displayName;\n        }\n    };\n    HeaderGroupComp.TEMPLATE = \"<div class=\\\"ag-header-group-cell-label\\\">\" +\n        \"<span ref=\\\"agLabel\\\" class=\\\"ag-header-group-text\\\"></span>\" +\n        \"<span ref=\\\"agOpened\\\" class=\\\"ag-header-icon ag-header-expand-icon ag-header-expand-icon-expanded\\\"></span>\" +\n        \"<span ref=\\\"agClosed\\\" class=\\\"ag-header-icon ag-header-expand-icon ag-header-expand-icon-collapsed\\\"></span>\" +\n        \"</div>\";\n    __decorate([\n        context_1.Autowired('columnController'),\n        __metadata(\"design:type\", columnController_1.ColumnController)\n    ], HeaderGroupComp.prototype, \"columnController\", void 0);\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], HeaderGroupComp.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        componentAnnotations_1.RefSelector('agOpened'),\n        __metadata(\"design:type\", HTMLElement)\n    ], HeaderGroupComp.prototype, \"eOpenIcon\", void 0);\n    __decorate([\n        componentAnnotations_1.RefSelector('agClosed'),\n        __metadata(\"design:type\", HTMLElement)\n    ], HeaderGroupComp.prototype, \"eCloseIcon\", void 0);\n    return HeaderGroupComp;\n}(component_1.Component));\nexports.HeaderGroupComp = HeaderGroupComp;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/headerRendering/headerGroup/headerGroupComp.js\n// module id = 641\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar dateFilter_1 = require(\"./dateFilter\");\nvar componentAnnotations_1 = require(\"../widgets/componentAnnotations\");\nvar utils_1 = require(\"../utils\");\nvar componentRecipes_1 = require(\"../components/framework/componentRecipes\");\nvar component_1 = require(\"../widgets/component\");\nvar constants_1 = require(\"../constants\");\nvar InputTextFloatingFilterComp = (function (_super) {\n    __extends(InputTextFloatingFilterComp, _super);\n    function InputTextFloatingFilterComp() {\n        var _this = _super.call(this, \"<div><input  ref=\\\"eColumnFloatingFilter\\\" class=\\\"ag-floating-filter-input\\\"></div>\") || this;\n        _this.lastKnownModel = null;\n        return _this;\n    }\n    InputTextFloatingFilterComp.prototype.init = function (params) {\n        this.onFloatingFilterChanged = params.onFloatingFilterChanged;\n        this.currentParentModel = params.currentParentModel;\n        var debounceMs = params.debounceMs != null ? params.debounceMs : 500;\n        var toDebounce = utils_1._.debounce(this.syncUpWithParentFilter.bind(this), debounceMs);\n        this.addDestroyableEventListener(this.eColumnFloatingFilter, 'input', toDebounce);\n        this.addDestroyableEventListener(this.eColumnFloatingFilter, 'keypress', toDebounce);\n        this.addDestroyableEventListener(this.eColumnFloatingFilter, 'keydown', toDebounce);\n        var columnDef = params.column.getDefinition();\n        if (columnDef.filterParams && columnDef.filterParams.filterOptions && columnDef.filterParams.filterOptions.length === 1 && columnDef.filterParams.filterOptions[0] === 'inRange') {\n            this.eColumnFloatingFilter.readOnly = true;\n        }\n    };\n    InputTextFloatingFilterComp.prototype.onParentModelChanged = function (parentModel) {\n        if (this.equalModels(this.lastKnownModel, parentModel)) {\n            // ensure column floating filter text is blanked out when both ranges are empty\n            if (!this.lastKnownModel && !parentModel) {\n                this.eColumnFloatingFilter.value = '';\n            }\n            return;\n        }\n        this.lastKnownModel = parentModel;\n        var incomingTextValue = this.asFloatingFilterText(parentModel);\n        if (incomingTextValue === this.eColumnFloatingFilter.value)\n            return;\n        this.eColumnFloatingFilter.value = incomingTextValue;\n    };\n    InputTextFloatingFilterComp.prototype.syncUpWithParentFilter = function (e) {\n        var model = this.asParentModel();\n        if (this.equalModels(this.lastKnownModel, model))\n            return;\n        var modelUpdated = null;\n        if (utils_1._.isKeyPressed(e, constants_1.Constants.KEY_ENTER)) {\n            modelUpdated = this.onFloatingFilterChanged({\n                model: model,\n                apply: true\n            });\n        }\n        else {\n            modelUpdated = this.onFloatingFilterChanged({\n                model: model,\n                apply: false\n            });\n        }\n        if (modelUpdated) {\n            this.lastKnownModel = model;\n        }\n    };\n    InputTextFloatingFilterComp.prototype.equalModels = function (left, right) {\n        if (utils_1._.referenceCompare(left, right))\n            return true;\n        if (!left || !right)\n            return false;\n        if (Array.isArray(left) || Array.isArray(right))\n            return false;\n        return (utils_1._.referenceCompare(left.type, right.type) &&\n            utils_1._.referenceCompare(left.filter, right.filter) &&\n            utils_1._.referenceCompare(left.filterTo, right.filterTo) &&\n            utils_1._.referenceCompare(left.filterType, right.filterType));\n    };\n    __decorate([\n        componentAnnotations_1.RefSelector('eColumnFloatingFilter'),\n        __metadata(\"design:type\", HTMLInputElement)\n    ], InputTextFloatingFilterComp.prototype, \"eColumnFloatingFilter\", void 0);\n    return InputTextFloatingFilterComp;\n}(component_1.Component));\nexports.InputTextFloatingFilterComp = InputTextFloatingFilterComp;\nvar TextFloatingFilterComp = (function (_super) {\n    __extends(TextFloatingFilterComp, _super);\n    function TextFloatingFilterComp() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    TextFloatingFilterComp.prototype.asFloatingFilterText = function (parentModel) {\n        if (!parentModel)\n            return '';\n        return parentModel.filter;\n    };\n    TextFloatingFilterComp.prototype.asParentModel = function () {\n        var currentParentModel = this.currentParentModel();\n        return {\n            type: currentParentModel.type,\n            filter: this.eColumnFloatingFilter.value,\n            filterType: 'text'\n        };\n    };\n    return TextFloatingFilterComp;\n}(InputTextFloatingFilterComp));\nexports.TextFloatingFilterComp = TextFloatingFilterComp;\nvar DateFloatingFilterComp = (function (_super) {\n    __extends(DateFloatingFilterComp, _super);\n    function DateFloatingFilterComp() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.lastKnownModel = null;\n        return _this;\n    }\n    DateFloatingFilterComp.prototype.init = function (params) {\n        this.onFloatingFilterChanged = params.onFloatingFilterChanged;\n        this.currentParentModel = params.currentParentModel;\n        var debounceMs = params.debounceMs != null ? params.debounceMs : 500;\n        var toDebounce = utils_1._.debounce(this.onDateChanged.bind(this), debounceMs);\n        var dateComponentParams = {\n            onDateChanged: toDebounce\n        };\n        this.dateComponentPromise = this.componentRecipes.newDateComponent(dateComponentParams);\n        var body = utils_1._.loadTemplate(\"<div></div>\");\n        this.dateComponentPromise.then(function (dateComponent) {\n            body.appendChild(dateComponent.getGui());\n        });\n        this.setTemplateFromElement(body);\n    };\n    DateFloatingFilterComp.prototype.onDateChanged = function () {\n        var parentModel = this.currentParentModel();\n        var model = this.asParentModel();\n        if (this.equalModels(parentModel, model))\n            return;\n        this.onFloatingFilterChanged({\n            model: model,\n            apply: true\n        });\n        this.lastKnownModel = model;\n    };\n    DateFloatingFilterComp.prototype.equalModels = function (left, right) {\n        if (utils_1._.referenceCompare(left, right))\n            return true;\n        if (!left || !right)\n            return false;\n        if (Array.isArray(left) || Array.isArray(right))\n            return false;\n        return (utils_1._.referenceCompare(left.type, right.type) &&\n            utils_1._.referenceCompare(left.dateFrom, right.dateFrom) &&\n            utils_1._.referenceCompare(left.dateTo, right.dateTo) &&\n            utils_1._.referenceCompare(left.filterType, right.filterType));\n    };\n    DateFloatingFilterComp.prototype.asParentModel = function () {\n        var currentParentModel = this.currentParentModel();\n        var filterValueDate = this.dateComponentPromise.resolveNow(null, function (dateComponent) { return dateComponent.getDate(); });\n        var filterValueText = utils_1._.serializeDateToYyyyMmDd(dateFilter_1.DateFilter.removeTimezone(filterValueDate), \"-\");\n        return {\n            type: currentParentModel.type,\n            dateFrom: filterValueText,\n            dateTo: currentParentModel ? currentParentModel.dateTo : null,\n            filterType: 'date'\n        };\n    };\n    DateFloatingFilterComp.prototype.onParentModelChanged = function (parentModel) {\n        this.lastKnownModel = parentModel;\n        this.dateComponentPromise.then(function (dateComponent) {\n            if (!parentModel || !parentModel.dateFrom) {\n                dateComponent.setDate(null);\n                return;\n            }\n            dateComponent.setDate(utils_1._.parseYyyyMmDdToDate(parentModel.dateFrom, '-'));\n        });\n    };\n    __decorate([\n        context_1.Autowired('componentRecipes'),\n        __metadata(\"design:type\", componentRecipes_1.ComponentRecipes)\n    ], DateFloatingFilterComp.prototype, \"componentRecipes\", void 0);\n    return DateFloatingFilterComp;\n}(component_1.Component));\nexports.DateFloatingFilterComp = DateFloatingFilterComp;\nvar NumberFloatingFilterComp = (function (_super) {\n    __extends(NumberFloatingFilterComp, _super);\n    function NumberFloatingFilterComp() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    NumberFloatingFilterComp.prototype.asFloatingFilterText = function (parentModel) {\n        var rawParentModel = this.currentParentModel();\n        if (parentModel == null && rawParentModel == null)\n            return '';\n        if (parentModel == null && rawParentModel != null && rawParentModel.type !== 'inRange') {\n            this.eColumnFloatingFilter.readOnly = false;\n            return '';\n        }\n        if (rawParentModel != null && rawParentModel.type === 'inRange') {\n            this.eColumnFloatingFilter.readOnly = true;\n            var number_1 = this.asNumber(rawParentModel.filter);\n            var numberTo = this.asNumber(rawParentModel.filterTo);\n            return (number_1 ? number_1 + '' : '') +\n                '-' +\n                (numberTo ? numberTo + '' : '');\n        }\n        var number = this.asNumber(parentModel.filter);\n        this.eColumnFloatingFilter.readOnly = false;\n        return number != null ? number + '' : '';\n    };\n    NumberFloatingFilterComp.prototype.asParentModel = function () {\n        var currentParentModel = this.currentParentModel();\n        var filterValueNumber = this.asNumber(this.eColumnFloatingFilter.value);\n        var filterValueText = this.eColumnFloatingFilter.value;\n        var modelFilterValue = null;\n        if (filterValueNumber == null && filterValueText === '') {\n            modelFilterValue = null;\n        }\n        else if (filterValueNumber == null) {\n            modelFilterValue = currentParentModel.filter;\n        }\n        else {\n            modelFilterValue = filterValueNumber;\n        }\n        return {\n            type: currentParentModel.type,\n            filter: modelFilterValue,\n            filterTo: !currentParentModel ? null : currentParentModel.filterTo,\n            filterType: 'number'\n        };\n    };\n    NumberFloatingFilterComp.prototype.asNumber = function (value) {\n        if (value == null)\n            return null;\n        if (value === '')\n            return null;\n        var asNumber = Number(value);\n        var invalidNumber = !utils_1._.isNumeric(asNumber);\n        return invalidNumber ? null : asNumber;\n    };\n    return NumberFloatingFilterComp;\n}(InputTextFloatingFilterComp));\nexports.NumberFloatingFilterComp = NumberFloatingFilterComp;\nvar SetFloatingFilterComp = (function (_super) {\n    __extends(SetFloatingFilterComp, _super);\n    function SetFloatingFilterComp() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    SetFloatingFilterComp.prototype.init = function (params) {\n        _super.prototype.init.call(this, params);\n        this.eColumnFloatingFilter.readOnly = true;\n    };\n    SetFloatingFilterComp.prototype.asFloatingFilterText = function (parentModel) {\n        if (!parentModel || parentModel.length === 0)\n            return '';\n        var arrayToDisplay = parentModel.length > 10 ? parentModel.slice(0, 10).concat(['...']) : parentModel;\n        return \"(\" + parentModel.length + \") \" + arrayToDisplay.join(\",\");\n    };\n    SetFloatingFilterComp.prototype.asParentModel = function () {\n        if (this.eColumnFloatingFilter.value == null || this.eColumnFloatingFilter.value === '')\n            return null;\n        return this.eColumnFloatingFilter.value.split(\",\");\n    };\n    return SetFloatingFilterComp;\n}(InputTextFloatingFilterComp));\nexports.SetFloatingFilterComp = SetFloatingFilterComp;\nvar ReadModelAsStringFloatingFilterComp = (function (_super) {\n    __extends(ReadModelAsStringFloatingFilterComp, _super);\n    function ReadModelAsStringFloatingFilterComp() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    ReadModelAsStringFloatingFilterComp.prototype.init = function (params) {\n        _super.prototype.init.call(this, params);\n        this.eColumnFloatingFilter.readOnly = true;\n    };\n    ReadModelAsStringFloatingFilterComp.prototype.onParentModelChanged = function (parentModel) {\n        this.eColumnFloatingFilter.value = this.asFloatingFilterText(this.currentParentModel());\n    };\n    ReadModelAsStringFloatingFilterComp.prototype.asFloatingFilterText = function (parentModel) {\n        return parentModel;\n    };\n    ReadModelAsStringFloatingFilterComp.prototype.asParentModel = function () {\n        return null;\n    };\n    return ReadModelAsStringFloatingFilterComp;\n}(InputTextFloatingFilterComp));\nexports.ReadModelAsStringFloatingFilterComp = ReadModelAsStringFloatingFilterComp;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/filter/floatingFilter.js\n// module id = 642\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar column_1 = require(\"../entities/column\");\nvar utils_1 = require(\"../utils\");\nvar setLeftFeature_1 = require(\"../rendering/features/setLeftFeature\");\nvar component_1 = require(\"../widgets/component\");\nvar componentAnnotations_1 = require(\"../widgets/componentAnnotations\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar beans_1 = require(\"../rendering/beans\");\nvar BaseFilterWrapperComp = (function (_super) {\n    __extends(BaseFilterWrapperComp, _super);\n    function BaseFilterWrapperComp() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    BaseFilterWrapperComp.prototype.init = function (params) {\n        this.column = params.column;\n        var base = utils_1._.loadTemplate(\"<div class=\\\"ag-header-cell\\\" aria-hidden=\\\"true\\\"><div class=\\\"ag-floating-filter-body\\\" aria-hidden=\\\"true\\\"></div></div>\");\n        this.enrichBody(base);\n        this.setTemplateFromElement(base);\n        this.setupWidth();\n        var setLeftFeature = new setLeftFeature_1.SetLeftFeature(this.column, this.getGui(), this.beans);\n        setLeftFeature.init();\n        this.addDestroyFunc(setLeftFeature.destroy.bind(setLeftFeature));\n    };\n    BaseFilterWrapperComp.prototype.setupWidth = function () {\n        this.addDestroyableEventListener(this.column, column_1.Column.EVENT_WIDTH_CHANGED, this.onColumnWidthChanged.bind(this));\n        this.onColumnWidthChanged();\n    };\n    BaseFilterWrapperComp.prototype.onColumnWidthChanged = function () {\n        this.getGui().style.width = this.column.getActualWidth() + 'px';\n    };\n    __decorate([\n        context_1.Autowired('context'),\n        __metadata(\"design:type\", context_1.Context)\n    ], BaseFilterWrapperComp.prototype, \"context\", void 0);\n    __decorate([\n        context_1.Autowired('beans'),\n        __metadata(\"design:type\", beans_1.Beans)\n    ], BaseFilterWrapperComp.prototype, \"beans\", void 0);\n    return BaseFilterWrapperComp;\n}(component_1.Component));\nexports.BaseFilterWrapperComp = BaseFilterWrapperComp;\nvar FloatingFilterWrapperComp = (function (_super) {\n    __extends(FloatingFilterWrapperComp, _super);\n    function FloatingFilterWrapperComp() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    FloatingFilterWrapperComp.prototype.init = function (params) {\n        this.floatingFilterCompPromise = params.floatingFilterComp;\n        this.suppressFilterButton = params.suppressFilterButton;\n        _super.prototype.init.call(this, params);\n        this.addEventListeners();\n    };\n    FloatingFilterWrapperComp.prototype.addEventListeners = function () {\n        if (!this.suppressFilterButton && this.eButtonShowMainFilter) {\n            this.addDestroyableEventListener(this.eButtonShowMainFilter, 'click', this.showParentFilter.bind(this));\n        }\n    };\n    FloatingFilterWrapperComp.prototype.enrichBody = function (body) {\n        var _this = this;\n        this.floatingFilterCompPromise.then(function (floatingFilterComp) {\n            var floatingFilterBody = body.querySelector('.ag-floating-filter-body');\n            var floatingFilterCompUi = floatingFilterComp.getGui();\n            if (_this.suppressFilterButton) {\n                floatingFilterBody.appendChild(floatingFilterCompUi);\n                utils_1._.removeCssClass(floatingFilterBody, 'ag-floating-filter-body');\n                utils_1._.addCssClass(floatingFilterBody, 'ag-floating-filter-full-body');\n            }\n            else {\n                floatingFilterBody.appendChild(floatingFilterCompUi);\n                body.appendChild(utils_1._.loadTemplate(\"<div class=\\\"ag-floating-filter-button\\\" aria-hidden=\\\"true\\\">\\n                        <button ref=\\\"eButtonShowMainFilter\\\"></button>\\n                </div>\"));\n                var eIcon = utils_1._.createIconNoSpan('filter', _this.gridOptionsWrapper, _this.column);\n                body.querySelector('button').appendChild(eIcon);\n            }\n            if (floatingFilterComp.afterGuiAttached) {\n                floatingFilterComp.afterGuiAttached();\n            }\n            _this.wireQuerySelectors();\n            _this.addEventListeners();\n        });\n    };\n    FloatingFilterWrapperComp.prototype.onParentModelChanged = function (parentModel) {\n        this.floatingFilterCompPromise.then(function (floatingFilterComp) {\n            floatingFilterComp.onParentModelChanged(parentModel);\n        });\n    };\n    FloatingFilterWrapperComp.prototype.showParentFilter = function () {\n        this.menuFactory.showMenuAfterButtonClick(this.column, this.eButtonShowMainFilter, 'filterMenuTab', ['filterMenuTab']);\n    };\n    __decorate([\n        componentAnnotations_1.RefSelector('eButtonShowMainFilter'),\n        __metadata(\"design:type\", HTMLInputElement)\n    ], FloatingFilterWrapperComp.prototype, \"eButtonShowMainFilter\", void 0);\n    __decorate([\n        context_1.Autowired('menuFactory'),\n        __metadata(\"design:type\", Object)\n    ], FloatingFilterWrapperComp.prototype, \"menuFactory\", void 0);\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], FloatingFilterWrapperComp.prototype, \"gridOptionsWrapper\", void 0);\n    return FloatingFilterWrapperComp;\n}(BaseFilterWrapperComp));\nexports.FloatingFilterWrapperComp = FloatingFilterWrapperComp;\nvar EmptyFloatingFilterWrapperComp = (function (_super) {\n    __extends(EmptyFloatingFilterWrapperComp, _super);\n    function EmptyFloatingFilterWrapperComp() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    EmptyFloatingFilterWrapperComp.prototype.enrichBody = function (body) {\n    };\n    EmptyFloatingFilterWrapperComp.prototype.onParentModelChanged = function (parentModel) {\n    };\n    return EmptyFloatingFilterWrapperComp;\n}(BaseFilterWrapperComp));\nexports.EmptyFloatingFilterWrapperComp = EmptyFloatingFilterWrapperComp;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/filter/floatingFilterWrapper.js\n// module id = 643\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../../utils\");\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar context_1 = require(\"../../context/context\");\nvar component_1 = require(\"../../widgets/component\");\nvar componentRecipes_1 = require(\"../../components/framework/componentRecipes\");\nvar OverlayWrapperComponent = (function (_super) {\n    __extends(OverlayWrapperComponent, _super);\n    function OverlayWrapperComponent() {\n        return _super.call(this) || this;\n    }\n    OverlayWrapperComponent.prototype.init = function () { };\n    OverlayWrapperComponent.prototype.showLoadingOverlay = function (eOverlayWrapper) {\n        var _this = this;\n        this.setTemplate(OverlayWrapperComponent.LOADING_WRAPPER_OVERLAY_TEMPLATE);\n        this.componentRecipes.newLoadingOverlayComponent().then(function (renderer) {\n            var loadingOverlayWrapper = _this.getRefElement(\"loadingOverlayWrapper\");\n            utils_1.Utils.removeAllChildren(loadingOverlayWrapper);\n            loadingOverlayWrapper.appendChild(renderer.getGui());\n        });\n        this.showOverlay(eOverlayWrapper, this.getGui());\n    };\n    OverlayWrapperComponent.prototype.showNoRowsOverlay = function (eOverlayWrapper) {\n        var _this = this;\n        this.setTemplate(OverlayWrapperComponent.NO_ROWS_WRAPPER_OVERLAY_TEMPLATE);\n        this.componentRecipes.newNoRowsOverlayComponent().then(function (renderer) {\n            var noRowsOverlayWrapper = _this.getRefElement(\"noRowsOverlayWrapper\");\n            utils_1.Utils.removeAllChildren(noRowsOverlayWrapper);\n            noRowsOverlayWrapper.appendChild(renderer.getGui());\n        });\n        this.showOverlay(eOverlayWrapper, this.getGui());\n    };\n    OverlayWrapperComponent.prototype.hideOverlay = function (eOverlayWrapper) {\n        utils_1.Utils.removeAllChildren(eOverlayWrapper);\n        eOverlayWrapper.style.display = 'none';\n    };\n    OverlayWrapperComponent.prototype.showOverlay = function (eOverlayWrapper, overlay) {\n        if (overlay) {\n            utils_1.Utils.removeAllChildren(eOverlayWrapper);\n            eOverlayWrapper.style.display = '';\n            eOverlayWrapper.appendChild(overlay);\n        }\n        else {\n            console.warn('ag-Grid: unknown overlay');\n            this.hideOverlay(eOverlayWrapper);\n        }\n    };\n    // wrapping in outer div, and wrapper, is needed to center the loading icon\n    // The idea for centering came from here: http://www.vanseodesign.com/css/vertical-centering/\n    OverlayWrapperComponent.LOADING_WRAPPER_OVERLAY_TEMPLATE = '<div class=\"ag-overlay-panel\" role=\"presentation\">' +\n        '<div class=\"ag-overlay-wrapper ag-overlay-loading-wrapper\" ref=\"loadingOverlayWrapper\">[OVERLAY_TEMPLATE]</div>' +\n        '</div>';\n    OverlayWrapperComponent.NO_ROWS_WRAPPER_OVERLAY_TEMPLATE = '<div class=\"ag-overlay-panel\" role=\"presentation\">' +\n        '<div class=\"ag-overlay-wrapper ag-overlay-no-rows-wrapper\" ref=\"noRowsOverlayWrapper\">[OVERLAY_TEMPLATE]</div>' +\n        '</div>';\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], OverlayWrapperComponent.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('componentRecipes'),\n        __metadata(\"design:type\", componentRecipes_1.ComponentRecipes)\n    ], OverlayWrapperComponent.prototype, \"componentRecipes\", void 0);\n    return OverlayWrapperComponent;\n}(component_1.Component));\nexports.OverlayWrapperComponent = OverlayWrapperComponent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rendering/overlays/overlayWrapperComponent.js\n// module id = 644\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar context_1 = require(\"../../context/context\");\nvar component_1 = require(\"../../widgets/component\");\nvar LoadingOverlayComponent = (function (_super) {\n    __extends(LoadingOverlayComponent, _super);\n    function LoadingOverlayComponent() {\n        return _super.call(this) || this;\n    }\n    LoadingOverlayComponent.prototype.init = function (params) {\n        var template = this.gridOptionsWrapper.getOverlayLoadingTemplate() ?\n            this.gridOptionsWrapper.getOverlayLoadingTemplate() : LoadingOverlayComponent.DEFAULT_LOADING_OVERLAY_TEMPLATE;\n        var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n        var localisedTemplate = template.replace('[LOADING...]', localeTextFunc('loadingOoo', 'Loading...'));\n        this.setTemplate(localisedTemplate);\n    };\n    LoadingOverlayComponent.DEFAULT_LOADING_OVERLAY_TEMPLATE = '<span class=\"ag-overlay-loading-center\">[LOADING...]</span>';\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], LoadingOverlayComponent.prototype, \"gridOptionsWrapper\", void 0);\n    return LoadingOverlayComponent;\n}(component_1.Component));\nexports.LoadingOverlayComponent = LoadingOverlayComponent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rendering/overlays/loadingOverlayComponent.js\n// module id = 645\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar context_1 = require(\"../../context/context\");\nvar component_1 = require(\"../../widgets/component\");\nvar NoRowsOverlayComponent = (function (_super) {\n    __extends(NoRowsOverlayComponent, _super);\n    function NoRowsOverlayComponent() {\n        return _super.call(this) || this;\n    }\n    NoRowsOverlayComponent.prototype.init = function (params) {\n        var template = this.gridOptionsWrapper.getOverlayNoRowsTemplate() ?\n            this.gridOptionsWrapper.getOverlayNoRowsTemplate() : NoRowsOverlayComponent.DEFAULT_NO_ROWS_TEMPLATE;\n        var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n        var localisedTemplate = template.replace('[NO_ROWS_TO_SHOW]', localeTextFunc('noRowsToShow', 'No Rows To Show'));\n        this.setTemplate(localisedTemplate);\n    };\n    NoRowsOverlayComponent.DEFAULT_NO_ROWS_TEMPLATE = '<span class=\"ag-overlay-no-rows-center\">[NO_ROWS_TO_SHOW]</span>';\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], NoRowsOverlayComponent.prototype, \"gridOptionsWrapper\", void 0);\n    return NoRowsOverlayComponent;\n}(component_1.Component));\nexports.NoRowsOverlayComponent = NoRowsOverlayComponent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rendering/overlays/noRowsOverlayComponent.js\n// module id = 646\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar agCheckbox_1 = require(\"../../widgets/agCheckbox\");\nvar beanStub_1 = require(\"../../context/beanStub\");\nvar context_1 = require(\"../../context/context\");\nvar columnController_1 = require(\"../../columnController/columnController\");\nvar gridApi_1 = require(\"../../gridApi\");\nvar events_1 = require(\"../../events\");\nvar eventService_1 = require(\"../../eventService\");\nvar constants_1 = require(\"../../constants\");\nvar selectionController_1 = require(\"../../selectionController\");\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar SelectAllFeature = (function (_super) {\n    __extends(SelectAllFeature, _super);\n    function SelectAllFeature(cbSelectAll, column) {\n        var _this = _super.call(this) || this;\n        _this.cbSelectAllVisible = false;\n        _this.processingEventFromCheckbox = false;\n        _this.cbSelectAll = cbSelectAll;\n        _this.column = column;\n        var colDef = column.getColDef();\n        _this.filteredOnly = colDef ? !!colDef.headerCheckboxSelectionFilteredOnly : false;\n        return _this;\n    }\n    SelectAllFeature.prototype.postConstruct = function () {\n        this.showOrHideSelectAll();\n        this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.showOrHideSelectAll.bind(this));\n        this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_SELECTION_CHANGED, this.onSelectionChanged.bind(this));\n        this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_MODEL_UPDATED, this.onModelChanged.bind(this));\n        this.addDestroyableEventListener(this.cbSelectAll, agCheckbox_1.AgCheckbox.EVENT_CHANGED, this.onCbSelectAll.bind(this));\n    };\n    SelectAllFeature.prototype.showOrHideSelectAll = function () {\n        this.cbSelectAllVisible = this.isCheckboxSelection();\n        this.cbSelectAll.setVisible(this.cbSelectAllVisible);\n        if (this.cbSelectAllVisible) {\n            // in case user is trying this feature with the wrong model type\n            this.checkRightRowModelType();\n            // make sure checkbox is showing the right state\n            this.updateStateOfCheckbox();\n        }\n    };\n    SelectAllFeature.prototype.onModelChanged = function () {\n        if (!this.cbSelectAllVisible) {\n            return;\n        }\n        this.updateStateOfCheckbox();\n    };\n    SelectAllFeature.prototype.onSelectionChanged = function () {\n        if (!this.cbSelectAllVisible) {\n            return;\n        }\n        this.updateStateOfCheckbox();\n    };\n    SelectAllFeature.prototype.getNextCheckboxState = function (selectionCount) {\n        if (selectionCount.selected === 0 && selectionCount.notSelected === 0) {\n            // if no rows, always have it unselected\n            return false;\n        }\n        else if (selectionCount.selected > 0 && selectionCount.notSelected > 0) {\n            // if mix of selected and unselected, this is the tri-state\n            return null;\n        }\n        else if (selectionCount.selected > 0) {\n            // only selected\n            return true;\n        }\n        else {\n            // nothing selected\n            return false;\n        }\n    };\n    SelectAllFeature.prototype.updateStateOfCheckbox = function () {\n        if (this.processingEventFromCheckbox) {\n            return;\n        }\n        this.processingEventFromCheckbox = true;\n        var selectionCount = this.getSelectionCount();\n        var allSelected = this.getNextCheckboxState(selectionCount);\n        this.cbSelectAll.setSelected(allSelected);\n        this.processingEventFromCheckbox = false;\n    };\n    SelectAllFeature.prototype.getSelectionCount = function () {\n        var selectedCount = 0;\n        var notSelectedCount = 0;\n        var callback = function (node) {\n            if (node.isSelected()) {\n                selectedCount++;\n            }\n            else {\n                notSelectedCount++;\n            }\n        };\n        if (this.filteredOnly) {\n            this.gridApi.forEachNodeAfterFilter(callback);\n        }\n        else {\n            this.gridApi.forEachNode(callback);\n        }\n        return {\n            notSelected: notSelectedCount,\n            selected: selectedCount\n        };\n    };\n    SelectAllFeature.prototype.checkRightRowModelType = function () {\n        var rowModelType = this.rowModel.getType();\n        var rowModelMatches = rowModelType === constants_1.Constants.ROW_MODEL_TYPE_IN_MEMORY;\n        if (!rowModelMatches) {\n            console.log(\"ag-Grid: selectAllCheckbox is only available if using normal row model, you are using \" + rowModelType);\n        }\n    };\n    SelectAllFeature.prototype.onCbSelectAll = function () {\n        if (this.processingEventFromCheckbox) {\n            return;\n        }\n        if (!this.cbSelectAllVisible) {\n            return;\n        }\n        var value = this.cbSelectAll.isSelected();\n        if (value) {\n            this.selectionController.selectAllRowNodes(this.filteredOnly);\n        }\n        else {\n            this.selectionController.deselectAllRowNodes(this.filteredOnly);\n        }\n    };\n    SelectAllFeature.prototype.isCheckboxSelection = function () {\n        var result = this.column.getColDef().headerCheckboxSelection;\n        if (typeof result === 'function') {\n            var func = result;\n            result = func({\n                column: this.column,\n                colDef: this.column.getColDef(),\n                columnApi: this.columnApi,\n                api: this.gridApi\n            });\n        }\n        if (result) {\n            if (this.gridOptionsWrapper.isRowModelEnterprise()) {\n                console.warn('headerCheckboxSelection is not supported for Enterprise Row Model');\n                return false;\n            }\n            if (this.gridOptionsWrapper.isRowModelInfinite()) {\n                console.warn('headerCheckboxSelection is not supported for Infinite Row Model');\n                return false;\n            }\n            if (this.gridOptionsWrapper.isRowModelViewport()) {\n                console.warn('headerCheckboxSelection is not supported for Viewport Row Model');\n                return false;\n            }\n            // otherwise the row model is compatible, so return true\n            return true;\n        }\n        else {\n            return false;\n        }\n    };\n    __decorate([\n        context_1.Autowired('gridApi'),\n        __metadata(\"design:type\", gridApi_1.GridApi)\n    ], SelectAllFeature.prototype, \"gridApi\", void 0);\n    __decorate([\n        context_1.Autowired('columnApi'),\n        __metadata(\"design:type\", columnController_1.ColumnApi)\n    ], SelectAllFeature.prototype, \"columnApi\", void 0);\n    __decorate([\n        context_1.Autowired('eventService'),\n        __metadata(\"design:type\", eventService_1.EventService)\n    ], SelectAllFeature.prototype, \"eventService\", void 0);\n    __decorate([\n        context_1.Autowired('rowModel'),\n        __metadata(\"design:type\", Object)\n    ], SelectAllFeature.prototype, \"rowModel\", void 0);\n    __decorate([\n        context_1.Autowired('selectionController'),\n        __metadata(\"design:type\", selectionController_1.SelectionController)\n    ], SelectAllFeature.prototype, \"selectionController\", void 0);\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], SelectAllFeature.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], SelectAllFeature.prototype, \"postConstruct\", null);\n    return SelectAllFeature;\n}(beanStub_1.BeanStub));\nexports.SelectAllFeature = SelectAllFeature;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/headerRendering/header/selectAllFeature.js\n// module id = 647\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = require(\"../../widgets/component\");\nvar column_1 = require(\"../../entities/column\");\nvar utils_1 = require(\"../../utils\");\nvar columnGroup_1 = require(\"../../entities/columnGroup\");\nvar columnController_1 = require(\"../../columnController/columnController\");\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar horizontalDragService_1 = require(\"../horizontalDragService\");\nvar context_1 = require(\"../../context/context\");\nvar cssClassApplier_1 = require(\"../cssClassApplier\");\nvar dragAndDropService_1 = require(\"../../dragAndDrop/dragAndDropService\");\nvar setLeftFeature_1 = require(\"../../rendering/features/setLeftFeature\");\nvar gridApi_1 = require(\"../../gridApi\");\nvar componentRecipes_1 = require(\"../../components/framework/componentRecipes\");\nvar beans_1 = require(\"../../rendering/beans\");\nvar HeaderGroupWrapperComp = (function (_super) {\n    __extends(HeaderGroupWrapperComp, _super);\n    function HeaderGroupWrapperComp(columnGroup, eRoot, dragSourceDropTarget, pinned) {\n        var _this = _super.call(this, HeaderGroupWrapperComp.TEMPLATE) || this;\n        // the children can change, we keep destroy functions related to listening to the children here\n        _this.childColumnsDestroyFuncs = [];\n        _this.columnGroup = columnGroup;\n        _this.eRoot = eRoot;\n        _this.dragSourceDropTarget = dragSourceDropTarget;\n        _this.pinned = pinned;\n        return _this;\n    }\n    HeaderGroupWrapperComp.prototype.postConstruct = function () {\n        cssClassApplier_1.CssClassApplier.addHeaderClassesFromColDef(this.columnGroup.getColGroupDef(), this.getGui(), this.gridOptionsWrapper, null, this.columnGroup);\n        var displayName = this.columnController.getDisplayNameForColumnGroup(this.columnGroup, 'header');\n        this.appendHeaderGroupComp(displayName);\n        this.setupResize();\n        this.addClasses();\n        this.setupWidth();\n        this.addAttributes();\n        var setLeftFeature = new setLeftFeature_1.SetLeftFeature(this.columnGroup, this.getGui(), this.beans);\n        setLeftFeature.init();\n        this.addDestroyFunc(setLeftFeature.destroy.bind(setLeftFeature));\n    };\n    HeaderGroupWrapperComp.prototype.addAttributes = function () {\n        this.getGui().setAttribute(\"col-id\", this.columnGroup.getUniqueId());\n    };\n    HeaderGroupWrapperComp.prototype.appendHeaderGroupComp = function (displayName) {\n        var _this = this;\n        var params = {\n            displayName: displayName,\n            columnGroup: this.columnGroup,\n            setExpanded: function (expanded) {\n                _this.columnController.setColumnGroupOpened(_this.columnGroup.getOriginalColumnGroup(), expanded);\n            },\n            api: this.gridApi,\n            columnApi: this.columnApi,\n            context: this.gridOptionsWrapper.getContext()\n        };\n        var callback = this.afterHeaderCompCreated.bind(this, displayName);\n        this.componentRecipes.newHeaderGroupComponent(params).then(callback);\n    };\n    HeaderGroupWrapperComp.prototype.afterHeaderCompCreated = function (displayName, headerGroupComp) {\n        this.appendChild(headerGroupComp);\n        this.setupMove(headerGroupComp.getGui(), displayName);\n        if (headerGroupComp.destroy) {\n            this.addDestroyFunc(headerGroupComp.destroy.bind(headerGroupComp));\n        }\n    };\n    HeaderGroupWrapperComp.prototype.addClasses = function () {\n        // having different classes below allows the style to not have a bottom border\n        // on the group header, if no group is specified\n        // columnGroup.getColGroupDef\n        if (this.columnGroup.isPadding()) {\n            this.addCssClass('ag-header-group-cell-no-group');\n        }\n        else {\n            this.addCssClass('ag-header-group-cell-with-group');\n        }\n    };\n    HeaderGroupWrapperComp.prototype.setupMove = function (eHeaderGroup, displayName) {\n        var _this = this;\n        if (!eHeaderGroup) {\n            return;\n        }\n        if (this.isSuppressMoving()) {\n            return;\n        }\n        if (eHeaderGroup) {\n            var dragSource_1 = {\n                type: dragAndDropService_1.DragSourceType.HeaderCell,\n                eElement: eHeaderGroup,\n                dragItemName: displayName,\n                // we add in the original group leaf columns, so we move both visible and non-visible items\n                dragItemCallback: this.getDragItemForGroup.bind(this),\n                dragSourceDropTarget: this.dragSourceDropTarget\n            };\n            this.dragAndDropService.addDragSource(dragSource_1, true);\n            this.addDestroyFunc(function () { return _this.dragAndDropService.removeDragSource(dragSource_1); });\n        }\n    };\n    // when moving the columns, we want to move all the columns (contained within the DragItem) in this group in one go,\n    // and in the order they are currently in the screen.\n    HeaderGroupWrapperComp.prototype.getDragItemForGroup = function () {\n        var allColumnsOriginalOrder = this.columnGroup.getOriginalColumnGroup().getLeafColumns();\n        // capture visible state, used when reentering grid to dictate which columns should be visible\n        var visibleState = {};\n        allColumnsOriginalOrder.forEach(function (column) { return visibleState[column.getId()] = column.isVisible(); });\n        var allColumnsCurrentOrder = [];\n        this.columnController.getAllDisplayedColumns().forEach(function (column) {\n            if (allColumnsOriginalOrder.indexOf(column) >= 0) {\n                allColumnsCurrentOrder.push(column);\n                utils_1.Utils.removeFromArray(allColumnsOriginalOrder, column);\n            }\n        });\n        // we are left with non-visible columns, stick these in at the end\n        allColumnsOriginalOrder.forEach(function (column) { return allColumnsCurrentOrder.push(column); });\n        // create and return dragItem\n        return {\n            columns: allColumnsCurrentOrder,\n            visibleState: visibleState\n        };\n    };\n    HeaderGroupWrapperComp.prototype.isSuppressMoving = function () {\n        // if any child is fixed, then don't allow moving\n        var childSuppressesMoving = false;\n        this.columnGroup.getLeafColumns().forEach(function (column) {\n            if (column.getColDef().suppressMovable) {\n                childSuppressesMoving = true;\n            }\n        });\n        var result = childSuppressesMoving\n            || this.gridOptionsWrapper.isSuppressMovableColumns()\n            || this.gridOptionsWrapper.isForPrint();\n        return result;\n    };\n    HeaderGroupWrapperComp.prototype.setupWidth = function () {\n        // we need to listen to changes in child columns, as they impact our width\n        this.addListenersToChildrenColumns();\n        // the children belonging to this group can change, so we need to add and remove listeners as they change\n        this.addDestroyableEventListener(this.columnGroup, columnGroup_1.ColumnGroup.EVENT_DISPLAYED_CHILDREN_CHANGED, this.onDisplayedChildrenChanged.bind(this));\n        this.onWidthChanged();\n        // the child listeners are not tied to this components lifecycle, as children can get added and removed\n        // to the group - hence they are on a different lifecycle. so we must make sure the existing children\n        // listeners are removed when we finally get destroyed\n        this.addDestroyFunc(this.destroyListenersOnChildrenColumns.bind(this));\n    };\n    HeaderGroupWrapperComp.prototype.onDisplayedChildrenChanged = function () {\n        this.addListenersToChildrenColumns();\n        this.onWidthChanged();\n    };\n    HeaderGroupWrapperComp.prototype.addListenersToChildrenColumns = function () {\n        var _this = this;\n        // first destroy any old listeners\n        this.destroyListenersOnChildrenColumns();\n        // now add new listeners to the new set of children\n        var widthChangedListener = this.onWidthChanged.bind(this);\n        this.columnGroup.getLeafColumns().forEach(function (column) {\n            column.addEventListener(column_1.Column.EVENT_WIDTH_CHANGED, widthChangedListener);\n            column.addEventListener(column_1.Column.EVENT_VISIBLE_CHANGED, widthChangedListener);\n            _this.childColumnsDestroyFuncs.push(function () {\n                column.removeEventListener(column_1.Column.EVENT_WIDTH_CHANGED, widthChangedListener);\n                column.removeEventListener(column_1.Column.EVENT_VISIBLE_CHANGED, widthChangedListener);\n            });\n        });\n    };\n    HeaderGroupWrapperComp.prototype.destroyListenersOnChildrenColumns = function () {\n        this.childColumnsDestroyFuncs.forEach(function (func) { return func(); });\n        this.childColumnsDestroyFuncs = [];\n    };\n    HeaderGroupWrapperComp.prototype.onWidthChanged = function () {\n        this.getGui().style.width = this.columnGroup.getActualWidth() + 'px';\n    };\n    HeaderGroupWrapperComp.prototype.setupResize = function () {\n        var _this = this;\n        this.eHeaderCellResize = this.getRefElement('agResize');\n        if (!this.columnGroup.isResizable()) {\n            utils_1.Utils.removeFromParent(this.eHeaderCellResize);\n            return;\n        }\n        this.dragService.addDragHandling({\n            eDraggableElement: this.eHeaderCellResize,\n            eBody: this.eRoot,\n            cursor: 'col-resize',\n            startAfterPixels: 0,\n            onDragStart: this.onDragStart.bind(this),\n            onDragging: this.onDragging.bind(this)\n        });\n        if (!this.gridOptionsWrapper.isSuppressAutoSize()) {\n            this.eHeaderCellResize.addEventListener('dblclick', function (event) {\n                // get list of all the column keys we are responsible for\n                var keys = [];\n                _this.columnGroup.getDisplayedLeafColumns().forEach(function (column) {\n                    // not all cols in the group may be participating with auto-resize\n                    if (!column.getColDef().suppressAutoSize) {\n                        keys.push(column.getColId());\n                    }\n                });\n                if (keys.length > 0) {\n                    _this.columnController.autoSizeColumns(keys);\n                }\n            });\n        }\n    };\n    HeaderGroupWrapperComp.prototype.onDragStart = function () {\n        var _this = this;\n        this.groupWidthStart = this.columnGroup.getActualWidth();\n        this.childrenWidthStarts = [];\n        this.columnGroup.getDisplayedLeafColumns().forEach(function (column) {\n            _this.childrenWidthStarts.push(column.getActualWidth());\n        });\n    };\n    HeaderGroupWrapperComp.prototype.onDragging = function (dragChange, finished) {\n        var _this = this;\n        // this will be the width we have to distribute to the resizable columns\n        var widthForResizableCols;\n        // this is all the displayed cols in the group less those that we cannot resize\n        var resizableCols;\n        // a lot of variables defined for the first set of maths, but putting\n        // braces in, we localise the variables to this bit of the method\n        {\n            var dragChangeNormalised = this.normaliseDragChange(dragChange);\n            var totalGroupWidth = this.groupWidthStart + dragChangeNormalised;\n            var displayedColumns = this.columnGroup.getDisplayedLeafColumns();\n            resizableCols = utils_1.Utils.filter(displayedColumns, function (col) { return col.isResizable(); });\n            var nonResizableCols = utils_1.Utils.filter(displayedColumns, function (col) { return !col.isResizable(); });\n            var nonResizableColsWidth_1 = 0;\n            nonResizableCols.forEach(function (col) { return nonResizableColsWidth_1 += col.getActualWidth(); });\n            widthForResizableCols = totalGroupWidth - nonResizableColsWidth_1;\n            var minWidth_1 = 0;\n            resizableCols.forEach(function (col) { return minWidth_1 += col.getMinWidth(); });\n            if (widthForResizableCols < minWidth_1) {\n                widthForResizableCols = minWidth_1;\n            }\n        }\n        // distribute the new width to the child headers\n        var changeRatio = widthForResizableCols / this.groupWidthStart;\n        // keep track of pixels used, and last column gets the remaining,\n        // to cater for rounding errors, and min width adjustments\n        var pixelsToDistribute = widthForResizableCols;\n        resizableCols.forEach(function (column, index) {\n            var notLastCol = index !== (resizableCols.length - 1);\n            var newChildSize;\n            if (notLastCol) {\n                // if not the last col, calculate the column width as normal\n                var startChildSize = _this.childrenWidthStarts[index];\n                newChildSize = startChildSize * changeRatio;\n                if (newChildSize < column.getMinWidth()) {\n                    newChildSize = column.getMinWidth();\n                }\n                pixelsToDistribute -= newChildSize;\n            }\n            else {\n                // if last col, give it the remaining pixels\n                newChildSize = pixelsToDistribute;\n            }\n            _this.columnController.setColumnWidth(column, newChildSize, finished);\n        });\n    };\n    // optionally inverts the drag, depending on pinned and RTL\n    // note - this method is duplicated in RenderedHeaderCell - should refactor out?\n    HeaderGroupWrapperComp.prototype.normaliseDragChange = function (dragChange) {\n        var result = dragChange;\n        if (this.gridOptionsWrapper.isEnableRtl()) {\n            // for RTL, dragging left makes the col bigger, except when pinning left\n            if (this.pinned !== column_1.Column.PINNED_LEFT) {\n                result *= -1;\n            }\n        }\n        else {\n            // for LTR (ie normal), dragging left makes the col smaller, except when pinning right\n            if (this.pinned === column_1.Column.PINNED_RIGHT) {\n                result *= -1;\n            }\n        }\n        return result;\n    };\n    HeaderGroupWrapperComp.TEMPLATE = '<div class=\"ag-header-group-cell\">' +\n        '<div ref=\"agResize\" class=\"ag-header-cell-resize\"></div>' +\n        '</div>';\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], HeaderGroupWrapperComp.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('columnController'),\n        __metadata(\"design:type\", columnController_1.ColumnController)\n    ], HeaderGroupWrapperComp.prototype, \"columnController\", void 0);\n    __decorate([\n        context_1.Autowired('horizontalDragService'),\n        __metadata(\"design:type\", horizontalDragService_1.HorizontalDragService)\n    ], HeaderGroupWrapperComp.prototype, \"dragService\", void 0);\n    __decorate([\n        context_1.Autowired('dragAndDropService'),\n        __metadata(\"design:type\", dragAndDropService_1.DragAndDropService)\n    ], HeaderGroupWrapperComp.prototype, \"dragAndDropService\", void 0);\n    __decorate([\n        context_1.Autowired('context'),\n        __metadata(\"design:type\", context_1.Context)\n    ], HeaderGroupWrapperComp.prototype, \"context\", void 0);\n    __decorate([\n        context_1.Autowired('componentRecipes'),\n        __metadata(\"design:type\", componentRecipes_1.ComponentRecipes)\n    ], HeaderGroupWrapperComp.prototype, \"componentRecipes\", void 0);\n    __decorate([\n        context_1.Autowired('gridApi'),\n        __metadata(\"design:type\", gridApi_1.GridApi)\n    ], HeaderGroupWrapperComp.prototype, \"gridApi\", void 0);\n    __decorate([\n        context_1.Autowired('columnApi'),\n        __metadata(\"design:type\", columnController_1.ColumnApi)\n    ], HeaderGroupWrapperComp.prototype, \"columnApi\", void 0);\n    __decorate([\n        context_1.Autowired('beans'),\n        __metadata(\"design:type\", beans_1.Beans)\n    ], HeaderGroupWrapperComp.prototype, \"beans\", void 0);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], HeaderGroupWrapperComp.prototype, \"postConstruct\", null);\n    return HeaderGroupWrapperComp;\n}(component_1.Component));\nexports.HeaderGroupWrapperComp = HeaderGroupWrapperComp;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/headerRendering/headerGroup/headerGroupWrapperComp.js\n// module id = 648\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DefaultColumnTypes = {\n    \"numericColumn\": {\n        \"headerClass\": \"ag-numeric-header\",\n        \"cellClass\": \"ag-numeric-cell\"\n    }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/entities/defaultColumnTypes.js\n// module id = 649\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ColDefUtil = (function () {\n    function ColDefUtil() {\n    }\n    ColDefUtil.STRING_PROPERTIES = [\n        'headerName',\n        'columnGroupShow',\n        'headerClass',\n        'toolPanelClass',\n        'headerValueGetter',\n        'pivotKeys',\n        'groupId',\n        'colId',\n        'sort',\n        'field',\n        'type',\n        'tooltipField',\n        'headerTooltip',\n        'cellClass',\n        'showRowGroup',\n        'template',\n        'templateUrl',\n        'filter',\n        'aggFunc',\n        'cellEditor'\n    ];\n    ColDefUtil.OBJECT_PROPERTIES = [\n        'headerGroupComponent',\n        'headerGroupComponentFramework',\n        'headerGroupComponentParams',\n        'cellStyle',\n        'cellRendererParams',\n        'cellEditorFramework',\n        'cellEditorParams',\n        'pinnedRowCellRendererFramework',\n        'pinnedRowCellRendererParams',\n        'filterFramework',\n        'filterParams',\n        'pivotValueColumn',\n        'headerComponent',\n        'headerComponentFramework',\n        'headerComponentParams',\n        'floatingFilterComponent',\n        'floatingFilterComponentParams',\n        'floatingFilterComponentFramework',\n        'refData'\n    ];\n    ColDefUtil.ARRAY_PROPERTIES = [\n        'children',\n        'sortingOrder',\n        'allowedAggFuncs',\n        'menuTabs',\n        'pivotTotalColumnIds',\n        'cellClassRules',\n        'icons'\n    ];\n    ColDefUtil.NUMBER_PROPERTIES = [\n        'sortedAt',\n        'width',\n        'minWidth',\n        'maxWidth',\n        'rowGroupIndex',\n        'pivotIndex'\n    ];\n    ColDefUtil.BOOLEAN_PROPERTIES = [\n        'suppressToolPanel',\n        'openByDefault',\n        'marryChildren',\n        'hide',\n        'pinned',\n        'rowGroup',\n        'pivot',\n        'checkboxSelection',\n        'headerCheckboxSelection',\n        'headerCheckboxSelectionFilteredOnly',\n        'suppressMenu',\n        'suppressSorting',\n        'suppressMovable',\n        'suppressFilter',\n        'unSortIcon',\n        'suppressSizeToFit',\n        'suppressResize',\n        'suppressAutoSize',\n        'enableRowGroup',\n        'enablePivot',\n        'enableValue',\n        'editable',\n        'suppressPaste',\n        'suppressNavigable',\n        'volatile',\n        'enableCellChangeFlash'\n    ];\n    ColDefUtil.FUNCTION_PROPERTIES = [\n        'valueGetter',\n        'valueSetter',\n        'keyCreator',\n        'cellRendererFramework',\n        'pinnedRowCellRenderer',\n        'valueFormatter',\n        'pinnedRowValueFormatter',\n        'valueParser',\n        'comparator',\n        'equals',\n        'pivotComparator',\n        'suppressKeyboardEvent',\n        'colSpan',\n        'getQuickFilterText',\n        'newValueHandler',\n        'onCellValueChanged',\n        'onCellClicked',\n        'onCellDoubleClicked',\n        'onCellContextMenu'\n    ];\n    ColDefUtil.ALL_PROPERTIES = ColDefUtil.ARRAY_PROPERTIES\n        .concat(ColDefUtil.OBJECT_PROPERTIES)\n        .concat(ColDefUtil.STRING_PROPERTIES)\n        .concat(ColDefUtil.NUMBER_PROPERTIES)\n        .concat(ColDefUtil.FUNCTION_PROPERTIES)\n        .concat(ColDefUtil.BOOLEAN_PROPERTIES);\n    return ColDefUtil;\n}());\nexports.ColDefUtil = ColDefUtil;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/components/colDefUtil.js\n// module id = 650\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar grid_1 = require(\"../grid\");\nfunction initialiseAgGridWithAngular1(angular) {\n    var angularModule = angular.module(\"agGrid\", []);\n    angularModule.directive(\"agGrid\", function () {\n        return {\n            restrict: \"A\",\n            controller: ['$element', '$scope', '$compile', '$attrs', AngularDirectiveController],\n            scope: true\n        };\n    });\n}\nexports.initialiseAgGridWithAngular1 = initialiseAgGridWithAngular1;\nfunction AngularDirectiveController($element, $scope, $compile, $attrs) {\n    var gridOptions;\n    var quickFilterOnScope;\n    var keyOfGridInScope = $attrs.agGrid;\n    quickFilterOnScope = keyOfGridInScope + '.quickFilterText';\n    gridOptions = $scope.$eval(keyOfGridInScope);\n    if (!gridOptions) {\n        console.warn(\"WARNING - grid options for ag-Grid not found. Please ensure the attribute ag-grid points to a valid object on the scope\");\n        return;\n    }\n    var eGridDiv = $element[0];\n    var gridParams = {\n        $scope: $scope,\n        $compile: $compile,\n        quickFilterOnScope: quickFilterOnScope\n    };\n    var grid = new grid_1.Grid(eGridDiv, gridOptions, gridParams);\n    $scope.$on(\"$destroy\", function () {\n        grid.destroy();\n    });\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/components/agGridNg1.js\n// module id = 651\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../../context/context\");\nvar eventService_1 = require(\"../../eventService\");\nvar events_1 = require(\"../../events\");\nvar logger_1 = require(\"../../logger\");\nvar infiniteBlock_1 = require(\"./infiniteBlock\");\nvar rowNodeCache_1 = require(\"../cache/rowNodeCache\");\nvar gridApi_1 = require(\"../../gridApi\");\nvar columnController_1 = require(\"../../columnController/columnController\");\nvar InfiniteCache = (function (_super) {\n    __extends(InfiniteCache, _super);\n    function InfiniteCache(params) {\n        return _super.call(this, params) || this;\n    }\n    InfiniteCache.prototype.setBeans = function (loggerFactory) {\n        this.logger = loggerFactory.create('InfiniteCache');\n    };\n    InfiniteCache.prototype.init = function () {\n        _super.prototype.init.call(this);\n        // start load of data, as the virtualRowCount will remain at 0 otherwise,\n        // so we need this to kick things off, otherwise grid would never call getRow()\n        this.getRow(0);\n    };\n    InfiniteCache.prototype.moveItemsDown = function (page, moveFromIndex, moveCount) {\n        var startRow = page.getStartRow();\n        var endRow = page.getEndRow();\n        var indexOfLastRowToMove = moveFromIndex + moveCount;\n        // all rows need to be moved down below the insertion index\n        for (var currentRowIndex = endRow - 1; currentRowIndex >= startRow; currentRowIndex--) {\n            // don't move rows at or before the insertion index\n            if (currentRowIndex < indexOfLastRowToMove) {\n                continue;\n            }\n            var indexOfNodeWeWant = currentRowIndex - moveCount;\n            var nodeForThisIndex = this.getRow(indexOfNodeWeWant, true);\n            if (nodeForThisIndex) {\n                page.setRowNode(currentRowIndex, nodeForThisIndex);\n            }\n            else {\n                page.setBlankRowNode(currentRowIndex);\n                page.setDirty();\n            }\n        }\n    };\n    InfiniteCache.prototype.insertItems = function (block, indexToInsert, items) {\n        var pageStartRow = block.getStartRow();\n        var pageEndRow = block.getEndRow();\n        var newRowNodes = [];\n        // next stage is insert the rows into this page, if applicable\n        for (var index = 0; index < items.length; index++) {\n            var rowIndex = indexToInsert + index;\n            var currentRowInThisPage = rowIndex >= pageStartRow && rowIndex < pageEndRow;\n            if (currentRowInThisPage) {\n                var dataItem = items[index];\n                var newRowNode = block.setNewData(rowIndex, dataItem);\n                newRowNodes.push(newRowNode);\n            }\n        }\n        return newRowNodes;\n    };\n    InfiniteCache.prototype.insertItemsAtIndex = function (indexToInsert, items) {\n        // get all page id's as NUMBERS (not strings, as we need to sort as numbers) and in descending order\n        var _this = this;\n        var newNodes = [];\n        this.forEachBlockInReverseOrder(function (block) {\n            var pageEndRow = block.getEndRow();\n            // if the insertion is after this page, then this page is not impacted\n            if (pageEndRow <= indexToInsert) {\n                return;\n            }\n            _this.moveItemsDown(block, indexToInsert, items.length);\n            var newNodesThisPage = _this.insertItems(block, indexToInsert, items);\n            newNodesThisPage.forEach(function (rowNode) { return newNodes.push(rowNode); });\n        });\n        if (this.isMaxRowFound()) {\n            this.hack_setVirtualRowCount(this.getVirtualRowCount() + items.length);\n        }\n        this.onCacheUpdated();\n        var event = {\n            type: events_1.Events.EVENT_ROW_DATA_UPDATED,\n            api: this.gridApi,\n            columnApi: this.columnApi\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    // the rowRenderer will not pass dontCreatePage, meaning when rendering the grid,\n    // it will want new pages in the cache as it asks for rows. only when we are inserting /\n    // removing rows via the api is dontCreatePage set, where we move rows between the pages.\n    InfiniteCache.prototype.getRow = function (rowIndex, dontCreatePage) {\n        if (dontCreatePage === void 0) { dontCreatePage = false; }\n        var blockId = Math.floor(rowIndex / this.cacheParams.blockSize);\n        var block = this.getBlock(blockId);\n        if (!block) {\n            if (dontCreatePage) {\n                return null;\n            }\n            else {\n                block = this.createBlock(blockId);\n            }\n        }\n        return block.getRow(rowIndex);\n    };\n    InfiniteCache.prototype.createBlock = function (blockNumber) {\n        var newBlock = new infiniteBlock_1.InfiniteBlock(blockNumber, this.cacheParams);\n        this.context.wireBean(newBlock);\n        this.postCreateBlock(newBlock);\n        return newBlock;\n    };\n    // we have this on infinite row model only, not enterprise row model,\n    // because for enterprise, it would leave the children in inconsistent\n    // state - eg if a node had children, but after the refresh it had data\n    // for a different row, then the children would be with the wrong row node.\n    InfiniteCache.prototype.refreshCache = function () {\n        this.forEachBlockInOrder(function (block) { return block.setDirty(); });\n        this.checkBlockToLoad();\n    };\n    __decorate([\n        context_1.Autowired('eventService'),\n        __metadata(\"design:type\", eventService_1.EventService)\n    ], InfiniteCache.prototype, \"eventService\", void 0);\n    __decorate([\n        context_1.Autowired('context'),\n        __metadata(\"design:type\", context_1.Context)\n    ], InfiniteCache.prototype, \"context\", void 0);\n    __decorate([\n        context_1.Autowired('columnApi'),\n        __metadata(\"design:type\", columnController_1.ColumnApi)\n    ], InfiniteCache.prototype, \"columnApi\", void 0);\n    __decorate([\n        context_1.Autowired('gridApi'),\n        __metadata(\"design:type\", gridApi_1.GridApi)\n    ], InfiniteCache.prototype, \"gridApi\", void 0);\n    __decorate([\n        __param(0, context_1.Qualifier('loggerFactory')),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [logger_1.LoggerFactory]),\n        __metadata(\"design:returntype\", void 0)\n    ], InfiniteCache.prototype, \"setBeans\", null);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], InfiniteCache.prototype, \"init\", null);\n    return InfiniteCache;\n}(rowNodeCache_1.RowNodeCache));\nexports.InfiniteCache = InfiniteCache;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rowModels/infinite/infiniteCache.js\n// module id = 652\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../../utils\");\nvar gridOptionsWrapper_1 = require(\"../../gridOptionsWrapper\");\nvar context_1 = require(\"../../context/context\");\nvar rowNodeBlock_1 = require(\"../cache/rowNodeBlock\");\nvar rowRenderer_1 = require(\"../../rendering/rowRenderer\");\nvar InfiniteBlock = (function (_super) {\n    __extends(InfiniteBlock, _super);\n    function InfiniteBlock(pageNumber, params) {\n        var _this = _super.call(this, pageNumber, params) || this;\n        _this.cacheParams = params;\n        return _this;\n    }\n    InfiniteBlock.prototype.createBlankRowNode = function (rowIndex) {\n        var rowNode = _super.prototype.createBlankRowNode.call(this, rowIndex);\n        rowNode.uiLevel = 0;\n        this.setIndexAndTopOnRowNode(rowNode, rowIndex);\n        return rowNode;\n    };\n    InfiniteBlock.prototype.setDataAndId = function (rowNode, data, index) {\n        if (utils_1.Utils.exists(data)) {\n            // this means if the user is not providing id's we just use the\n            // index for the row. this will allow selection to work (that is based\n            // on index) as long user is not inserting or deleting rows,\n            // or wanting to keep selection between server side sorting or filtering\n            rowNode.setDataAndId(data, index.toString());\n        }\n        else {\n            rowNode.setDataAndId(undefined, undefined);\n        }\n    };\n    InfiniteBlock.prototype.setRowNode = function (rowIndex, rowNode) {\n        _super.prototype.setRowNode.call(this, rowIndex, rowNode);\n        this.setIndexAndTopOnRowNode(rowNode, rowIndex);\n    };\n    InfiniteBlock.prototype.init = function () {\n        _super.prototype.init.call(this, {\n            context: this.context,\n            rowRenderer: this.rowRenderer\n        });\n    };\n    InfiniteBlock.prototype.getNodeIdPrefix = function () {\n        return null;\n    };\n    InfiniteBlock.prototype.getRow = function (displayIndex) {\n        return this.getRowUsingLocalIndex(displayIndex);\n    };\n    InfiniteBlock.prototype.setIndexAndTopOnRowNode = function (rowNode, rowIndex) {\n        rowNode.setRowIndex(rowIndex);\n        rowNode.rowTop = this.cacheParams.rowHeight * rowIndex;\n    };\n    InfiniteBlock.prototype.loadFromDatasource = function () {\n        var _this = this;\n        // PROBLEM . . . . when the user sets sort via colDef.sort, then this code\n        // is executing before the sort is set up, so server is not getting the sort\n        // model. need to change with regards order - so the server side request is\n        // AFTER thus it gets the right sort model.\n        var params = {\n            startRow: this.getStartRow(),\n            endRow: this.getEndRow(),\n            successCallback: this.pageLoaded.bind(this, this.getVersion()),\n            failCallback: this.pageLoadFailed.bind(this),\n            sortModel: this.cacheParams.sortModel,\n            filterModel: this.cacheParams.filterModel,\n            context: this.gridOptionsWrapper.getContext()\n        };\n        if (utils_1.Utils.missing(this.cacheParams.datasource.getRows)) {\n            console.warn(\"ag-Grid: datasource is missing getRows method\");\n            return;\n        }\n        // check if old version of datasource used\n        var getRowsParams = utils_1.Utils.getFunctionParameters(this.cacheParams.datasource.getRows);\n        if (getRowsParams.length > 1) {\n            console.warn('ag-grid: It looks like your paging datasource is of the old type, taking more than one parameter.');\n            console.warn('ag-grid: From ag-grid 1.9.0, now the getRows takes one parameter. See the documentation for details.');\n        }\n        // put in timeout, to force result to be async\n        setTimeout(function () {\n            _this.cacheParams.datasource.getRows(params);\n        }, 0);\n    };\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], InfiniteBlock.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('context'),\n        __metadata(\"design:type\", context_1.Context)\n    ], InfiniteBlock.prototype, \"context\", void 0);\n    __decorate([\n        context_1.Autowired('rowRenderer'),\n        __metadata(\"design:type\", rowRenderer_1.RowRenderer)\n    ], InfiniteBlock.prototype, \"rowRenderer\", void 0);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], InfiniteBlock.prototype, \"init\", null);\n    return InfiniteBlock;\n}(rowNodeBlock_1.RowNodeBlock));\nexports.InfiniteBlock = InfiniteBlock;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rowModels/infinite/infiniteBlock.js\n// module id = 653\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar rowNode_1 = require(\"../entities/rowNode\");\nvar inMemoryNodeManager_1 = require(\"../rowModels/inMemory/inMemoryNodeManager\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar eventService_1 = require(\"../eventService\");\nvar context_1 = require(\"../context/context\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar RowNodeFactory = (function () {\n    function RowNodeFactory() {\n    }\n    RowNodeFactory.prototype.create = function (data) {\n        var rootNode = new rowNode_1.RowNode();\n        var nodeManager = new inMemoryNodeManager_1.InMemoryNodeManager(rootNode, this.gridOptionsWrapper, this.context, this.eventService, this.columnController);\n        this.context.wireBean(rootNode);\n        nodeManager.setRowData(data);\n        return rootNode;\n    };\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], RowNodeFactory.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('eventService'),\n        __metadata(\"design:type\", eventService_1.EventService)\n    ], RowNodeFactory.prototype, \"eventService\", void 0);\n    __decorate([\n        context_1.Autowired('context'),\n        __metadata(\"design:type\", context_1.Context)\n    ], RowNodeFactory.prototype, \"context\", void 0);\n    __decorate([\n        context_1.Autowired('columnController'),\n        __metadata(\"design:type\", columnController_1.ColumnController)\n    ], RowNodeFactory.prototype, \"columnController\", void 0);\n    RowNodeFactory = __decorate([\n        context_1.Bean(\"rowNodeFactory\")\n    ], RowNodeFactory);\n    return RowNodeFactory;\n}());\nexports.RowNodeFactory = RowNodeFactory;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/rowNodes/rowNodeFactory.js\n// module id = 654\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var 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 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};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar context_1 = require(\"../context/context\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar changedPath_1 = require(\"../rowModels/inMemory/changedPath\");\nvar rowRenderer_1 = require(\"../rendering/rowRenderer\");\nvar eventService_1 = require(\"../eventService\");\nvar constants_1 = require(\"../constants\");\nvar beanStub_1 = require(\"../context/beanStub\");\nvar events_1 = require(\"../events\");\nvar ChangeDetectionService = (function (_super) {\n    __extends(ChangeDetectionService, _super);\n    function ChangeDetectionService() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    ChangeDetectionService.prototype.init = function () {\n        if (this.rowModel.getType() === constants_1.Constants.ROW_MODEL_TYPE_IN_MEMORY) {\n            this.inMemoryRowModel = this.rowModel;\n        }\n        this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_CELL_VALUE_CHANGED, this.onCellValueChanged.bind(this));\n    };\n    ChangeDetectionService.prototype.onCellValueChanged = function (event) {\n        this.doChangeDetection(event.node, event.column);\n    };\n    ChangeDetectionService.prototype.doChangeDetection = function (rowNode, column) {\n        if (this.gridOptionsWrapper.isSuppressChangeDetection()) {\n            return;\n        }\n        // step 1 of change detection is to update the aggregated values\n        if (this.inMemoryRowModel) {\n            var changedPath = void 0;\n            if (rowNode.parent) {\n                var onlyChangedColumns = this.gridOptionsWrapper.isAggregateOnlyChangedColumns();\n                changedPath = new changedPath_1.ChangedPath(onlyChangedColumns);\n                changedPath.addParentNode(rowNode.parent, [column]);\n            }\n            this.inMemoryRowModel.doAggregate(changedPath);\n        }\n        // step 2 of change detection is to refresh the cells\n        this.rowRenderer.refreshCells();\n    };\n    __decorate([\n        context_1.Autowired('gridOptionsWrapper'),\n        __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n    ], ChangeDetectionService.prototype, \"gridOptionsWrapper\", void 0);\n    __decorate([\n        context_1.Autowired('rowModel'),\n        __metadata(\"design:type\", Object)\n    ], ChangeDetectionService.prototype, \"rowModel\", void 0);\n    __decorate([\n        context_1.Autowired('rowRenderer'),\n        __metadata(\"design:type\", rowRenderer_1.RowRenderer)\n    ], ChangeDetectionService.prototype, \"rowRenderer\", void 0);\n    __decorate([\n        context_1.Autowired('eventService'),\n        __metadata(\"design:type\", eventService_1.EventService)\n    ], ChangeDetectionService.prototype, \"eventService\", void 0);\n    __decorate([\n        context_1.PostConstruct,\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], ChangeDetectionService.prototype, \"init\", null);\n    ChangeDetectionService = __decorate([\n        context_1.Bean('changeDetectionService')\n    ], ChangeDetectionService);\n    return ChangeDetectionService;\n}(beanStub_1.BeanStub));\nexports.ChangeDetectionService = ChangeDetectionService;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/valueService/changeDetectionService.js\n// module id = 655\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar componentUtil_1 = require(\"./componentUtil\");\nvar grid_1 = require(\"../grid\");\nvar registered = false;\nfunction initialiseAgGridWithWebComponents() {\n    console.warn('ag-grid: initialiseAgGridWithWebComponents is deprecated. Please use the ag-grid-webcomponent dependency instead. ');\n    // only register to WebComponents once\n    if (registered) {\n        return;\n    }\n    registered = true;\n    if (typeof document === 'undefined' || !document.registerElement) {\n        console.error('ag-Grid: unable to find document.registerElement() function, unable to initialise ag-Grid as a Web Component');\n    }\n    // i don't think this type of extension is possible in TypeScript, so back to\n    // plain Javascript to create this object\n    var AgileGridProto = Object.create(HTMLElement.prototype);\n    // wrap each property with a get and set method, so we can track when changes are done\n    componentUtil_1.ComponentUtil.ALL_PROPERTIES.forEach(function (key) {\n        Object.defineProperty(AgileGridProto, key, {\n            set: function (v) {\n                this.__agGridSetProperty(key, v);\n            },\n            get: function () {\n                return this.__agGridGetProperty(key);\n            },\n            enumerable: true,\n            configurable: true\n        });\n    });\n    var agGridProtoNoType = AgileGridProto;\n    agGridProtoNoType.__agGridSetProperty = function (key, value) {\n        if (!this.__attributes) {\n            this.__attributes = {};\n        }\n        this.__attributes[key] = value;\n        // keeping this consistent with the ng2 onChange, so I can reuse the handling code\n        var changeObject = {};\n        changeObject[key] = { currentValue: value };\n        this.onChange(changeObject);\n    };\n    agGridProtoNoType.onChange = function (changes) {\n        if (this._initialised) {\n            componentUtil_1.ComponentUtil.processOnChange(changes, this._gridOptions, this.api, this.columnApi);\n        }\n    };\n    agGridProtoNoType.__agGridGetProperty = function (key) {\n        if (!this.__attributes) {\n            this.__attributes = {};\n        }\n        return this.__attributes[key];\n    };\n    agGridProtoNoType.setGridOptions = function (options) {\n        var globalEventListener = this.globalEventListener.bind(this);\n        this._gridOptions = componentUtil_1.ComponentUtil.copyAttributesToGridOptions(options, this);\n        var gridParams = {\n            globalEventListener: globalEventListener\n        };\n        this._agGrid = new grid_1.Grid(this, this._gridOptions, gridParams);\n        this.api = options.api;\n        this.columnApi = options.columnApi;\n        this._initialised = true;\n    };\n    // copies all the attributes into this object\n    agGridProtoNoType.createdCallback = function () {\n        for (var i = 0; i < this.attributes.length; i++) {\n            var attribute = this.attributes[i];\n            this.setPropertyFromAttribute(attribute);\n        }\n    };\n    agGridProtoNoType.setPropertyFromAttribute = function (attribute) {\n        var name = toCamelCase(attribute.nodeName);\n        var value = attribute.nodeValue;\n        if (componentUtil_1.ComponentUtil.ALL_PROPERTIES.indexOf(name) >= 0) {\n            this[name] = value;\n        }\n    };\n    agGridProtoNoType.attachedCallback = function (params) { };\n    agGridProtoNoType.detachedCallback = function (params) { };\n    agGridProtoNoType.attributeChangedCallback = function (attributeName) {\n        var attribute = this.attributes[attributeName];\n        this.setPropertyFromAttribute(attribute);\n    };\n    agGridProtoNoType.globalEventListener = function (eventType, event) {\n        var eventLowerCase = eventType.toLowerCase();\n        var browserEvent = new Event(eventLowerCase);\n        var browserEventNoType = browserEvent;\n        browserEventNoType.agGridDetails = event;\n        this.dispatchEvent(browserEvent);\n        var callbackMethod = 'on' + eventLowerCase;\n        if (typeof this[callbackMethod] === 'function') {\n            this[callbackMethod](browserEvent);\n        }\n    };\n    // finally, register\n    document.registerElement('ag-grid', { prototype: AgileGridProto });\n}\nexports.initialiseAgGridWithWebComponents = initialiseAgGridWithWebComponents;\nfunction toCamelCase(myString) {\n    if (typeof myString === 'string') {\n        var result = myString.replace(/-([a-z])/g, function (g) {\n            return g[1].toUpperCase();\n        });\n        return result;\n    }\n    else {\n        return myString;\n    }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/components/agGridWebComponent.js\n// module id = 656\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar TabbedLayout = (function () {\n    function TabbedLayout(params) {\n        var _this = this;\n        this.items = [];\n        this.params = params;\n        this.eGui = document.createElement('div');\n        this.eGui.innerHTML = TabbedLayout.TEMPLATE;\n        this.eHeader = this.eGui.querySelector('#tabHeader');\n        this.eBody = this.eGui.querySelector('#tabBody');\n        utils_1.Utils.addCssClass(this.eGui, params.cssClass);\n        if (params.items) {\n            params.items.forEach(function (item) { return _this.addItem(item); });\n        }\n    }\n    TabbedLayout.prototype.setAfterAttachedParams = function (params) {\n        this.afterAttachedParams = params;\n    };\n    TabbedLayout.prototype.getMinWidth = function () {\n        var eDummyContainer = document.createElement('span');\n        // position fixed, so it isn't restricted to the boundaries of the parent\n        eDummyContainer.style.position = 'fixed';\n        // we put the dummy into the body container, so it will inherit all the\n        // css styles that the real cells are inheriting\n        this.eGui.appendChild(eDummyContainer);\n        var minWidth = 0;\n        this.items.forEach(function (itemWrapper) {\n            utils_1.Utils.removeAllChildren(eDummyContainer);\n            var eClone = itemWrapper.tabbedItem.bodyPromise.resolveNow(null, function (body) { return body.cloneNode(true); });\n            if (eClone == null)\n                return;\n            eDummyContainer.appendChild(eClone);\n            if (minWidth < eDummyContainer.offsetWidth) {\n                minWidth = eDummyContainer.offsetWidth;\n            }\n        });\n        this.eGui.removeChild(eDummyContainer);\n        return minWidth;\n    };\n    TabbedLayout.prototype.showFirstItem = function () {\n        if (this.items.length > 0) {\n            this.showItemWrapper(this.items[0]);\n        }\n    };\n    TabbedLayout.prototype.addItem = function (item) {\n        var eHeaderButton = document.createElement('span');\n        eHeaderButton.appendChild(item.title);\n        utils_1.Utils.addCssClass(eHeaderButton, 'ag-tab');\n        this.eHeader.appendChild(eHeaderButton);\n        var wrapper = {\n            tabbedItem: item,\n            eHeaderButton: eHeaderButton\n        };\n        this.items.push(wrapper);\n        eHeaderButton.addEventListener('click', this.showItemWrapper.bind(this, wrapper));\n    };\n    TabbedLayout.prototype.showItem = function (tabbedItem) {\n        var itemWrapper = utils_1.Utils.find(this.items, function (itemWrapper) {\n            return itemWrapper.tabbedItem === tabbedItem;\n        });\n        if (itemWrapper) {\n            this.showItemWrapper(itemWrapper);\n        }\n    };\n    TabbedLayout.prototype.showItemWrapper = function (wrapper) {\n        var _this = this;\n        if (this.params.onItemClicked) {\n            this.params.onItemClicked({ item: wrapper.tabbedItem });\n        }\n        if (this.activeItem === wrapper) {\n            utils_1.Utils.callIfPresent(this.params.onActiveItemClicked);\n            return;\n        }\n        utils_1.Utils.removeAllChildren(this.eBody);\n        wrapper.tabbedItem.bodyPromise.then(function (body) {\n            _this.eBody.appendChild(body);\n        });\n        if (this.activeItem) {\n            utils_1.Utils.removeCssClass(this.activeItem.eHeaderButton, 'ag-tab-selected');\n        }\n        utils_1.Utils.addCssClass(wrapper.eHeaderButton, 'ag-tab-selected');\n        this.activeItem = wrapper;\n        if (wrapper.tabbedItem.afterAttachedCallback) {\n            wrapper.tabbedItem.afterAttachedCallback(this.afterAttachedParams);\n        }\n    };\n    TabbedLayout.prototype.getGui = function () {\n        return this.eGui;\n    };\n    TabbedLayout.TEMPLATE = '<div>' +\n        '<div id=\"tabHeader\" class=\"ag-tab-header\"></div>' +\n        '<div id=\"tabBody\" class=\"ag-tab-body\"></div>' +\n        '</div>';\n    return TabbedLayout;\n}());\nexports.TabbedLayout = TabbedLayout;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/layout/tabbedLayout.js\n// module id = 657\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar VerticalStack = (function () {\n    function VerticalStack() {\n        this.isLayoutPanel = true;\n        this.childPanels = [];\n        this.eGui = document.createElement('div');\n        this.eGui.style.height = '100%';\n    }\n    VerticalStack.prototype.addPanel = function (panel, height) {\n        var component;\n        if (panel.isLayoutPanel) {\n            this.childPanels.push(panel);\n            component = panel.getGui();\n        }\n        else {\n            component = panel;\n        }\n        if (height) {\n            component.style.height = height;\n        }\n        this.eGui.appendChild(component);\n    };\n    VerticalStack.prototype.getGui = function () {\n        return this.eGui;\n    };\n    VerticalStack.prototype.doLayout = function () {\n        for (var i = 0; i < this.childPanels.length; i++) {\n            this.childPanels[i].doLayout();\n        }\n    };\n    return VerticalStack;\n}());\nexports.VerticalStack = VerticalStack;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/layout/verticalStack.js\n// module id = 658\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nfunction simpleHttpRequest(params) {\n    return new utils_1.Promise(function (resolve) {\n        var httpRequest = new XMLHttpRequest();\n        httpRequest.open('GET', params.url);\n        httpRequest.send();\n        httpRequest.onreadystatechange = function () {\n            if (httpRequest.readyState == 4 && httpRequest.status == 200) {\n                var httpResponse = JSON.parse(httpRequest.responseText);\n                resolve(httpResponse);\n            }\n        };\n    });\n}\nexports.simpleHttpRequest = simpleHttpRequest;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/misc/simpleHttpRequest.js\n// module id = 659\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"./utils\");\nfunction defaultGroupComparator(valueA, valueB, nodeA, nodeB, accentedCompare) {\n    if (accentedCompare === void 0) { accentedCompare = false; }\n    console.warn('ag-Grid: Since ag-grid 11.0.0 defaultGroupComparator is not necessary. You can remove this from your colDef');\n    var nodeAIsGroup = utils_1.Utils.exists(nodeA) && nodeA.group;\n    var nodeBIsGroup = utils_1.Utils.exists(nodeB) && nodeB.group;\n    var bothAreGroups = nodeAIsGroup && nodeBIsGroup;\n    var bothAreNormal = !nodeAIsGroup && !nodeBIsGroup;\n    if (bothAreGroups) {\n        return utils_1.Utils.defaultComparator(nodeA.key, nodeB.key, accentedCompare);\n    }\n    else if (bothAreNormal) {\n        return utils_1.Utils.defaultComparator(valueA, valueB, accentedCompare);\n    }\n    else if (nodeAIsGroup) {\n        return 1;\n    }\n    else {\n        return -1;\n    }\n}\nexports.defaultGroupComparator = defaultGroupComparator;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/functions.js\n// module id = 660\n// module chunks = 0","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v15.0.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BaseComponentWrapper = (function () {\n    function BaseComponentWrapper() {\n    }\n    BaseComponentWrapper.prototype.wrap = function (OriginalConstructor, mandatoryMethodList, optionalMethodList, componentName) {\n        var _this = this;\n        var wrapper = this.createWrapper(OriginalConstructor, componentName);\n        mandatoryMethodList.forEach((function (methodName) {\n            _this.createMethod(wrapper, methodName, true);\n        }));\n        if (optionalMethodList) {\n            optionalMethodList.forEach((function (methodName) {\n                _this.createMethod(wrapper, methodName, false);\n            }));\n        }\n        return wrapper;\n    };\n    BaseComponentWrapper.prototype.createMethod = function (wrapper, methodName, mandatory) {\n        wrapper.addMethod(methodName, this.createMethodProxy(wrapper, methodName, mandatory));\n    };\n    BaseComponentWrapper.prototype.createMethodProxy = function (wrapper, methodName, mandatory) {\n        return function () {\n            if (wrapper.hasMethod(methodName)) {\n                return wrapper.callMethod(methodName, arguments);\n            }\n            if (mandatory) {\n                console.warn('ag-Grid: Framework component is missing the method ' + methodName + '()');\n            }\n            return null;\n        };\n    };\n    return BaseComponentWrapper;\n}());\nexports.BaseComponentWrapper = BaseComponentWrapper;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid/dist/lib/components/framework/frameworkComponentWrapper.js\n// module id = 661\n// module chunks = 0","// ag-grid-react v15.0.0\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar React = require(\"react\");\nvar ReactDOM = require(\"react-dom\");\nvar AgGrid = require(\"ag-grid\");\nvar ag_grid_1 = require(\"ag-grid\");\nvar AgReactComponent = /** @class */ (function () {\n    function AgReactComponent(reactComponent, parentComponent) {\n        this.reactComponent = reactComponent;\n        this.parentComponent = parentComponent;\n    }\n    AgReactComponent.prototype.getFrameworkComponentInstance = function () {\n        return this.componentRef;\n    };\n    AgReactComponent.prototype.init = function (params) {\n        var _this = this;\n        return new ag_grid_1.Promise(function (resolve) {\n            _this.eParentElement = document.createElement('div');\n            AgGrid.Utils.addCssClass(_this.eParentElement, 'ag-react-container');\n            // so user can have access to the react container,\n            // to add css class or style\n            params.reactContainer = _this.eParentElement;\n            var self = _this;\n            var ReactComponent = React.createElement(_this.reactComponent, params);\n            if (!_this.parentComponent) {\n                // MUST be a function, not an arrow function\n                ReactDOM.render(ReactComponent, _this.eParentElement, function () {\n                    self.componentRef = this;\n                    resolve(null);\n                });\n            }\n            else {\n                // MUST be a function, not an arrow function\n                ReactDOM.unstable_renderSubtreeIntoContainer(_this.parentComponent, ReactComponent, _this.eParentElement, function () {\n                    self.componentRef = this;\n                    resolve(null);\n                });\n            }\n        });\n    };\n    AgReactComponent.prototype.getGui = function () {\n        return this.eParentElement;\n    };\n    AgReactComponent.prototype.destroy = function () {\n        ReactDOM.unmountComponentAtNode(this.eParentElement);\n    };\n    return AgReactComponent;\n}());\nexports.AgReactComponent = AgReactComponent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ag-grid-react/lib/agReactComponent.js\n// module id = 662\n// module chunks = 0","'use strict';\n\n/**\n * Copyright (c) 2015-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(function(f) {\n  if (typeof exports === 'object' && typeof module !== 'undefined') {\n    module.exports = f(require('react'));\n    /* global define */\n  } else if (typeof define === 'function' && define.amd) {\n    define(['react'], f);\n  } else {\n    var g;\n    if (typeof window !== 'undefined') {\n      g = window;\n    } else if (typeof global !== 'undefined') {\n      g = global;\n    } else if (typeof self !== 'undefined') {\n      g = self;\n    } else {\n      g = this;\n    }\n\n    if (typeof g.React === 'undefined') {\n      throw Error('React module should be required before ReactDOMFactories');\n    }\n\n    g.ReactDOMFactories = f(g.React);\n  }\n})(function(React) {\n  /**\n   * Create a factory that creates HTML tag elements.\n   */\n  function createDOMFactory(type) {\n    var factory = React.createElement.bind(null, type);\n    // Expose the type on the factory and the prototype so that it can be\n    // easily accessed on elements. E.g. `<Foo />.type === Foo`.\n    // This should not be named `constructor` since this may not be the function\n    // that created the element, and it may not even be a constructor.\n    factory.type = type;\n    return factory;\n  };\n\n  /**\n   * Creates a mapping from supported HTML tags to `ReactDOMComponent` classes.\n   */\n  var ReactDOMFactories = {\n    a: createDOMFactory('a'),\n    abbr: createDOMFactory('abbr'),\n    address: createDOMFactory('address'),\n    area: createDOMFactory('area'),\n    article: createDOMFactory('article'),\n    aside: createDOMFactory('aside'),\n    audio: createDOMFactory('audio'),\n    b: createDOMFactory('b'),\n    base: createDOMFactory('base'),\n    bdi: createDOMFactory('bdi'),\n    bdo: createDOMFactory('bdo'),\n    big: createDOMFactory('big'),\n    blockquote: createDOMFactory('blockquote'),\n    body: createDOMFactory('body'),\n    br: createDOMFactory('br'),\n    button: createDOMFactory('button'),\n    canvas: createDOMFactory('canvas'),\n    caption: createDOMFactory('caption'),\n    cite: createDOMFactory('cite'),\n    code: createDOMFactory('code'),\n    col: createDOMFactory('col'),\n    colgroup: createDOMFactory('colgroup'),\n    data: createDOMFactory('data'),\n    datalist: createDOMFactory('datalist'),\n    dd: createDOMFactory('dd'),\n    del: createDOMFactory('del'),\n    details: createDOMFactory('details'),\n    dfn: createDOMFactory('dfn'),\n    dialog: createDOMFactory('dialog'),\n    div: createDOMFactory('div'),\n    dl: createDOMFactory('dl'),\n    dt: createDOMFactory('dt'),\n    em: createDOMFactory('em'),\n    embed: createDOMFactory('embed'),\n    fieldset: createDOMFactory('fieldset'),\n    figcaption: createDOMFactory('figcaption'),\n    figure: createDOMFactory('figure'),\n    footer: createDOMFactory('footer'),\n    form: createDOMFactory('form'),\n    h1: createDOMFactory('h1'),\n    h2: createDOMFactory('h2'),\n    h3: createDOMFactory('h3'),\n    h4: createDOMFactory('h4'),\n    h5: createDOMFactory('h5'),\n    h6: createDOMFactory('h6'),\n    head: createDOMFactory('head'),\n    header: createDOMFactory('header'),\n    hgroup: createDOMFactory('hgroup'),\n    hr: createDOMFactory('hr'),\n    html: createDOMFactory('html'),\n    i: createDOMFactory('i'),\n    iframe: createDOMFactory('iframe'),\n    img: createDOMFactory('img'),\n    input: createDOMFactory('input'),\n    ins: createDOMFactory('ins'),\n    kbd: createDOMFactory('kbd'),\n    keygen: createDOMFactory('keygen'),\n    label: createDOMFactory('label'),\n    legend: createDOMFactory('legend'),\n    li: createDOMFactory('li'),\n    link: createDOMFactory('link'),\n    main: createDOMFactory('main'),\n    map: createDOMFactory('map'),\n    mark: createDOMFactory('mark'),\n    menu: createDOMFactory('menu'),\n    menuitem: createDOMFactory('menuitem'),\n    meta: createDOMFactory('meta'),\n    meter: createDOMFactory('meter'),\n    nav: createDOMFactory('nav'),\n    noscript: createDOMFactory('noscript'),\n    object: createDOMFactory('object'),\n    ol: createDOMFactory('ol'),\n    optgroup: createDOMFactory('optgroup'),\n    option: createDOMFactory('option'),\n    output: createDOMFactory('output'),\n    p: createDOMFactory('p'),\n    param: createDOMFactory('param'),\n    picture: createDOMFactory('picture'),\n    pre: createDOMFactory('pre'),\n    progress: createDOMFactory('progress'),\n    q: createDOMFactory('q'),\n    rp: createDOMFactory('rp'),\n    rt: createDOMFactory('rt'),\n    ruby: createDOMFactory('ruby'),\n    s: createDOMFactory('s'),\n    samp: createDOMFactory('samp'),\n    script: createDOMFactory('script'),\n    section: createDOMFactory('section'),\n    select: createDOMFactory('select'),\n    small: createDOMFactory('small'),\n    source: createDOMFactory('source'),\n    span: createDOMFactory('span'),\n    strong: createDOMFactory('strong'),\n    style: createDOMFactory('style'),\n    sub: createDOMFactory('sub'),\n    summary: createDOMFactory('summary'),\n    sup: createDOMFactory('sup'),\n    table: createDOMFactory('table'),\n    tbody: createDOMFactory('tbody'),\n    td: createDOMFactory('td'),\n    textarea: createDOMFactory('textarea'),\n    tfoot: createDOMFactory('tfoot'),\n    th: createDOMFactory('th'),\n    thead: createDOMFactory('thead'),\n    time: createDOMFactory('time'),\n    title: createDOMFactory('title'),\n    tr: createDOMFactory('tr'),\n    track: createDOMFactory('track'),\n    u: createDOMFactory('u'),\n    ul: createDOMFactory('ul'),\n    var: createDOMFactory('var'),\n    video: createDOMFactory('video'),\n    wbr: createDOMFactory('wbr'),\n\n    // SVG\n    circle: createDOMFactory('circle'),\n    clipPath: createDOMFactory('clipPath'),\n    defs: createDOMFactory('defs'),\n    ellipse: createDOMFactory('ellipse'),\n    g: createDOMFactory('g'),\n    image: createDOMFactory('image'),\n    line: createDOMFactory('line'),\n    linearGradient: createDOMFactory('linearGradient'),\n    mask: createDOMFactory('mask'),\n    path: createDOMFactory('path'),\n    pattern: createDOMFactory('pattern'),\n    polygon: createDOMFactory('polygon'),\n    polyline: createDOMFactory('polyline'),\n    radialGradient: createDOMFactory('radialGradient'),\n    rect: createDOMFactory('rect'),\n    stop: createDOMFactory('stop'),\n    svg: createDOMFactory('svg'),\n    text: createDOMFactory('text'),\n    tspan: createDOMFactory('tspan'),\n  };\n\n  // due to wrapper and conditionals at the top, this will either become\n  // `module.exports ReactDOMFactories` if that is available,\n  // otherwise it will be defined via `define(['react'], ReactDOMFactories)`\n  // if that is available,\n  // otherwise it will be defined as global variable.\n  return ReactDOMFactories;\n});\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom-factories/index.js\n// module id = 663\n// module chunks = 0","// In production, we register a service worker to serve assets from local cache.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\n// cached resources are updated in the background.\n\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\n// This link also includes instructions on opting out of this behavior.\n\nconst isLocalhost = Boolean(\n  window.location.hostname === 'localhost' ||\n    // [::1] is the IPv6 localhost address.\n    window.location.hostname === '[::1]' ||\n    // 127.0.0.1/8 is considered localhost for IPv4.\n    window.location.hostname.match(\n      /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n    )\n);\n\nexport default function register() {\n  if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n    // The URL constructor is available in all browsers that support SW.\n    const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\n    if (publicUrl.origin !== window.location.origin) {\n      // Our service worker won't work if PUBLIC_URL is on a different origin\n      // from what our page is served on. This might happen if a CDN is used to\n      // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\n      return;\n    }\n\n    window.addEventListener('load', () => {\n      const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n      if (!isLocalhost) {\n        // Is not local host. Just register service worker\n        registerValidSW(swUrl);\n      } else {\n        // This is running on localhost. Lets check if a service worker still exists or not.\n        checkValidServiceWorker(swUrl);\n      }\n    });\n  }\n}\n\nfunction registerValidSW(swUrl) {\n  navigator.serviceWorker\n    .register(swUrl)\n    .then(registration => {\n      registration.onupdatefound = () => {\n        const installingWorker = registration.installing;\n        installingWorker.onstatechange = () => {\n          if (installingWorker.state === 'installed') {\n            if (navigator.serviceWorker.controller) {\n              // At this point, the old content will have been purged and\n              // the fresh content will have been added to the cache.\n              // It's the perfect time to display a \"New content is\n              // available; please refresh.\" message in your web app.\n              console.log('New content is available; please refresh.');\n            } else {\n              // At this point, everything has been precached.\n              // It's the perfect time to display a\n              // \"Content is cached for offline use.\" message.\n              console.log('Content is cached for offline use.');\n            }\n          }\n        };\n      };\n    })\n    .catch(error => {\n      console.error('Error during service worker registration:', error);\n    });\n}\n\nfunction checkValidServiceWorker(swUrl) {\n  // Check if the service worker can be found. If it can't reload the page.\n  fetch(swUrl)\n    .then(response => {\n      // Ensure service worker exists, and that we really are getting a JS file.\n      if (\n        response.status === 404 ||\n        response.headers.get('content-type').indexOf('javascript') === -1\n      ) {\n        // No service worker found. Probably a different app. Reload the page.\n        navigator.serviceWorker.ready.then(registration => {\n          registration.unregister().then(() => {\n            window.location.reload();\n          });\n        });\n      } else {\n        // Service worker found. Proceed as normal.\n        registerValidSW(swUrl);\n      }\n    })\n    .catch(() => {\n      console.log(\n        'No internet connection found. App is running in offline mode.'\n      );\n    });\n}\n\nexport function unregister() {\n  if ('serviceWorker' in navigator) {\n    navigator.serviceWorker.ready.then(registration => {\n      registration.unregister();\n    });\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// src/registerServiceWorker.js","import * as actionTypes from '../actions/actionTypes';\n\nconst initialState = {\n    categories: null\n};\n\nconst rootReducer = (state = initialState, action) => {\n    switch (action.type) {\n        case 'GET_CATEGORIES':\n            console.log('[GET_CATEGORIES]');\n            return {\n\n        }\n        case actionTypes.AUTH_SUCCESS:\n            console.log('[AUTH_SUCCESS]');\n            return {\n                ...state,\n                isAuthenticated: true\n            }\n    }\n    return state;\n\n};\n\nexport default rootReducer;\n\n\n// WEBPACK FOOTER //\n// src/store/reducers/categoryReducer.js","import * as actionTypes from '../actions/actionTypes';\nimport { updateObject } from '../utility';\n\nconst initialState = {\n    isAuthenticated: false,\n    hasProfile: false,\n    token: null,\n    user: '',\n    userPreferences: {},\n    error: null,\n    loading: false\n};\n\nconst authSetProfile = (state, action) => {\n    return updateObject(state, { user: action.user });\n};\n\n\nconst authStart = (state, action) => {\n    return updateObject(state, { error: null, loading: true });\n};\n\nconst authSuccess = (state, action) => {\n\n    return updateObject(state, { isAuthenticated: true, hasProfile: true, token: action.token, user: action.user, error: null, loading: false });\n};\n\nconst authFail = (state, action) => {\n    return updateObject(state, { error: action.error, loading: false });\n};\n\nconst authLogout = (state, action) => {\n    return updateObject(state, { token: null, user: {} });\n};\n\nconst authReducer = (state = initialState, action) => {\n    switch (action.type) {\n        case actionTypes.AUTH_SET_PROFILE:\n            return authSetProfile(state, action);\n        case actionTypes.AUTH_START:\n            return authStart(state, action);\n        case actionTypes.AUTH_SUCCESS:\n            return authSuccess(state, action);\n        case actionTypes.AUTH_FAIL:\n            return authFail(state, action);\n        case actionTypes.AUTH_LOGOUT:\n            return authLogout(state, action);\n        default:\n            return state;\n    }\n\n};\n\nexport default authReducer;\n\n\n// WEBPACK FOOTER //\n// src/store/reducers/auth.js","/*\n * Copyright 2017, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nimport allLocaleData from '../locale-data/index.js';\nimport IntlMessageFormat from 'intl-messageformat';\nimport IntlRelativeFormat from 'intl-relativeformat';\nimport PropTypes from 'prop-types';\nimport React, { Children, Component, createElement, isValidElement } from 'react';\nimport invariant from 'invariant';\nimport memoizeIntlConstructor from 'intl-format-cache';\n\n// GENERATED FILE\nvar defaultLocaleData = { \"locale\": \"en\", \"pluralRuleFunction\": function pluralRuleFunction(n, ord) {\n    var s = String(n).split(\".\"),\n        v0 = !s[1],\n        t0 = Number(s[0]) == n,\n        n10 = t0 && s[0].slice(-1),\n        n100 = t0 && s[0].slice(-2);if (ord) return n10 == 1 && n100 != 11 ? \"one\" : n10 == 2 && n100 != 12 ? \"two\" : n10 == 3 && n100 != 13 ? \"few\" : \"other\";return n == 1 && v0 ? \"one\" : \"other\";\n  }, \"fields\": { \"year\": { \"displayName\": \"year\", \"relative\": { \"0\": \"this year\", \"1\": \"next year\", \"-1\": \"last year\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} year\", \"other\": \"in {0} years\" }, \"past\": { \"one\": \"{0} year ago\", \"other\": \"{0} years ago\" } } }, \"month\": { \"displayName\": \"month\", \"relative\": { \"0\": \"this month\", \"1\": \"next month\", \"-1\": \"last month\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} month\", \"other\": \"in {0} months\" }, \"past\": { \"one\": \"{0} month ago\", \"other\": \"{0} months ago\" } } }, \"day\": { \"displayName\": \"day\", \"relative\": { \"0\": \"today\", \"1\": \"tomorrow\", \"-1\": \"yesterday\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} day\", \"other\": \"in {0} days\" }, \"past\": { \"one\": \"{0} day ago\", \"other\": \"{0} days ago\" } } }, \"hour\": { \"displayName\": \"hour\", \"relative\": { \"0\": \"this hour\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} hour\", \"other\": \"in {0} hours\" }, \"past\": { \"one\": \"{0} hour ago\", \"other\": \"{0} hours ago\" } } }, \"minute\": { \"displayName\": \"minute\", \"relative\": { \"0\": \"this minute\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} minute\", \"other\": \"in {0} minutes\" }, \"past\": { \"one\": \"{0} minute ago\", \"other\": \"{0} minutes ago\" } } }, \"second\": { \"displayName\": \"second\", \"relative\": { \"0\": \"now\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} second\", \"other\": \"in {0} seconds\" }, \"past\": { \"one\": \"{0} second ago\", \"other\": \"{0} seconds ago\" } } } } };\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nfunction addLocaleData() {\n  var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n  var locales = Array.isArray(data) ? data : [data];\n\n  locales.forEach(function (localeData) {\n    if (localeData && localeData.locale) {\n      IntlMessageFormat.__addLocaleData(localeData);\n      IntlRelativeFormat.__addLocaleData(localeData);\n    }\n  });\n}\n\nfunction hasLocaleData(locale) {\n  var localeParts = (locale || '').split('-');\n\n  while (localeParts.length > 0) {\n    if (hasIMFAndIRFLocaleData(localeParts.join('-'))) {\n      return true;\n    }\n\n    localeParts.pop();\n  }\n\n  return false;\n}\n\nfunction hasIMFAndIRFLocaleData(locale) {\n  var normalizedLocale = locale && locale.toLowerCase();\n\n  return !!(IntlMessageFormat.__localeData__[normalizedLocale] && IntlRelativeFormat.__localeData__[normalizedLocale]);\n}\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n  return typeof obj;\n} : function (obj) {\n  return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar classCallCheck = function (instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n};\n\nvar createClass = function () {\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\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\n\n\n\n\nvar defineProperty = function (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\nvar _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\n\nvar inherits = function (subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n\n\n\n\n\n\n\n\nvar objectWithoutProperties = function (obj, keys) {\n  var target = {};\n\n  for (var i in obj) {\n    if (keys.indexOf(i) >= 0) continue;\n    if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n    target[i] = obj[i];\n  }\n\n  return target;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar toConsumableArray = function (arr) {\n  if (Array.isArray(arr)) {\n    for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n    return arr2;\n  } else {\n    return Array.from(arr);\n  }\n};\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar bool = PropTypes.bool;\nvar number = PropTypes.number;\nvar string = PropTypes.string;\nvar func = PropTypes.func;\nvar object = PropTypes.object;\nvar oneOf = PropTypes.oneOf;\nvar shape = PropTypes.shape;\nvar any = PropTypes.any;\nvar oneOfType = PropTypes.oneOfType;\n\nvar localeMatcher = oneOf(['best fit', 'lookup']);\nvar narrowShortLong = oneOf(['narrow', 'short', 'long']);\nvar numeric2digit = oneOf(['numeric', '2-digit']);\nvar funcReq = func.isRequired;\n\nvar intlConfigPropTypes = {\n  locale: string,\n  formats: object,\n  messages: object,\n  textComponent: any,\n\n  defaultLocale: string,\n  defaultFormats: object\n};\n\nvar intlFormatPropTypes = {\n  formatDate: funcReq,\n  formatTime: funcReq,\n  formatRelative: funcReq,\n  formatNumber: funcReq,\n  formatPlural: funcReq,\n  formatMessage: funcReq,\n  formatHTMLMessage: funcReq\n};\n\nvar intlShape = shape(_extends({}, intlConfigPropTypes, intlFormatPropTypes, {\n  formatters: object,\n  now: funcReq\n}));\n\nvar messageDescriptorPropTypes = {\n  id: string.isRequired,\n  description: oneOfType([string, object]),\n  defaultMessage: string\n};\n\nvar dateTimeFormatPropTypes = {\n  localeMatcher: localeMatcher,\n  formatMatcher: oneOf(['basic', 'best fit']),\n\n  timeZone: string,\n  hour12: bool,\n\n  weekday: narrowShortLong,\n  era: narrowShortLong,\n  year: numeric2digit,\n  month: oneOf(['numeric', '2-digit', 'narrow', 'short', 'long']),\n  day: numeric2digit,\n  hour: numeric2digit,\n  minute: numeric2digit,\n  second: numeric2digit,\n  timeZoneName: oneOf(['short', 'long'])\n};\n\nvar numberFormatPropTypes = {\n  localeMatcher: localeMatcher,\n\n  style: oneOf(['decimal', 'currency', 'percent']),\n  currency: string,\n  currencyDisplay: oneOf(['symbol', 'code', 'name']),\n  useGrouping: bool,\n\n  minimumIntegerDigits: number,\n  minimumFractionDigits: number,\n  maximumFractionDigits: number,\n  minimumSignificantDigits: number,\n  maximumSignificantDigits: number\n};\n\nvar relativeFormatPropTypes = {\n  style: oneOf(['best fit', 'numeric']),\n  units: oneOf(['second', 'minute', 'hour', 'day', 'month', 'year'])\n};\n\nvar pluralFormatPropTypes = {\n  style: oneOf(['cardinal', 'ordinal'])\n};\n\n/*\nHTML escaping and shallow-equals implementations are the same as React's\n(on purpose.) Therefore, it has the following Copyright and Licensing:\n\nCopyright 2013-2014, Facebook, Inc.\nAll rights reserved.\n\nThis source code is licensed under the BSD-style license found in the LICENSE\nfile in the root directory of React's source tree.\n*/\n\nvar intlConfigPropNames = Object.keys(intlConfigPropTypes);\n\nvar ESCAPED_CHARS = {\n  '&': '&amp;',\n  '>': '&gt;',\n  '<': '&lt;',\n  '\"': '&quot;',\n  \"'\": '&#x27;'\n};\n\nvar UNSAFE_CHARS_REGEX = /[&><\"']/g;\n\nfunction escape(str) {\n  return ('' + str).replace(UNSAFE_CHARS_REGEX, function (match) {\n    return ESCAPED_CHARS[match];\n  });\n}\n\nfunction filterProps(props, whitelist) {\n  var defaults$$1 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n  return whitelist.reduce(function (filtered, name) {\n    if (props.hasOwnProperty(name)) {\n      filtered[name] = props[name];\n    } else if (defaults$$1.hasOwnProperty(name)) {\n      filtered[name] = defaults$$1[name];\n    }\n\n    return filtered;\n  }, {});\n}\n\nfunction invariantIntlContext() {\n  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n      intl = _ref.intl;\n\n  invariant(intl, '[React Intl] Could not find required `intl` object. ' + '<IntlProvider> needs to exist in the component ancestry.');\n}\n\nfunction shallowEquals(objA, objB) {\n  if (objA === objB) {\n    return true;\n  }\n\n  if ((typeof objA === 'undefined' ? 'undefined' : _typeof(objA)) !== 'object' || objA === null || (typeof objB === 'undefined' ? 'undefined' : _typeof(objB)) !== 'object' || objB === null) {\n    return false;\n  }\n\n  var keysA = Object.keys(objA);\n  var keysB = Object.keys(objB);\n\n  if (keysA.length !== keysB.length) {\n    return false;\n  }\n\n  // Test for A's keys different from B.\n  var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n  for (var i = 0; i < keysA.length; i++) {\n    if (!bHasOwnProperty(keysA[i]) || objA[keysA[i]] !== objB[keysA[i]]) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction shouldIntlComponentUpdate(_ref2, nextProps, nextState) {\n  var props = _ref2.props,\n      state = _ref2.state,\n      _ref2$context = _ref2.context,\n      context = _ref2$context === undefined ? {} : _ref2$context;\n  var nextContext = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  var _context$intl = context.intl,\n      intl = _context$intl === undefined ? {} : _context$intl;\n  var _nextContext$intl = nextContext.intl,\n      nextIntl = _nextContext$intl === undefined ? {} : _nextContext$intl;\n\n\n  return !shallowEquals(nextProps, props) || !shallowEquals(nextState, state) || !(nextIntl === intl || shallowEquals(filterProps(nextIntl, intlConfigPropNames), filterProps(intl, intlConfigPropNames)));\n}\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\n// Inspired by react-redux's `connect()` HOC factory function implementation:\n// https://github.com/rackt/react-redux\n\nfunction getDisplayName(Component$$1) {\n  return Component$$1.displayName || Component$$1.name || 'Component';\n}\n\nfunction injectIntl(WrappedComponent) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var _options$intlPropName = options.intlPropName,\n      intlPropName = _options$intlPropName === undefined ? 'intl' : _options$intlPropName,\n      _options$withRef = options.withRef,\n      withRef = _options$withRef === undefined ? false : _options$withRef;\n\n  var InjectIntl = function (_Component) {\n    inherits(InjectIntl, _Component);\n\n    function InjectIntl(props, context) {\n      classCallCheck(this, InjectIntl);\n\n      var _this = possibleConstructorReturn(this, (InjectIntl.__proto__ || Object.getPrototypeOf(InjectIntl)).call(this, props, context));\n\n      invariantIntlContext(context);\n      return _this;\n    }\n\n    createClass(InjectIntl, [{\n      key: 'getWrappedInstance',\n      value: function getWrappedInstance() {\n        invariant(withRef, '[React Intl] To access the wrapped instance, ' + 'the `{withRef: true}` option must be set when calling: ' + '`injectIntl()`');\n\n        return this.refs.wrappedInstance;\n      }\n    }, {\n      key: 'render',\n      value: function render() {\n        return React.createElement(WrappedComponent, _extends({}, this.props, defineProperty({}, intlPropName, this.context.intl), {\n          ref: withRef ? 'wrappedInstance' : null\n        }));\n      }\n    }]);\n    return InjectIntl;\n  }(Component);\n\n  InjectIntl.displayName = 'InjectIntl(' + getDisplayName(WrappedComponent) + ')';\n  InjectIntl.contextTypes = {\n    intl: intlShape\n  };\n  InjectIntl.WrappedComponent = WrappedComponent;\n\n\n  return InjectIntl;\n}\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nfunction defineMessages(messageDescriptors) {\n  // This simply returns what's passed-in because it's meant to be a hook for\n  // babel-plugin-react-intl.\n  return messageDescriptors;\n}\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\n// This is a \"hack\" until a proper `intl-pluralformat` package is created.\n\nfunction resolveLocale(locales) {\n  // IntlMessageFormat#_resolveLocale() does not depend on `this`.\n  return IntlMessageFormat.prototype._resolveLocale(locales);\n}\n\nfunction findPluralFunction(locale) {\n  // IntlMessageFormat#_findPluralFunction() does not depend on `this`.\n  return IntlMessageFormat.prototype._findPluralRuleFunction(locale);\n}\n\nvar IntlPluralFormat = function IntlPluralFormat(locales) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  classCallCheck(this, IntlPluralFormat);\n\n  var useOrdinal = options.style === 'ordinal';\n  var pluralFn = findPluralFunction(resolveLocale(locales));\n\n  this.format = function (value) {\n    return pluralFn(value, useOrdinal);\n  };\n};\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar DATE_TIME_FORMAT_OPTIONS = Object.keys(dateTimeFormatPropTypes);\nvar NUMBER_FORMAT_OPTIONS = Object.keys(numberFormatPropTypes);\nvar RELATIVE_FORMAT_OPTIONS = Object.keys(relativeFormatPropTypes);\nvar PLURAL_FORMAT_OPTIONS = Object.keys(pluralFormatPropTypes);\n\nvar RELATIVE_FORMAT_THRESHOLDS = {\n  second: 60, // seconds to minute\n  minute: 60, // minutes to hour\n  hour: 24, // hours to day\n  day: 30, // days to month\n  month: 12 // months to year\n};\n\nfunction updateRelativeFormatThresholds(newThresholds) {\n  var thresholds = IntlRelativeFormat.thresholds;\n  thresholds.second = newThresholds.second;\n  thresholds.minute = newThresholds.minute;\n  thresholds.hour = newThresholds.hour;\n  thresholds.day = newThresholds.day;\n  thresholds.month = newThresholds.month;\n}\n\nfunction getNamedFormat(formats, type, name) {\n  var format = formats && formats[type] && formats[type][name];\n  if (format) {\n    return format;\n  }\n\n  if (process.env.NODE_ENV !== 'production') {\n    console.error('[React Intl] No ' + type + ' format named: ' + name);\n  }\n}\n\nfunction formatDate(config, state, value) {\n  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  var locale = config.locale,\n      formats = config.formats;\n  var format = options.format;\n\n\n  var date = new Date(value);\n  var defaults$$1 = format && getNamedFormat(formats, 'date', format);\n  var filteredOptions = filterProps(options, DATE_TIME_FORMAT_OPTIONS, defaults$$1);\n\n  try {\n    return state.getDateTimeFormat(locale, filteredOptions).format(date);\n  } catch (e) {\n    if (process.env.NODE_ENV !== 'production') {\n      console.error('[React Intl] Error formatting date.\\n' + e);\n    }\n  }\n\n  return String(date);\n}\n\nfunction formatTime(config, state, value) {\n  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  var locale = config.locale,\n      formats = config.formats;\n  var format = options.format;\n\n\n  var date = new Date(value);\n  var defaults$$1 = format && getNamedFormat(formats, 'time', format);\n  var filteredOptions = filterProps(options, DATE_TIME_FORMAT_OPTIONS, defaults$$1);\n\n  if (!filteredOptions.hour && !filteredOptions.minute && !filteredOptions.second) {\n    // Add default formatting options if hour, minute, or second isn't defined.\n    filteredOptions = _extends({}, filteredOptions, { hour: 'numeric', minute: 'numeric' });\n  }\n\n  try {\n    return state.getDateTimeFormat(locale, filteredOptions).format(date);\n  } catch (e) {\n    if (process.env.NODE_ENV !== 'production') {\n      console.error('[React Intl] Error formatting time.\\n' + e);\n    }\n  }\n\n  return String(date);\n}\n\nfunction formatRelative(config, state, value) {\n  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  var locale = config.locale,\n      formats = config.formats;\n  var format = options.format;\n\n\n  var date = new Date(value);\n  var now = new Date(options.now);\n  var defaults$$1 = format && getNamedFormat(formats, 'relative', format);\n  var filteredOptions = filterProps(options, RELATIVE_FORMAT_OPTIONS, defaults$$1);\n\n  // Capture the current threshold values, then temporarily override them with\n  // specific values just for this render.\n  var oldThresholds = _extends({}, IntlRelativeFormat.thresholds);\n  updateRelativeFormatThresholds(RELATIVE_FORMAT_THRESHOLDS);\n\n  try {\n    return state.getRelativeFormat(locale, filteredOptions).format(date, {\n      now: isFinite(now) ? now : state.now()\n    });\n  } catch (e) {\n    if (process.env.NODE_ENV !== 'production') {\n      console.error('[React Intl] Error formatting relative time.\\n' + e);\n    }\n  } finally {\n    updateRelativeFormatThresholds(oldThresholds);\n  }\n\n  return String(date);\n}\n\nfunction formatNumber(config, state, value) {\n  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  var locale = config.locale,\n      formats = config.formats;\n  var format = options.format;\n\n\n  var defaults$$1 = format && getNamedFormat(formats, 'number', format);\n  var filteredOptions = filterProps(options, NUMBER_FORMAT_OPTIONS, defaults$$1);\n\n  try {\n    return state.getNumberFormat(locale, filteredOptions).format(value);\n  } catch (e) {\n    if (process.env.NODE_ENV !== 'production') {\n      console.error('[React Intl] Error formatting number.\\n' + e);\n    }\n  }\n\n  return String(value);\n}\n\nfunction formatPlural(config, state, value) {\n  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  var locale = config.locale;\n\n\n  var filteredOptions = filterProps(options, PLURAL_FORMAT_OPTIONS);\n\n  try {\n    return state.getPluralFormat(locale, filteredOptions).format(value);\n  } catch (e) {\n    if (process.env.NODE_ENV !== 'production') {\n      console.error('[React Intl] Error formatting plural.\\n' + e);\n    }\n  }\n\n  return 'other';\n}\n\nfunction formatMessage(config, state) {\n  var messageDescriptor = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  var values = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  var locale = config.locale,\n      formats = config.formats,\n      messages = config.messages,\n      defaultLocale = config.defaultLocale,\n      defaultFormats = config.defaultFormats;\n  var id = messageDescriptor.id,\n      defaultMessage = messageDescriptor.defaultMessage;\n\n  // `id` is a required field of a Message Descriptor.\n\n  invariant(id, '[React Intl] An `id` must be provided to format a message.');\n\n  var message = messages && messages[id];\n  var hasValues = Object.keys(values).length > 0;\n\n  // Avoid expensive message formatting for simple messages without values. In\n  // development messages will always be formatted in case of missing values.\n  if (!hasValues && process.env.NODE_ENV === 'production') {\n    return message || defaultMessage || id;\n  }\n\n  var formattedMessage = void 0;\n\n  if (message) {\n    try {\n      var formatter = state.getMessageFormat(message, locale, formats);\n\n      formattedMessage = formatter.format(values);\n    } catch (e) {\n      if (process.env.NODE_ENV !== 'production') {\n        console.error('[React Intl] Error formatting message: \"' + id + '\" for locale: \"' + locale + '\"' + (defaultMessage ? ', using default message as fallback.' : '') + ('\\n' + e));\n      }\n    }\n  } else {\n    if (process.env.NODE_ENV !== 'production') {\n      // This prevents warnings from littering the console in development\n      // when no `messages` are passed into the <IntlProvider> for the\n      // default locale, and a default message is in the source.\n      if (!defaultMessage || locale && locale.toLowerCase() !== defaultLocale.toLowerCase()) {\n        console.error('[React Intl] Missing message: \"' + id + '\" for locale: \"' + locale + '\"' + (defaultMessage ? ', using default message as fallback.' : ''));\n      }\n    }\n  }\n\n  if (!formattedMessage && defaultMessage) {\n    try {\n      var _formatter = state.getMessageFormat(defaultMessage, defaultLocale, defaultFormats);\n\n      formattedMessage = _formatter.format(values);\n    } catch (e) {\n      if (process.env.NODE_ENV !== 'production') {\n        console.error('[React Intl] Error formatting the default message for: \"' + id + '\"' + ('\\n' + e));\n      }\n    }\n  }\n\n  if (!formattedMessage) {\n    if (process.env.NODE_ENV !== 'production') {\n      console.error('[React Intl] Cannot format message: \"' + id + '\", ' + ('using message ' + (message || defaultMessage ? 'source' : 'id') + ' as fallback.'));\n    }\n  }\n\n  return formattedMessage || message || defaultMessage || id;\n}\n\nfunction formatHTMLMessage(config, state, messageDescriptor) {\n  var rawValues = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n  // Process all the values before they are used when formatting the ICU\n  // Message string. Since the formatted message might be injected via\n  // `innerHTML`, all String-based values need to be HTML-escaped.\n  var escapedValues = Object.keys(rawValues).reduce(function (escaped, name) {\n    var value = rawValues[name];\n    escaped[name] = typeof value === 'string' ? escape(value) : value;\n    return escaped;\n  }, {});\n\n  return formatMessage(config, state, messageDescriptor, escapedValues);\n}\n\n\n\nvar format = Object.freeze({\n\tformatDate: formatDate,\n\tformatTime: formatTime,\n\tformatRelative: formatRelative,\n\tformatNumber: formatNumber,\n\tformatPlural: formatPlural,\n\tformatMessage: formatMessage,\n\tformatHTMLMessage: formatHTMLMessage\n});\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar intlConfigPropNames$1 = Object.keys(intlConfigPropTypes);\nvar intlFormatPropNames = Object.keys(intlFormatPropTypes);\n\n// These are not a static property on the `IntlProvider` class so the intl\n// config values can be inherited from an <IntlProvider> ancestor.\nvar defaultProps = {\n  formats: {},\n  messages: {},\n  textComponent: 'span',\n\n  defaultLocale: 'en',\n  defaultFormats: {}\n};\n\nvar IntlProvider = function (_Component) {\n  inherits(IntlProvider, _Component);\n\n  function IntlProvider(props) {\n    var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    classCallCheck(this, IntlProvider);\n\n    var _this = possibleConstructorReturn(this, (IntlProvider.__proto__ || Object.getPrototypeOf(IntlProvider)).call(this, props, context));\n\n    invariant(typeof Intl !== 'undefined', '[React Intl] The `Intl` APIs must be available in the runtime, ' + 'and do not appear to be built-in. An `Intl` polyfill should be loaded.\\n' + 'See: http://formatjs.io/guides/runtime-environments/');\n\n    var intlContext = context.intl;\n\n    // Used to stabilize time when performing an initial rendering so that\n    // all relative times use the same reference \"now\" time.\n\n    var initialNow = void 0;\n    if (isFinite(props.initialNow)) {\n      initialNow = Number(props.initialNow);\n    } else {\n      // When an `initialNow` isn't provided via `props`, look to see an\n      // <IntlProvider> exists in the ancestry and call its `now()`\n      // function to propagate its value for \"now\".\n      initialNow = intlContext ? intlContext.now() : Date.now();\n    }\n\n    // Creating `Intl*` formatters is expensive. If there's a parent\n    // `<IntlProvider>`, then its formatters will be used. Otherwise, this\n    // memoize the `Intl*` constructors and cache them for the lifecycle of\n    // this IntlProvider instance.\n\n    var _ref = intlContext || {},\n        _ref$formatters = _ref.formatters,\n        formatters = _ref$formatters === undefined ? {\n      getDateTimeFormat: memoizeIntlConstructor(Intl.DateTimeFormat),\n      getNumberFormat: memoizeIntlConstructor(Intl.NumberFormat),\n      getMessageFormat: memoizeIntlConstructor(IntlMessageFormat),\n      getRelativeFormat: memoizeIntlConstructor(IntlRelativeFormat),\n      getPluralFormat: memoizeIntlConstructor(IntlPluralFormat)\n    } : _ref$formatters;\n\n    _this.state = _extends({}, formatters, {\n\n      // Wrapper to provide stable \"now\" time for initial render.\n      now: function now() {\n        return _this._didDisplay ? Date.now() : initialNow;\n      }\n    });\n    return _this;\n  }\n\n  createClass(IntlProvider, [{\n    key: 'getConfig',\n    value: function getConfig() {\n      var intlContext = this.context.intl;\n\n      // Build a whitelisted config object from `props`, defaults, and\n      // `context.intl`, if an <IntlProvider> exists in the ancestry.\n\n      var config = filterProps(this.props, intlConfigPropNames$1, intlContext);\n\n      // Apply default props. This must be applied last after the props have\n      // been resolved and inherited from any <IntlProvider> in the ancestry.\n      // This matches how React resolves `defaultProps`.\n      for (var propName in defaultProps) {\n        if (config[propName] === undefined) {\n          config[propName] = defaultProps[propName];\n        }\n      }\n\n      if (!hasLocaleData(config.locale)) {\n        var _config = config,\n            locale = _config.locale,\n            defaultLocale = _config.defaultLocale,\n            defaultFormats = _config.defaultFormats;\n\n\n        if (process.env.NODE_ENV !== 'production') {\n          console.error('[React Intl] Missing locale data for locale: \"' + locale + '\". ' + ('Using default locale: \"' + defaultLocale + '\" as fallback.'));\n        }\n\n        // Since there's no registered locale data for `locale`, this will\n        // fallback to the `defaultLocale` to make sure things can render.\n        // The `messages` are overridden to the `defaultProps` empty object\n        // to maintain referential equality across re-renders. It's assumed\n        // each <FormattedMessage> contains a `defaultMessage` prop.\n        config = _extends({}, config, {\n          locale: defaultLocale,\n          formats: defaultFormats,\n          messages: defaultProps.messages\n        });\n      }\n\n      return config;\n    }\n  }, {\n    key: 'getBoundFormatFns',\n    value: function getBoundFormatFns(config, state) {\n      return intlFormatPropNames.reduce(function (boundFormatFns, name) {\n        boundFormatFns[name] = format[name].bind(null, config, state);\n        return boundFormatFns;\n      }, {});\n    }\n  }, {\n    key: 'getChildContext',\n    value: function getChildContext() {\n      var config = this.getConfig();\n\n      // Bind intl factories and current config to the format functions.\n      var boundFormatFns = this.getBoundFormatFns(config, this.state);\n\n      var _state = this.state,\n          now = _state.now,\n          formatters = objectWithoutProperties(_state, ['now']);\n\n\n      return {\n        intl: _extends({}, config, boundFormatFns, {\n          formatters: formatters,\n          now: now\n        })\n      };\n    }\n  }, {\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate() {\n      for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) {\n        next[_key] = arguments[_key];\n      }\n\n      return shouldIntlComponentUpdate.apply(undefined, [this].concat(next));\n    }\n  }, {\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      this._didDisplay = true;\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      return Children.only(this.props.children);\n    }\n  }]);\n  return IntlProvider;\n}(Component);\n\nIntlProvider.displayName = 'IntlProvider';\nIntlProvider.contextTypes = {\n  intl: intlShape\n};\nIntlProvider.childContextTypes = {\n  intl: intlShape.isRequired\n};\nprocess.env.NODE_ENV !== \"production\" ? IntlProvider.propTypes = _extends({}, intlConfigPropTypes, {\n  children: PropTypes.element.isRequired,\n  initialNow: PropTypes.any\n}) : void 0;\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar FormattedDate = function (_Component) {\n  inherits(FormattedDate, _Component);\n\n  function FormattedDate(props, context) {\n    classCallCheck(this, FormattedDate);\n\n    var _this = possibleConstructorReturn(this, (FormattedDate.__proto__ || Object.getPrototypeOf(FormattedDate)).call(this, props, context));\n\n    invariantIntlContext(context);\n    return _this;\n  }\n\n  createClass(FormattedDate, [{\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate() {\n      for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) {\n        next[_key] = arguments[_key];\n      }\n\n      return shouldIntlComponentUpdate.apply(undefined, [this].concat(next));\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _context$intl = this.context.intl,\n          formatDate = _context$intl.formatDate,\n          Text = _context$intl.textComponent;\n      var _props = this.props,\n          value = _props.value,\n          children = _props.children;\n\n\n      var formattedDate = formatDate(value, this.props);\n\n      if (typeof children === 'function') {\n        return children(formattedDate);\n      }\n\n      return React.createElement(\n        Text,\n        null,\n        formattedDate\n      );\n    }\n  }]);\n  return FormattedDate;\n}(Component);\n\nFormattedDate.displayName = 'FormattedDate';\nFormattedDate.contextTypes = {\n  intl: intlShape\n};\nprocess.env.NODE_ENV !== \"production\" ? FormattedDate.propTypes = _extends({}, dateTimeFormatPropTypes, {\n  value: PropTypes.any.isRequired,\n  format: PropTypes.string,\n  children: PropTypes.func\n}) : void 0;\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar FormattedTime = function (_Component) {\n  inherits(FormattedTime, _Component);\n\n  function FormattedTime(props, context) {\n    classCallCheck(this, FormattedTime);\n\n    var _this = possibleConstructorReturn(this, (FormattedTime.__proto__ || Object.getPrototypeOf(FormattedTime)).call(this, props, context));\n\n    invariantIntlContext(context);\n    return _this;\n  }\n\n  createClass(FormattedTime, [{\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate() {\n      for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) {\n        next[_key] = arguments[_key];\n      }\n\n      return shouldIntlComponentUpdate.apply(undefined, [this].concat(next));\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _context$intl = this.context.intl,\n          formatTime = _context$intl.formatTime,\n          Text = _context$intl.textComponent;\n      var _props = this.props,\n          value = _props.value,\n          children = _props.children;\n\n\n      var formattedTime = formatTime(value, this.props);\n\n      if (typeof children === 'function') {\n        return children(formattedTime);\n      }\n\n      return React.createElement(\n        Text,\n        null,\n        formattedTime\n      );\n    }\n  }]);\n  return FormattedTime;\n}(Component);\n\nFormattedTime.displayName = 'FormattedTime';\nFormattedTime.contextTypes = {\n  intl: intlShape\n};\nprocess.env.NODE_ENV !== \"production\" ? FormattedTime.propTypes = _extends({}, dateTimeFormatPropTypes, {\n  value: PropTypes.any.isRequired,\n  format: PropTypes.string,\n  children: PropTypes.func\n}) : void 0;\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar SECOND = 1000;\nvar MINUTE = 1000 * 60;\nvar HOUR = 1000 * 60 * 60;\nvar DAY = 1000 * 60 * 60 * 24;\n\n// The maximum timer delay value is a 32-bit signed integer.\n// See: https://mdn.io/setTimeout\nvar MAX_TIMER_DELAY = 2147483647;\n\nfunction selectUnits(delta) {\n  var absDelta = Math.abs(delta);\n\n  if (absDelta < MINUTE) {\n    return 'second';\n  }\n\n  if (absDelta < HOUR) {\n    return 'minute';\n  }\n\n  if (absDelta < DAY) {\n    return 'hour';\n  }\n\n  // The maximum scheduled delay will be measured in days since the maximum\n  // timer delay is less than the number of milliseconds in 25 days.\n  return 'day';\n}\n\nfunction getUnitDelay(units) {\n  switch (units) {\n    case 'second':\n      return SECOND;\n    case 'minute':\n      return MINUTE;\n    case 'hour':\n      return HOUR;\n    case 'day':\n      return DAY;\n    default:\n      return MAX_TIMER_DELAY;\n  }\n}\n\nfunction isSameDate(a, b) {\n  if (a === b) {\n    return true;\n  }\n\n  var aTime = new Date(a).getTime();\n  var bTime = new Date(b).getTime();\n\n  return isFinite(aTime) && isFinite(bTime) && aTime === bTime;\n}\n\nvar FormattedRelative = function (_Component) {\n  inherits(FormattedRelative, _Component);\n\n  function FormattedRelative(props, context) {\n    classCallCheck(this, FormattedRelative);\n\n    var _this = possibleConstructorReturn(this, (FormattedRelative.__proto__ || Object.getPrototypeOf(FormattedRelative)).call(this, props, context));\n\n    invariantIntlContext(context);\n\n    var now = isFinite(props.initialNow) ? Number(props.initialNow) : context.intl.now();\n\n    // `now` is stored as state so that `render()` remains a function of\n    // props + state, instead of accessing `Date.now()` inside `render()`.\n    _this.state = { now: now };\n    return _this;\n  }\n\n  createClass(FormattedRelative, [{\n    key: 'scheduleNextUpdate',\n    value: function scheduleNextUpdate(props, state) {\n      var _this2 = this;\n\n      // Cancel and pending update because we're scheduling a new update.\n      clearTimeout(this._timer);\n\n      var value = props.value,\n          units = props.units,\n          updateInterval = props.updateInterval;\n\n      var time = new Date(value).getTime();\n\n      // If the `updateInterval` is falsy, including `0` or we don't have a\n      // valid date, then auto updates have been turned off, so we bail and\n      // skip scheduling an update.\n      if (!updateInterval || !isFinite(time)) {\n        return;\n      }\n\n      var delta = time - state.now;\n      var unitDelay = getUnitDelay(units || selectUnits(delta));\n      var unitRemainder = Math.abs(delta % unitDelay);\n\n      // We want the largest possible timer delay which will still display\n      // accurate information while reducing unnecessary re-renders. The delay\n      // should be until the next \"interesting\" moment, like a tick from\n      // \"1 minute ago\" to \"2 minutes ago\" when the delta is 120,000ms.\n      var delay = delta < 0 ? Math.max(updateInterval, unitDelay - unitRemainder) : Math.max(updateInterval, unitRemainder);\n\n      this._timer = setTimeout(function () {\n        _this2.setState({ now: _this2.context.intl.now() });\n      }, delay);\n    }\n  }, {\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      this.scheduleNextUpdate(this.props, this.state);\n    }\n  }, {\n    key: 'componentWillReceiveProps',\n    value: function componentWillReceiveProps(_ref) {\n      var nextValue = _ref.value;\n\n      // When the `props.value` date changes, `state.now` needs to be updated,\n      // and the next update can be rescheduled.\n      if (!isSameDate(nextValue, this.props.value)) {\n        this.setState({ now: this.context.intl.now() });\n      }\n    }\n  }, {\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate() {\n      for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) {\n        next[_key] = arguments[_key];\n      }\n\n      return shouldIntlComponentUpdate.apply(undefined, [this].concat(next));\n    }\n  }, {\n    key: 'componentWillUpdate',\n    value: function componentWillUpdate(nextProps, nextState) {\n      this.scheduleNextUpdate(nextProps, nextState);\n    }\n  }, {\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      clearTimeout(this._timer);\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _context$intl = this.context.intl,\n          formatRelative = _context$intl.formatRelative,\n          Text = _context$intl.textComponent;\n      var _props = this.props,\n          value = _props.value,\n          children = _props.children;\n\n\n      var formattedRelative = formatRelative(value, _extends({}, this.props, this.state));\n\n      if (typeof children === 'function') {\n        return children(formattedRelative);\n      }\n\n      return React.createElement(\n        Text,\n        null,\n        formattedRelative\n      );\n    }\n  }]);\n  return FormattedRelative;\n}(Component);\n\nFormattedRelative.displayName = 'FormattedRelative';\nFormattedRelative.contextTypes = {\n  intl: intlShape\n};\nFormattedRelative.defaultProps = {\n  updateInterval: 1000 * 10\n};\nprocess.env.NODE_ENV !== \"production\" ? FormattedRelative.propTypes = _extends({}, relativeFormatPropTypes, {\n  value: PropTypes.any.isRequired,\n  format: PropTypes.string,\n  updateInterval: PropTypes.number,\n  initialNow: PropTypes.any,\n  children: PropTypes.func\n}) : void 0;\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar FormattedNumber = function (_Component) {\n  inherits(FormattedNumber, _Component);\n\n  function FormattedNumber(props, context) {\n    classCallCheck(this, FormattedNumber);\n\n    var _this = possibleConstructorReturn(this, (FormattedNumber.__proto__ || Object.getPrototypeOf(FormattedNumber)).call(this, props, context));\n\n    invariantIntlContext(context);\n    return _this;\n  }\n\n  createClass(FormattedNumber, [{\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate() {\n      for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) {\n        next[_key] = arguments[_key];\n      }\n\n      return shouldIntlComponentUpdate.apply(undefined, [this].concat(next));\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _context$intl = this.context.intl,\n          formatNumber = _context$intl.formatNumber,\n          Text = _context$intl.textComponent;\n      var _props = this.props,\n          value = _props.value,\n          children = _props.children;\n\n\n      var formattedNumber = formatNumber(value, this.props);\n\n      if (typeof children === 'function') {\n        return children(formattedNumber);\n      }\n\n      return React.createElement(\n        Text,\n        null,\n        formattedNumber\n      );\n    }\n  }]);\n  return FormattedNumber;\n}(Component);\n\nFormattedNumber.displayName = 'FormattedNumber';\nFormattedNumber.contextTypes = {\n  intl: intlShape\n};\nprocess.env.NODE_ENV !== \"production\" ? FormattedNumber.propTypes = _extends({}, numberFormatPropTypes, {\n  value: PropTypes.any.isRequired,\n  format: PropTypes.string,\n  children: PropTypes.func\n}) : void 0;\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar FormattedPlural = function (_Component) {\n  inherits(FormattedPlural, _Component);\n\n  function FormattedPlural(props, context) {\n    classCallCheck(this, FormattedPlural);\n\n    var _this = possibleConstructorReturn(this, (FormattedPlural.__proto__ || Object.getPrototypeOf(FormattedPlural)).call(this, props, context));\n\n    invariantIntlContext(context);\n    return _this;\n  }\n\n  createClass(FormattedPlural, [{\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate() {\n      for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) {\n        next[_key] = arguments[_key];\n      }\n\n      return shouldIntlComponentUpdate.apply(undefined, [this].concat(next));\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _context$intl = this.context.intl,\n          formatPlural = _context$intl.formatPlural,\n          Text = _context$intl.textComponent;\n      var _props = this.props,\n          value = _props.value,\n          other = _props.other,\n          children = _props.children;\n\n\n      var pluralCategory = formatPlural(value, this.props);\n      var formattedPlural = this.props[pluralCategory] || other;\n\n      if (typeof children === 'function') {\n        return children(formattedPlural);\n      }\n\n      return React.createElement(\n        Text,\n        null,\n        formattedPlural\n      );\n    }\n  }]);\n  return FormattedPlural;\n}(Component);\n\nFormattedPlural.displayName = 'FormattedPlural';\nFormattedPlural.contextTypes = {\n  intl: intlShape\n};\nFormattedPlural.defaultProps = {\n  style: 'cardinal'\n};\nprocess.env.NODE_ENV !== \"production\" ? FormattedPlural.propTypes = _extends({}, pluralFormatPropTypes, {\n  value: PropTypes.any.isRequired,\n\n  other: PropTypes.node.isRequired,\n  zero: PropTypes.node,\n  one: PropTypes.node,\n  two: PropTypes.node,\n  few: PropTypes.node,\n  many: PropTypes.node,\n\n  children: PropTypes.func\n}) : void 0;\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar FormattedMessage = function (_Component) {\n  inherits(FormattedMessage, _Component);\n\n  function FormattedMessage(props, context) {\n    classCallCheck(this, FormattedMessage);\n\n    var _this = possibleConstructorReturn(this, (FormattedMessage.__proto__ || Object.getPrototypeOf(FormattedMessage)).call(this, props, context));\n\n    invariantIntlContext(context);\n    return _this;\n  }\n\n  createClass(FormattedMessage, [{\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate(nextProps) {\n      var values = this.props.values;\n      var nextValues = nextProps.values;\n\n\n      if (!shallowEquals(nextValues, values)) {\n        return true;\n      }\n\n      // Since `values` has already been checked, we know they're not\n      // different, so the current `values` are carried over so the shallow\n      // equals comparison on the other props isn't affected by the `values`.\n      var nextPropsToCheck = _extends({}, nextProps, {\n        values: values\n      });\n\n      for (var _len = arguments.length, next = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        next[_key - 1] = arguments[_key];\n      }\n\n      return shouldIntlComponentUpdate.apply(undefined, [this, nextPropsToCheck].concat(next));\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _context$intl = this.context.intl,\n          formatMessage = _context$intl.formatMessage,\n          Text = _context$intl.textComponent;\n      var _props = this.props,\n          id = _props.id,\n          description = _props.description,\n          defaultMessage = _props.defaultMessage,\n          values = _props.values,\n          _props$tagName = _props.tagName,\n          Component$$1 = _props$tagName === undefined ? Text : _props$tagName,\n          children = _props.children;\n\n\n      var tokenDelimiter = void 0;\n      var tokenizedValues = void 0;\n      var elements = void 0;\n\n      var hasValues = values && Object.keys(values).length > 0;\n      if (hasValues) {\n        // Creates a token with a random UID that should not be guessable or\n        // conflict with other parts of the `message` string.\n        var uid = Math.floor(Math.random() * 0x10000000000).toString(16);\n\n        var generateToken = function () {\n          var counter = 0;\n          return function () {\n            return 'ELEMENT-' + uid + '-' + (counter += 1);\n          };\n        }();\n\n        // Splitting with a delimiter to support IE8. When using a regex\n        // with a capture group IE8 does not include the capture group in\n        // the resulting array.\n        tokenDelimiter = '@__' + uid + '__@';\n        tokenizedValues = {};\n        elements = {};\n\n        // Iterates over the `props` to keep track of any React Element\n        // values so they can be represented by the `token` as a placeholder\n        // when the `message` is formatted. This allows the formatted\n        // message to then be broken-up into parts with references to the\n        // React Elements inserted back in.\n        Object.keys(values).forEach(function (name) {\n          var value = values[name];\n\n          if (isValidElement(value)) {\n            var token = generateToken();\n            tokenizedValues[name] = tokenDelimiter + token + tokenDelimiter;\n            elements[token] = value;\n          } else {\n            tokenizedValues[name] = value;\n          }\n        });\n      }\n\n      var descriptor = { id: id, description: description, defaultMessage: defaultMessage };\n      var formattedMessage = formatMessage(descriptor, tokenizedValues || values);\n\n      var nodes = void 0;\n\n      var hasElements = elements && Object.keys(elements).length > 0;\n      if (hasElements) {\n        // Split the message into parts so the React Element values captured\n        // above can be inserted back into the rendered message. This\n        // approach allows messages to render with React Elements while\n        // keeping React's virtual diffing working properly.\n        nodes = formattedMessage.split(tokenDelimiter).filter(function (part) {\n          return !!part;\n        }).map(function (part) {\n          return elements[part] || part;\n        });\n      } else {\n        nodes = [formattedMessage];\n      }\n\n      if (typeof children === 'function') {\n        return children.apply(undefined, toConsumableArray(nodes));\n      }\n\n      // Needs to use `createElement()` instead of JSX, otherwise React will\n      // warn about a missing `key` prop with rich-text message formatting.\n      return createElement.apply(undefined, [Component$$1, null].concat(toConsumableArray(nodes)));\n    }\n  }]);\n  return FormattedMessage;\n}(Component);\n\nFormattedMessage.displayName = 'FormattedMessage';\nFormattedMessage.contextTypes = {\n  intl: intlShape\n};\nFormattedMessage.defaultProps = {\n  values: {}\n};\nprocess.env.NODE_ENV !== \"production\" ? FormattedMessage.propTypes = _extends({}, messageDescriptorPropTypes, {\n  values: PropTypes.object,\n  tagName: PropTypes.string,\n  children: PropTypes.func\n}) : void 0;\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar FormattedHTMLMessage = function (_Component) {\n  inherits(FormattedHTMLMessage, _Component);\n\n  function FormattedHTMLMessage(props, context) {\n    classCallCheck(this, FormattedHTMLMessage);\n\n    var _this = possibleConstructorReturn(this, (FormattedHTMLMessage.__proto__ || Object.getPrototypeOf(FormattedHTMLMessage)).call(this, props, context));\n\n    invariantIntlContext(context);\n    return _this;\n  }\n\n  createClass(FormattedHTMLMessage, [{\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate(nextProps) {\n      var values = this.props.values;\n      var nextValues = nextProps.values;\n\n\n      if (!shallowEquals(nextValues, values)) {\n        return true;\n      }\n\n      // Since `values` has already been checked, we know they're not\n      // different, so the current `values` are carried over so the shallow\n      // equals comparison on the other props isn't affected by the `values`.\n      var nextPropsToCheck = _extends({}, nextProps, {\n        values: values\n      });\n\n      for (var _len = arguments.length, next = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        next[_key - 1] = arguments[_key];\n      }\n\n      return shouldIntlComponentUpdate.apply(undefined, [this, nextPropsToCheck].concat(next));\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _context$intl = this.context.intl,\n          formatHTMLMessage = _context$intl.formatHTMLMessage,\n          Text = _context$intl.textComponent;\n      var _props = this.props,\n          id = _props.id,\n          description = _props.description,\n          defaultMessage = _props.defaultMessage,\n          rawValues = _props.values,\n          _props$tagName = _props.tagName,\n          Component$$1 = _props$tagName === undefined ? Text : _props$tagName,\n          children = _props.children;\n\n\n      var descriptor = { id: id, description: description, defaultMessage: defaultMessage };\n      var formattedHTMLMessage = formatHTMLMessage(descriptor, rawValues);\n\n      if (typeof children === 'function') {\n        return children(formattedHTMLMessage);\n      }\n\n      // Since the message presumably has HTML in it, we need to set\n      // `innerHTML` in order for it to be rendered and not escaped by React.\n      // To be safe, all string prop values were escaped when formatting the\n      // message. It is assumed that the message is not UGC, and came from the\n      // developer making it more like a template.\n      //\n      // Note: There's a perf impact of using this component since there's no\n      // way for React to do its virtual DOM diffing.\n      var html = { __html: formattedHTMLMessage };\n      return React.createElement(Component$$1, { dangerouslySetInnerHTML: html });\n    }\n  }]);\n  return FormattedHTMLMessage;\n}(Component);\n\nFormattedHTMLMessage.displayName = 'FormattedHTMLMessage';\nFormattedHTMLMessage.contextTypes = {\n  intl: intlShape\n};\nFormattedHTMLMessage.defaultProps = {\n  values: {}\n};\nprocess.env.NODE_ENV !== \"production\" ? FormattedHTMLMessage.propTypes = _extends({}, messageDescriptorPropTypes, {\n  values: PropTypes.object,\n  tagName: PropTypes.string,\n  children: PropTypes.func\n}) : void 0;\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\naddLocaleData(defaultLocaleData);\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\naddLocaleData(allLocaleData);\n\nexport { addLocaleData, intlShape, injectIntl, defineMessages, IntlProvider, FormattedDate, FormattedTime, FormattedRelative, FormattedNumber, FormattedPlural, FormattedMessage, FormattedHTMLMessage };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-intl/lib/index.es.js\n// module id = 667\n// module chunks = 0","/* (ignored) */\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../locale-data/index.js (ignored)\n// module id = 668\n// module chunks = 0","/* jslint esnext: true */\n\n\"use strict\";\nvar src$core$$ = require(\"./core\"), src$en$$ = require(\"./en\");\n\nsrc$core$$[\"default\"].__addLocaleData(src$en$$[\"default\"]);\nsrc$core$$[\"default\"].defaultLocale = 'en';\n\nexports[\"default\"] = src$core$$[\"default\"];\n\n//# sourceMappingURL=main.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/intl-messageformat/lib/main.js\n// module id = 669\n// module chunks = 0","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\n\"use strict\";\nvar src$utils$$ = require(\"./utils\"), src$es5$$ = require(\"./es5\"), src$compiler$$ = require(\"./compiler\"), intl$messageformat$parser$$ = require(\"intl-messageformat-parser\");\nexports[\"default\"] = MessageFormat;\n\n// -- MessageFormat --------------------------------------------------------\n\nfunction MessageFormat(message, locales, formats) {\n    // Parse string messages into an AST.\n    var ast = typeof message === 'string' ?\n            MessageFormat.__parse(message) : message;\n\n    if (!(ast && ast.type === 'messageFormatPattern')) {\n        throw new TypeError('A message must be provided as a String or AST.');\n    }\n\n    // Creates a new object with the specified `formats` merged with the default\n    // formats.\n    formats = this._mergeFormats(MessageFormat.formats, formats);\n\n    // Defined first because it's used to build the format pattern.\n    src$es5$$.defineProperty(this, '_locale',  {value: this._resolveLocale(locales)});\n\n    // Compile the `ast` to a pattern that is highly optimized for repeated\n    // `format()` invocations. **Note:** This passes the `locales` set provided\n    // to the constructor instead of just the resolved locale.\n    var pluralFn = this._findPluralRuleFunction(this._locale);\n    var pattern  = this._compilePattern(ast, locales, formats, pluralFn);\n\n    // \"Bind\" `format()` method to `this` so it can be passed by reference like\n    // the other `Intl` APIs.\n    var messageFormat = this;\n    this.format = function (values) {\n      try {\n        return messageFormat._format(pattern, values);\n      } catch (e) {\n        if (e.variableId) {\n          throw new Error(\n            'The intl string context variable \\'' + e.variableId + '\\'' +\n            ' was not provided to the string \\'' + message + '\\''\n          );\n        } else {\n          throw e;\n        }\n      }\n    };\n}\n\n// Default format options used as the prototype of the `formats` provided to the\n// constructor. These are used when constructing the internal Intl.NumberFormat\n// and Intl.DateTimeFormat instances.\nsrc$es5$$.defineProperty(MessageFormat, 'formats', {\n    enumerable: true,\n\n    value: {\n        number: {\n            'currency': {\n                style: 'currency'\n            },\n\n            'percent': {\n                style: 'percent'\n            }\n        },\n\n        date: {\n            'short': {\n                month: 'numeric',\n                day  : 'numeric',\n                year : '2-digit'\n            },\n\n            'medium': {\n                month: 'short',\n                day  : 'numeric',\n                year : 'numeric'\n            },\n\n            'long': {\n                month: 'long',\n                day  : 'numeric',\n                year : 'numeric'\n            },\n\n            'full': {\n                weekday: 'long',\n                month  : 'long',\n                day    : 'numeric',\n                year   : 'numeric'\n            }\n        },\n\n        time: {\n            'short': {\n                hour  : 'numeric',\n                minute: 'numeric'\n            },\n\n            'medium':  {\n                hour  : 'numeric',\n                minute: 'numeric',\n                second: 'numeric'\n            },\n\n            'long': {\n                hour        : 'numeric',\n                minute      : 'numeric',\n                second      : 'numeric',\n                timeZoneName: 'short'\n            },\n\n            'full': {\n                hour        : 'numeric',\n                minute      : 'numeric',\n                second      : 'numeric',\n                timeZoneName: 'short'\n            }\n        }\n    }\n});\n\n// Define internal private properties for dealing with locale data.\nsrc$es5$$.defineProperty(MessageFormat, '__localeData__', {value: src$es5$$.objCreate(null)});\nsrc$es5$$.defineProperty(MessageFormat, '__addLocaleData', {value: function (data) {\n    if (!(data && data.locale)) {\n        throw new Error(\n            'Locale data provided to IntlMessageFormat is missing a ' +\n            '`locale` property'\n        );\n    }\n\n    MessageFormat.__localeData__[data.locale.toLowerCase()] = data;\n}});\n\n// Defines `__parse()` static method as an exposed private.\nsrc$es5$$.defineProperty(MessageFormat, '__parse', {value: intl$messageformat$parser$$[\"default\"].parse});\n\n// Define public `defaultLocale` property which defaults to English, but can be\n// set by the developer.\nsrc$es5$$.defineProperty(MessageFormat, 'defaultLocale', {\n    enumerable: true,\n    writable  : true,\n    value     : undefined\n});\n\nMessageFormat.prototype.resolvedOptions = function () {\n    // TODO: Provide anything else?\n    return {\n        locale: this._locale\n    };\n};\n\nMessageFormat.prototype._compilePattern = function (ast, locales, formats, pluralFn) {\n    var compiler = new src$compiler$$[\"default\"](locales, formats, pluralFn);\n    return compiler.compile(ast);\n};\n\nMessageFormat.prototype._findPluralRuleFunction = function (locale) {\n    var localeData = MessageFormat.__localeData__;\n    var data       = localeData[locale.toLowerCase()];\n\n    // The locale data is de-duplicated, so we have to traverse the locale's\n    // hierarchy until we find a `pluralRuleFunction` to return.\n    while (data) {\n        if (data.pluralRuleFunction) {\n            return data.pluralRuleFunction;\n        }\n\n        data = data.parentLocale && localeData[data.parentLocale.toLowerCase()];\n    }\n\n    throw new Error(\n        'Locale data added to IntlMessageFormat is missing a ' +\n        '`pluralRuleFunction` for :' + locale\n    );\n};\n\nMessageFormat.prototype._format = function (pattern, values) {\n    var result = '',\n        i, len, part, id, value, err;\n\n    for (i = 0, len = pattern.length; i < len; i += 1) {\n        part = pattern[i];\n\n        // Exist early for string parts.\n        if (typeof part === 'string') {\n            result += part;\n            continue;\n        }\n\n        id = part.id;\n\n        // Enforce that all required values are provided by the caller.\n        if (!(values && src$utils$$.hop.call(values, id))) {\n          err = new Error('A value must be provided for: ' + id);\n          err.variableId = id;\n          throw err;\n        }\n\n        value = values[id];\n\n        // Recursively format plural and select parts' option — which can be a\n        // nested pattern structure. The choosing of the option to use is\n        // abstracted-by and delegated-to the part helper object.\n        if (part.options) {\n            result += this._format(part.getOption(value), values);\n        } else {\n            result += part.format(value);\n        }\n    }\n\n    return result;\n};\n\nMessageFormat.prototype._mergeFormats = function (defaults, formats) {\n    var mergedFormats = {},\n        type, mergedType;\n\n    for (type in defaults) {\n        if (!src$utils$$.hop.call(defaults, type)) { continue; }\n\n        mergedFormats[type] = mergedType = src$es5$$.objCreate(defaults[type]);\n\n        if (formats && src$utils$$.hop.call(formats, type)) {\n            src$utils$$.extend(mergedType, formats[type]);\n        }\n    }\n\n    return mergedFormats;\n};\n\nMessageFormat.prototype._resolveLocale = function (locales) {\n    if (typeof locales === 'string') {\n        locales = [locales];\n    }\n\n    // Create a copy of the array so we can push on the default locale.\n    locales = (locales || []).concat(MessageFormat.defaultLocale);\n\n    var localeData = MessageFormat.__localeData__;\n    var i, len, localeParts, data;\n\n    // Using the set of locales + the default locale, we look for the first one\n    // which that has been registered. When data does not exist for a locale, we\n    // traverse its ancestors to find something that's been registered within\n    // its hierarchy of locales. Since we lack the proper `parentLocale` data\n    // here, we must take a naive approach to traversal.\n    for (i = 0, len = locales.length; i < len; i += 1) {\n        localeParts = locales[i].toLowerCase().split('-');\n\n        while (localeParts.length) {\n            data = localeData[localeParts.join('-')];\n            if (data) {\n                // Return the normalized locale string; e.g., we return \"en-US\",\n                // instead of \"en-us\".\n                return data.locale;\n            }\n\n            localeParts.pop();\n        }\n    }\n\n    var defaultLocale = locales.pop();\n    throw new Error(\n        'No locale data has been added to IntlMessageFormat for: ' +\n        locales.join(', ') + ', or the default locale: ' + defaultLocale\n    );\n};\n\n//# sourceMappingURL=core.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/intl-messageformat/lib/core.js\n// module id = 670\n// module chunks = 0","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\n\"use strict\";\nvar src$utils$$ = require(\"./utils\");\n\n// Purposely using the same implementation as the Intl.js `Intl` polyfill.\n// Copyright 2013 Andy Earnshaw, MIT License\n\nvar realDefineProp = (function () {\n    try { return !!Object.defineProperty({}, 'a', {}); }\n    catch (e) { return false; }\n})();\n\nvar es3 = !realDefineProp && !Object.prototype.__defineGetter__;\n\nvar defineProperty = realDefineProp ? Object.defineProperty :\n        function (obj, name, desc) {\n\n    if ('get' in desc && obj.__defineGetter__) {\n        obj.__defineGetter__(name, desc.get);\n    } else if (!src$utils$$.hop.call(obj, name) || 'value' in desc) {\n        obj[name] = desc.value;\n    }\n};\n\nvar objCreate = Object.create || function (proto, props) {\n    var obj, k;\n\n    function F() {}\n    F.prototype = proto;\n    obj = new F();\n\n    for (k in props) {\n        if (src$utils$$.hop.call(props, k)) {\n            defineProperty(obj, k, props[k]);\n        }\n    }\n\n    return obj;\n};\n\nexports.defineProperty = defineProperty, exports.objCreate = objCreate;\n\n//# sourceMappingURL=es5.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/intl-messageformat/lib/es5.js\n// module id = 671\n// module chunks = 0","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\n\"use strict\";\nexports[\"default\"] = Compiler;\n\nfunction Compiler(locales, formats, pluralFn) {\n    this.locales  = locales;\n    this.formats  = formats;\n    this.pluralFn = pluralFn;\n}\n\nCompiler.prototype.compile = function (ast) {\n    this.pluralStack        = [];\n    this.currentPlural      = null;\n    this.pluralNumberFormat = null;\n\n    return this.compileMessage(ast);\n};\n\nCompiler.prototype.compileMessage = function (ast) {\n    if (!(ast && ast.type === 'messageFormatPattern')) {\n        throw new Error('Message AST is not of type: \"messageFormatPattern\"');\n    }\n\n    var elements = ast.elements,\n        pattern  = [];\n\n    var i, len, element;\n\n    for (i = 0, len = elements.length; i < len; i += 1) {\n        element = elements[i];\n\n        switch (element.type) {\n            case 'messageTextElement':\n                pattern.push(this.compileMessageText(element));\n                break;\n\n            case 'argumentElement':\n                pattern.push(this.compileArgument(element));\n                break;\n\n            default:\n                throw new Error('Message element does not have a valid type');\n        }\n    }\n\n    return pattern;\n};\n\nCompiler.prototype.compileMessageText = function (element) {\n    // When this `element` is part of plural sub-pattern and its value contains\n    // an unescaped '#', use a `PluralOffsetString` helper to properly output\n    // the number with the correct offset in the string.\n    if (this.currentPlural && /(^|[^\\\\])#/g.test(element.value)) {\n        // Create a cache a NumberFormat instance that can be reused for any\n        // PluralOffsetString instance in this message.\n        if (!this.pluralNumberFormat) {\n            this.pluralNumberFormat = new Intl.NumberFormat(this.locales);\n        }\n\n        return new PluralOffsetString(\n                this.currentPlural.id,\n                this.currentPlural.format.offset,\n                this.pluralNumberFormat,\n                element.value);\n    }\n\n    // Unescape the escaped '#'s in the message text.\n    return element.value.replace(/\\\\#/g, '#');\n};\n\nCompiler.prototype.compileArgument = function (element) {\n    var format = element.format;\n\n    if (!format) {\n        return new StringFormat(element.id);\n    }\n\n    var formats  = this.formats,\n        locales  = this.locales,\n        pluralFn = this.pluralFn,\n        options;\n\n    switch (format.type) {\n        case 'numberFormat':\n            options = formats.number[format.style];\n            return {\n                id    : element.id,\n                format: new Intl.NumberFormat(locales, options).format\n            };\n\n        case 'dateFormat':\n            options = formats.date[format.style];\n            return {\n                id    : element.id,\n                format: new Intl.DateTimeFormat(locales, options).format\n            };\n\n        case 'timeFormat':\n            options = formats.time[format.style];\n            return {\n                id    : element.id,\n                format: new Intl.DateTimeFormat(locales, options).format\n            };\n\n        case 'pluralFormat':\n            options = this.compileOptions(element);\n            return new PluralFormat(\n                element.id, format.ordinal, format.offset, options, pluralFn\n            );\n\n        case 'selectFormat':\n            options = this.compileOptions(element);\n            return new SelectFormat(element.id, options);\n\n        default:\n            throw new Error('Message element does not have a valid format type');\n    }\n};\n\nCompiler.prototype.compileOptions = function (element) {\n    var format      = element.format,\n        options     = format.options,\n        optionsHash = {};\n\n    // Save the current plural element, if any, then set it to a new value when\n    // compiling the options sub-patterns. This conforms the spec's algorithm\n    // for handling `\"#\"` syntax in message text.\n    this.pluralStack.push(this.currentPlural);\n    this.currentPlural = format.type === 'pluralFormat' ? element : null;\n\n    var i, len, option;\n\n    for (i = 0, len = options.length; i < len; i += 1) {\n        option = options[i];\n\n        // Compile the sub-pattern and save it under the options's selector.\n        optionsHash[option.selector] = this.compileMessage(option.value);\n    }\n\n    // Pop the plural stack to put back the original current plural value.\n    this.currentPlural = this.pluralStack.pop();\n\n    return optionsHash;\n};\n\n// -- Compiler Helper Classes --------------------------------------------------\n\nfunction StringFormat(id) {\n    this.id = id;\n}\n\nStringFormat.prototype.format = function (value) {\n    if (!value && typeof value !== 'number') {\n        return '';\n    }\n\n    return typeof value === 'string' ? value : String(value);\n};\n\nfunction PluralFormat(id, useOrdinal, offset, options, pluralFn) {\n    this.id         = id;\n    this.useOrdinal = useOrdinal;\n    this.offset     = offset;\n    this.options    = options;\n    this.pluralFn   = pluralFn;\n}\n\nPluralFormat.prototype.getOption = function (value) {\n    var options = this.options;\n\n    var option = options['=' + value] ||\n            options[this.pluralFn(value - this.offset, this.useOrdinal)];\n\n    return option || options.other;\n};\n\nfunction PluralOffsetString(id, offset, numberFormat, string) {\n    this.id           = id;\n    this.offset       = offset;\n    this.numberFormat = numberFormat;\n    this.string       = string;\n}\n\nPluralOffsetString.prototype.format = function (value) {\n    var number = this.numberFormat.format(value - this.offset);\n\n    return this.string\n            .replace(/(^|[^\\\\])#/g, '$1' + number)\n            .replace(/\\\\#/g, '#');\n};\n\nfunction SelectFormat(id, options) {\n    this.id      = id;\n    this.options = options;\n}\n\nSelectFormat.prototype.getOption = function (value) {\n    var options = this.options;\n    return options[value] || options.other;\n};\n\n//# sourceMappingURL=compiler.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/intl-messageformat/lib/compiler.js\n// module id = 672\n// module chunks = 0","'use strict';\n\nexports = module.exports = require('./lib/parser')['default'];\nexports['default'] = exports;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/intl-messageformat-parser/index.js\n// module id = 673\n// module chunks = 0","\"use strict\";\n\nexports[\"default\"] = (function() {\n  \"use strict\";\n\n  /*\n   * Generated by PEG.js 0.9.0.\n   *\n   * http://pegjs.org/\n   */\n\n  function peg$subclass(child, parent) {\n    function ctor() { this.constructor = child; }\n    ctor.prototype = parent.prototype;\n    child.prototype = new ctor();\n  }\n\n  function peg$SyntaxError(message, expected, found, location) {\n    this.message  = message;\n    this.expected = expected;\n    this.found    = found;\n    this.location = location;\n    this.name     = \"SyntaxError\";\n\n    if (typeof Error.captureStackTrace === \"function\") {\n      Error.captureStackTrace(this, peg$SyntaxError);\n    }\n  }\n\n  peg$subclass(peg$SyntaxError, Error);\n\n  function peg$parse(input) {\n    var options = arguments.length > 1 ? arguments[1] : {},\n        parser  = this,\n\n        peg$FAILED = {},\n\n        peg$startRuleFunctions = { start: peg$parsestart },\n        peg$startRuleFunction  = peg$parsestart,\n\n        peg$c0 = function(elements) {\n                return {\n                    type    : 'messageFormatPattern',\n                    elements: elements,\n                    location: location()\n                };\n            },\n        peg$c1 = function(text) {\n                var string = '',\n                    i, j, outerLen, inner, innerLen;\n\n                for (i = 0, outerLen = text.length; i < outerLen; i += 1) {\n                    inner = text[i];\n\n                    for (j = 0, innerLen = inner.length; j < innerLen; j += 1) {\n                        string += inner[j];\n                    }\n                }\n\n                return string;\n            },\n        peg$c2 = function(messageText) {\n                return {\n                    type : 'messageTextElement',\n                    value: messageText,\n                    location: location()\n                };\n            },\n        peg$c3 = /^[^ \\t\\n\\r,.+={}#]/,\n        peg$c4 = { type: \"class\", value: \"[^ \\\\t\\\\n\\\\r,.+={}#]\", description: \"[^ \\\\t\\\\n\\\\r,.+={}#]\" },\n        peg$c5 = \"{\",\n        peg$c6 = { type: \"literal\", value: \"{\", description: \"\\\"{\\\"\" },\n        peg$c7 = \",\",\n        peg$c8 = { type: \"literal\", value: \",\", description: \"\\\",\\\"\" },\n        peg$c9 = \"}\",\n        peg$c10 = { type: \"literal\", value: \"}\", description: \"\\\"}\\\"\" },\n        peg$c11 = function(id, format) {\n                return {\n                    type  : 'argumentElement',\n                    id    : id,\n                    format: format && format[2],\n                    location: location()\n                };\n            },\n        peg$c12 = \"number\",\n        peg$c13 = { type: \"literal\", value: \"number\", description: \"\\\"number\\\"\" },\n        peg$c14 = \"date\",\n        peg$c15 = { type: \"literal\", value: \"date\", description: \"\\\"date\\\"\" },\n        peg$c16 = \"time\",\n        peg$c17 = { type: \"literal\", value: \"time\", description: \"\\\"time\\\"\" },\n        peg$c18 = function(type, style) {\n                return {\n                    type : type + 'Format',\n                    style: style && style[2],\n                    location: location()\n                };\n            },\n        peg$c19 = \"plural\",\n        peg$c20 = { type: \"literal\", value: \"plural\", description: \"\\\"plural\\\"\" },\n        peg$c21 = function(pluralStyle) {\n                return {\n                    type   : pluralStyle.type,\n                    ordinal: false,\n                    offset : pluralStyle.offset || 0,\n                    options: pluralStyle.options,\n                    location: location()\n                };\n            },\n        peg$c22 = \"selectordinal\",\n        peg$c23 = { type: \"literal\", value: \"selectordinal\", description: \"\\\"selectordinal\\\"\" },\n        peg$c24 = function(pluralStyle) {\n                return {\n                    type   : pluralStyle.type,\n                    ordinal: true,\n                    offset : pluralStyle.offset || 0,\n                    options: pluralStyle.options,\n                    location: location()\n                }\n            },\n        peg$c25 = \"select\",\n        peg$c26 = { type: \"literal\", value: \"select\", description: \"\\\"select\\\"\" },\n        peg$c27 = function(options) {\n                return {\n                    type   : 'selectFormat',\n                    options: options,\n                    location: location()\n                };\n            },\n        peg$c28 = \"=\",\n        peg$c29 = { type: \"literal\", value: \"=\", description: \"\\\"=\\\"\" },\n        peg$c30 = function(selector, pattern) {\n                return {\n                    type    : 'optionalFormatPattern',\n                    selector: selector,\n                    value   : pattern,\n                    location: location()\n                };\n            },\n        peg$c31 = \"offset:\",\n        peg$c32 = { type: \"literal\", value: \"offset:\", description: \"\\\"offset:\\\"\" },\n        peg$c33 = function(number) {\n                return number;\n            },\n        peg$c34 = function(offset, options) {\n                return {\n                    type   : 'pluralFormat',\n                    offset : offset,\n                    options: options,\n                    location: location()\n                };\n            },\n        peg$c35 = { type: \"other\", description: \"whitespace\" },\n        peg$c36 = /^[ \\t\\n\\r]/,\n        peg$c37 = { type: \"class\", value: \"[ \\\\t\\\\n\\\\r]\", description: \"[ \\\\t\\\\n\\\\r]\" },\n        peg$c38 = { type: \"other\", description: \"optionalWhitespace\" },\n        peg$c39 = /^[0-9]/,\n        peg$c40 = { type: \"class\", value: \"[0-9]\", description: \"[0-9]\" },\n        peg$c41 = /^[0-9a-f]/i,\n        peg$c42 = { type: \"class\", value: \"[0-9a-f]i\", description: \"[0-9a-f]i\" },\n        peg$c43 = \"0\",\n        peg$c44 = { type: \"literal\", value: \"0\", description: \"\\\"0\\\"\" },\n        peg$c45 = /^[1-9]/,\n        peg$c46 = { type: \"class\", value: \"[1-9]\", description: \"[1-9]\" },\n        peg$c47 = function(digits) {\n            return parseInt(digits, 10);\n        },\n        peg$c48 = /^[^{}\\\\\\0-\\x1F \\t\\n\\r]/,\n        peg$c49 = { type: \"class\", value: \"[^{}\\\\\\\\\\\\0-\\\\x1F\\\\x7f \\\\t\\\\n\\\\r]\", description: \"[^{}\\\\\\\\\\\\0-\\\\x1F\\\\x7f \\\\t\\\\n\\\\r]\" },\n        peg$c50 = \"\\\\\\\\\",\n        peg$c51 = { type: \"literal\", value: \"\\\\\\\\\", description: \"\\\"\\\\\\\\\\\\\\\\\\\"\" },\n        peg$c52 = function() { return '\\\\'; },\n        peg$c53 = \"\\\\#\",\n        peg$c54 = { type: \"literal\", value: \"\\\\#\", description: \"\\\"\\\\\\\\#\\\"\" },\n        peg$c55 = function() { return '\\\\#'; },\n        peg$c56 = \"\\\\{\",\n        peg$c57 = { type: \"literal\", value: \"\\\\{\", description: \"\\\"\\\\\\\\{\\\"\" },\n        peg$c58 = function() { return '\\u007B'; },\n        peg$c59 = \"\\\\}\",\n        peg$c60 = { type: \"literal\", value: \"\\\\}\", description: \"\\\"\\\\\\\\}\\\"\" },\n        peg$c61 = function() { return '\\u007D'; },\n        peg$c62 = \"\\\\u\",\n        peg$c63 = { type: \"literal\", value: \"\\\\u\", description: \"\\\"\\\\\\\\u\\\"\" },\n        peg$c64 = function(digits) {\n                return String.fromCharCode(parseInt(digits, 16));\n            },\n        peg$c65 = function(chars) { return chars.join(''); },\n\n        peg$currPos          = 0,\n        peg$savedPos         = 0,\n        peg$posDetailsCache  = [{ line: 1, column: 1, seenCR: false }],\n        peg$maxFailPos       = 0,\n        peg$maxFailExpected  = [],\n        peg$silentFails      = 0,\n\n        peg$result;\n\n    if (\"startRule\" in options) {\n      if (!(options.startRule in peg$startRuleFunctions)) {\n        throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n      }\n\n      peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n    }\n\n    function text() {\n      return input.substring(peg$savedPos, peg$currPos);\n    }\n\n    function location() {\n      return peg$computeLocation(peg$savedPos, peg$currPos);\n    }\n\n    function expected(description) {\n      throw peg$buildException(\n        null,\n        [{ type: \"other\", description: description }],\n        input.substring(peg$savedPos, peg$currPos),\n        peg$computeLocation(peg$savedPos, peg$currPos)\n      );\n    }\n\n    function error(message) {\n      throw peg$buildException(\n        message,\n        null,\n        input.substring(peg$savedPos, peg$currPos),\n        peg$computeLocation(peg$savedPos, peg$currPos)\n      );\n    }\n\n    function peg$computePosDetails(pos) {\n      var details = peg$posDetailsCache[pos],\n          p, ch;\n\n      if (details) {\n        return details;\n      } else {\n        p = pos - 1;\n        while (!peg$posDetailsCache[p]) {\n          p--;\n        }\n\n        details = peg$posDetailsCache[p];\n        details = {\n          line:   details.line,\n          column: details.column,\n          seenCR: details.seenCR\n        };\n\n        while (p < pos) {\n          ch = input.charAt(p);\n          if (ch === \"\\n\") {\n            if (!details.seenCR) { details.line++; }\n            details.column = 1;\n            details.seenCR = false;\n          } else if (ch === \"\\r\" || ch === \"\\u2028\" || ch === \"\\u2029\") {\n            details.line++;\n            details.column = 1;\n            details.seenCR = true;\n          } else {\n            details.column++;\n            details.seenCR = false;\n          }\n\n          p++;\n        }\n\n        peg$posDetailsCache[pos] = details;\n        return details;\n      }\n    }\n\n    function peg$computeLocation(startPos, endPos) {\n      var startPosDetails = peg$computePosDetails(startPos),\n          endPosDetails   = peg$computePosDetails(endPos);\n\n      return {\n        start: {\n          offset: startPos,\n          line:   startPosDetails.line,\n          column: startPosDetails.column\n        },\n        end: {\n          offset: endPos,\n          line:   endPosDetails.line,\n          column: endPosDetails.column\n        }\n      };\n    }\n\n    function peg$fail(expected) {\n      if (peg$currPos < peg$maxFailPos) { return; }\n\n      if (peg$currPos > peg$maxFailPos) {\n        peg$maxFailPos = peg$currPos;\n        peg$maxFailExpected = [];\n      }\n\n      peg$maxFailExpected.push(expected);\n    }\n\n    function peg$buildException(message, expected, found, location) {\n      function cleanupExpected(expected) {\n        var i = 1;\n\n        expected.sort(function(a, b) {\n          if (a.description < b.description) {\n            return -1;\n          } else if (a.description > b.description) {\n            return 1;\n          } else {\n            return 0;\n          }\n        });\n\n        while (i < expected.length) {\n          if (expected[i - 1] === expected[i]) {\n            expected.splice(i, 1);\n          } else {\n            i++;\n          }\n        }\n      }\n\n      function buildMessage(expected, found) {\n        function stringEscape(s) {\n          function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); }\n\n          return s\n            .replace(/\\\\/g,   '\\\\\\\\')\n            .replace(/\"/g,    '\\\\\"')\n            .replace(/\\x08/g, '\\\\b')\n            .replace(/\\t/g,   '\\\\t')\n            .replace(/\\n/g,   '\\\\n')\n            .replace(/\\f/g,   '\\\\f')\n            .replace(/\\r/g,   '\\\\r')\n            .replace(/[\\x00-\\x07\\x0B\\x0E\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\n            .replace(/[\\x10-\\x1F\\x80-\\xFF]/g,    function(ch) { return '\\\\x'  + hex(ch); })\n            .replace(/[\\u0100-\\u0FFF]/g,         function(ch) { return '\\\\u0' + hex(ch); })\n            .replace(/[\\u1000-\\uFFFF]/g,         function(ch) { return '\\\\u'  + hex(ch); });\n        }\n\n        var expectedDescs = new Array(expected.length),\n            expectedDesc, foundDesc, i;\n\n        for (i = 0; i < expected.length; i++) {\n          expectedDescs[i] = expected[i].description;\n        }\n\n        expectedDesc = expected.length > 1\n          ? expectedDescs.slice(0, -1).join(\", \")\n              + \" or \"\n              + expectedDescs[expected.length - 1]\n          : expectedDescs[0];\n\n        foundDesc = found ? \"\\\"\" + stringEscape(found) + \"\\\"\" : \"end of input\";\n\n        return \"Expected \" + expectedDesc + \" but \" + foundDesc + \" found.\";\n      }\n\n      if (expected !== null) {\n        cleanupExpected(expected);\n      }\n\n      return new peg$SyntaxError(\n        message !== null ? message : buildMessage(expected, found),\n        expected,\n        found,\n        location\n      );\n    }\n\n    function peg$parsestart() {\n      var s0;\n\n      s0 = peg$parsemessageFormatPattern();\n\n      return s0;\n    }\n\n    function peg$parsemessageFormatPattern() {\n      var s0, s1, s2;\n\n      s0 = peg$currPos;\n      s1 = [];\n      s2 = peg$parsemessageFormatElement();\n      while (s2 !== peg$FAILED) {\n        s1.push(s2);\n        s2 = peg$parsemessageFormatElement();\n      }\n      if (s1 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c0(s1);\n      }\n      s0 = s1;\n\n      return s0;\n    }\n\n    function peg$parsemessageFormatElement() {\n      var s0;\n\n      s0 = peg$parsemessageTextElement();\n      if (s0 === peg$FAILED) {\n        s0 = peg$parseargumentElement();\n      }\n\n      return s0;\n    }\n\n    function peg$parsemessageText() {\n      var s0, s1, s2, s3, s4, s5;\n\n      s0 = peg$currPos;\n      s1 = [];\n      s2 = peg$currPos;\n      s3 = peg$parse_();\n      if (s3 !== peg$FAILED) {\n        s4 = peg$parsechars();\n        if (s4 !== peg$FAILED) {\n          s5 = peg$parse_();\n          if (s5 !== peg$FAILED) {\n            s3 = [s3, s4, s5];\n            s2 = s3;\n          } else {\n            peg$currPos = s2;\n            s2 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s2;\n          s2 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s2;\n        s2 = peg$FAILED;\n      }\n      if (s2 !== peg$FAILED) {\n        while (s2 !== peg$FAILED) {\n          s1.push(s2);\n          s2 = peg$currPos;\n          s3 = peg$parse_();\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parsechars();\n            if (s4 !== peg$FAILED) {\n              s5 = peg$parse_();\n              if (s5 !== peg$FAILED) {\n                s3 = [s3, s4, s5];\n                s2 = s3;\n              } else {\n                peg$currPos = s2;\n                s2 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s2;\n              s2 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s2;\n            s2 = peg$FAILED;\n          }\n        }\n      } else {\n        s1 = peg$FAILED;\n      }\n      if (s1 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c1(s1);\n      }\n      s0 = s1;\n      if (s0 === peg$FAILED) {\n        s0 = peg$currPos;\n        s1 = peg$parsews();\n        if (s1 !== peg$FAILED) {\n          s0 = input.substring(s0, peg$currPos);\n        } else {\n          s0 = s1;\n        }\n      }\n\n      return s0;\n    }\n\n    function peg$parsemessageTextElement() {\n      var s0, s1;\n\n      s0 = peg$currPos;\n      s1 = peg$parsemessageText();\n      if (s1 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c2(s1);\n      }\n      s0 = s1;\n\n      return s0;\n    }\n\n    function peg$parseargument() {\n      var s0, s1, s2;\n\n      s0 = peg$parsenumber();\n      if (s0 === peg$FAILED) {\n        s0 = peg$currPos;\n        s1 = [];\n        if (peg$c3.test(input.charAt(peg$currPos))) {\n          s2 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c4); }\n        }\n        if (s2 !== peg$FAILED) {\n          while (s2 !== peg$FAILED) {\n            s1.push(s2);\n            if (peg$c3.test(input.charAt(peg$currPos))) {\n              s2 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s2 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c4); }\n            }\n          }\n        } else {\n          s1 = peg$FAILED;\n        }\n        if (s1 !== peg$FAILED) {\n          s0 = input.substring(s0, peg$currPos);\n        } else {\n          s0 = s1;\n        }\n      }\n\n      return s0;\n    }\n\n    function peg$parseargumentElement() {\n      var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n      s0 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 123) {\n        s1 = peg$c5;\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c6); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parse_();\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parseargument();\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parse_();\n            if (s4 !== peg$FAILED) {\n              s5 = peg$currPos;\n              if (input.charCodeAt(peg$currPos) === 44) {\n                s6 = peg$c7;\n                peg$currPos++;\n              } else {\n                s6 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c8); }\n              }\n              if (s6 !== peg$FAILED) {\n                s7 = peg$parse_();\n                if (s7 !== peg$FAILED) {\n                  s8 = peg$parseelementFormat();\n                  if (s8 !== peg$FAILED) {\n                    s6 = [s6, s7, s8];\n                    s5 = s6;\n                  } else {\n                    peg$currPos = s5;\n                    s5 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s5;\n                  s5 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s5;\n                s5 = peg$FAILED;\n              }\n              if (s5 === peg$FAILED) {\n                s5 = null;\n              }\n              if (s5 !== peg$FAILED) {\n                s6 = peg$parse_();\n                if (s6 !== peg$FAILED) {\n                  if (input.charCodeAt(peg$currPos) === 125) {\n                    s7 = peg$c9;\n                    peg$currPos++;\n                  } else {\n                    s7 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$c10); }\n                  }\n                  if (s7 !== peg$FAILED) {\n                    peg$savedPos = s0;\n                    s1 = peg$c11(s3, s5);\n                    s0 = s1;\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      return s0;\n    }\n\n    function peg$parseelementFormat() {\n      var s0;\n\n      s0 = peg$parsesimpleFormat();\n      if (s0 === peg$FAILED) {\n        s0 = peg$parsepluralFormat();\n        if (s0 === peg$FAILED) {\n          s0 = peg$parseselectOrdinalFormat();\n          if (s0 === peg$FAILED) {\n            s0 = peg$parseselectFormat();\n          }\n        }\n      }\n\n      return s0;\n    }\n\n    function peg$parsesimpleFormat() {\n      var s0, s1, s2, s3, s4, s5, s6;\n\n      s0 = peg$currPos;\n      if (input.substr(peg$currPos, 6) === peg$c12) {\n        s1 = peg$c12;\n        peg$currPos += 6;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c13); }\n      }\n      if (s1 === peg$FAILED) {\n        if (input.substr(peg$currPos, 4) === peg$c14) {\n          s1 = peg$c14;\n          peg$currPos += 4;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c15); }\n        }\n        if (s1 === peg$FAILED) {\n          if (input.substr(peg$currPos, 4) === peg$c16) {\n            s1 = peg$c16;\n            peg$currPos += 4;\n          } else {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c17); }\n          }\n        }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parse_();\n        if (s2 !== peg$FAILED) {\n          s3 = peg$currPos;\n          if (input.charCodeAt(peg$currPos) === 44) {\n            s4 = peg$c7;\n            peg$currPos++;\n          } else {\n            s4 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c8); }\n          }\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parse_();\n            if (s5 !== peg$FAILED) {\n              s6 = peg$parsechars();\n              if (s6 !== peg$FAILED) {\n                s4 = [s4, s5, s6];\n                s3 = s4;\n              } else {\n                peg$currPos = s3;\n                s3 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n          if (s3 === peg$FAILED) {\n            s3 = null;\n          }\n          if (s3 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c18(s1, s3);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      return s0;\n    }\n\n    function peg$parsepluralFormat() {\n      var s0, s1, s2, s3, s4, s5;\n\n      s0 = peg$currPos;\n      if (input.substr(peg$currPos, 6) === peg$c19) {\n        s1 = peg$c19;\n        peg$currPos += 6;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c20); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parse_();\n        if (s2 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 44) {\n            s3 = peg$c7;\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c8); }\n          }\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parse_();\n            if (s4 !== peg$FAILED) {\n              s5 = peg$parsepluralStyle();\n              if (s5 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$c21(s5);\n                s0 = s1;\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      return s0;\n    }\n\n    function peg$parseselectOrdinalFormat() {\n      var s0, s1, s2, s3, s4, s5;\n\n      s0 = peg$currPos;\n      if (input.substr(peg$currPos, 13) === peg$c22) {\n        s1 = peg$c22;\n        peg$currPos += 13;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c23); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parse_();\n        if (s2 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 44) {\n            s3 = peg$c7;\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c8); }\n          }\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parse_();\n            if (s4 !== peg$FAILED) {\n              s5 = peg$parsepluralStyle();\n              if (s5 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$c24(s5);\n                s0 = s1;\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      return s0;\n    }\n\n    function peg$parseselectFormat() {\n      var s0, s1, s2, s3, s4, s5, s6;\n\n      s0 = peg$currPos;\n      if (input.substr(peg$currPos, 6) === peg$c25) {\n        s1 = peg$c25;\n        peg$currPos += 6;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c26); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parse_();\n        if (s2 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 44) {\n            s3 = peg$c7;\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c8); }\n          }\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parse_();\n            if (s4 !== peg$FAILED) {\n              s5 = [];\n              s6 = peg$parseoptionalFormatPattern();\n              if (s6 !== peg$FAILED) {\n                while (s6 !== peg$FAILED) {\n                  s5.push(s6);\n                  s6 = peg$parseoptionalFormatPattern();\n                }\n              } else {\n                s5 = peg$FAILED;\n              }\n              if (s5 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$c27(s5);\n                s0 = s1;\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      return s0;\n    }\n\n    function peg$parseselector() {\n      var s0, s1, s2, s3;\n\n      s0 = peg$currPos;\n      s1 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 61) {\n        s2 = peg$c28;\n        peg$currPos++;\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c29); }\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parsenumber();\n        if (s3 !== peg$FAILED) {\n          s2 = [s2, s3];\n          s1 = s2;\n        } else {\n          peg$currPos = s1;\n          s1 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n      if (s1 !== peg$FAILED) {\n        s0 = input.substring(s0, peg$currPos);\n      } else {\n        s0 = s1;\n      }\n      if (s0 === peg$FAILED) {\n        s0 = peg$parsechars();\n      }\n\n      return s0;\n    }\n\n    function peg$parseoptionalFormatPattern() {\n      var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n      s0 = peg$currPos;\n      s1 = peg$parse_();\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parseselector();\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parse_();\n          if (s3 !== peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 123) {\n              s4 = peg$c5;\n              peg$currPos++;\n            } else {\n              s4 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c6); }\n            }\n            if (s4 !== peg$FAILED) {\n              s5 = peg$parse_();\n              if (s5 !== peg$FAILED) {\n                s6 = peg$parsemessageFormatPattern();\n                if (s6 !== peg$FAILED) {\n                  s7 = peg$parse_();\n                  if (s7 !== peg$FAILED) {\n                    if (input.charCodeAt(peg$currPos) === 125) {\n                      s8 = peg$c9;\n                      peg$currPos++;\n                    } else {\n                      s8 = peg$FAILED;\n                      if (peg$silentFails === 0) { peg$fail(peg$c10); }\n                    }\n                    if (s8 !== peg$FAILED) {\n                      peg$savedPos = s0;\n                      s1 = peg$c30(s2, s6);\n                      s0 = s1;\n                    } else {\n                      peg$currPos = s0;\n                      s0 = peg$FAILED;\n                    }\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      return s0;\n    }\n\n    function peg$parseoffset() {\n      var s0, s1, s2, s3;\n\n      s0 = peg$currPos;\n      if (input.substr(peg$currPos, 7) === peg$c31) {\n        s1 = peg$c31;\n        peg$currPos += 7;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c32); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parse_();\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parsenumber();\n          if (s3 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c33(s3);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      return s0;\n    }\n\n    function peg$parsepluralStyle() {\n      var s0, s1, s2, s3, s4;\n\n      s0 = peg$currPos;\n      s1 = peg$parseoffset();\n      if (s1 === peg$FAILED) {\n        s1 = null;\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parse_();\n        if (s2 !== peg$FAILED) {\n          s3 = [];\n          s4 = peg$parseoptionalFormatPattern();\n          if (s4 !== peg$FAILED) {\n            while (s4 !== peg$FAILED) {\n              s3.push(s4);\n              s4 = peg$parseoptionalFormatPattern();\n            }\n          } else {\n            s3 = peg$FAILED;\n          }\n          if (s3 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c34(s1, s3);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      return s0;\n    }\n\n    function peg$parsews() {\n      var s0, s1;\n\n      peg$silentFails++;\n      s0 = [];\n      if (peg$c36.test(input.charAt(peg$currPos))) {\n        s1 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c37); }\n      }\n      if (s1 !== peg$FAILED) {\n        while (s1 !== peg$FAILED) {\n          s0.push(s1);\n          if (peg$c36.test(input.charAt(peg$currPos))) {\n            s1 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c37); }\n          }\n        }\n      } else {\n        s0 = peg$FAILED;\n      }\n      peg$silentFails--;\n      if (s0 === peg$FAILED) {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c35); }\n      }\n\n      return s0;\n    }\n\n    function peg$parse_() {\n      var s0, s1, s2;\n\n      peg$silentFails++;\n      s0 = peg$currPos;\n      s1 = [];\n      s2 = peg$parsews();\n      while (s2 !== peg$FAILED) {\n        s1.push(s2);\n        s2 = peg$parsews();\n      }\n      if (s1 !== peg$FAILED) {\n        s0 = input.substring(s0, peg$currPos);\n      } else {\n        s0 = s1;\n      }\n      peg$silentFails--;\n      if (s0 === peg$FAILED) {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c38); }\n      }\n\n      return s0;\n    }\n\n    function peg$parsedigit() {\n      var s0;\n\n      if (peg$c39.test(input.charAt(peg$currPos))) {\n        s0 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c40); }\n      }\n\n      return s0;\n    }\n\n    function peg$parsehexDigit() {\n      var s0;\n\n      if (peg$c41.test(input.charAt(peg$currPos))) {\n        s0 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c42); }\n      }\n\n      return s0;\n    }\n\n    function peg$parsenumber() {\n      var s0, s1, s2, s3, s4, s5;\n\n      s0 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 48) {\n        s1 = peg$c43;\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c44); }\n      }\n      if (s1 === peg$FAILED) {\n        s1 = peg$currPos;\n        s2 = peg$currPos;\n        if (peg$c45.test(input.charAt(peg$currPos))) {\n          s3 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c46); }\n        }\n        if (s3 !== peg$FAILED) {\n          s4 = [];\n          s5 = peg$parsedigit();\n          while (s5 !== peg$FAILED) {\n            s4.push(s5);\n            s5 = peg$parsedigit();\n          }\n          if (s4 !== peg$FAILED) {\n            s3 = [s3, s4];\n            s2 = s3;\n          } else {\n            peg$currPos = s2;\n            s2 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s2;\n          s2 = peg$FAILED;\n        }\n        if (s2 !== peg$FAILED) {\n          s1 = input.substring(s1, peg$currPos);\n        } else {\n          s1 = s2;\n        }\n      }\n      if (s1 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c47(s1);\n      }\n      s0 = s1;\n\n      return s0;\n    }\n\n    function peg$parsechar() {\n      var s0, s1, s2, s3, s4, s5, s6, s7;\n\n      if (peg$c48.test(input.charAt(peg$currPos))) {\n        s0 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c49); }\n      }\n      if (s0 === peg$FAILED) {\n        s0 = peg$currPos;\n        if (input.substr(peg$currPos, 2) === peg$c50) {\n          s1 = peg$c50;\n          peg$currPos += 2;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c51); }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c52();\n        }\n        s0 = s1;\n        if (s0 === peg$FAILED) {\n          s0 = peg$currPos;\n          if (input.substr(peg$currPos, 2) === peg$c53) {\n            s1 = peg$c53;\n            peg$currPos += 2;\n          } else {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c54); }\n          }\n          if (s1 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c55();\n          }\n          s0 = s1;\n          if (s0 === peg$FAILED) {\n            s0 = peg$currPos;\n            if (input.substr(peg$currPos, 2) === peg$c56) {\n              s1 = peg$c56;\n              peg$currPos += 2;\n            } else {\n              s1 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c57); }\n            }\n            if (s1 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s1 = peg$c58();\n            }\n            s0 = s1;\n            if (s0 === peg$FAILED) {\n              s0 = peg$currPos;\n              if (input.substr(peg$currPos, 2) === peg$c59) {\n                s1 = peg$c59;\n                peg$currPos += 2;\n              } else {\n                s1 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c60); }\n              }\n              if (s1 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$c61();\n              }\n              s0 = s1;\n              if (s0 === peg$FAILED) {\n                s0 = peg$currPos;\n                if (input.substr(peg$currPos, 2) === peg$c62) {\n                  s1 = peg$c62;\n                  peg$currPos += 2;\n                } else {\n                  s1 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c63); }\n                }\n                if (s1 !== peg$FAILED) {\n                  s2 = peg$currPos;\n                  s3 = peg$currPos;\n                  s4 = peg$parsehexDigit();\n                  if (s4 !== peg$FAILED) {\n                    s5 = peg$parsehexDigit();\n                    if (s5 !== peg$FAILED) {\n                      s6 = peg$parsehexDigit();\n                      if (s6 !== peg$FAILED) {\n                        s7 = peg$parsehexDigit();\n                        if (s7 !== peg$FAILED) {\n                          s4 = [s4, s5, s6, s7];\n                          s3 = s4;\n                        } else {\n                          peg$currPos = s3;\n                          s3 = peg$FAILED;\n                        }\n                      } else {\n                        peg$currPos = s3;\n                        s3 = peg$FAILED;\n                      }\n                    } else {\n                      peg$currPos = s3;\n                      s3 = peg$FAILED;\n                    }\n                  } else {\n                    peg$currPos = s3;\n                    s3 = peg$FAILED;\n                  }\n                  if (s3 !== peg$FAILED) {\n                    s2 = input.substring(s2, peg$currPos);\n                  } else {\n                    s2 = s3;\n                  }\n                  if (s2 !== peg$FAILED) {\n                    peg$savedPos = s0;\n                    s1 = peg$c64(s2);\n                    s0 = s1;\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$FAILED;\n                }\n              }\n            }\n          }\n        }\n      }\n\n      return s0;\n    }\n\n    function peg$parsechars() {\n      var s0, s1, s2;\n\n      s0 = peg$currPos;\n      s1 = [];\n      s2 = peg$parsechar();\n      if (s2 !== peg$FAILED) {\n        while (s2 !== peg$FAILED) {\n          s1.push(s2);\n          s2 = peg$parsechar();\n        }\n      } else {\n        s1 = peg$FAILED;\n      }\n      if (s1 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c65(s1);\n      }\n      s0 = s1;\n\n      return s0;\n    }\n\n    peg$result = peg$startRuleFunction();\n\n    if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n      return peg$result;\n    } else {\n      if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n        peg$fail({ type: \"end\", description: \"end of input\" });\n      }\n\n      throw peg$buildException(\n        null,\n        peg$maxFailExpected,\n        peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n        peg$maxFailPos < input.length\n          ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n          : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n      );\n    }\n  }\n\n  return {\n    SyntaxError: peg$SyntaxError,\n    parse:       peg$parse\n  };\n})();\n\n//# sourceMappingURL=parser.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/intl-messageformat-parser/lib/parser.js\n// module id = 674\n// module chunks = 0","// GENERATED FILE\n\"use strict\";\nexports[\"default\"] = {\"locale\":\"en\",\"pluralRuleFunction\":function (n,ord){var s=String(n).split(\".\"),v0=!s[1],t0=Number(s[0])==n,n10=t0&&s[0].slice(-1),n100=t0&&s[0].slice(-2);if(ord)return n10==1&&n100!=11?\"one\":n10==2&&n100!=12?\"two\":n10==3&&n100!=13?\"few\":\"other\";return n==1&&v0?\"one\":\"other\"}};\n\n//# sourceMappingURL=en.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/intl-messageformat/lib/en.js\n// module id = 675\n// module chunks = 0","/* (ignored) */\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/locales (ignored)\n// module id = 676\n// module chunks = 0","/* jshint node:true */\n\n'use strict';\n\nvar IntlRelativeFormat = require('./lib/main')['default'];\n\n// Add all locale data to `IntlRelativeFormat`. This module will be ignored when\n// bundling for the browser with Browserify/Webpack.\nrequire('./lib/locales');\n\n// Re-export `IntlRelativeFormat` as the CommonJS default exports with all the\n// locale data registered, and with English set as the default locale. Define\n// the `default` prop for use with other compiled ES6 Modules.\nexports = module.exports = IntlRelativeFormat;\nexports['default'] = exports;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/intl-relativeformat/index.js\n// module id = 677\n// module chunks = 0","/* jslint esnext: true */\n\n\"use strict\";\nvar src$core$$ = require(\"./core\"), src$en$$ = require(\"./en\");\n\nsrc$core$$[\"default\"].__addLocaleData(src$en$$[\"default\"]);\nsrc$core$$[\"default\"].defaultLocale = 'en';\n\nexports[\"default\"] = src$core$$[\"default\"];\n\n//# sourceMappingURL=main.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/intl-relativeformat/lib/main.js\n// module id = 678\n// module chunks = 0","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\n\"use strict\";\nvar intl$messageformat$$ = require(\"intl-messageformat\"), src$diff$$ = require(\"./diff\"), src$es5$$ = require(\"./es5\");\nexports[\"default\"] = RelativeFormat;\n\n// -----------------------------------------------------------------------------\n\nvar FIELDS = [\n    'second', 'second-short',\n    'minute', 'minute-short',\n    'hour', 'hour-short',\n    'day', 'day-short',\n    'month', 'month-short',\n    'year', 'year-short'\n];\nvar STYLES = ['best fit', 'numeric'];\n\n// -- RelativeFormat -----------------------------------------------------------\n\nfunction RelativeFormat(locales, options) {\n    options = options || {};\n\n    // Make a copy of `locales` if it's an array, so that it doesn't change\n    // since it's used lazily.\n    if (src$es5$$.isArray(locales)) {\n        locales = locales.concat();\n    }\n\n    src$es5$$.defineProperty(this, '_locale', {value: this._resolveLocale(locales)});\n    src$es5$$.defineProperty(this, '_options', {value: {\n        style: this._resolveStyle(options.style),\n        units: this._isValidUnits(options.units) && options.units\n    }});\n\n    src$es5$$.defineProperty(this, '_locales', {value: locales});\n    src$es5$$.defineProperty(this, '_fields', {value: this._findFields(this._locale)});\n    src$es5$$.defineProperty(this, '_messages', {value: src$es5$$.objCreate(null)});\n\n    // \"Bind\" `format()` method to `this` so it can be passed by reference like\n    // the other `Intl` APIs.\n    var relativeFormat = this;\n    this.format = function format(date, options) {\n        return relativeFormat._format(date, options);\n    };\n}\n\n// Define internal private properties for dealing with locale data.\nsrc$es5$$.defineProperty(RelativeFormat, '__localeData__', {value: src$es5$$.objCreate(null)});\nsrc$es5$$.defineProperty(RelativeFormat, '__addLocaleData', {value: function (data) {\n    if (!(data && data.locale)) {\n        throw new Error(\n            'Locale data provided to IntlRelativeFormat is missing a ' +\n            '`locale` property value'\n        );\n    }\n\n    RelativeFormat.__localeData__[data.locale.toLowerCase()] = data;\n\n    // Add data to IntlMessageFormat.\n    intl$messageformat$$[\"default\"].__addLocaleData(data);\n}});\n\n// Define public `defaultLocale` property which can be set by the developer, or\n// it will be set when the first RelativeFormat instance is created by\n// leveraging the resolved locale from `Intl`.\nsrc$es5$$.defineProperty(RelativeFormat, 'defaultLocale', {\n    enumerable: true,\n    writable  : true,\n    value     : undefined\n});\n\n// Define public `thresholds` property which can be set by the developer, and\n// defaults to relative time thresholds from moment.js.\nsrc$es5$$.defineProperty(RelativeFormat, 'thresholds', {\n    enumerable: true,\n\n    value: {\n        second: 45, 'second-short': 45,  // seconds to minute\n        minute: 45, 'minute-short': 45, // minutes to hour\n        hour  : 22, 'hour-short': 22, // hours to day\n        day   : 26, 'day-short': 26, // days to month\n        month : 11, 'month-short': 11 // months to year\n    }\n});\n\nRelativeFormat.prototype.resolvedOptions = function () {\n    return {\n        locale: this._locale,\n        style : this._options.style,\n        units : this._options.units\n    };\n};\n\nRelativeFormat.prototype._compileMessage = function (units) {\n    // `this._locales` is the original set of locales the user specified to the\n    // constructor, while `this._locale` is the resolved root locale.\n    var locales        = this._locales;\n    var resolvedLocale = this._locale;\n\n    var field        = this._fields[units];\n    var relativeTime = field.relativeTime;\n    var future       = '';\n    var past         = '';\n    var i;\n\n    for (i in relativeTime.future) {\n        if (relativeTime.future.hasOwnProperty(i)) {\n            future += ' ' + i + ' {' +\n                relativeTime.future[i].replace('{0}', '#') + '}';\n        }\n    }\n\n    for (i in relativeTime.past) {\n        if (relativeTime.past.hasOwnProperty(i)) {\n            past += ' ' + i + ' {' +\n                relativeTime.past[i].replace('{0}', '#') + '}';\n        }\n    }\n\n    var message = '{when, select, future {{0, plural, ' + future + '}}' +\n                                 'past {{0, plural, ' + past + '}}}';\n\n    // Create the synthetic IntlMessageFormat instance using the original\n    // locales value specified by the user when constructing the the parent\n    // IntlRelativeFormat instance.\n    return new intl$messageformat$$[\"default\"](message, locales);\n};\n\nRelativeFormat.prototype._getMessage = function (units) {\n    var messages = this._messages;\n\n    // Create a new synthetic message based on the locale data from CLDR.\n    if (!messages[units]) {\n        messages[units] = this._compileMessage(units);\n    }\n\n    return messages[units];\n};\n\nRelativeFormat.prototype._getRelativeUnits = function (diff, units) {\n    var field = this._fields[units];\n\n    if (field.relative) {\n        return field.relative[diff];\n    }\n};\n\nRelativeFormat.prototype._findFields = function (locale) {\n    var localeData = RelativeFormat.__localeData__;\n    var data       = localeData[locale.toLowerCase()];\n\n    // The locale data is de-duplicated, so we have to traverse the locale's\n    // hierarchy until we find `fields` to return.\n    while (data) {\n        if (data.fields) {\n            return data.fields;\n        }\n\n        data = data.parentLocale && localeData[data.parentLocale.toLowerCase()];\n    }\n\n    throw new Error(\n        'Locale data added to IntlRelativeFormat is missing `fields` for :' +\n        locale\n    );\n};\n\nRelativeFormat.prototype._format = function (date, options) {\n    var now = options && options.now !== undefined ? options.now : src$es5$$.dateNow();\n\n    if (date === undefined) {\n        date = now;\n    }\n\n    // Determine if the `date` and optional `now` values are valid, and throw a\n    // similar error to what `Intl.DateTimeFormat#format()` would throw.\n    if (!isFinite(now)) {\n        throw new RangeError(\n            'The `now` option provided to IntlRelativeFormat#format() is not ' +\n            'in valid range.'\n        );\n    }\n\n    if (!isFinite(date)) {\n        throw new RangeError(\n            'The date value provided to IntlRelativeFormat#format() is not ' +\n            'in valid range.'\n        );\n    }\n\n    var diffReport  = src$diff$$[\"default\"](now, date);\n    var units       = this._options.units || this._selectUnits(diffReport);\n    var diffInUnits = diffReport[units];\n\n    if (this._options.style !== 'numeric') {\n        var relativeUnits = this._getRelativeUnits(diffInUnits, units);\n        if (relativeUnits) {\n            return relativeUnits;\n        }\n    }\n\n    return this._getMessage(units).format({\n        '0' : Math.abs(diffInUnits),\n        when: diffInUnits < 0 ? 'past' : 'future'\n    });\n};\n\nRelativeFormat.prototype._isValidUnits = function (units) {\n    if (!units || src$es5$$.arrIndexOf.call(FIELDS, units) >= 0) {\n        return true;\n    }\n\n    if (typeof units === 'string') {\n        var suggestion = /s$/.test(units) && units.substr(0, units.length - 1);\n        if (suggestion && src$es5$$.arrIndexOf.call(FIELDS, suggestion) >= 0) {\n            throw new Error(\n                '\"' + units + '\" is not a valid IntlRelativeFormat `units` ' +\n                'value, did you mean: ' + suggestion\n            );\n        }\n    }\n\n    throw new Error(\n        '\"' + units + '\" is not a valid IntlRelativeFormat `units` value, it ' +\n        'must be one of: \"' + FIELDS.join('\", \"') + '\"'\n    );\n};\n\nRelativeFormat.prototype._resolveLocale = function (locales) {\n    if (typeof locales === 'string') {\n        locales = [locales];\n    }\n\n    // Create a copy of the array so we can push on the default locale.\n    locales = (locales || []).concat(RelativeFormat.defaultLocale);\n\n    var localeData = RelativeFormat.__localeData__;\n    var i, len, localeParts, data;\n\n    // Using the set of locales + the default locale, we look for the first one\n    // which that has been registered. When data does not exist for a locale, we\n    // traverse its ancestors to find something that's been registered within\n    // its hierarchy of locales. Since we lack the proper `parentLocale` data\n    // here, we must take a naive approach to traversal.\n    for (i = 0, len = locales.length; i < len; i += 1) {\n        localeParts = locales[i].toLowerCase().split('-');\n\n        while (localeParts.length) {\n            data = localeData[localeParts.join('-')];\n            if (data) {\n                // Return the normalized locale string; e.g., we return \"en-US\",\n                // instead of \"en-us\".\n                return data.locale;\n            }\n\n            localeParts.pop();\n        }\n    }\n\n    var defaultLocale = locales.pop();\n    throw new Error(\n        'No locale data has been added to IntlRelativeFormat for: ' +\n        locales.join(', ') + ', or the default locale: ' + defaultLocale\n    );\n};\n\nRelativeFormat.prototype._resolveStyle = function (style) {\n    // Default to \"best fit\" style.\n    if (!style) {\n        return STYLES[0];\n    }\n\n    if (src$es5$$.arrIndexOf.call(STYLES, style) >= 0) {\n        return style;\n    }\n\n    throw new Error(\n        '\"' + style + '\" is not a valid IntlRelativeFormat `style` value, it ' +\n        'must be one of: \"' + STYLES.join('\", \"') + '\"'\n    );\n};\n\nRelativeFormat.prototype._selectUnits = function (diffReport) {\n    var i, l, units;\n    var fields = FIELDS.filter(function(field) {\n        return field.indexOf('-short') < 1;\n    });\n\n    for (i = 0, l = fields.length; i < l; i += 1) {\n        units = fields[i];\n\n        if (Math.abs(diffReport[units]) < RelativeFormat.thresholds[units]) {\n            break;\n        }\n    }\n\n    return units;\n};\n\n//# sourceMappingURL=core.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/intl-relativeformat/lib/core.js\n// module id = 679\n// module chunks = 0","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\n\"use strict\";\n\nvar round = Math.round;\n\nfunction daysToYears(days) {\n    // 400 years have 146097 days (taking into account leap year rules)\n    return days * 400 / 146097;\n}\n\nexports[\"default\"] = function (from, to) {\n    // Convert to ms timestamps.\n    from = +from;\n    to   = +to;\n\n    var millisecond = round(to - from),\n        second      = round(millisecond / 1000),\n        minute      = round(second / 60),\n        hour        = round(minute / 60),\n        day         = round(hour / 24),\n        week        = round(day / 7);\n\n    var rawYears = daysToYears(day),\n        month    = round(rawYears * 12),\n        year     = round(rawYears);\n\n    return {\n        millisecond    : millisecond,\n        second         : second,\n        'second-short' : second,\n        minute         : minute,\n        'minute-short' : minute,\n        hour           : hour,\n        'hour-short'   : hour,\n        day            : day,\n        'day-short'    : day,\n        week           : week,\n        'week-short'   : week,\n        month          : month,\n        'month-short'  : month,\n        year           : year,\n        'year-short'   : year\n    };\n};\n\n//# sourceMappingURL=diff.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/intl-relativeformat/lib/diff.js\n// module id = 680\n// module chunks = 0","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\n// Purposely using the same implementation as the Intl.js `Intl` polyfill.\n// Copyright 2013 Andy Earnshaw, MIT License\n\n\"use strict\";\n\nvar hop = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\n\nvar realDefineProp = (function () {\n    try { return !!Object.defineProperty({}, 'a', {}); }\n    catch (e) { return false; }\n})();\n\nvar es3 = !realDefineProp && !Object.prototype.__defineGetter__;\n\nvar defineProperty = realDefineProp ? Object.defineProperty :\n        function (obj, name, desc) {\n\n    if ('get' in desc && obj.__defineGetter__) {\n        obj.__defineGetter__(name, desc.get);\n    } else if (!hop.call(obj, name) || 'value' in desc) {\n        obj[name] = desc.value;\n    }\n};\n\nvar objCreate = Object.create || function (proto, props) {\n    var obj, k;\n\n    function F() {}\n    F.prototype = proto;\n    obj = new F();\n\n    for (k in props) {\n        if (hop.call(props, k)) {\n            defineProperty(obj, k, props[k]);\n        }\n    }\n\n    return obj;\n};\n\nvar arrIndexOf = Array.prototype.indexOf || function (search, fromIndex) {\n    /*jshint validthis:true */\n    var arr = this;\n    if (!arr.length) {\n        return -1;\n    }\n\n    for (var i = fromIndex || 0, max = arr.length; i < max; i++) {\n        if (arr[i] === search) {\n            return i;\n        }\n    }\n\n    return -1;\n};\n\nvar isArray = Array.isArray || function (obj) {\n    return toString.call(obj) === '[object Array]';\n};\n\nvar dateNow = Date.now || function () {\n    return new Date().getTime();\n};\n\nexports.defineProperty = defineProperty, exports.objCreate = objCreate, exports.arrIndexOf = arrIndexOf, exports.isArray = isArray, exports.dateNow = dateNow;\n\n//# sourceMappingURL=es5.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/intl-relativeformat/lib/es5.js\n// module id = 681\n// module chunks = 0","// GENERATED FILE\n\"use strict\";\nexports[\"default\"] = {\"locale\":\"en\",\"pluralRuleFunction\":function (n,ord){var s=String(n).split(\".\"),v0=!s[1],t0=Number(s[0])==n,n10=t0&&s[0].slice(-1),n100=t0&&s[0].slice(-2);if(ord)return n10==1&&n100!=11?\"one\":n10==2&&n100!=12?\"two\":n10==3&&n100!=13?\"few\":\"other\";return n==1&&v0?\"one\":\"other\"},\"fields\":{\"year\":{\"displayName\":\"year\",\"relative\":{\"0\":\"this year\",\"1\":\"next year\",\"-1\":\"last year\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} year\",\"other\":\"in {0} years\"},\"past\":{\"one\":\"{0} year ago\",\"other\":\"{0} years ago\"}}},\"year-short\":{\"displayName\":\"yr.\",\"relative\":{\"0\":\"this yr.\",\"1\":\"next yr.\",\"-1\":\"last yr.\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} yr.\",\"other\":\"in {0} yr.\"},\"past\":{\"one\":\"{0} yr. ago\",\"other\":\"{0} yr. ago\"}}},\"month\":{\"displayName\":\"month\",\"relative\":{\"0\":\"this month\",\"1\":\"next month\",\"-1\":\"last month\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} month\",\"other\":\"in {0} months\"},\"past\":{\"one\":\"{0} month ago\",\"other\":\"{0} months ago\"}}},\"month-short\":{\"displayName\":\"mo.\",\"relative\":{\"0\":\"this mo.\",\"1\":\"next mo.\",\"-1\":\"last mo.\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} mo.\",\"other\":\"in {0} mo.\"},\"past\":{\"one\":\"{0} mo. ago\",\"other\":\"{0} mo. ago\"}}},\"day\":{\"displayName\":\"day\",\"relative\":{\"0\":\"today\",\"1\":\"tomorrow\",\"-1\":\"yesterday\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} day\",\"other\":\"in {0} days\"},\"past\":{\"one\":\"{0} day ago\",\"other\":\"{0} days ago\"}}},\"day-short\":{\"displayName\":\"day\",\"relative\":{\"0\":\"today\",\"1\":\"tomorrow\",\"-1\":\"yesterday\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} day\",\"other\":\"in {0} days\"},\"past\":{\"one\":\"{0} day ago\",\"other\":\"{0} days ago\"}}},\"hour\":{\"displayName\":\"hour\",\"relative\":{\"0\":\"this hour\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} hour\",\"other\":\"in {0} hours\"},\"past\":{\"one\":\"{0} hour ago\",\"other\":\"{0} hours ago\"}}},\"hour-short\":{\"displayName\":\"hr.\",\"relative\":{\"0\":\"this hour\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} hr.\",\"other\":\"in {0} hr.\"},\"past\":{\"one\":\"{0} hr. ago\",\"other\":\"{0} hr. ago\"}}},\"minute\":{\"displayName\":\"minute\",\"relative\":{\"0\":\"this minute\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} minute\",\"other\":\"in {0} minutes\"},\"past\":{\"one\":\"{0} minute ago\",\"other\":\"{0} minutes ago\"}}},\"minute-short\":{\"displayName\":\"min.\",\"relative\":{\"0\":\"this minute\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} min.\",\"other\":\"in {0} min.\"},\"past\":{\"one\":\"{0} min. ago\",\"other\":\"{0} min. ago\"}}},\"second\":{\"displayName\":\"second\",\"relative\":{\"0\":\"now\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} second\",\"other\":\"in {0} seconds\"},\"past\":{\"one\":\"{0} second ago\",\"other\":\"{0} seconds ago\"}}},\"second-short\":{\"displayName\":\"sec.\",\"relative\":{\"0\":\"now\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} sec.\",\"other\":\"in {0} sec.\"},\"past\":{\"one\":\"{0} sec. ago\",\"other\":\"{0} sec. ago\"}}}}};\n\n//# sourceMappingURL=en.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/intl-relativeformat/lib/en.js\n// module id = 682\n// module chunks = 0","/* (ignored) */\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/locales (ignored)\n// module id = 683\n// module chunks = 0","'use strict';\n\nexports = module.exports = require('./lib/memoizer')['default'];\nexports['default'] = exports;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/intl-format-cache/index.js\n// module id = 684\n// module chunks = 0","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jshint esnext: true */\n\n\"use strict\";\nvar src$es5$$ = require(\"./es5\");\nexports[\"default\"] = createFormatCache;\n\n// -----------------------------------------------------------------------------\n\nfunction createFormatCache(FormatConstructor) {\n    var cache = src$es5$$.objCreate(null);\n\n    return function () {\n        var args    = Array.prototype.slice.call(arguments);\n        var cacheId = getCacheId(args);\n        var format  = cacheId && cache[cacheId];\n\n        if (!format) {\n            format = new (src$es5$$.bind.apply(FormatConstructor, [null].concat(args)))();\n\n            if (cacheId) {\n                cache[cacheId] = format;\n            }\n        }\n\n        return format;\n    };\n}\n\n// -- Utilities ----------------------------------------------------------------\n\nfunction getCacheId(inputs) {\n    // When JSON is not available in the runtime, we will not create a cache id.\n    if (typeof JSON === 'undefined') { return; }\n\n    var cacheId = [];\n\n    var i, len, input;\n\n    for (i = 0, len = inputs.length; i < len; i += 1) {\n        input = inputs[i];\n\n        if (input && typeof input === 'object') {\n            cacheId.push(orderedProps(input));\n        } else {\n            cacheId.push(input);\n        }\n    }\n\n    return JSON.stringify(cacheId);\n}\n\nfunction orderedProps(obj) {\n    var props = [],\n        keys  = [];\n\n    var key, i, len, prop;\n\n    for (key in obj) {\n        if (obj.hasOwnProperty(key)) {\n            keys.push(key);\n        }\n    }\n\n    var orderedKeys = keys.sort();\n\n    for (i = 0, len = orderedKeys.length; i < len; i += 1) {\n        key  = orderedKeys[i];\n        prop = {};\n\n        prop[key] = obj[key];\n        props[i]  = prop;\n    }\n\n    return props;\n}\n\n//# sourceMappingURL=memoizer.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/intl-format-cache/lib/memoizer.js\n// module id = 685\n// module chunks = 0","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\n// Function.prototype.bind implementation from Mozilla Developer Network:\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind#Polyfill\n\n\"use strict\";\n\nvar bind = Function.prototype.bind || function (oThis) {\n    if (typeof this !== 'function') {\n      // closest thing possible to the ECMAScript 5\n      // internal IsCallable function\n      throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');\n    }\n\n    var aArgs   = Array.prototype.slice.call(arguments, 1),\n        fToBind = this,\n        fNOP    = function() {},\n        fBound  = function() {\n          return fToBind.apply(this instanceof fNOP\n                 ? this\n                 : oThis,\n                 aArgs.concat(Array.prototype.slice.call(arguments)));\n        };\n\n    if (this.prototype) {\n      // native functions don't have a prototype\n      fNOP.prototype = this.prototype;\n    }\n    fBound.prototype = new fNOP();\n\n    return fBound;\n};\n\n// Purposely using the same implementation as the Intl.js `Intl` polyfill.\n// Copyright 2013 Andy Earnshaw, MIT License\n\nvar hop = Object.prototype.hasOwnProperty;\n\nvar realDefineProp = (function () {\n    try { return !!Object.defineProperty({}, 'a', {}); }\n    catch (e) { return false; }\n})();\n\nvar es3 = !realDefineProp && !Object.prototype.__defineGetter__;\n\nvar defineProperty = realDefineProp ? Object.defineProperty :\n        function (obj, name, desc) {\n\n    if ('get' in desc && obj.__defineGetter__) {\n        obj.__defineGetter__(name, desc.get);\n    } else if (!hop.call(obj, name) || 'value' in desc) {\n        obj[name] = desc.value;\n    }\n};\n\nvar objCreate = Object.create || function (proto, props) {\n    var obj, k;\n\n    function F() {}\n    F.prototype = proto;\n    obj = new F();\n\n    for (k in props) {\n        if (hop.call(props, k)) {\n            defineProperty(obj, k, props[k]);\n        }\n    }\n\n    return obj;\n};\n\nexports.bind = bind, exports.defineProperty = defineProperty, exports.objCreate = objCreate;\n\n//# sourceMappingURL=es5.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/intl-format-cache/lib/es5.js\n// module id = 686\n// module chunks = 0","/*\n * metismenu - v2.7.1\n * A jQuery menu plugin\n * https://github.com/onokumus/metismenu#readme\n *\n * Made by Osman Nuri Okumus <onokumus@gmail.com> (https://github.com/onokumus)\n * Under MIT License\n */\n\n(function (global, factory) {\n  if (typeof define === \"function\" && define.amd) {\n    define(['jquery'], factory);\n  } else if (typeof exports !== \"undefined\") {\n    factory(require('jquery'));\n  } else {\n    var mod = {\n      exports: {}\n    };\n    factory(global.jquery);\n    global.metisMenu = mod.exports;\n  }\n})(this, function (_jquery) {\n  'use strict';\n\n  var _jquery2 = _interopRequireDefault(_jquery);\n\n  function _interopRequireDefault(obj) {\n    return obj && obj.__esModule ? obj : {\n      default: obj\n    };\n  }\n\n  var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n    return typeof obj;\n  } : function (obj) {\n    return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n  };\n\n  function _classCallCheck(instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError(\"Cannot call a class as a function\");\n    }\n  }\n\n  var Util = function ($) {\n    var transition = false;\n\n    var TransitionEndEvent = {\n      WebkitTransition: 'webkitTransitionEnd',\n      MozTransition: 'transitionend',\n      OTransition: 'oTransitionEnd otransitionend',\n      transition: 'transitionend'\n    };\n\n    function getSpecialTransitionEndEvent() {\n      return {\n        bindType: transition.end,\n        delegateType: transition.end,\n        handle: function handle(event) {\n          if ($(event.target).is(this)) {\n            return event.handleObj.handler.apply(this, arguments);\n          }\n          return undefined;\n        }\n      };\n    }\n\n    function transitionEndTest() {\n      if (window.QUnit) {\n        return false;\n      }\n\n      var el = document.createElement('mm');\n\n      for (var name in TransitionEndEvent) {\n        if (el.style[name] !== undefined) {\n          return {\n            end: TransitionEndEvent[name]\n          };\n        }\n      }\n\n      return false;\n    }\n\n    function transitionEndEmulator(duration) {\n      var _this2 = this;\n\n      var called = false;\n\n      $(this).one(Util.TRANSITION_END, function () {\n        called = true;\n      });\n\n      setTimeout(function () {\n        if (!called) {\n          Util.triggerTransitionEnd(_this2);\n        }\n      }, duration);\n\n      return this;\n    }\n\n    function setTransitionEndSupport() {\n      transition = transitionEndTest();\n      $.fn.emulateTransitionEnd = transitionEndEmulator;\n\n      if (Util.supportsTransitionEnd()) {\n        $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();\n      }\n    }\n\n    var Util = {\n      TRANSITION_END: 'mmTransitionEnd',\n\n      triggerTransitionEnd: function triggerTransitionEnd(element) {\n        $(element).trigger(transition.end);\n      },\n      supportsTransitionEnd: function supportsTransitionEnd() {\n        return Boolean(transition);\n      }\n    };\n\n    setTransitionEndSupport();\n\n    return Util;\n  }(jQuery);\n\n  var MetisMenu = function ($) {\n\n    var NAME = 'metisMenu';\n    var DATA_KEY = 'metisMenu';\n    var EVENT_KEY = '.' + DATA_KEY;\n    var DATA_API_KEY = '.data-api';\n    var JQUERY_NO_CONFLICT = $.fn[NAME];\n    var TRANSITION_DURATION = 350;\n\n    var Default = {\n      toggle: true,\n      preventDefault: true,\n      activeClass: 'active',\n      collapseClass: 'collapse',\n      collapseInClass: 'in',\n      collapsingClass: 'collapsing',\n      triggerElement: 'a',\n      parentTrigger: 'li',\n      subMenu: 'ul'\n    };\n\n    var Event = {\n      SHOW: 'show' + EVENT_KEY,\n      SHOWN: 'shown' + EVENT_KEY,\n      HIDE: 'hide' + EVENT_KEY,\n      HIDDEN: 'hidden' + EVENT_KEY,\n      CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY\n    };\n\n    var MetisMenu = function () {\n      function MetisMenu(element, config) {\n        _classCallCheck(this, MetisMenu);\n\n        this._element = element;\n        this._config = this._getConfig(config);\n        this._transitioning = null;\n\n        this.init();\n      }\n\n      MetisMenu.prototype.init = function init() {\n        var self = this;\n        $(this._element).find(this._config.parentTrigger + '.' + this._config.activeClass).has(this._config.subMenu).children(this._config.subMenu).attr('aria-expanded', true).addClass(this._config.collapseClass + ' ' + this._config.collapseInClass);\n\n        $(this._element).find(this._config.parentTrigger).not('.' + this._config.activeClass).has(this._config.subMenu).children(this._config.subMenu).attr('aria-expanded', false).addClass(this._config.collapseClass);\n\n        $(this._element).find(this._config.parentTrigger).has(this._config.subMenu).children(this._config.triggerElement).on(Event.CLICK_DATA_API, function (e) {\n          var _this = $(this);\n          var _parent = _this.parent(self._config.parentTrigger);\n          var _siblings = _parent.siblings(self._config.parentTrigger).children(self._config.triggerElement);\n          var _list = _parent.children(self._config.subMenu);\n          if (self._config.preventDefault) {\n            e.preventDefault();\n          }\n          if (_this.attr('aria-disabled') === 'true') {\n            return;\n          }\n          if (_parent.hasClass(self._config.activeClass)) {\n            _this.attr('aria-expanded', false);\n            self._hide(_list);\n          } else {\n            self._show(_list);\n            _this.attr('aria-expanded', true);\n            if (self._config.toggle) {\n              _siblings.attr('aria-expanded', false);\n            }\n          }\n\n          if (self._config.onTransitionStart) {\n            self._config.onTransitionStart(e);\n          }\n        });\n      };\n\n      MetisMenu.prototype._show = function _show(element) {\n        if (this._transitioning || $(element).hasClass(this._config.collapsingClass)) {\n          return;\n        }\n        var _this = this;\n        var _el = $(element);\n\n        var startEvent = $.Event(Event.SHOW);\n        _el.trigger(startEvent);\n\n        if (startEvent.isDefaultPrevented()) {\n          return;\n        }\n\n        _el.parent(this._config.parentTrigger).addClass(this._config.activeClass);\n\n        if (this._config.toggle) {\n          this._hide(_el.parent(this._config.parentTrigger).siblings().children(this._config.subMenu + '.' + this._config.collapseInClass).attr('aria-expanded', false));\n        }\n\n        _el.removeClass(this._config.collapseClass).addClass(this._config.collapsingClass).height(0);\n\n        this.setTransitioning(true);\n\n        var complete = function complete() {\n          // check if disposed\n          if (!_this._config || !_this._element) {\n            return;\n          }\n          _el.removeClass(_this._config.collapsingClass).addClass(_this._config.collapseClass + ' ' + _this._config.collapseInClass).height('').attr('aria-expanded', true);\n\n          _this.setTransitioning(false);\n\n          _el.trigger(Event.SHOWN);\n        };\n\n        if (!Util.supportsTransitionEnd()) {\n          complete();\n          return;\n        }\n\n        _el.height(_el[0].scrollHeight).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);\n      };\n\n      MetisMenu.prototype._hide = function _hide(element) {\n\n        if (this._transitioning || !$(element).hasClass(this._config.collapseInClass)) {\n          return;\n        }\n        var _this = this;\n        var _el = $(element);\n\n        var startEvent = $.Event(Event.HIDE);\n        _el.trigger(startEvent);\n\n        if (startEvent.isDefaultPrevented()) {\n          return;\n        }\n\n        _el.parent(this._config.parentTrigger).removeClass(this._config.activeClass);\n        _el.height(_el.height())[0].offsetHeight;\n\n        _el.addClass(this._config.collapsingClass).removeClass(this._config.collapseClass).removeClass(this._config.collapseInClass);\n\n        this.setTransitioning(true);\n\n        var complete = function complete() {\n          // check if disposed\n          if (!_this._config || !_this._element) {\n            return;\n          }\n          if (_this._transitioning && _this._config.onTransitionEnd) {\n            _this._config.onTransitionEnd();\n          }\n\n          _this.setTransitioning(false);\n          _el.trigger(Event.HIDDEN);\n\n          _el.removeClass(_this._config.collapsingClass).addClass(_this._config.collapseClass).attr('aria-expanded', false);\n        };\n\n        if (!Util.supportsTransitionEnd()) {\n          complete();\n          return;\n        }\n\n        _el.height() == 0 || _el.css('display') == 'none' ? complete() : _el.height(0).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);\n      };\n\n      MetisMenu.prototype.setTransitioning = function setTransitioning(isTransitioning) {\n        this._transitioning = isTransitioning;\n      };\n\n      MetisMenu.prototype.dispose = function dispose() {\n        $.removeData(this._element, DATA_KEY);\n\n        $(this._element).find(this._config.parentTrigger).has(this._config.subMenu).children(this._config.triggerElement).off('click');\n\n        this._transitioning = null;\n        this._config = null;\n        this._element = null;\n      };\n\n      MetisMenu.prototype._getConfig = function _getConfig(config) {\n        config = $.extend({}, Default, config);\n        return config;\n      };\n\n      MetisMenu._jQueryInterface = function _jQueryInterface(config) {\n        return this.each(function () {\n          var $this = $(this);\n          var data = $this.data(DATA_KEY);\n          var _config = $.extend({}, Default, $this.data(), (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' && config);\n\n          if (!data && /dispose/.test(config)) {\n            this.dispose();\n          }\n\n          if (!data) {\n            data = new MetisMenu(this, _config);\n            $this.data(DATA_KEY, data);\n          }\n\n          if (typeof config === 'string') {\n            if (data[config] === undefined) {\n              throw new Error('No method named \"' + config + '\"');\n            }\n            data[config]();\n          }\n        });\n      };\n\n      return MetisMenu;\n    }();\n\n    /**\n     * ------------------------------------------------------------------------\n     * jQuery\n     * ------------------------------------------------------------------------\n     */\n\n    $.fn[NAME] = MetisMenu._jQueryInterface;\n    $.fn[NAME].Constructor = MetisMenu;\n    $.fn[NAME].noConflict = function () {\n      $.fn[NAME] = JQUERY_NO_CONFLICT;\n      return MetisMenu._jQueryInterface;\n    };\n    return MetisMenu;\n  }(jQuery);\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/metismenu/dist/metisMenu.js\n// module id = 687\n// module chunks = 0","// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.\nrequire('../../js/transition.js')\nrequire('../../js/alert.js')\nrequire('../../js/button.js')\nrequire('../../js/carousel.js')\nrequire('../../js/collapse.js')\nrequire('../../js/dropdown.js')\nrequire('../../js/modal.js')\nrequire('../../js/tooltip.js')\nrequire('../../js/popover.js')\nrequire('../../js/scrollspy.js')\nrequire('../../js/tab.js')\nrequire('../../js/affix.js')\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/bootstrap/dist/js/npm.js\n// module id = 688\n// module chunks = 0","/* ========================================================================\n * Bootstrap: transition.js v3.3.7\n * http://getbootstrap.com/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)\n  // ============================================================\n\n  function transitionEnd() {\n    var el = document.createElement('bootstrap')\n\n    var transEndEventNames = {\n      WebkitTransition : 'webkitTransitionEnd',\n      MozTransition    : 'transitionend',\n      OTransition      : 'oTransitionEnd otransitionend',\n      transition       : 'transitionend'\n    }\n\n    for (var name in transEndEventNames) {\n      if (el.style[name] !== undefined) {\n        return { end: transEndEventNames[name] }\n      }\n    }\n\n    return false // explicit for ie8 (  ._.)\n  }\n\n  // http://blog.alexmaccaw.com/css-transitions\n  $.fn.emulateTransitionEnd = function (duration) {\n    var called = false\n    var $el = this\n    $(this).one('bsTransitionEnd', function () { called = true })\n    var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n    setTimeout(callback, duration)\n    return this\n  }\n\n  $(function () {\n    $.support.transition = transitionEnd()\n\n    if (!$.support.transition) return\n\n    $.event.special.bsTransitionEnd = {\n      bindType: $.support.transition.end,\n      delegateType: $.support.transition.end,\n      handle: function (e) {\n        if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n      }\n    }\n  })\n\n}(jQuery);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/bootstrap/js/transition.js\n// module id = 689\n// module chunks = 0","/* ========================================================================\n * Bootstrap: alert.js v3.3.7\n * http://getbootstrap.com/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // ALERT CLASS DEFINITION\n  // ======================\n\n  var dismiss = '[data-dismiss=\"alert\"]'\n  var Alert   = function (el) {\n    $(el).on('click', dismiss, this.close)\n  }\n\n  Alert.VERSION = '3.3.7'\n\n  Alert.TRANSITION_DURATION = 150\n\n  Alert.prototype.close = function (e) {\n    var $this    = $(this)\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    var $parent = $(selector === '#' ? [] : selector)\n\n    if (e) e.preventDefault()\n\n    if (!$parent.length) {\n      $parent = $this.closest('.alert')\n    }\n\n    $parent.trigger(e = $.Event('close.bs.alert'))\n\n    if (e.isDefaultPrevented()) return\n\n    $parent.removeClass('in')\n\n    function removeElement() {\n      // detach from parent, fire event then clean up data\n      $parent.detach().trigger('closed.bs.alert').remove()\n    }\n\n    $.support.transition && $parent.hasClass('fade') ?\n      $parent\n        .one('bsTransitionEnd', removeElement)\n        .emulateTransitionEnd(Alert.TRANSITION_DURATION) :\n      removeElement()\n  }\n\n\n  // ALERT PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.alert')\n\n      if (!data) $this.data('bs.alert', (data = new Alert(this)))\n      if (typeof option == 'string') data[option].call($this)\n    })\n  }\n\n  var old = $.fn.alert\n\n  $.fn.alert             = Plugin\n  $.fn.alert.Constructor = Alert\n\n\n  // ALERT NO CONFLICT\n  // =================\n\n  $.fn.alert.noConflict = function () {\n    $.fn.alert = old\n    return this\n  }\n\n\n  // ALERT DATA-API\n  // ==============\n\n  $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(jQuery);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/bootstrap/js/alert.js\n// module id = 690\n// module chunks = 0","/* ========================================================================\n * Bootstrap: button.js v3.3.7\n * http://getbootstrap.com/javascript/#buttons\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // BUTTON PUBLIC CLASS DEFINITION\n  // ==============================\n\n  var Button = function (element, options) {\n    this.$element  = $(element)\n    this.options   = $.extend({}, Button.DEFAULTS, options)\n    this.isLoading = false\n  }\n\n  Button.VERSION  = '3.3.7'\n\n  Button.DEFAULTS = {\n    loadingText: 'loading...'\n  }\n\n  Button.prototype.setState = function (state) {\n    var d    = 'disabled'\n    var $el  = this.$element\n    var val  = $el.is('input') ? 'val' : 'html'\n    var data = $el.data()\n\n    state += 'Text'\n\n    if (data.resetText == null) $el.data('resetText', $el[val]())\n\n    // push to event loop to allow forms to submit\n    setTimeout($.proxy(function () {\n      $el[val](data[state] == null ? this.options[state] : data[state])\n\n      if (state == 'loadingText') {\n        this.isLoading = true\n        $el.addClass(d).attr(d, d).prop(d, true)\n      } else if (this.isLoading) {\n        this.isLoading = false\n        $el.removeClass(d).removeAttr(d).prop(d, false)\n      }\n    }, this), 0)\n  }\n\n  Button.prototype.toggle = function () {\n    var changed = true\n    var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\n\n    if ($parent.length) {\n      var $input = this.$element.find('input')\n      if ($input.prop('type') == 'radio') {\n        if ($input.prop('checked')) changed = false\n        $parent.find('.active').removeClass('active')\n        this.$element.addClass('active')\n      } else if ($input.prop('type') == 'checkbox') {\n        if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false\n        this.$element.toggleClass('active')\n      }\n      $input.prop('checked', this.$element.hasClass('active'))\n      if (changed) $input.trigger('change')\n    } else {\n      this.$element.attr('aria-pressed', !this.$element.hasClass('active'))\n      this.$element.toggleClass('active')\n    }\n  }\n\n\n  // BUTTON PLUGIN DEFINITION\n  // ========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.button')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.button', (data = new Button(this, options)))\n\n      if (option == 'toggle') data.toggle()\n      else if (option) data.setState(option)\n    })\n  }\n\n  var old = $.fn.button\n\n  $.fn.button             = Plugin\n  $.fn.button.Constructor = Button\n\n\n  // BUTTON NO CONFLICT\n  // ==================\n\n  $.fn.button.noConflict = function () {\n    $.fn.button = old\n    return this\n  }\n\n\n  // BUTTON DATA-API\n  // ===============\n\n  $(document)\n    .on('click.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n      var $btn = $(e.target).closest('.btn')\n      Plugin.call($btn, 'toggle')\n      if (!($(e.target).is('input[type=\"radio\"], input[type=\"checkbox\"]'))) {\n        // Prevent double click on radios, and the double selections (so cancellation) on checkboxes\n        e.preventDefault()\n        // The target component still receive the focus\n        if ($btn.is('input,button')) $btn.trigger('focus')\n        else $btn.find('input:visible,button:visible').first().trigger('focus')\n      }\n    })\n    .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n      $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))\n    })\n\n}(jQuery);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/bootstrap/js/button.js\n// module id = 691\n// module chunks = 0","/* ========================================================================\n * Bootstrap: carousel.js v3.3.7\n * http://getbootstrap.com/javascript/#carousel\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // CAROUSEL CLASS DEFINITION\n  // =========================\n\n  var Carousel = function (element, options) {\n    this.$element    = $(element)\n    this.$indicators = this.$element.find('.carousel-indicators')\n    this.options     = options\n    this.paused      = null\n    this.sliding     = null\n    this.interval    = null\n    this.$active     = null\n    this.$items      = null\n\n    this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))\n\n    this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element\n      .on('mouseenter.bs.carousel', $.proxy(this.pause, this))\n      .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))\n  }\n\n  Carousel.VERSION  = '3.3.7'\n\n  Carousel.TRANSITION_DURATION = 600\n\n  Carousel.DEFAULTS = {\n    interval: 5000,\n    pause: 'hover',\n    wrap: true,\n    keyboard: true\n  }\n\n  Carousel.prototype.keydown = function (e) {\n    if (/input|textarea/i.test(e.target.tagName)) return\n    switch (e.which) {\n      case 37: this.prev(); break\n      case 39: this.next(); break\n      default: return\n    }\n\n    e.preventDefault()\n  }\n\n  Carousel.prototype.cycle = function (e) {\n    e || (this.paused = false)\n\n    this.interval && clearInterval(this.interval)\n\n    this.options.interval\n      && !this.paused\n      && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))\n\n    return this\n  }\n\n  Carousel.prototype.getItemIndex = function (item) {\n    this.$items = item.parent().children('.item')\n    return this.$items.index(item || this.$active)\n  }\n\n  Carousel.prototype.getItemForDirection = function (direction, active) {\n    var activeIndex = this.getItemIndex(active)\n    var willWrap = (direction == 'prev' && activeIndex === 0)\n                || (direction == 'next' && activeIndex == (this.$items.length - 1))\n    if (willWrap && !this.options.wrap) return active\n    var delta = direction == 'prev' ? -1 : 1\n    var itemIndex = (activeIndex + delta) % this.$items.length\n    return this.$items.eq(itemIndex)\n  }\n\n  Carousel.prototype.to = function (pos) {\n    var that        = this\n    var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))\n\n    if (pos > (this.$items.length - 1) || pos < 0) return\n\n    if (this.sliding)       return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, \"slid\"\n    if (activeIndex == pos) return this.pause().cycle()\n\n    return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))\n  }\n\n  Carousel.prototype.pause = function (e) {\n    e || (this.paused = true)\n\n    if (this.$element.find('.next, .prev').length && $.support.transition) {\n      this.$element.trigger($.support.transition.end)\n      this.cycle(true)\n    }\n\n    this.interval = clearInterval(this.interval)\n\n    return this\n  }\n\n  Carousel.prototype.next = function () {\n    if (this.sliding) return\n    return this.slide('next')\n  }\n\n  Carousel.prototype.prev = function () {\n    if (this.sliding) return\n    return this.slide('prev')\n  }\n\n  Carousel.prototype.slide = function (type, next) {\n    var $active   = this.$element.find('.item.active')\n    var $next     = next || this.getItemForDirection(type, $active)\n    var isCycling = this.interval\n    var direction = type == 'next' ? 'left' : 'right'\n    var that      = this\n\n    if ($next.hasClass('active')) return (this.sliding = false)\n\n    var relatedTarget = $next[0]\n    var slideEvent = $.Event('slide.bs.carousel', {\n      relatedTarget: relatedTarget,\n      direction: direction\n    })\n    this.$element.trigger(slideEvent)\n    if (slideEvent.isDefaultPrevented()) return\n\n    this.sliding = true\n\n    isCycling && this.pause()\n\n    if (this.$indicators.length) {\n      this.$indicators.find('.active').removeClass('active')\n      var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])\n      $nextIndicator && $nextIndicator.addClass('active')\n    }\n\n    var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, \"slid\"\n    if ($.support.transition && this.$element.hasClass('slide')) {\n      $next.addClass(type)\n      $next[0].offsetWidth // force reflow\n      $active.addClass(direction)\n      $next.addClass(direction)\n      $active\n        .one('bsTransitionEnd', function () {\n          $next.removeClass([type, direction].join(' ')).addClass('active')\n          $active.removeClass(['active', direction].join(' '))\n          that.sliding = false\n          setTimeout(function () {\n            that.$element.trigger(slidEvent)\n          }, 0)\n        })\n        .emulateTransitionEnd(Carousel.TRANSITION_DURATION)\n    } else {\n      $active.removeClass('active')\n      $next.addClass('active')\n      this.sliding = false\n      this.$element.trigger(slidEvent)\n    }\n\n    isCycling && this.cycle()\n\n    return this\n  }\n\n\n  // CAROUSEL PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.carousel')\n      var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)\n      var action  = typeof option == 'string' ? option : options.slide\n\n      if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))\n      if (typeof option == 'number') data.to(option)\n      else if (action) data[action]()\n      else if (options.interval) data.pause().cycle()\n    })\n  }\n\n  var old = $.fn.carousel\n\n  $.fn.carousel             = Plugin\n  $.fn.carousel.Constructor = Carousel\n\n\n  // CAROUSEL NO CONFLICT\n  // ====================\n\n  $.fn.carousel.noConflict = function () {\n    $.fn.carousel = old\n    return this\n  }\n\n\n  // CAROUSEL DATA-API\n  // =================\n\n  var clickHandler = function (e) {\n    var href\n    var $this   = $(this)\n    var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n    if (!$target.hasClass('carousel')) return\n    var options = $.extend({}, $target.data(), $this.data())\n    var slideIndex = $this.attr('data-slide-to')\n    if (slideIndex) options.interval = false\n\n    Plugin.call($target, options)\n\n    if (slideIndex) {\n      $target.data('bs.carousel').to(slideIndex)\n    }\n\n    e.preventDefault()\n  }\n\n  $(document)\n    .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)\n    .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)\n\n  $(window).on('load', function () {\n    $('[data-ride=\"carousel\"]').each(function () {\n      var $carousel = $(this)\n      Plugin.call($carousel, $carousel.data())\n    })\n  })\n\n}(jQuery);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/bootstrap/js/carousel.js\n// module id = 692\n// module chunks = 0","/* ========================================================================\n * Bootstrap: collapse.js v3.3.7\n * http://getbootstrap.com/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n/* jshint latedef: false */\n\n+function ($) {\n  'use strict';\n\n  // COLLAPSE PUBLIC CLASS DEFINITION\n  // ================================\n\n  var Collapse = function (element, options) {\n    this.$element      = $(element)\n    this.options       = $.extend({}, Collapse.DEFAULTS, options)\n    this.$trigger      = $('[data-toggle=\"collapse\"][href=\"#' + element.id + '\"],' +\n                           '[data-toggle=\"collapse\"][data-target=\"#' + element.id + '\"]')\n    this.transitioning = null\n\n    if (this.options.parent) {\n      this.$parent = this.getParent()\n    } else {\n      this.addAriaAndCollapsedClass(this.$element, this.$trigger)\n    }\n\n    if (this.options.toggle) this.toggle()\n  }\n\n  Collapse.VERSION  = '3.3.7'\n\n  Collapse.TRANSITION_DURATION = 350\n\n  Collapse.DEFAULTS = {\n    toggle: true\n  }\n\n  Collapse.prototype.dimension = function () {\n    var hasWidth = this.$element.hasClass('width')\n    return hasWidth ? 'width' : 'height'\n  }\n\n  Collapse.prototype.show = function () {\n    if (this.transitioning || this.$element.hasClass('in')) return\n\n    var activesData\n    var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')\n\n    if (actives && actives.length) {\n      activesData = actives.data('bs.collapse')\n      if (activesData && activesData.transitioning) return\n    }\n\n    var startEvent = $.Event('show.bs.collapse')\n    this.$element.trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) return\n\n    if (actives && actives.length) {\n      Plugin.call(actives, 'hide')\n      activesData || actives.data('bs.collapse', null)\n    }\n\n    var dimension = this.dimension()\n\n    this.$element\n      .removeClass('collapse')\n      .addClass('collapsing')[dimension](0)\n      .attr('aria-expanded', true)\n\n    this.$trigger\n      .removeClass('collapsed')\n      .attr('aria-expanded', true)\n\n    this.transitioning = 1\n\n    var complete = function () {\n      this.$element\n        .removeClass('collapsing')\n        .addClass('collapse in')[dimension]('')\n      this.transitioning = 0\n      this.$element\n        .trigger('shown.bs.collapse')\n    }\n\n    if (!$.support.transition) return complete.call(this)\n\n    var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n    this.$element\n      .one('bsTransitionEnd', $.proxy(complete, this))\n      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])\n  }\n\n  Collapse.prototype.hide = function () {\n    if (this.transitioning || !this.$element.hasClass('in')) return\n\n    var startEvent = $.Event('hide.bs.collapse')\n    this.$element.trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) return\n\n    var dimension = this.dimension()\n\n    this.$element[dimension](this.$element[dimension]())[0].offsetHeight\n\n    this.$element\n      .addClass('collapsing')\n      .removeClass('collapse in')\n      .attr('aria-expanded', false)\n\n    this.$trigger\n      .addClass('collapsed')\n      .attr('aria-expanded', false)\n\n    this.transitioning = 1\n\n    var complete = function () {\n      this.transitioning = 0\n      this.$element\n        .removeClass('collapsing')\n        .addClass('collapse')\n        .trigger('hidden.bs.collapse')\n    }\n\n    if (!$.support.transition) return complete.call(this)\n\n    this.$element\n      [dimension](0)\n      .one('bsTransitionEnd', $.proxy(complete, this))\n      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)\n  }\n\n  Collapse.prototype.toggle = function () {\n    this[this.$element.hasClass('in') ? 'hide' : 'show']()\n  }\n\n  Collapse.prototype.getParent = function () {\n    return $(this.options.parent)\n      .find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]')\n      .each($.proxy(function (i, element) {\n        var $element = $(element)\n        this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)\n      }, this))\n      .end()\n  }\n\n  Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\n    var isOpen = $element.hasClass('in')\n\n    $element.attr('aria-expanded', isOpen)\n    $trigger\n      .toggleClass('collapsed', !isOpen)\n      .attr('aria-expanded', isOpen)\n  }\n\n  function getTargetFromTrigger($trigger) {\n    var href\n    var target = $trigger.attr('data-target')\n      || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n\n    return $(target)\n  }\n\n\n  // COLLAPSE PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.collapse')\n      var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n      if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false\n      if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.collapse\n\n  $.fn.collapse             = Plugin\n  $.fn.collapse.Constructor = Collapse\n\n\n  // COLLAPSE NO CONFLICT\n  // ====================\n\n  $.fn.collapse.noConflict = function () {\n    $.fn.collapse = old\n    return this\n  }\n\n\n  // COLLAPSE DATA-API\n  // =================\n\n  $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\n    var $this   = $(this)\n\n    if (!$this.attr('data-target')) e.preventDefault()\n\n    var $target = getTargetFromTrigger($this)\n    var data    = $target.data('bs.collapse')\n    var option  = data ? 'toggle' : $this.data()\n\n    Plugin.call($target, option)\n  })\n\n}(jQuery);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/bootstrap/js/collapse.js\n// module id = 693\n// module chunks = 0","/* ========================================================================\n * Bootstrap: dropdown.js v3.3.7\n * http://getbootstrap.com/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // DROPDOWN CLASS DEFINITION\n  // =========================\n\n  var backdrop = '.dropdown-backdrop'\n  var toggle   = '[data-toggle=\"dropdown\"]'\n  var Dropdown = function (element) {\n    $(element).on('click.bs.dropdown', this.toggle)\n  }\n\n  Dropdown.VERSION = '3.3.7'\n\n  function getParent($this) {\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    var $parent = selector && $(selector)\n\n    return $parent && $parent.length ? $parent : $this.parent()\n  }\n\n  function clearMenus(e) {\n    if (e && e.which === 3) return\n    $(backdrop).remove()\n    $(toggle).each(function () {\n      var $this         = $(this)\n      var $parent       = getParent($this)\n      var relatedTarget = { relatedTarget: this }\n\n      if (!$parent.hasClass('open')) return\n\n      if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return\n\n      $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n\n      if (e.isDefaultPrevented()) return\n\n      $this.attr('aria-expanded', 'false')\n      $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))\n    })\n  }\n\n  Dropdown.prototype.toggle = function (e) {\n    var $this = $(this)\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    clearMenus()\n\n    if (!isActive) {\n      if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n        // if mobile we use a backdrop because click events don't delegate\n        $(document.createElement('div'))\n          .addClass('dropdown-backdrop')\n          .insertAfter($(this))\n          .on('click', clearMenus)\n      }\n\n      var relatedTarget = { relatedTarget: this }\n      $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n      if (e.isDefaultPrevented()) return\n\n      $this\n        .trigger('focus')\n        .attr('aria-expanded', 'true')\n\n      $parent\n        .toggleClass('open')\n        .trigger($.Event('shown.bs.dropdown', relatedTarget))\n    }\n\n    return false\n  }\n\n  Dropdown.prototype.keydown = function (e) {\n    if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\n\n    var $this = $(this)\n\n    e.preventDefault()\n    e.stopPropagation()\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    if (!isActive && e.which != 27 || isActive && e.which == 27) {\n      if (e.which == 27) $parent.find(toggle).trigger('focus')\n      return $this.trigger('click')\n    }\n\n    var desc = ' li:not(.disabled):visible a'\n    var $items = $parent.find('.dropdown-menu' + desc)\n\n    if (!$items.length) return\n\n    var index = $items.index(e.target)\n\n    if (e.which == 38 && index > 0)                 index--         // up\n    if (e.which == 40 && index < $items.length - 1) index++         // down\n    if (!~index)                                    index = 0\n\n    $items.eq(index).trigger('focus')\n  }\n\n\n  // DROPDOWN PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.dropdown')\n\n      if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n      if (typeof option == 'string') data[option].call($this)\n    })\n  }\n\n  var old = $.fn.dropdown\n\n  $.fn.dropdown             = Plugin\n  $.fn.dropdown.Constructor = Dropdown\n\n\n  // DROPDOWN NO CONFLICT\n  // ====================\n\n  $.fn.dropdown.noConflict = function () {\n    $.fn.dropdown = old\n    return this\n  }\n\n\n  // APPLY TO STANDARD DROPDOWN ELEMENTS\n  // ===================================\n\n  $(document)\n    .on('click.bs.dropdown.data-api', clearMenus)\n    .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n    .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n    .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\n    .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)\n\n}(jQuery);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/bootstrap/js/dropdown.js\n// module id = 694\n// module chunks = 0","/* ========================================================================\n * Bootstrap: modal.js v3.3.7\n * http://getbootstrap.com/javascript/#modals\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // MODAL CLASS DEFINITION\n  // ======================\n\n  var Modal = function (element, options) {\n    this.options             = options\n    this.$body               = $(document.body)\n    this.$element            = $(element)\n    this.$dialog             = this.$element.find('.modal-dialog')\n    this.$backdrop           = null\n    this.isShown             = null\n    this.originalBodyPad     = null\n    this.scrollbarWidth      = 0\n    this.ignoreBackdropClick = false\n\n    if (this.options.remote) {\n      this.$element\n        .find('.modal-content')\n        .load(this.options.remote, $.proxy(function () {\n          this.$element.trigger('loaded.bs.modal')\n        }, this))\n    }\n  }\n\n  Modal.VERSION  = '3.3.7'\n\n  Modal.TRANSITION_DURATION = 300\n  Modal.BACKDROP_TRANSITION_DURATION = 150\n\n  Modal.DEFAULTS = {\n    backdrop: true,\n    keyboard: true,\n    show: true\n  }\n\n  Modal.prototype.toggle = function (_relatedTarget) {\n    return this.isShown ? this.hide() : this.show(_relatedTarget)\n  }\n\n  Modal.prototype.show = function (_relatedTarget) {\n    var that = this\n    var e    = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n    this.$element.trigger(e)\n\n    if (this.isShown || e.isDefaultPrevented()) return\n\n    this.isShown = true\n\n    this.checkScrollbar()\n    this.setScrollbar()\n    this.$body.addClass('modal-open')\n\n    this.escape()\n    this.resize()\n\n    this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n    this.$dialog.on('mousedown.dismiss.bs.modal', function () {\n      that.$element.one('mouseup.dismiss.bs.modal', function (e) {\n        if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true\n      })\n    })\n\n    this.backdrop(function () {\n      var transition = $.support.transition && that.$element.hasClass('fade')\n\n      if (!that.$element.parent().length) {\n        that.$element.appendTo(that.$body) // don't move modals dom position\n      }\n\n      that.$element\n        .show()\n        .scrollTop(0)\n\n      that.adjustDialog()\n\n      if (transition) {\n        that.$element[0].offsetWidth // force reflow\n      }\n\n      that.$element.addClass('in')\n\n      that.enforceFocus()\n\n      var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n      transition ?\n        that.$dialog // wait for modal to slide in\n          .one('bsTransitionEnd', function () {\n            that.$element.trigger('focus').trigger(e)\n          })\n          .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n        that.$element.trigger('focus').trigger(e)\n    })\n  }\n\n  Modal.prototype.hide = function (e) {\n    if (e) e.preventDefault()\n\n    e = $.Event('hide.bs.modal')\n\n    this.$element.trigger(e)\n\n    if (!this.isShown || e.isDefaultPrevented()) return\n\n    this.isShown = false\n\n    this.escape()\n    this.resize()\n\n    $(document).off('focusin.bs.modal')\n\n    this.$element\n      .removeClass('in')\n      .off('click.dismiss.bs.modal')\n      .off('mouseup.dismiss.bs.modal')\n\n    this.$dialog.off('mousedown.dismiss.bs.modal')\n\n    $.support.transition && this.$element.hasClass('fade') ?\n      this.$element\n        .one('bsTransitionEnd', $.proxy(this.hideModal, this))\n        .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n      this.hideModal()\n  }\n\n  Modal.prototype.enforceFocus = function () {\n    $(document)\n      .off('focusin.bs.modal') // guard against infinite focus loop\n      .on('focusin.bs.modal', $.proxy(function (e) {\n        if (document !== e.target &&\n            this.$element[0] !== e.target &&\n            !this.$element.has(e.target).length) {\n          this.$element.trigger('focus')\n        }\n      }, this))\n  }\n\n  Modal.prototype.escape = function () {\n    if (this.isShown && this.options.keyboard) {\n      this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n        e.which == 27 && this.hide()\n      }, this))\n    } else if (!this.isShown) {\n      this.$element.off('keydown.dismiss.bs.modal')\n    }\n  }\n\n  Modal.prototype.resize = function () {\n    if (this.isShown) {\n      $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\n    } else {\n      $(window).off('resize.bs.modal')\n    }\n  }\n\n  Modal.prototype.hideModal = function () {\n    var that = this\n    this.$element.hide()\n    this.backdrop(function () {\n      that.$body.removeClass('modal-open')\n      that.resetAdjustments()\n      that.resetScrollbar()\n      that.$element.trigger('hidden.bs.modal')\n    })\n  }\n\n  Modal.prototype.removeBackdrop = function () {\n    this.$backdrop && this.$backdrop.remove()\n    this.$backdrop = null\n  }\n\n  Modal.prototype.backdrop = function (callback) {\n    var that = this\n    var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n    if (this.isShown && this.options.backdrop) {\n      var doAnimate = $.support.transition && animate\n\n      this.$backdrop = $(document.createElement('div'))\n        .addClass('modal-backdrop ' + animate)\n        .appendTo(this.$body)\n\n      this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\n        if (this.ignoreBackdropClick) {\n          this.ignoreBackdropClick = false\n          return\n        }\n        if (e.target !== e.currentTarget) return\n        this.options.backdrop == 'static'\n          ? this.$element[0].focus()\n          : this.hide()\n      }, this))\n\n      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n      this.$backdrop.addClass('in')\n\n      if (!callback) return\n\n      doAnimate ?\n        this.$backdrop\n          .one('bsTransitionEnd', callback)\n          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n        callback()\n\n    } else if (!this.isShown && this.$backdrop) {\n      this.$backdrop.removeClass('in')\n\n      var callbackRemove = function () {\n        that.removeBackdrop()\n        callback && callback()\n      }\n      $.support.transition && this.$element.hasClass('fade') ?\n        this.$backdrop\n          .one('bsTransitionEnd', callbackRemove)\n          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n        callbackRemove()\n\n    } else if (callback) {\n      callback()\n    }\n  }\n\n  // these following methods are used to handle overflowing modals\n\n  Modal.prototype.handleUpdate = function () {\n    this.adjustDialog()\n  }\n\n  Modal.prototype.adjustDialog = function () {\n    var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\n\n    this.$element.css({\n      paddingLeft:  !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\n      paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\n    })\n  }\n\n  Modal.prototype.resetAdjustments = function () {\n    this.$element.css({\n      paddingLeft: '',\n      paddingRight: ''\n    })\n  }\n\n  Modal.prototype.checkScrollbar = function () {\n    var fullWindowWidth = window.innerWidth\n    if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8\n      var documentElementRect = document.documentElement.getBoundingClientRect()\n      fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\n    }\n    this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\n    this.scrollbarWidth = this.measureScrollbar()\n  }\n\n  Modal.prototype.setScrollbar = function () {\n    var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\n    this.originalBodyPad = document.body.style.paddingRight || ''\n    if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)\n  }\n\n  Modal.prototype.resetScrollbar = function () {\n    this.$body.css('padding-right', this.originalBodyPad)\n  }\n\n  Modal.prototype.measureScrollbar = function () { // thx walsh\n    var scrollDiv = document.createElement('div')\n    scrollDiv.className = 'modal-scrollbar-measure'\n    this.$body.append(scrollDiv)\n    var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n    this.$body[0].removeChild(scrollDiv)\n    return scrollbarWidth\n  }\n\n\n  // MODAL PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option, _relatedTarget) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.modal')\n      var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n      if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n      if (typeof option == 'string') data[option](_relatedTarget)\n      else if (options.show) data.show(_relatedTarget)\n    })\n  }\n\n  var old = $.fn.modal\n\n  $.fn.modal             = Plugin\n  $.fn.modal.Constructor = Modal\n\n\n  // MODAL NO CONFLICT\n  // =================\n\n  $.fn.modal.noConflict = function () {\n    $.fn.modal = old\n    return this\n  }\n\n\n  // MODAL DATA-API\n  // ==============\n\n  $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n    var $this   = $(this)\n    var href    = $this.attr('href')\n    var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\\s]+$)/, ''))) // strip for ie7\n    var option  = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n    if ($this.is('a')) e.preventDefault()\n\n    $target.one('show.bs.modal', function (showEvent) {\n      if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\n      $target.one('hidden.bs.modal', function () {\n        $this.is(':visible') && $this.trigger('focus')\n      })\n    })\n    Plugin.call($target, option, this)\n  })\n\n}(jQuery);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/bootstrap/js/modal.js\n// module id = 695\n// module chunks = 0","/* ========================================================================\n * Bootstrap: tooltip.js v3.3.7\n * http://getbootstrap.com/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // TOOLTIP PUBLIC CLASS DEFINITION\n  // ===============================\n\n  var Tooltip = function (element, options) {\n    this.type       = null\n    this.options    = null\n    this.enabled    = null\n    this.timeout    = null\n    this.hoverState = null\n    this.$element   = null\n    this.inState    = null\n\n    this.init('tooltip', element, options)\n  }\n\n  Tooltip.VERSION  = '3.3.7'\n\n  Tooltip.TRANSITION_DURATION = 150\n\n  Tooltip.DEFAULTS = {\n    animation: true,\n    placement: 'top',\n    selector: false,\n    template: '<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',\n    trigger: 'hover focus',\n    title: '',\n    delay: 0,\n    html: false,\n    container: false,\n    viewport: {\n      selector: 'body',\n      padding: 0\n    }\n  }\n\n  Tooltip.prototype.init = function (type, element, options) {\n    this.enabled   = true\n    this.type      = type\n    this.$element  = $(element)\n    this.options   = this.getOptions(options)\n    this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))\n    this.inState   = { click: false, hover: false, focus: false }\n\n    if (this.$element[0] instanceof document.constructor && !this.options.selector) {\n      throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')\n    }\n\n    var triggers = this.options.trigger.split(' ')\n\n    for (var i = triggers.length; i--;) {\n      var trigger = triggers[i]\n\n      if (trigger == 'click') {\n        this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n      } else if (trigger != 'manual') {\n        var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focusin'\n        var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n        this.$element.on(eventIn  + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n        this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n      }\n    }\n\n    this.options.selector ?\n      (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n      this.fixTitle()\n  }\n\n  Tooltip.prototype.getDefaults = function () {\n    return Tooltip.DEFAULTS\n  }\n\n  Tooltip.prototype.getOptions = function (options) {\n    options = $.extend({}, this.getDefaults(), this.$element.data(), options)\n\n    if (options.delay && typeof options.delay == 'number') {\n      options.delay = {\n        show: options.delay,\n        hide: options.delay\n      }\n    }\n\n    return options\n  }\n\n  Tooltip.prototype.getDelegateOptions = function () {\n    var options  = {}\n    var defaults = this.getDefaults()\n\n    this._options && $.each(this._options, function (key, value) {\n      if (defaults[key] != value) options[key] = value\n    })\n\n    return options\n  }\n\n  Tooltip.prototype.enter = function (obj) {\n    var self = obj instanceof this.constructor ?\n      obj : $(obj.currentTarget).data('bs.' + this.type)\n\n    if (!self) {\n      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n      $(obj.currentTarget).data('bs.' + this.type, self)\n    }\n\n    if (obj instanceof $.Event) {\n      self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true\n    }\n\n    if (self.tip().hasClass('in') || self.hoverState == 'in') {\n      self.hoverState = 'in'\n      return\n    }\n\n    clearTimeout(self.timeout)\n\n    self.hoverState = 'in'\n\n    if (!self.options.delay || !self.options.delay.show) return self.show()\n\n    self.timeout = setTimeout(function () {\n      if (self.hoverState == 'in') self.show()\n    }, self.options.delay.show)\n  }\n\n  Tooltip.prototype.isInStateTrue = function () {\n    for (var key in this.inState) {\n      if (this.inState[key]) return true\n    }\n\n    return false\n  }\n\n  Tooltip.prototype.leave = function (obj) {\n    var self = obj instanceof this.constructor ?\n      obj : $(obj.currentTarget).data('bs.' + this.type)\n\n    if (!self) {\n      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n      $(obj.currentTarget).data('bs.' + this.type, self)\n    }\n\n    if (obj instanceof $.Event) {\n      self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false\n    }\n\n    if (self.isInStateTrue()) return\n\n    clearTimeout(self.timeout)\n\n    self.hoverState = 'out'\n\n    if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n    self.timeout = setTimeout(function () {\n      if (self.hoverState == 'out') self.hide()\n    }, self.options.delay.hide)\n  }\n\n  Tooltip.prototype.show = function () {\n    var e = $.Event('show.bs.' + this.type)\n\n    if (this.hasContent() && this.enabled) {\n      this.$element.trigger(e)\n\n      var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])\n      if (e.isDefaultPrevented() || !inDom) return\n      var that = this\n\n      var $tip = this.tip()\n\n      var tipId = this.getUID(this.type)\n\n      this.setContent()\n      $tip.attr('id', tipId)\n      this.$element.attr('aria-describedby', tipId)\n\n      if (this.options.animation) $tip.addClass('fade')\n\n      var placement = typeof this.options.placement == 'function' ?\n        this.options.placement.call(this, $tip[0], this.$element[0]) :\n        this.options.placement\n\n      var autoToken = /\\s?auto?\\s?/i\n      var autoPlace = autoToken.test(placement)\n      if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n      $tip\n        .detach()\n        .css({ top: 0, left: 0, display: 'block' })\n        .addClass(placement)\n        .data('bs.' + this.type, this)\n\n      this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)\n      this.$element.trigger('inserted.bs.' + this.type)\n\n      var pos          = this.getPosition()\n      var actualWidth  = $tip[0].offsetWidth\n      var actualHeight = $tip[0].offsetHeight\n\n      if (autoPlace) {\n        var orgPlacement = placement\n        var viewportDim = this.getPosition(this.$viewport)\n\n        placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top'    :\n                    placement == 'top'    && pos.top    - actualHeight < viewportDim.top    ? 'bottom' :\n                    placement == 'right'  && pos.right  + actualWidth  > viewportDim.width  ? 'left'   :\n                    placement == 'left'   && pos.left   - actualWidth  < viewportDim.left   ? 'right'  :\n                    placement\n\n        $tip\n          .removeClass(orgPlacement)\n          .addClass(placement)\n      }\n\n      var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n      this.applyPlacement(calculatedOffset, placement)\n\n      var complete = function () {\n        var prevHoverState = that.hoverState\n        that.$element.trigger('shown.bs.' + that.type)\n        that.hoverState = null\n\n        if (prevHoverState == 'out') that.leave(that)\n      }\n\n      $.support.transition && this.$tip.hasClass('fade') ?\n        $tip\n          .one('bsTransitionEnd', complete)\n          .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n        complete()\n    }\n  }\n\n  Tooltip.prototype.applyPlacement = function (offset, placement) {\n    var $tip   = this.tip()\n    var width  = $tip[0].offsetWidth\n    var height = $tip[0].offsetHeight\n\n    // manually read margins because getBoundingClientRect includes difference\n    var marginTop = parseInt($tip.css('margin-top'), 10)\n    var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n    // we must check for NaN for ie 8/9\n    if (isNaN(marginTop))  marginTop  = 0\n    if (isNaN(marginLeft)) marginLeft = 0\n\n    offset.top  += marginTop\n    offset.left += marginLeft\n\n    // $.fn.offset doesn't round pixel values\n    // so we use setOffset directly with our own function B-0\n    $.offset.setOffset($tip[0], $.extend({\n      using: function (props) {\n        $tip.css({\n          top: Math.round(props.top),\n          left: Math.round(props.left)\n        })\n      }\n    }, offset), 0)\n\n    $tip.addClass('in')\n\n    // check to see if placing tip in new offset caused the tip to resize itself\n    var actualWidth  = $tip[0].offsetWidth\n    var actualHeight = $tip[0].offsetHeight\n\n    if (placement == 'top' && actualHeight != height) {\n      offset.top = offset.top + height - actualHeight\n    }\n\n    var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)\n\n    if (delta.left) offset.left += delta.left\n    else offset.top += delta.top\n\n    var isVertical          = /top|bottom/.test(placement)\n    var arrowDelta          = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight\n    var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'\n\n    $tip.offset(offset)\n    this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)\n  }\n\n  Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {\n    this.arrow()\n      .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')\n      .css(isVertical ? 'top' : 'left', '')\n  }\n\n  Tooltip.prototype.setContent = function () {\n    var $tip  = this.tip()\n    var title = this.getTitle()\n\n    $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)\n    $tip.removeClass('fade in top bottom left right')\n  }\n\n  Tooltip.prototype.hide = function (callback) {\n    var that = this\n    var $tip = $(this.$tip)\n    var e    = $.Event('hide.bs.' + this.type)\n\n    function complete() {\n      if (that.hoverState != 'in') $tip.detach()\n      if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.\n        that.$element\n          .removeAttr('aria-describedby')\n          .trigger('hidden.bs.' + that.type)\n      }\n      callback && callback()\n    }\n\n    this.$element.trigger(e)\n\n    if (e.isDefaultPrevented()) return\n\n    $tip.removeClass('in')\n\n    $.support.transition && $tip.hasClass('fade') ?\n      $tip\n        .one('bsTransitionEnd', complete)\n        .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n      complete()\n\n    this.hoverState = null\n\n    return this\n  }\n\n  Tooltip.prototype.fixTitle = function () {\n    var $e = this.$element\n    if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {\n      $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n    }\n  }\n\n  Tooltip.prototype.hasContent = function () {\n    return this.getTitle()\n  }\n\n  Tooltip.prototype.getPosition = function ($element) {\n    $element   = $element || this.$element\n\n    var el     = $element[0]\n    var isBody = el.tagName == 'BODY'\n\n    var elRect    = el.getBoundingClientRect()\n    if (elRect.width == null) {\n      // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\n      elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })\n    }\n    var isSvg = window.SVGElement && el instanceof window.SVGElement\n    // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.\n    // See https://github.com/twbs/bootstrap/issues/20280\n    var elOffset  = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())\n    var scroll    = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }\n    var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null\n\n    return $.extend({}, elRect, scroll, outerDims, elOffset)\n  }\n\n  Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n    return placement == 'bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2 } :\n           placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n           placement == 'left'   ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n        /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\n\n  }\n\n  Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\n    var delta = { top: 0, left: 0 }\n    if (!this.$viewport) return delta\n\n    var viewportPadding = this.options.viewport && this.options.viewport.padding || 0\n    var viewportDimensions = this.getPosition(this.$viewport)\n\n    if (/right|left/.test(placement)) {\n      var topEdgeOffset    = pos.top - viewportPadding - viewportDimensions.scroll\n      var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight\n      if (topEdgeOffset < viewportDimensions.top) { // top overflow\n        delta.top = viewportDimensions.top - topEdgeOffset\n      } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\n        delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset\n      }\n    } else {\n      var leftEdgeOffset  = pos.left - viewportPadding\n      var rightEdgeOffset = pos.left + viewportPadding + actualWidth\n      if (leftEdgeOffset < viewportDimensions.left) { // left overflow\n        delta.left = viewportDimensions.left - leftEdgeOffset\n      } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow\n        delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset\n      }\n    }\n\n    return delta\n  }\n\n  Tooltip.prototype.getTitle = function () {\n    var title\n    var $e = this.$element\n    var o  = this.options\n\n    title = $e.attr('data-original-title')\n      || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)\n\n    return title\n  }\n\n  Tooltip.prototype.getUID = function (prefix) {\n    do prefix += ~~(Math.random() * 1000000)\n    while (document.getElementById(prefix))\n    return prefix\n  }\n\n  Tooltip.prototype.tip = function () {\n    if (!this.$tip) {\n      this.$tip = $(this.options.template)\n      if (this.$tip.length != 1) {\n        throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')\n      }\n    }\n    return this.$tip\n  }\n\n  Tooltip.prototype.arrow = function () {\n    return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))\n  }\n\n  Tooltip.prototype.enable = function () {\n    this.enabled = true\n  }\n\n  Tooltip.prototype.disable = function () {\n    this.enabled = false\n  }\n\n  Tooltip.prototype.toggleEnabled = function () {\n    this.enabled = !this.enabled\n  }\n\n  Tooltip.prototype.toggle = function (e) {\n    var self = this\n    if (e) {\n      self = $(e.currentTarget).data('bs.' + this.type)\n      if (!self) {\n        self = new this.constructor(e.currentTarget, this.getDelegateOptions())\n        $(e.currentTarget).data('bs.' + this.type, self)\n      }\n    }\n\n    if (e) {\n      self.inState.click = !self.inState.click\n      if (self.isInStateTrue()) self.enter(self)\n      else self.leave(self)\n    } else {\n      self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n    }\n  }\n\n  Tooltip.prototype.destroy = function () {\n    var that = this\n    clearTimeout(this.timeout)\n    this.hide(function () {\n      that.$element.off('.' + that.type).removeData('bs.' + that.type)\n      if (that.$tip) {\n        that.$tip.detach()\n      }\n      that.$tip = null\n      that.$arrow = null\n      that.$viewport = null\n      that.$element = null\n    })\n  }\n\n\n  // TOOLTIP PLUGIN DEFINITION\n  // =========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.tooltip')\n      var options = typeof option == 'object' && option\n\n      if (!data && /destroy|hide/.test(option)) return\n      if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.tooltip\n\n  $.fn.tooltip             = Plugin\n  $.fn.tooltip.Constructor = Tooltip\n\n\n  // TOOLTIP NO CONFLICT\n  // ===================\n\n  $.fn.tooltip.noConflict = function () {\n    $.fn.tooltip = old\n    return this\n  }\n\n}(jQuery);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/bootstrap/js/tooltip.js\n// module id = 696\n// module chunks = 0","/* ========================================================================\n * Bootstrap: popover.js v3.3.7\n * http://getbootstrap.com/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // POPOVER PUBLIC CLASS DEFINITION\n  // ===============================\n\n  var Popover = function (element, options) {\n    this.init('popover', element, options)\n  }\n\n  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n  Popover.VERSION  = '3.3.7'\n\n  Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n    placement: 'right',\n    trigger: 'click',\n    content: '',\n    template: '<div class=\"popover\" role=\"tooltip\"><div class=\"arrow\"></div><h3 class=\"popover-title\"></h3><div class=\"popover-content\"></div></div>'\n  })\n\n\n  // NOTE: POPOVER EXTENDS tooltip.js\n  // ================================\n\n  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n  Popover.prototype.constructor = Popover\n\n  Popover.prototype.getDefaults = function () {\n    return Popover.DEFAULTS\n  }\n\n  Popover.prototype.setContent = function () {\n    var $tip    = this.tip()\n    var title   = this.getTitle()\n    var content = this.getContent()\n\n    $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)\n    $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events\n      this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'\n    ](content)\n\n    $tip.removeClass('fade top bottom left right in')\n\n    // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n    // this manually by checking the contents.\n    if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n  }\n\n  Popover.prototype.hasContent = function () {\n    return this.getTitle() || this.getContent()\n  }\n\n  Popover.prototype.getContent = function () {\n    var $e = this.$element\n    var o  = this.options\n\n    return $e.attr('data-content')\n      || (typeof o.content == 'function' ?\n            o.content.call($e[0]) :\n            o.content)\n  }\n\n  Popover.prototype.arrow = function () {\n    return (this.$arrow = this.$arrow || this.tip().find('.arrow'))\n  }\n\n\n  // POPOVER PLUGIN DEFINITION\n  // =========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.popover')\n      var options = typeof option == 'object' && option\n\n      if (!data && /destroy|hide/.test(option)) return\n      if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.popover\n\n  $.fn.popover             = Plugin\n  $.fn.popover.Constructor = Popover\n\n\n  // POPOVER NO CONFLICT\n  // ===================\n\n  $.fn.popover.noConflict = function () {\n    $.fn.popover = old\n    return this\n  }\n\n}(jQuery);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/bootstrap/js/popover.js\n// module id = 697\n// module chunks = 0","/* ========================================================================\n * Bootstrap: scrollspy.js v3.3.7\n * http://getbootstrap.com/javascript/#scrollspy\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // SCROLLSPY CLASS DEFINITION\n  // ==========================\n\n  function ScrollSpy(element, options) {\n    this.$body          = $(document.body)\n    this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)\n    this.options        = $.extend({}, ScrollSpy.DEFAULTS, options)\n    this.selector       = (this.options.target || '') + ' .nav li > a'\n    this.offsets        = []\n    this.targets        = []\n    this.activeTarget   = null\n    this.scrollHeight   = 0\n\n    this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))\n    this.refresh()\n    this.process()\n  }\n\n  ScrollSpy.VERSION  = '3.3.7'\n\n  ScrollSpy.DEFAULTS = {\n    offset: 10\n  }\n\n  ScrollSpy.prototype.getScrollHeight = function () {\n    return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)\n  }\n\n  ScrollSpy.prototype.refresh = function () {\n    var that          = this\n    var offsetMethod  = 'offset'\n    var offsetBase    = 0\n\n    this.offsets      = []\n    this.targets      = []\n    this.scrollHeight = this.getScrollHeight()\n\n    if (!$.isWindow(this.$scrollElement[0])) {\n      offsetMethod = 'position'\n      offsetBase   = this.$scrollElement.scrollTop()\n    }\n\n    this.$body\n      .find(this.selector)\n      .map(function () {\n        var $el   = $(this)\n        var href  = $el.data('target') || $el.attr('href')\n        var $href = /^#./.test(href) && $(href)\n\n        return ($href\n          && $href.length\n          && $href.is(':visible')\n          && [[$href[offsetMethod]().top + offsetBase, href]]) || null\n      })\n      .sort(function (a, b) { return a[0] - b[0] })\n      .each(function () {\n        that.offsets.push(this[0])\n        that.targets.push(this[1])\n      })\n  }\n\n  ScrollSpy.prototype.process = function () {\n    var scrollTop    = this.$scrollElement.scrollTop() + this.options.offset\n    var scrollHeight = this.getScrollHeight()\n    var maxScroll    = this.options.offset + scrollHeight - this.$scrollElement.height()\n    var offsets      = this.offsets\n    var targets      = this.targets\n    var activeTarget = this.activeTarget\n    var i\n\n    if (this.scrollHeight != scrollHeight) {\n      this.refresh()\n    }\n\n    if (scrollTop >= maxScroll) {\n      return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)\n    }\n\n    if (activeTarget && scrollTop < offsets[0]) {\n      this.activeTarget = null\n      return this.clear()\n    }\n\n    for (i = offsets.length; i--;) {\n      activeTarget != targets[i]\n        && scrollTop >= offsets[i]\n        && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])\n        && this.activate(targets[i])\n    }\n  }\n\n  ScrollSpy.prototype.activate = function (target) {\n    this.activeTarget = target\n\n    this.clear()\n\n    var selector = this.selector +\n      '[data-target=\"' + target + '\"],' +\n      this.selector + '[href=\"' + target + '\"]'\n\n    var active = $(selector)\n      .parents('li')\n      .addClass('active')\n\n    if (active.parent('.dropdown-menu').length) {\n      active = active\n        .closest('li.dropdown')\n        .addClass('active')\n    }\n\n    active.trigger('activate.bs.scrollspy')\n  }\n\n  ScrollSpy.prototype.clear = function () {\n    $(this.selector)\n      .parentsUntil(this.options.target, '.active')\n      .removeClass('active')\n  }\n\n\n  // SCROLLSPY PLUGIN DEFINITION\n  // ===========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.scrollspy')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.scrollspy\n\n  $.fn.scrollspy             = Plugin\n  $.fn.scrollspy.Constructor = ScrollSpy\n\n\n  // SCROLLSPY NO CONFLICT\n  // =====================\n\n  $.fn.scrollspy.noConflict = function () {\n    $.fn.scrollspy = old\n    return this\n  }\n\n\n  // SCROLLSPY DATA-API\n  // ==================\n\n  $(window).on('load.bs.scrollspy.data-api', function () {\n    $('[data-spy=\"scroll\"]').each(function () {\n      var $spy = $(this)\n      Plugin.call($spy, $spy.data())\n    })\n  })\n\n}(jQuery);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/bootstrap/js/scrollspy.js\n// module id = 698\n// module chunks = 0","/* ========================================================================\n * Bootstrap: tab.js v3.3.7\n * http://getbootstrap.com/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // TAB CLASS DEFINITION\n  // ====================\n\n  var Tab = function (element) {\n    // jscs:disable requireDollarBeforejQueryAssignment\n    this.element = $(element)\n    // jscs:enable requireDollarBeforejQueryAssignment\n  }\n\n  Tab.VERSION = '3.3.7'\n\n  Tab.TRANSITION_DURATION = 150\n\n  Tab.prototype.show = function () {\n    var $this    = this.element\n    var $ul      = $this.closest('ul:not(.dropdown-menu)')\n    var selector = $this.data('target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    if ($this.parent('li').hasClass('active')) return\n\n    var $previous = $ul.find('.active:last a')\n    var hideEvent = $.Event('hide.bs.tab', {\n      relatedTarget: $this[0]\n    })\n    var showEvent = $.Event('show.bs.tab', {\n      relatedTarget: $previous[0]\n    })\n\n    $previous.trigger(hideEvent)\n    $this.trigger(showEvent)\n\n    if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return\n\n    var $target = $(selector)\n\n    this.activate($this.closest('li'), $ul)\n    this.activate($target, $target.parent(), function () {\n      $previous.trigger({\n        type: 'hidden.bs.tab',\n        relatedTarget: $this[0]\n      })\n      $this.trigger({\n        type: 'shown.bs.tab',\n        relatedTarget: $previous[0]\n      })\n    })\n  }\n\n  Tab.prototype.activate = function (element, container, callback) {\n    var $active    = container.find('> .active')\n    var transition = callback\n      && $.support.transition\n      && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)\n\n    function next() {\n      $active\n        .removeClass('active')\n        .find('> .dropdown-menu > .active')\n          .removeClass('active')\n        .end()\n        .find('[data-toggle=\"tab\"]')\n          .attr('aria-expanded', false)\n\n      element\n        .addClass('active')\n        .find('[data-toggle=\"tab\"]')\n          .attr('aria-expanded', true)\n\n      if (transition) {\n        element[0].offsetWidth // reflow for transition\n        element.addClass('in')\n      } else {\n        element.removeClass('fade')\n      }\n\n      if (element.parent('.dropdown-menu').length) {\n        element\n          .closest('li.dropdown')\n            .addClass('active')\n          .end()\n          .find('[data-toggle=\"tab\"]')\n            .attr('aria-expanded', true)\n      }\n\n      callback && callback()\n    }\n\n    $active.length && transition ?\n      $active\n        .one('bsTransitionEnd', next)\n        .emulateTransitionEnd(Tab.TRANSITION_DURATION) :\n      next()\n\n    $active.removeClass('in')\n  }\n\n\n  // TAB PLUGIN DEFINITION\n  // =====================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.tab')\n\n      if (!data) $this.data('bs.tab', (data = new Tab(this)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.tab\n\n  $.fn.tab             = Plugin\n  $.fn.tab.Constructor = Tab\n\n\n  // TAB NO CONFLICT\n  // ===============\n\n  $.fn.tab.noConflict = function () {\n    $.fn.tab = old\n    return this\n  }\n\n\n  // TAB DATA-API\n  // ============\n\n  var clickHandler = function (e) {\n    e.preventDefault()\n    Plugin.call($(this), 'show')\n  }\n\n  $(document)\n    .on('click.bs.tab.data-api', '[data-toggle=\"tab\"]', clickHandler)\n    .on('click.bs.tab.data-api', '[data-toggle=\"pill\"]', clickHandler)\n\n}(jQuery);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/bootstrap/js/tab.js\n// module id = 699\n// module chunks = 0","/* ========================================================================\n * Bootstrap: affix.js v3.3.7\n * http://getbootstrap.com/javascript/#affix\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // AFFIX CLASS DEFINITION\n  // ======================\n\n  var Affix = function (element, options) {\n    this.options = $.extend({}, Affix.DEFAULTS, options)\n\n    this.$target = $(this.options.target)\n      .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))\n      .on('click.bs.affix.data-api',  $.proxy(this.checkPositionWithEventLoop, this))\n\n    this.$element     = $(element)\n    this.affixed      = null\n    this.unpin        = null\n    this.pinnedOffset = null\n\n    this.checkPosition()\n  }\n\n  Affix.VERSION  = '3.3.7'\n\n  Affix.RESET    = 'affix affix-top affix-bottom'\n\n  Affix.DEFAULTS = {\n    offset: 0,\n    target: window\n  }\n\n  Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {\n    var scrollTop    = this.$target.scrollTop()\n    var position     = this.$element.offset()\n    var targetHeight = this.$target.height()\n\n    if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false\n\n    if (this.affixed == 'bottom') {\n      if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'\n      return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'\n    }\n\n    var initializing   = this.affixed == null\n    var colliderTop    = initializing ? scrollTop : position.top\n    var colliderHeight = initializing ? targetHeight : height\n\n    if (offsetTop != null && scrollTop <= offsetTop) return 'top'\n    if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'\n\n    return false\n  }\n\n  Affix.prototype.getPinnedOffset = function () {\n    if (this.pinnedOffset) return this.pinnedOffset\n    this.$element.removeClass(Affix.RESET).addClass('affix')\n    var scrollTop = this.$target.scrollTop()\n    var position  = this.$element.offset()\n    return (this.pinnedOffset = position.top - scrollTop)\n  }\n\n  Affix.prototype.checkPositionWithEventLoop = function () {\n    setTimeout($.proxy(this.checkPosition, this), 1)\n  }\n\n  Affix.prototype.checkPosition = function () {\n    if (!this.$element.is(':visible')) return\n\n    var height       = this.$element.height()\n    var offset       = this.options.offset\n    var offsetTop    = offset.top\n    var offsetBottom = offset.bottom\n    var scrollHeight = Math.max($(document).height(), $(document.body).height())\n\n    if (typeof offset != 'object')         offsetBottom = offsetTop = offset\n    if (typeof offsetTop == 'function')    offsetTop    = offset.top(this.$element)\n    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)\n\n    var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)\n\n    if (this.affixed != affix) {\n      if (this.unpin != null) this.$element.css('top', '')\n\n      var affixType = 'affix' + (affix ? '-' + affix : '')\n      var e         = $.Event(affixType + '.bs.affix')\n\n      this.$element.trigger(e)\n\n      if (e.isDefaultPrevented()) return\n\n      this.affixed = affix\n      this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null\n\n      this.$element\n        .removeClass(Affix.RESET)\n        .addClass(affixType)\n        .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')\n    }\n\n    if (affix == 'bottom') {\n      this.$element.offset({\n        top: scrollHeight - height - offsetBottom\n      })\n    }\n  }\n\n\n  // AFFIX PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.affix')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.affix\n\n  $.fn.affix             = Plugin\n  $.fn.affix.Constructor = Affix\n\n\n  // AFFIX NO CONFLICT\n  // =================\n\n  $.fn.affix.noConflict = function () {\n    $.fn.affix = old\n    return this\n  }\n\n\n  // AFFIX DATA-API\n  // ==============\n\n  $(window).on('load', function () {\n    $('[data-spy=\"affix\"]').each(function () {\n      var $spy = $(this)\n      var data = $spy.data()\n\n      data.offset = data.offset || {}\n\n      if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom\n      if (data.offsetTop    != null) data.offset.top    = data.offsetTop\n\n      Plugin.call($spy, data)\n    })\n  })\n\n}(jQuery);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/bootstrap/js/affix.js\n// module id = 700\n// module chunks = 0","// removed by extract-text-webpack-plugin\nmodule.exports = {\"navbar\":\"navbar\",\"btn\":\"btn\",\"caret\":\"caret\",\"dropup\":\"dropup\",\"label\":\"label\",\"table\":\"table\",\"table-bordered\":\"table-bordered\",\"glyphicon\":\"glyphicon\",\"glyphicon-asterisk\":\"glyphicon-asterisk\",\"glyphicon-plus\":\"glyphicon-plus\",\"glyphicon-euro\":\"glyphicon-euro\",\"glyphicon-eur\":\"glyphicon-eur\",\"glyphicon-minus\":\"glyphicon-minus\",\"glyphicon-cloud\":\"glyphicon-cloud\",\"glyphicon-envelope\":\"glyphicon-envelope\",\"glyphicon-pencil\":\"glyphicon-pencil\",\"glyphicon-glass\":\"glyphicon-glass\",\"glyphicon-music\":\"glyphicon-music\",\"glyphicon-search\":\"glyphicon-search\",\"glyphicon-heart\":\"glyphicon-heart\",\"glyphicon-star\":\"glyphicon-star\",\"glyphicon-star-empty\":\"glyphicon-star-empty\",\"glyphicon-user\":\"glyphicon-user\",\"glyphicon-film\":\"glyphicon-film\",\"glyphicon-th-large\":\"glyphicon-th-large\",\"glyphicon-th\":\"glyphicon-th\",\"glyphicon-th-list\":\"glyphicon-th-list\",\"glyphicon-ok\":\"glyphicon-ok\",\"glyphicon-remove\":\"glyphicon-remove\",\"glyphicon-zoom-in\":\"glyphicon-zoom-in\",\"glyphicon-zoom-out\":\"glyphicon-zoom-out\",\"glyphicon-off\":\"glyphicon-off\",\"glyphicon-signal\":\"glyphicon-signal\",\"glyphicon-cog\":\"glyphicon-cog\",\"glyphicon-trash\":\"glyphicon-trash\",\"glyphicon-home\":\"glyphicon-home\",\"glyphicon-file\":\"glyphicon-file\",\"glyphicon-time\":\"glyphicon-time\",\"glyphicon-road\":\"glyphicon-road\",\"glyphicon-download-alt\":\"glyphicon-download-alt\",\"glyphicon-download\":\"glyphicon-download\",\"glyphicon-upload\":\"glyphicon-upload\",\"glyphicon-inbox\":\"glyphicon-inbox\",\"glyphicon-play-circle\":\"glyphicon-play-circle\",\"glyphicon-repeat\":\"glyphicon-repeat\",\"glyphicon-refresh\":\"glyphicon-refresh\",\"glyphicon-list-alt\":\"glyphicon-list-alt\",\"glyphicon-lock\":\"glyphicon-lock\",\"glyphicon-flag\":\"glyphicon-flag\",\"glyphicon-headphones\":\"glyphicon-headphones\",\"glyphicon-volume-off\":\"glyphicon-volume-off\",\"glyphicon-volume-down\":\"glyphicon-volume-down\",\"glyphicon-volume-up\":\"glyphicon-volume-up\",\"glyphicon-qrcode\":\"glyphicon-qrcode\",\"glyphicon-barcode\":\"glyphicon-barcode\",\"glyphicon-tag\":\"glyphicon-tag\",\"glyphicon-tags\":\"glyphicon-tags\",\"glyphicon-book\":\"glyphicon-book\",\"glyphicon-bookmark\":\"glyphicon-bookmark\",\"glyphicon-print\":\"glyphicon-print\",\"glyphicon-camera\":\"glyphicon-camera\",\"glyphicon-font\":\"glyphicon-font\",\"glyphicon-bold\":\"glyphicon-bold\",\"glyphicon-italic\":\"glyphicon-italic\",\"glyphicon-text-height\":\"glyphicon-text-height\",\"glyphicon-text-width\":\"glyphicon-text-width\",\"glyphicon-align-left\":\"glyphicon-align-left\",\"glyphicon-align-center\":\"glyphicon-align-center\",\"glyphicon-align-right\":\"glyphicon-align-right\",\"glyphicon-align-justify\":\"glyphicon-align-justify\",\"glyphicon-list\":\"glyphicon-list\",\"glyphicon-indent-left\":\"glyphicon-indent-left\",\"glyphicon-indent-right\":\"glyphicon-indent-right\",\"glyphicon-facetime-video\":\"glyphicon-facetime-video\",\"glyphicon-picture\":\"glyphicon-picture\",\"glyphicon-map-marker\":\"glyphicon-map-marker\",\"glyphicon-adjust\":\"glyphicon-adjust\",\"glyphicon-tint\":\"glyphicon-tint\",\"glyphicon-edit\":\"glyphicon-edit\",\"glyphicon-share\":\"glyphicon-share\",\"glyphicon-check\":\"glyphicon-check\",\"glyphicon-move\":\"glyphicon-move\",\"glyphicon-step-backward\":\"glyphicon-step-backward\",\"glyphicon-fast-backward\":\"glyphicon-fast-backward\",\"glyphicon-backward\":\"glyphicon-backward\",\"glyphicon-play\":\"glyphicon-play\",\"glyphicon-pause\":\"glyphicon-pause\",\"glyphicon-stop\":\"glyphicon-stop\",\"glyphicon-forward\":\"glyphicon-forward\",\"glyphicon-fast-forward\":\"glyphicon-fast-forward\",\"glyphicon-step-forward\":\"glyphicon-step-forward\",\"glyphicon-eject\":\"glyphicon-eject\",\"glyphicon-chevron-left\":\"glyphicon-chevron-left\",\"glyphicon-chevron-right\":\"glyphicon-chevron-right\",\"glyphicon-plus-sign\":\"glyphicon-plus-sign\",\"glyphicon-minus-sign\":\"glyphicon-minus-sign\",\"glyphicon-remove-sign\":\"glyphicon-remove-sign\",\"glyphicon-ok-sign\":\"glyphicon-ok-sign\",\"glyphicon-question-sign\":\"glyphicon-question-sign\",\"glyphicon-info-sign\":\"glyphicon-info-sign\",\"glyphicon-screenshot\":\"glyphicon-screenshot\",\"glyphicon-remove-circle\":\"glyphicon-remove-circle\",\"glyphicon-ok-circle\":\"glyphicon-ok-circle\",\"glyphicon-ban-circle\":\"glyphicon-ban-circle\",\"glyphicon-arrow-left\":\"glyphicon-arrow-left\",\"glyphicon-arrow-right\":\"glyphicon-arrow-right\",\"glyphicon-arrow-up\":\"glyphicon-arrow-up\",\"glyphicon-arrow-down\":\"glyphicon-arrow-down\",\"glyphicon-share-alt\":\"glyphicon-share-alt\",\"glyphicon-resize-full\":\"glyphicon-resize-full\",\"glyphicon-resize-small\":\"glyphicon-resize-small\",\"glyphicon-exclamation-sign\":\"glyphicon-exclamation-sign\",\"glyphicon-gift\":\"glyphicon-gift\",\"glyphicon-leaf\":\"glyphicon-leaf\",\"glyphicon-fire\":\"glyphicon-fire\",\"glyphicon-eye-open\":\"glyphicon-eye-open\",\"glyphicon-eye-close\":\"glyphicon-eye-close\",\"glyphicon-warning-sign\":\"glyphicon-warning-sign\",\"glyphicon-plane\":\"glyphicon-plane\",\"glyphicon-calendar\":\"glyphicon-calendar\",\"glyphicon-random\":\"glyphicon-random\",\"glyphicon-comment\":\"glyphicon-comment\",\"glyphicon-magnet\":\"glyphicon-magnet\",\"glyphicon-chevron-up\":\"glyphicon-chevron-up\",\"glyphicon-chevron-down\":\"glyphicon-chevron-down\",\"glyphicon-retweet\":\"glyphicon-retweet\",\"glyphicon-shopping-cart\":\"glyphicon-shopping-cart\",\"glyphicon-folder-close\":\"glyphicon-folder-close\",\"glyphicon-folder-open\":\"glyphicon-folder-open\",\"glyphicon-resize-vertical\":\"glyphicon-resize-vertical\",\"glyphicon-resize-horizontal\":\"glyphicon-resize-horizontal\",\"glyphicon-hdd\":\"glyphicon-hdd\",\"glyphicon-bullhorn\":\"glyphicon-bullhorn\",\"glyphicon-bell\":\"glyphicon-bell\",\"glyphicon-certificate\":\"glyphicon-certificate\",\"glyphicon-thumbs-up\":\"glyphicon-thumbs-up\",\"glyphicon-thumbs-down\":\"glyphicon-thumbs-down\",\"glyphicon-hand-right\":\"glyphicon-hand-right\",\"glyphicon-hand-left\":\"glyphicon-hand-left\",\"glyphicon-hand-up\":\"glyphicon-hand-up\",\"glyphicon-hand-down\":\"glyphicon-hand-down\",\"glyphicon-circle-arrow-right\":\"glyphicon-circle-arrow-right\",\"glyphicon-circle-arrow-left\":\"glyphicon-circle-arrow-left\",\"glyphicon-circle-arrow-up\":\"glyphicon-circle-arrow-up\",\"glyphicon-circle-arrow-down\":\"glyphicon-circle-arrow-down\",\"glyphicon-globe\":\"glyphicon-globe\",\"glyphicon-wrench\":\"glyphicon-wrench\",\"glyphicon-tasks\":\"glyphicon-tasks\",\"glyphicon-filter\":\"glyphicon-filter\",\"glyphicon-briefcase\":\"glyphicon-briefcase\",\"glyphicon-fullscreen\":\"glyphicon-fullscreen\",\"glyphicon-dashboard\":\"glyphicon-dashboard\",\"glyphicon-paperclip\":\"glyphicon-paperclip\",\"glyphicon-heart-empty\":\"glyphicon-heart-empty\",\"glyphicon-link\":\"glyphicon-link\",\"glyphicon-phone\":\"glyphicon-phone\",\"glyphicon-pushpin\":\"glyphicon-pushpin\",\"glyphicon-usd\":\"glyphicon-usd\",\"glyphicon-gbp\":\"glyphicon-gbp\",\"glyphicon-sort\":\"glyphicon-sort\",\"glyphicon-sort-by-alphabet\":\"glyphicon-sort-by-alphabet\",\"glyphicon-sort-by-alphabet-alt\":\"glyphicon-sort-by-alphabet-alt\",\"glyphicon-sort-by-order\":\"glyphicon-sort-by-order\",\"glyphicon-sort-by-order-alt\":\"glyphicon-sort-by-order-alt\",\"glyphicon-sort-by-attributes\":\"glyphicon-sort-by-attributes\",\"glyphicon-sort-by-attributes-alt\":\"glyphicon-sort-by-attributes-alt\",\"glyphicon-unchecked\":\"glyphicon-unchecked\",\"glyphicon-expand\":\"glyphicon-expand\",\"glyphicon-collapse-down\":\"glyphicon-collapse-down\",\"glyphicon-collapse-up\":\"glyphicon-collapse-up\",\"glyphicon-log-in\":\"glyphicon-log-in\",\"glyphicon-flash\":\"glyphicon-flash\",\"glyphicon-log-out\":\"glyphicon-log-out\",\"glyphicon-new-window\":\"glyphicon-new-window\",\"glyphicon-record\":\"glyphicon-record\",\"glyphicon-save\":\"glyphicon-save\",\"glyphicon-open\":\"glyphicon-open\",\"glyphicon-saved\":\"glyphicon-saved\",\"glyphicon-import\":\"glyphicon-import\",\"glyphicon-export\":\"glyphicon-export\",\"glyphicon-send\":\"glyphicon-send\",\"glyphicon-floppy-disk\":\"glyphicon-floppy-disk\",\"glyphicon-floppy-saved\":\"glyphicon-floppy-saved\",\"glyphicon-floppy-remove\":\"glyphicon-floppy-remove\",\"glyphicon-floppy-save\":\"glyphicon-floppy-save\",\"glyphicon-floppy-open\":\"glyphicon-floppy-open\",\"glyphicon-credit-card\":\"glyphicon-credit-card\",\"glyphicon-transfer\":\"glyphicon-transfer\",\"glyphicon-cutlery\":\"glyphicon-cutlery\",\"glyphicon-header\":\"glyphicon-header\",\"glyphicon-compressed\":\"glyphicon-compressed\",\"glyphicon-earphone\":\"glyphicon-earphone\",\"glyphicon-phone-alt\":\"glyphicon-phone-alt\",\"glyphicon-tower\":\"glyphicon-tower\",\"glyphicon-stats\":\"glyphicon-stats\",\"glyphicon-sd-video\":\"glyphicon-sd-video\",\"glyphicon-hd-video\":\"glyphicon-hd-video\",\"glyphicon-subtitles\":\"glyphicon-subtitles\",\"glyphicon-sound-stereo\":\"glyphicon-sound-stereo\",\"glyphicon-sound-dolby\":\"glyphicon-sound-dolby\",\"glyphicon-sound-5-1\":\"glyphicon-sound-5-1\",\"glyphicon-sound-6-1\":\"glyphicon-sound-6-1\",\"glyphicon-sound-7-1\":\"glyphicon-sound-7-1\",\"glyphicon-copyright-mark\":\"glyphicon-copyright-mark\",\"glyphicon-registration-mark\":\"glyphicon-registration-mark\",\"glyphicon-cloud-download\":\"glyphicon-cloud-download\",\"glyphicon-cloud-upload\":\"glyphicon-cloud-upload\",\"glyphicon-tree-conifer\":\"glyphicon-tree-conifer\",\"glyphicon-tree-deciduous\":\"glyphicon-tree-deciduous\",\"glyphicon-cd\":\"glyphicon-cd\",\"glyphicon-save-file\":\"glyphicon-save-file\",\"glyphicon-open-file\":\"glyphicon-open-file\",\"glyphicon-level-up\":\"glyphicon-level-up\",\"glyphicon-copy\":\"glyphicon-copy\",\"glyphicon-paste\":\"glyphicon-paste\",\"glyphicon-alert\":\"glyphicon-alert\",\"glyphicon-equalizer\":\"glyphicon-equalizer\",\"glyphicon-king\":\"glyphicon-king\",\"glyphicon-queen\":\"glyphicon-queen\",\"glyphicon-pawn\":\"glyphicon-pawn\",\"glyphicon-bishop\":\"glyphicon-bishop\",\"glyphicon-knight\":\"glyphicon-knight\",\"glyphicon-baby-formula\":\"glyphicon-baby-formula\",\"glyphicon-tent\":\"glyphicon-tent\",\"glyphicon-blackboard\":\"glyphicon-blackboard\",\"glyphicon-bed\":\"glyphicon-bed\",\"glyphicon-apple\":\"glyphicon-apple\",\"glyphicon-erase\":\"glyphicon-erase\",\"glyphicon-hourglass\":\"glyphicon-hourglass\",\"glyphicon-lamp\":\"glyphicon-lamp\",\"glyphicon-duplicate\":\"glyphicon-duplicate\",\"glyphicon-piggy-bank\":\"glyphicon-piggy-bank\",\"glyphicon-scissors\":\"glyphicon-scissors\",\"glyphicon-bitcoin\":\"glyphicon-bitcoin\",\"glyphicon-btc\":\"glyphicon-btc\",\"glyphicon-xbt\":\"glyphicon-xbt\",\"glyphicon-yen\":\"glyphicon-yen\",\"glyphicon-jpy\":\"glyphicon-jpy\",\"glyphicon-ruble\":\"glyphicon-ruble\",\"glyphicon-rub\":\"glyphicon-rub\",\"glyphicon-scale\":\"glyphicon-scale\",\"glyphicon-ice-lolly\":\"glyphicon-ice-lolly\",\"glyphicon-ice-lolly-tasted\":\"glyphicon-ice-lolly-tasted\",\"glyphicon-education\":\"glyphicon-education\",\"glyphicon-option-horizontal\":\"glyphicon-option-horizontal\",\"glyphicon-option-vertical\":\"glyphicon-option-vertical\",\"glyphicon-menu-hamburger\":\"glyphicon-menu-hamburger\",\"glyphicon-modal-window\":\"glyphicon-modal-window\",\"glyphicon-oil\":\"glyphicon-oil\",\"glyphicon-grain\":\"glyphicon-grain\",\"glyphicon-sunglasses\":\"glyphicon-sunglasses\",\"glyphicon-text-size\":\"glyphicon-text-size\",\"glyphicon-text-color\":\"glyphicon-text-color\",\"glyphicon-text-background\":\"glyphicon-text-background\",\"glyphicon-object-align-top\":\"glyphicon-object-align-top\",\"glyphicon-object-align-bottom\":\"glyphicon-object-align-bottom\",\"glyphicon-object-align-horizontal\":\"glyphicon-object-align-horizontal\",\"glyphicon-object-align-left\":\"glyphicon-object-align-left\",\"glyphicon-object-align-vertical\":\"glyphicon-object-align-vertical\",\"glyphicon-object-align-right\":\"glyphicon-object-align-right\",\"glyphicon-triangle-right\":\"glyphicon-triangle-right\",\"glyphicon-triangle-left\":\"glyphicon-triangle-left\",\"glyphicon-triangle-bottom\":\"glyphicon-triangle-bottom\",\"glyphicon-triangle-top\":\"glyphicon-triangle-top\",\"glyphicon-console\":\"glyphicon-console\",\"glyphicon-superscript\":\"glyphicon-superscript\",\"glyphicon-subscript\":\"glyphicon-subscript\",\"glyphicon-menu-left\":\"glyphicon-menu-left\",\"glyphicon-menu-right\":\"glyphicon-menu-right\",\"glyphicon-menu-down\":\"glyphicon-menu-down\",\"glyphicon-menu-up\":\"glyphicon-menu-up\",\"img-responsive\":\"img-responsive\",\"thumbnail\":\"thumbnail\",\"carousel-inner\":\"carousel-inner\",\"item\":\"item\",\"img-rounded\":\"img-rounded\",\"img-thumbnail\":\"img-thumbnail\",\"img-circle\":\"img-circle\",\"sr-only\":\"sr-only\",\"sr-only-focusable\":\"sr-only-focusable\",\"h1\":\"h1\",\"h2\":\"h2\",\"h3\":\"h3\",\"h4\":\"h4\",\"h5\":\"h5\",\"h6\":\"h6\",\"small\":\"small\",\"lead\":\"lead\",\"mark\":\"mark\",\"text-left\":\"text-left\",\"text-right\":\"text-right\",\"text-center\":\"text-center\",\"text-justify\":\"text-justify\",\"text-nowrap\":\"text-nowrap\",\"text-lowercase\":\"text-lowercase\",\"text-uppercase\":\"text-uppercase\",\"text-capitalize\":\"text-capitalize\",\"text-muted\":\"text-muted\",\"text-primary\":\"text-primary\",\"text-success\":\"text-success\",\"text-info\":\"text-info\",\"text-warning\":\"text-warning\",\"text-danger\":\"text-danger\",\"bg-primary\":\"bg-primary\",\"bg-success\":\"bg-success\",\"bg-info\":\"bg-info\",\"bg-warning\":\"bg-warning\",\"bg-danger\":\"bg-danger\",\"page-header\":\"page-header\",\"list-unstyled\":\"list-unstyled\",\"list-inline\":\"list-inline\",\"dl-horizontal\":\"dl-horizontal\",\"initialism\":\"initialism\",\"blockquote-reverse\":\"blockquote-reverse\",\"pull-right\":\"pull-right\",\"pre-scrollable\":\"pre-scrollable\",\"container\":\"container\",\"container-fluid\":\"container-fluid\",\"row\":\"row\",\"col-xs-1\":\"col-xs-1\",\"col-sm-1\":\"col-sm-1\",\"col-md-1\":\"col-md-1\",\"col-lg-1\":\"col-lg-1\",\"col-xs-2\":\"col-xs-2\",\"col-sm-2\":\"col-sm-2\",\"col-md-2\":\"col-md-2\",\"col-lg-2\":\"col-lg-2\",\"col-xs-3\":\"col-xs-3\",\"col-sm-3\":\"col-sm-3\",\"col-md-3\":\"col-md-3\",\"col-lg-3\":\"col-lg-3\",\"col-xs-4\":\"col-xs-4\",\"col-sm-4\":\"col-sm-4\",\"col-md-4\":\"col-md-4\",\"col-lg-4\":\"col-lg-4\",\"col-xs-5\":\"col-xs-5\",\"col-sm-5\":\"col-sm-5\",\"col-md-5\":\"col-md-5\",\"col-lg-5\":\"col-lg-5\",\"col-xs-6\":\"col-xs-6\",\"col-sm-6\":\"col-sm-6\",\"col-md-6\":\"col-md-6\",\"col-lg-6\":\"col-lg-6\",\"col-xs-7\":\"col-xs-7\",\"col-sm-7\":\"col-sm-7\",\"col-md-7\":\"col-md-7\",\"col-lg-7\":\"col-lg-7\",\"col-xs-8\":\"col-xs-8\",\"col-sm-8\":\"col-sm-8\",\"col-md-8\":\"col-md-8\",\"col-lg-8\":\"col-lg-8\",\"col-xs-9\":\"col-xs-9\",\"col-sm-9\":\"col-sm-9\",\"col-md-9\":\"col-md-9\",\"col-lg-9\":\"col-lg-9\",\"col-xs-10\":\"col-xs-10\",\"col-sm-10\":\"col-sm-10\",\"col-md-10\":\"col-md-10\",\"col-lg-10\":\"col-lg-10\",\"col-xs-11\":\"col-xs-11\",\"col-sm-11\":\"col-sm-11\",\"col-md-11\":\"col-md-11\",\"col-lg-11\":\"col-lg-11\",\"col-xs-12\":\"col-xs-12\",\"col-sm-12\":\"col-sm-12\",\"col-md-12\":\"col-md-12\",\"col-lg-12\":\"col-lg-12\",\"col-xs-pull-12\":\"col-xs-pull-12\",\"col-xs-pull-11\":\"col-xs-pull-11\",\"col-xs-pull-10\":\"col-xs-pull-10\",\"col-xs-pull-9\":\"col-xs-pull-9\",\"col-xs-pull-8\":\"col-xs-pull-8\",\"col-xs-pull-7\":\"col-xs-pull-7\",\"col-xs-pull-6\":\"col-xs-pull-6\",\"col-xs-pull-5\":\"col-xs-pull-5\",\"col-xs-pull-4\":\"col-xs-pull-4\",\"col-xs-pull-3\":\"col-xs-pull-3\",\"col-xs-pull-2\":\"col-xs-pull-2\",\"col-xs-pull-1\":\"col-xs-pull-1\",\"col-xs-pull-0\":\"col-xs-pull-0\",\"col-xs-push-12\":\"col-xs-push-12\",\"col-xs-push-11\":\"col-xs-push-11\",\"col-xs-push-10\":\"col-xs-push-10\",\"col-xs-push-9\":\"col-xs-push-9\",\"col-xs-push-8\":\"col-xs-push-8\",\"col-xs-push-7\":\"col-xs-push-7\",\"col-xs-push-6\":\"col-xs-push-6\",\"col-xs-push-5\":\"col-xs-push-5\",\"col-xs-push-4\":\"col-xs-push-4\",\"col-xs-push-3\":\"col-xs-push-3\",\"col-xs-push-2\":\"col-xs-push-2\",\"col-xs-push-1\":\"col-xs-push-1\",\"col-xs-push-0\":\"col-xs-push-0\",\"col-xs-offset-12\":\"col-xs-offset-12\",\"col-xs-offset-11\":\"col-xs-offset-11\",\"col-xs-offset-10\":\"col-xs-offset-10\",\"col-xs-offset-9\":\"col-xs-offset-9\",\"col-xs-offset-8\":\"col-xs-offset-8\",\"col-xs-offset-7\":\"col-xs-offset-7\",\"col-xs-offset-6\":\"col-xs-offset-6\",\"col-xs-offset-5\":\"col-xs-offset-5\",\"col-xs-offset-4\":\"col-xs-offset-4\",\"col-xs-offset-3\":\"col-xs-offset-3\",\"col-xs-offset-2\":\"col-xs-offset-2\",\"col-xs-offset-1\":\"col-xs-offset-1\",\"col-xs-offset-0\":\"col-xs-offset-0\",\"col-sm-pull-12\":\"col-sm-pull-12\",\"col-sm-pull-11\":\"col-sm-pull-11\",\"col-sm-pull-10\":\"col-sm-pull-10\",\"col-sm-pull-9\":\"col-sm-pull-9\",\"col-sm-pull-8\":\"col-sm-pull-8\",\"col-sm-pull-7\":\"col-sm-pull-7\",\"col-sm-pull-6\":\"col-sm-pull-6\",\"col-sm-pull-5\":\"col-sm-pull-5\",\"col-sm-pull-4\":\"col-sm-pull-4\",\"col-sm-pull-3\":\"col-sm-pull-3\",\"col-sm-pull-2\":\"col-sm-pull-2\",\"col-sm-pull-1\":\"col-sm-pull-1\",\"col-sm-pull-0\":\"col-sm-pull-0\",\"col-sm-push-12\":\"col-sm-push-12\",\"col-sm-push-11\":\"col-sm-push-11\",\"col-sm-push-10\":\"col-sm-push-10\",\"col-sm-push-9\":\"col-sm-push-9\",\"col-sm-push-8\":\"col-sm-push-8\",\"col-sm-push-7\":\"col-sm-push-7\",\"col-sm-push-6\":\"col-sm-push-6\",\"col-sm-push-5\":\"col-sm-push-5\",\"col-sm-push-4\":\"col-sm-push-4\",\"col-sm-push-3\":\"col-sm-push-3\",\"col-sm-push-2\":\"col-sm-push-2\",\"col-sm-push-1\":\"col-sm-push-1\",\"col-sm-push-0\":\"col-sm-push-0\",\"col-sm-offset-12\":\"col-sm-offset-12\",\"col-sm-offset-11\":\"col-sm-offset-11\",\"col-sm-offset-10\":\"col-sm-offset-10\",\"col-sm-offset-9\":\"col-sm-offset-9\",\"col-sm-offset-8\":\"col-sm-offset-8\",\"col-sm-offset-7\":\"col-sm-offset-7\",\"col-sm-offset-6\":\"col-sm-offset-6\",\"col-sm-offset-5\":\"col-sm-offset-5\",\"col-sm-offset-4\":\"col-sm-offset-4\",\"col-sm-offset-3\":\"col-sm-offset-3\",\"col-sm-offset-2\":\"col-sm-offset-2\",\"col-sm-offset-1\":\"col-sm-offset-1\",\"col-sm-offset-0\":\"col-sm-offset-0\",\"col-md-pull-12\":\"col-md-pull-12\",\"col-md-pull-11\":\"col-md-pull-11\",\"col-md-pull-10\":\"col-md-pull-10\",\"col-md-pull-9\":\"col-md-pull-9\",\"col-md-pull-8\":\"col-md-pull-8\",\"col-md-pull-7\":\"col-md-pull-7\",\"col-md-pull-6\":\"col-md-pull-6\",\"col-md-pull-5\":\"col-md-pull-5\",\"col-md-pull-4\":\"col-md-pull-4\",\"col-md-pull-3\":\"col-md-pull-3\",\"col-md-pull-2\":\"col-md-pull-2\",\"col-md-pull-1\":\"col-md-pull-1\",\"col-md-pull-0\":\"col-md-pull-0\",\"col-md-push-12\":\"col-md-push-12\",\"col-md-push-11\":\"col-md-push-11\",\"col-md-push-10\":\"col-md-push-10\",\"col-md-push-9\":\"col-md-push-9\",\"col-md-push-8\":\"col-md-push-8\",\"col-md-push-7\":\"col-md-push-7\",\"col-md-push-6\":\"col-md-push-6\",\"col-md-push-5\":\"col-md-push-5\",\"col-md-push-4\":\"col-md-push-4\",\"col-md-push-3\":\"col-md-push-3\",\"col-md-push-2\":\"col-md-push-2\",\"col-md-push-1\":\"col-md-push-1\",\"col-md-push-0\":\"col-md-push-0\",\"col-md-offset-12\":\"col-md-offset-12\",\"col-md-offset-11\":\"col-md-offset-11\",\"col-md-offset-10\":\"col-md-offset-10\",\"col-md-offset-9\":\"col-md-offset-9\",\"col-md-offset-8\":\"col-md-offset-8\",\"col-md-offset-7\":\"col-md-offset-7\",\"col-md-offset-6\":\"col-md-offset-6\",\"col-md-offset-5\":\"col-md-offset-5\",\"col-md-offset-4\":\"col-md-offset-4\",\"col-md-offset-3\":\"col-md-offset-3\",\"col-md-offset-2\":\"col-md-offset-2\",\"col-md-offset-1\":\"col-md-offset-1\",\"col-md-offset-0\":\"col-md-offset-0\",\"col-lg-pull-12\":\"col-lg-pull-12\",\"col-lg-pull-11\":\"col-lg-pull-11\",\"col-lg-pull-10\":\"col-lg-pull-10\",\"col-lg-pull-9\":\"col-lg-pull-9\",\"col-lg-pull-8\":\"col-lg-pull-8\",\"col-lg-pull-7\":\"col-lg-pull-7\",\"col-lg-pull-6\":\"col-lg-pull-6\",\"col-lg-pull-5\":\"col-lg-pull-5\",\"col-lg-pull-4\":\"col-lg-pull-4\",\"col-lg-pull-3\":\"col-lg-pull-3\",\"col-lg-pull-2\":\"col-lg-pull-2\",\"col-lg-pull-1\":\"col-lg-pull-1\",\"col-lg-pull-0\":\"col-lg-pull-0\",\"col-lg-push-12\":\"col-lg-push-12\",\"col-lg-push-11\":\"col-lg-push-11\",\"col-lg-push-10\":\"col-lg-push-10\",\"col-lg-push-9\":\"col-lg-push-9\",\"col-lg-push-8\":\"col-lg-push-8\",\"col-lg-push-7\":\"col-lg-push-7\",\"col-lg-push-6\":\"col-lg-push-6\",\"col-lg-push-5\":\"col-lg-push-5\",\"col-lg-push-4\":\"col-lg-push-4\",\"col-lg-push-3\":\"col-lg-push-3\",\"col-lg-push-2\":\"col-lg-push-2\",\"col-lg-push-1\":\"col-lg-push-1\",\"col-lg-push-0\":\"col-lg-push-0\",\"col-lg-offset-12\":\"col-lg-offset-12\",\"col-lg-offset-11\":\"col-lg-offset-11\",\"col-lg-offset-10\":\"col-lg-offset-10\",\"col-lg-offset-9\":\"col-lg-offset-9\",\"col-lg-offset-8\":\"col-lg-offset-8\",\"col-lg-offset-7\":\"col-lg-offset-7\",\"col-lg-offset-6\":\"col-lg-offset-6\",\"col-lg-offset-5\":\"col-lg-offset-5\",\"col-lg-offset-4\":\"col-lg-offset-4\",\"col-lg-offset-3\":\"col-lg-offset-3\",\"col-lg-offset-2\":\"col-lg-offset-2\",\"col-lg-offset-1\":\"col-lg-offset-1\",\"col-lg-offset-0\":\"col-lg-offset-0\",\"table-condensed\":\"table-condensed\",\"table-striped\":\"table-striped\",\"table-hover\":\"table-hover\",\"active\":\"active\",\"success\":\"success\",\"info\":\"info\",\"warning\":\"warning\",\"danger\":\"danger\",\"table-responsive\":\"table-responsive\",\"form-control\":\"form-control\",\"input-sm\":\"input-sm\",\"input-group-sm\":\"input-group-sm\",\"input-lg\":\"input-lg\",\"input-group-lg\":\"input-group-lg\",\"form-group\":\"form-group\",\"radio\":\"radio\",\"checkbox\":\"checkbox\",\"radio-inline\":\"radio-inline\",\"checkbox-inline\":\"checkbox-inline\",\"disabled\":\"disabled\",\"form-control-static\":\"form-control-static\",\"form-group-sm\":\"form-group-sm\",\"form-group-lg\":\"form-group-lg\",\"has-feedback\":\"has-feedback\",\"form-control-feedback\":\"form-control-feedback\",\"has-success\":\"has-success\",\"help-block\":\"help-block\",\"control-label\":\"control-label\",\"input-group-addon\":\"input-group-addon\",\"has-warning\":\"has-warning\",\"has-error\":\"has-error\",\"form-inline\":\"form-inline\",\"input-group\":\"input-group\",\"input-group-btn\":\"input-group-btn\",\"form-horizontal\":\"form-horizontal\",\"focus\":\"focus\",\"btn-default\":\"btn-default\",\"open\":\"open\",\"dropdown-toggle\":\"dropdown-toggle\",\"badge\":\"badge\",\"btn-primary\":\"btn-primary\",\"btn-success\":\"btn-success\",\"btn-info\":\"btn-info\",\"btn-warning\":\"btn-warning\",\"btn-danger\":\"btn-danger\",\"btn-link\":\"btn-link\",\"btn-lg\":\"btn-lg\",\"btn-group-lg\":\"btn-group-lg\",\"btn-sm\":\"btn-sm\",\"btn-group-sm\":\"btn-group-sm\",\"btn-xs\":\"btn-xs\",\"btn-group-xs\":\"btn-group-xs\",\"btn-block\":\"btn-block\",\"fade\":\"fade\",\"in\":\"in\",\"collapse\":\"collapse\",\"collapsing\":\"collapsing\",\"dropdown\":\"dropdown\",\"dropdown-menu\":\"dropdown-menu\",\"divider\":\"divider\",\"dropdown-menu-right\":\"dropdown-menu-right\",\"dropdown-menu-left\":\"dropdown-menu-left\",\"dropdown-header\":\"dropdown-header\",\"dropdown-backdrop\":\"dropdown-backdrop\",\"navbar-fixed-bottom\":\"navbar-fixed-bottom\",\"navbar-right\":\"navbar-right\",\"btn-group\":\"btn-group\",\"btn-group-vertical\":\"btn-group-vertical\",\"btn-toolbar\":\"btn-toolbar\",\"btn-group-justified\":\"btn-group-justified\",\"nav\":\"nav\",\"nav-divider\":\"nav-divider\",\"nav-tabs\":\"nav-tabs\",\"nav-justified\":\"nav-justified\",\"nav-pills\":\"nav-pills\",\"nav-stacked\":\"nav-stacked\",\"nav-tabs-justified\":\"nav-tabs-justified\",\"tab-content\":\"tab-content\",\"tab-pane\":\"tab-pane\",\"navbar-header\":\"navbar-header\",\"navbar-collapse\":\"navbar-collapse\",\"navbar-fixed-top\":\"navbar-fixed-top\",\"navbar-static-top\":\"navbar-static-top\",\"navbar-brand\":\"navbar-brand\",\"navbar-toggle\":\"navbar-toggle\",\"icon-bar\":\"icon-bar\",\"navbar-nav\":\"navbar-nav\",\"navbar-form\":\"navbar-form\",\"navbar-btn\":\"navbar-btn\",\"navbar-text\":\"navbar-text\",\"navbar-left\":\"navbar-left\",\"navbar-default\":\"navbar-default\",\"navbar-link\":\"navbar-link\",\"navbar-inverse\":\"navbar-inverse\",\"breadcrumb\":\"breadcrumb\",\"pagination\":\"pagination\",\"pagination-lg\":\"pagination-lg\",\"pagination-sm\":\"pagination-sm\",\"pager\":\"pager\",\"next\":\"next\",\"previous\":\"previous\",\"label-default\":\"label-default\",\"label-primary\":\"label-primary\",\"label-success\":\"label-success\",\"label-info\":\"label-info\",\"label-warning\":\"label-warning\",\"label-danger\":\"label-danger\",\"list-group-item\":\"list-group-item\",\"jumbotron\":\"jumbotron\",\"caption\":\"caption\",\"alert\":\"alert\",\"alert-link\":\"alert-link\",\"alert-dismissable\":\"alert-dismissable\",\"alert-dismissible\":\"alert-dismissible\",\"close\":\"close\",\"alert-success\":\"alert-success\",\"alert-info\":\"alert-info\",\"alert-warning\":\"alert-warning\",\"alert-danger\":\"alert-danger\",\"progress\":\"progress\",\"progress-bar\":\"progress-bar\",\"progress-striped\":\"progress-striped\",\"progress-bar-striped\":\"progress-bar-striped\",\"progress-bar-stripes\":\"progress-bar-stripes\",\"progress-bar-success\":\"progress-bar-success\",\"progress-bar-info\":\"progress-bar-info\",\"progress-bar-warning\":\"progress-bar-warning\",\"progress-bar-danger\":\"progress-bar-danger\",\"media\":\"media\",\"media-body\":\"media-body\",\"media-object\":\"media-object\",\"media-right\":\"media-right\",\"media-left\":\"media-left\",\"pull-left\":\"pull-left\",\"media-middle\":\"media-middle\",\"media-bottom\":\"media-bottom\",\"media-heading\":\"media-heading\",\"media-list\":\"media-list\",\"list-group\":\"list-group\",\"list-group-item-heading\":\"list-group-item-heading\",\"list-group-item-text\":\"list-group-item-text\",\"list-group-item-success\":\"list-group-item-success\",\"list-group-item-info\":\"list-group-item-info\",\"list-group-item-warning\":\"list-group-item-warning\",\"list-group-item-danger\":\"list-group-item-danger\",\"panel\":\"panel\",\"panel-body\":\"panel-body\",\"panel-heading\":\"panel-heading\",\"panel-title\":\"panel-title\",\"panel-footer\":\"panel-footer\",\"panel-collapse\":\"panel-collapse\",\"panel-group\":\"panel-group\",\"panel-default\":\"panel-default\",\"panel-primary\":\"panel-primary\",\"panel-success\":\"panel-success\",\"panel-info\":\"panel-info\",\"panel-warning\":\"panel-warning\",\"panel-danger\":\"panel-danger\",\"embed-responsive\":\"embed-responsive\",\"embed-responsive-item\":\"embed-responsive-item\",\"embed-responsive-16by9\":\"embed-responsive-16by9\",\"embed-responsive-4by3\":\"embed-responsive-4by3\",\"well\":\"well\",\"well-lg\":\"well-lg\",\"well-sm\":\"well-sm\",\"modal-open\":\"modal-open\",\"modal\":\"modal\",\"modal-dialog\":\"modal-dialog\",\"modal-content\":\"modal-content\",\"modal-backdrop\":\"modal-backdrop\",\"modal-header\":\"modal-header\",\"modal-title\":\"modal-title\",\"modal-body\":\"modal-body\",\"modal-footer\":\"modal-footer\",\"modal-scrollbar-measure\":\"modal-scrollbar-measure\",\"modal-sm\":\"modal-sm\",\"modal-lg\":\"modal-lg\",\"tooltip\":\"tooltip\",\"top\":\"top\",\"right\":\"right\",\"bottom\":\"bottom\",\"left\":\"left\",\"tooltip-inner\":\"tooltip-inner\",\"tooltip-arrow\":\"tooltip-arrow\",\"top-left\":\"top-left\",\"top-right\":\"top-right\",\"bottom-left\":\"bottom-left\",\"bottom-right\":\"bottom-right\",\"popover\":\"popover\",\"popover-title\":\"popover-title\",\"popover-content\":\"popover-content\",\"arrow\":\"arrow\",\"carousel\":\"carousel\",\"prev\":\"prev\",\"carousel-control\":\"carousel-control\",\"icon-prev\":\"icon-prev\",\"icon-next\":\"icon-next\",\"carousel-indicators\":\"carousel-indicators\",\"carousel-caption\":\"carousel-caption\",\"clearfix\":\"clearfix\",\"center-block\":\"center-block\",\"hide\":\"hide\",\"show\":\"show\",\"invisible\":\"invisible\",\"text-hide\":\"text-hide\",\"hidden\":\"hidden\",\"affix\":\"affix\",\"visible-xs\":\"visible-xs\",\"visible-sm\":\"visible-sm\",\"visible-md\":\"visible-md\",\"visible-lg\":\"visible-lg\",\"visible-xs-block\":\"visible-xs-block\",\"visible-xs-inline\":\"visible-xs-inline\",\"visible-xs-inline-block\":\"visible-xs-inline-block\",\"visible-sm-block\":\"visible-sm-block\",\"visible-sm-inline\":\"visible-sm-inline\",\"visible-sm-inline-block\":\"visible-sm-inline-block\",\"visible-md-block\":\"visible-md-block\",\"visible-md-inline\":\"visible-md-inline\",\"visible-md-inline-block\":\"visible-md-inline-block\",\"visible-lg-block\":\"visible-lg-block\",\"visible-lg-inline\":\"visible-lg-inline\",\"visible-lg-inline-block\":\"visible-lg-inline-block\",\"hidden-xs\":\"hidden-xs\",\"hidden-sm\":\"hidden-sm\",\"hidden-md\":\"hidden-md\",\"hidden-lg\":\"hidden-lg\",\"visible-print\":\"visible-print\",\"visible-print-block\":\"visible-print-block\",\"visible-print-inline\":\"visible-print-inline\",\"visible-print-inline-block\":\"visible-print-inline-block\",\"hidden-print\":\"hidden-print\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/bootstrap/dist/css/bootstrap.css\n// module id = 701\n// module chunks = 0","// removed by extract-text-webpack-plugin\nmodule.exports = {\"fa\":\"fa\",\"fa-lg\":\"fa-lg\",\"fa-2x\":\"fa-2x\",\"fa-3x\":\"fa-3x\",\"fa-4x\":\"fa-4x\",\"fa-5x\":\"fa-5x\",\"fa-fw\":\"fa-fw\",\"fa-ul\":\"fa-ul\",\"fa-li\":\"fa-li\",\"fa-border\":\"fa-border\",\"fa-pull-left\":\"fa-pull-left\",\"fa-pull-right\":\"fa-pull-right\",\"pull-right\":\"pull-right\",\"pull-left\":\"pull-left\",\"fa-spin\":\"fa-spin\",\"fa-pulse\":\"fa-pulse\",\"fa-rotate-90\":\"fa-rotate-90\",\"fa-rotate-180\":\"fa-rotate-180\",\"fa-rotate-270\":\"fa-rotate-270\",\"fa-flip-horizontal\":\"fa-flip-horizontal\",\"fa-flip-vertical\":\"fa-flip-vertical\",\"fa-stack\":\"fa-stack\",\"fa-stack-1x\":\"fa-stack-1x\",\"fa-stack-2x\":\"fa-stack-2x\",\"fa-inverse\":\"fa-inverse\",\"fa-glass\":\"fa-glass\",\"fa-music\":\"fa-music\",\"fa-search\":\"fa-search\",\"fa-envelope-o\":\"fa-envelope-o\",\"fa-heart\":\"fa-heart\",\"fa-star\":\"fa-star\",\"fa-star-o\":\"fa-star-o\",\"fa-user\":\"fa-user\",\"fa-film\":\"fa-film\",\"fa-th-large\":\"fa-th-large\",\"fa-th\":\"fa-th\",\"fa-th-list\":\"fa-th-list\",\"fa-check\":\"fa-check\",\"fa-remove\":\"fa-remove\",\"fa-close\":\"fa-close\",\"fa-times\":\"fa-times\",\"fa-search-plus\":\"fa-search-plus\",\"fa-search-minus\":\"fa-search-minus\",\"fa-power-off\":\"fa-power-off\",\"fa-signal\":\"fa-signal\",\"fa-gear\":\"fa-gear\",\"fa-cog\":\"fa-cog\",\"fa-trash-o\":\"fa-trash-o\",\"fa-home\":\"fa-home\",\"fa-file-o\":\"fa-file-o\",\"fa-clock-o\":\"fa-clock-o\",\"fa-road\":\"fa-road\",\"fa-download\":\"fa-download\",\"fa-arrow-circle-o-down\":\"fa-arrow-circle-o-down\",\"fa-arrow-circle-o-up\":\"fa-arrow-circle-o-up\",\"fa-inbox\":\"fa-inbox\",\"fa-play-circle-o\":\"fa-play-circle-o\",\"fa-rotate-right\":\"fa-rotate-right\",\"fa-repeat\":\"fa-repeat\",\"fa-refresh\":\"fa-refresh\",\"fa-list-alt\":\"fa-list-alt\",\"fa-lock\":\"fa-lock\",\"fa-flag\":\"fa-flag\",\"fa-headphones\":\"fa-headphones\",\"fa-volume-off\":\"fa-volume-off\",\"fa-volume-down\":\"fa-volume-down\",\"fa-volume-up\":\"fa-volume-up\",\"fa-qrcode\":\"fa-qrcode\",\"fa-barcode\":\"fa-barcode\",\"fa-tag\":\"fa-tag\",\"fa-tags\":\"fa-tags\",\"fa-book\":\"fa-book\",\"fa-bookmark\":\"fa-bookmark\",\"fa-print\":\"fa-print\",\"fa-camera\":\"fa-camera\",\"fa-font\":\"fa-font\",\"fa-bold\":\"fa-bold\",\"fa-italic\":\"fa-italic\",\"fa-text-height\":\"fa-text-height\",\"fa-text-width\":\"fa-text-width\",\"fa-align-left\":\"fa-align-left\",\"fa-align-center\":\"fa-align-center\",\"fa-align-right\":\"fa-align-right\",\"fa-align-justify\":\"fa-align-justify\",\"fa-list\":\"fa-list\",\"fa-dedent\":\"fa-dedent\",\"fa-outdent\":\"fa-outdent\",\"fa-indent\":\"fa-indent\",\"fa-video-camera\":\"fa-video-camera\",\"fa-photo\":\"fa-photo\",\"fa-image\":\"fa-image\",\"fa-picture-o\":\"fa-picture-o\",\"fa-pencil\":\"fa-pencil\",\"fa-map-marker\":\"fa-map-marker\",\"fa-adjust\":\"fa-adjust\",\"fa-tint\":\"fa-tint\",\"fa-edit\":\"fa-edit\",\"fa-pencil-square-o\":\"fa-pencil-square-o\",\"fa-share-square-o\":\"fa-share-square-o\",\"fa-check-square-o\":\"fa-check-square-o\",\"fa-arrows\":\"fa-arrows\",\"fa-step-backward\":\"fa-step-backward\",\"fa-fast-backward\":\"fa-fast-backward\",\"fa-backward\":\"fa-backward\",\"fa-play\":\"fa-play\",\"fa-pause\":\"fa-pause\",\"fa-stop\":\"fa-stop\",\"fa-forward\":\"fa-forward\",\"fa-fast-forward\":\"fa-fast-forward\",\"fa-step-forward\":\"fa-step-forward\",\"fa-eject\":\"fa-eject\",\"fa-chevron-left\":\"fa-chevron-left\",\"fa-chevron-right\":\"fa-chevron-right\",\"fa-plus-circle\":\"fa-plus-circle\",\"fa-minus-circle\":\"fa-minus-circle\",\"fa-times-circle\":\"fa-times-circle\",\"fa-check-circle\":\"fa-check-circle\",\"fa-question-circle\":\"fa-question-circle\",\"fa-info-circle\":\"fa-info-circle\",\"fa-crosshairs\":\"fa-crosshairs\",\"fa-times-circle-o\":\"fa-times-circle-o\",\"fa-check-circle-o\":\"fa-check-circle-o\",\"fa-ban\":\"fa-ban\",\"fa-arrow-left\":\"fa-arrow-left\",\"fa-arrow-right\":\"fa-arrow-right\",\"fa-arrow-up\":\"fa-arrow-up\",\"fa-arrow-down\":\"fa-arrow-down\",\"fa-mail-forward\":\"fa-mail-forward\",\"fa-share\":\"fa-share\",\"fa-expand\":\"fa-expand\",\"fa-compress\":\"fa-compress\",\"fa-plus\":\"fa-plus\",\"fa-minus\":\"fa-minus\",\"fa-asterisk\":\"fa-asterisk\",\"fa-exclamation-circle\":\"fa-exclamation-circle\",\"fa-gift\":\"fa-gift\",\"fa-leaf\":\"fa-leaf\",\"fa-fire\":\"fa-fire\",\"fa-eye\":\"fa-eye\",\"fa-eye-slash\":\"fa-eye-slash\",\"fa-warning\":\"fa-warning\",\"fa-exclamation-triangle\":\"fa-exclamation-triangle\",\"fa-plane\":\"fa-plane\",\"fa-calendar\":\"fa-calendar\",\"fa-random\":\"fa-random\",\"fa-comment\":\"fa-comment\",\"fa-magnet\":\"fa-magnet\",\"fa-chevron-up\":\"fa-chevron-up\",\"fa-chevron-down\":\"fa-chevron-down\",\"fa-retweet\":\"fa-retweet\",\"fa-shopping-cart\":\"fa-shopping-cart\",\"fa-folder\":\"fa-folder\",\"fa-folder-open\":\"fa-folder-open\",\"fa-arrows-v\":\"fa-arrows-v\",\"fa-arrows-h\":\"fa-arrows-h\",\"fa-bar-chart-o\":\"fa-bar-chart-o\",\"fa-bar-chart\":\"fa-bar-chart\",\"fa-twitter-square\":\"fa-twitter-square\",\"fa-facebook-square\":\"fa-facebook-square\",\"fa-camera-retro\":\"fa-camera-retro\",\"fa-key\":\"fa-key\",\"fa-gears\":\"fa-gears\",\"fa-cogs\":\"fa-cogs\",\"fa-comments\":\"fa-comments\",\"fa-thumbs-o-up\":\"fa-thumbs-o-up\",\"fa-thumbs-o-down\":\"fa-thumbs-o-down\",\"fa-star-half\":\"fa-star-half\",\"fa-heart-o\":\"fa-heart-o\",\"fa-sign-out\":\"fa-sign-out\",\"fa-linkedin-square\":\"fa-linkedin-square\",\"fa-thumb-tack\":\"fa-thumb-tack\",\"fa-external-link\":\"fa-external-link\",\"fa-sign-in\":\"fa-sign-in\",\"fa-trophy\":\"fa-trophy\",\"fa-github-square\":\"fa-github-square\",\"fa-upload\":\"fa-upload\",\"fa-lemon-o\":\"fa-lemon-o\",\"fa-phone\":\"fa-phone\",\"fa-square-o\":\"fa-square-o\",\"fa-bookmark-o\":\"fa-bookmark-o\",\"fa-phone-square\":\"fa-phone-square\",\"fa-twitter\":\"fa-twitter\",\"fa-facebook-f\":\"fa-facebook-f\",\"fa-facebook\":\"fa-facebook\",\"fa-github\":\"fa-github\",\"fa-unlock\":\"fa-unlock\",\"fa-credit-card\":\"fa-credit-card\",\"fa-feed\":\"fa-feed\",\"fa-rss\":\"fa-rss\",\"fa-hdd-o\":\"fa-hdd-o\",\"fa-bullhorn\":\"fa-bullhorn\",\"fa-bell\":\"fa-bell\",\"fa-certificate\":\"fa-certificate\",\"fa-hand-o-right\":\"fa-hand-o-right\",\"fa-hand-o-left\":\"fa-hand-o-left\",\"fa-hand-o-up\":\"fa-hand-o-up\",\"fa-hand-o-down\":\"fa-hand-o-down\",\"fa-arrow-circle-left\":\"fa-arrow-circle-left\",\"fa-arrow-circle-right\":\"fa-arrow-circle-right\",\"fa-arrow-circle-up\":\"fa-arrow-circle-up\",\"fa-arrow-circle-down\":\"fa-arrow-circle-down\",\"fa-globe\":\"fa-globe\",\"fa-wrench\":\"fa-wrench\",\"fa-tasks\":\"fa-tasks\",\"fa-filter\":\"fa-filter\",\"fa-briefcase\":\"fa-briefcase\",\"fa-arrows-alt\":\"fa-arrows-alt\",\"fa-group\":\"fa-group\",\"fa-users\":\"fa-users\",\"fa-chain\":\"fa-chain\",\"fa-link\":\"fa-link\",\"fa-cloud\":\"fa-cloud\",\"fa-flask\":\"fa-flask\",\"fa-cut\":\"fa-cut\",\"fa-scissors\":\"fa-scissors\",\"fa-copy\":\"fa-copy\",\"fa-files-o\":\"fa-files-o\",\"fa-paperclip\":\"fa-paperclip\",\"fa-save\":\"fa-save\",\"fa-floppy-o\":\"fa-floppy-o\",\"fa-square\":\"fa-square\",\"fa-navicon\":\"fa-navicon\",\"fa-reorder\":\"fa-reorder\",\"fa-bars\":\"fa-bars\",\"fa-list-ul\":\"fa-list-ul\",\"fa-list-ol\":\"fa-list-ol\",\"fa-strikethrough\":\"fa-strikethrough\",\"fa-underline\":\"fa-underline\",\"fa-table\":\"fa-table\",\"fa-magic\":\"fa-magic\",\"fa-truck\":\"fa-truck\",\"fa-pinterest\":\"fa-pinterest\",\"fa-pinterest-square\":\"fa-pinterest-square\",\"fa-google-plus-square\":\"fa-google-plus-square\",\"fa-google-plus\":\"fa-google-plus\",\"fa-money\":\"fa-money\",\"fa-caret-down\":\"fa-caret-down\",\"fa-caret-up\":\"fa-caret-up\",\"fa-caret-left\":\"fa-caret-left\",\"fa-caret-right\":\"fa-caret-right\",\"fa-columns\":\"fa-columns\",\"fa-unsorted\":\"fa-unsorted\",\"fa-sort\":\"fa-sort\",\"fa-sort-down\":\"fa-sort-down\",\"fa-sort-desc\":\"fa-sort-desc\",\"fa-sort-up\":\"fa-sort-up\",\"fa-sort-asc\":\"fa-sort-asc\",\"fa-envelope\":\"fa-envelope\",\"fa-linkedin\":\"fa-linkedin\",\"fa-rotate-left\":\"fa-rotate-left\",\"fa-undo\":\"fa-undo\",\"fa-legal\":\"fa-legal\",\"fa-gavel\":\"fa-gavel\",\"fa-dashboard\":\"fa-dashboard\",\"fa-tachometer\":\"fa-tachometer\",\"fa-comment-o\":\"fa-comment-o\",\"fa-comments-o\":\"fa-comments-o\",\"fa-flash\":\"fa-flash\",\"fa-bolt\":\"fa-bolt\",\"fa-sitemap\":\"fa-sitemap\",\"fa-umbrella\":\"fa-umbrella\",\"fa-paste\":\"fa-paste\",\"fa-clipboard\":\"fa-clipboard\",\"fa-lightbulb-o\":\"fa-lightbulb-o\",\"fa-exchange\":\"fa-exchange\",\"fa-cloud-download\":\"fa-cloud-download\",\"fa-cloud-upload\":\"fa-cloud-upload\",\"fa-user-md\":\"fa-user-md\",\"fa-stethoscope\":\"fa-stethoscope\",\"fa-suitcase\":\"fa-suitcase\",\"fa-bell-o\":\"fa-bell-o\",\"fa-coffee\":\"fa-coffee\",\"fa-cutlery\":\"fa-cutlery\",\"fa-file-text-o\":\"fa-file-text-o\",\"fa-building-o\":\"fa-building-o\",\"fa-hospital-o\":\"fa-hospital-o\",\"fa-ambulance\":\"fa-ambulance\",\"fa-medkit\":\"fa-medkit\",\"fa-fighter-jet\":\"fa-fighter-jet\",\"fa-beer\":\"fa-beer\",\"fa-h-square\":\"fa-h-square\",\"fa-plus-square\":\"fa-plus-square\",\"fa-angle-double-left\":\"fa-angle-double-left\",\"fa-angle-double-right\":\"fa-angle-double-right\",\"fa-angle-double-up\":\"fa-angle-double-up\",\"fa-angle-double-down\":\"fa-angle-double-down\",\"fa-angle-left\":\"fa-angle-left\",\"fa-angle-right\":\"fa-angle-right\",\"fa-angle-up\":\"fa-angle-up\",\"fa-angle-down\":\"fa-angle-down\",\"fa-desktop\":\"fa-desktop\",\"fa-laptop\":\"fa-laptop\",\"fa-tablet\":\"fa-tablet\",\"fa-mobile-phone\":\"fa-mobile-phone\",\"fa-mobile\":\"fa-mobile\",\"fa-circle-o\":\"fa-circle-o\",\"fa-quote-left\":\"fa-quote-left\",\"fa-quote-right\":\"fa-quote-right\",\"fa-spinner\":\"fa-spinner\",\"fa-circle\":\"fa-circle\",\"fa-mail-reply\":\"fa-mail-reply\",\"fa-reply\":\"fa-reply\",\"fa-github-alt\":\"fa-github-alt\",\"fa-folder-o\":\"fa-folder-o\",\"fa-folder-open-o\":\"fa-folder-open-o\",\"fa-smile-o\":\"fa-smile-o\",\"fa-frown-o\":\"fa-frown-o\",\"fa-meh-o\":\"fa-meh-o\",\"fa-gamepad\":\"fa-gamepad\",\"fa-keyboard-o\":\"fa-keyboard-o\",\"fa-flag-o\":\"fa-flag-o\",\"fa-flag-checkered\":\"fa-flag-checkered\",\"fa-terminal\":\"fa-terminal\",\"fa-code\":\"fa-code\",\"fa-mail-reply-all\":\"fa-mail-reply-all\",\"fa-reply-all\":\"fa-reply-all\",\"fa-star-half-empty\":\"fa-star-half-empty\",\"fa-star-half-full\":\"fa-star-half-full\",\"fa-star-half-o\":\"fa-star-half-o\",\"fa-location-arrow\":\"fa-location-arrow\",\"fa-crop\":\"fa-crop\",\"fa-code-fork\":\"fa-code-fork\",\"fa-unlink\":\"fa-unlink\",\"fa-chain-broken\":\"fa-chain-broken\",\"fa-question\":\"fa-question\",\"fa-info\":\"fa-info\",\"fa-exclamation\":\"fa-exclamation\",\"fa-superscript\":\"fa-superscript\",\"fa-subscript\":\"fa-subscript\",\"fa-eraser\":\"fa-eraser\",\"fa-puzzle-piece\":\"fa-puzzle-piece\",\"fa-microphone\":\"fa-microphone\",\"fa-microphone-slash\":\"fa-microphone-slash\",\"fa-shield\":\"fa-shield\",\"fa-calendar-o\":\"fa-calendar-o\",\"fa-fire-extinguisher\":\"fa-fire-extinguisher\",\"fa-rocket\":\"fa-rocket\",\"fa-maxcdn\":\"fa-maxcdn\",\"fa-chevron-circle-left\":\"fa-chevron-circle-left\",\"fa-chevron-circle-right\":\"fa-chevron-circle-right\",\"fa-chevron-circle-up\":\"fa-chevron-circle-up\",\"fa-chevron-circle-down\":\"fa-chevron-circle-down\",\"fa-html5\":\"fa-html5\",\"fa-css3\":\"fa-css3\",\"fa-anchor\":\"fa-anchor\",\"fa-unlock-alt\":\"fa-unlock-alt\",\"fa-bullseye\":\"fa-bullseye\",\"fa-ellipsis-h\":\"fa-ellipsis-h\",\"fa-ellipsis-v\":\"fa-ellipsis-v\",\"fa-rss-square\":\"fa-rss-square\",\"fa-play-circle\":\"fa-play-circle\",\"fa-ticket\":\"fa-ticket\",\"fa-minus-square\":\"fa-minus-square\",\"fa-minus-square-o\":\"fa-minus-square-o\",\"fa-level-up\":\"fa-level-up\",\"fa-level-down\":\"fa-level-down\",\"fa-check-square\":\"fa-check-square\",\"fa-pencil-square\":\"fa-pencil-square\",\"fa-external-link-square\":\"fa-external-link-square\",\"fa-share-square\":\"fa-share-square\",\"fa-compass\":\"fa-compass\",\"fa-toggle-down\":\"fa-toggle-down\",\"fa-caret-square-o-down\":\"fa-caret-square-o-down\",\"fa-toggle-up\":\"fa-toggle-up\",\"fa-caret-square-o-up\":\"fa-caret-square-o-up\",\"fa-toggle-right\":\"fa-toggle-right\",\"fa-caret-square-o-right\":\"fa-caret-square-o-right\",\"fa-euro\":\"fa-euro\",\"fa-eur\":\"fa-eur\",\"fa-gbp\":\"fa-gbp\",\"fa-dollar\":\"fa-dollar\",\"fa-usd\":\"fa-usd\",\"fa-rupee\":\"fa-rupee\",\"fa-inr\":\"fa-inr\",\"fa-cny\":\"fa-cny\",\"fa-rmb\":\"fa-rmb\",\"fa-yen\":\"fa-yen\",\"fa-jpy\":\"fa-jpy\",\"fa-ruble\":\"fa-ruble\",\"fa-rouble\":\"fa-rouble\",\"fa-rub\":\"fa-rub\",\"fa-won\":\"fa-won\",\"fa-krw\":\"fa-krw\",\"fa-bitcoin\":\"fa-bitcoin\",\"fa-btc\":\"fa-btc\",\"fa-file\":\"fa-file\",\"fa-file-text\":\"fa-file-text\",\"fa-sort-alpha-asc\":\"fa-sort-alpha-asc\",\"fa-sort-alpha-desc\":\"fa-sort-alpha-desc\",\"fa-sort-amount-asc\":\"fa-sort-amount-asc\",\"fa-sort-amount-desc\":\"fa-sort-amount-desc\",\"fa-sort-numeric-asc\":\"fa-sort-numeric-asc\",\"fa-sort-numeric-desc\":\"fa-sort-numeric-desc\",\"fa-thumbs-up\":\"fa-thumbs-up\",\"fa-thumbs-down\":\"fa-thumbs-down\",\"fa-youtube-square\":\"fa-youtube-square\",\"fa-youtube\":\"fa-youtube\",\"fa-xing\":\"fa-xing\",\"fa-xing-square\":\"fa-xing-square\",\"fa-youtube-play\":\"fa-youtube-play\",\"fa-dropbox\":\"fa-dropbox\",\"fa-stack-overflow\":\"fa-stack-overflow\",\"fa-instagram\":\"fa-instagram\",\"fa-flickr\":\"fa-flickr\",\"fa-adn\":\"fa-adn\",\"fa-bitbucket\":\"fa-bitbucket\",\"fa-bitbucket-square\":\"fa-bitbucket-square\",\"fa-tumblr\":\"fa-tumblr\",\"fa-tumblr-square\":\"fa-tumblr-square\",\"fa-long-arrow-down\":\"fa-long-arrow-down\",\"fa-long-arrow-up\":\"fa-long-arrow-up\",\"fa-long-arrow-left\":\"fa-long-arrow-left\",\"fa-long-arrow-right\":\"fa-long-arrow-right\",\"fa-apple\":\"fa-apple\",\"fa-windows\":\"fa-windows\",\"fa-android\":\"fa-android\",\"fa-linux\":\"fa-linux\",\"fa-dribbble\":\"fa-dribbble\",\"fa-skype\":\"fa-skype\",\"fa-foursquare\":\"fa-foursquare\",\"fa-trello\":\"fa-trello\",\"fa-female\":\"fa-female\",\"fa-male\":\"fa-male\",\"fa-gittip\":\"fa-gittip\",\"fa-gratipay\":\"fa-gratipay\",\"fa-sun-o\":\"fa-sun-o\",\"fa-moon-o\":\"fa-moon-o\",\"fa-archive\":\"fa-archive\",\"fa-bug\":\"fa-bug\",\"fa-vk\":\"fa-vk\",\"fa-weibo\":\"fa-weibo\",\"fa-renren\":\"fa-renren\",\"fa-pagelines\":\"fa-pagelines\",\"fa-stack-exchange\":\"fa-stack-exchange\",\"fa-arrow-circle-o-right\":\"fa-arrow-circle-o-right\",\"fa-arrow-circle-o-left\":\"fa-arrow-circle-o-left\",\"fa-toggle-left\":\"fa-toggle-left\",\"fa-caret-square-o-left\":\"fa-caret-square-o-left\",\"fa-dot-circle-o\":\"fa-dot-circle-o\",\"fa-wheelchair\":\"fa-wheelchair\",\"fa-vimeo-square\":\"fa-vimeo-square\",\"fa-turkish-lira\":\"fa-turkish-lira\",\"fa-try\":\"fa-try\",\"fa-plus-square-o\":\"fa-plus-square-o\",\"fa-space-shuttle\":\"fa-space-shuttle\",\"fa-slack\":\"fa-slack\",\"fa-envelope-square\":\"fa-envelope-square\",\"fa-wordpress\":\"fa-wordpress\",\"fa-openid\":\"fa-openid\",\"fa-institution\":\"fa-institution\",\"fa-bank\":\"fa-bank\",\"fa-university\":\"fa-university\",\"fa-mortar-board\":\"fa-mortar-board\",\"fa-graduation-cap\":\"fa-graduation-cap\",\"fa-yahoo\":\"fa-yahoo\",\"fa-google\":\"fa-google\",\"fa-reddit\":\"fa-reddit\",\"fa-reddit-square\":\"fa-reddit-square\",\"fa-stumbleupon-circle\":\"fa-stumbleupon-circle\",\"fa-stumbleupon\":\"fa-stumbleupon\",\"fa-delicious\":\"fa-delicious\",\"fa-digg\":\"fa-digg\",\"fa-pied-piper-pp\":\"fa-pied-piper-pp\",\"fa-pied-piper-alt\":\"fa-pied-piper-alt\",\"fa-drupal\":\"fa-drupal\",\"fa-joomla\":\"fa-joomla\",\"fa-language\":\"fa-language\",\"fa-fax\":\"fa-fax\",\"fa-building\":\"fa-building\",\"fa-child\":\"fa-child\",\"fa-paw\":\"fa-paw\",\"fa-spoon\":\"fa-spoon\",\"fa-cube\":\"fa-cube\",\"fa-cubes\":\"fa-cubes\",\"fa-behance\":\"fa-behance\",\"fa-behance-square\":\"fa-behance-square\",\"fa-steam\":\"fa-steam\",\"fa-steam-square\":\"fa-steam-square\",\"fa-recycle\":\"fa-recycle\",\"fa-automobile\":\"fa-automobile\",\"fa-car\":\"fa-car\",\"fa-cab\":\"fa-cab\",\"fa-taxi\":\"fa-taxi\",\"fa-tree\":\"fa-tree\",\"fa-spotify\":\"fa-spotify\",\"fa-deviantart\":\"fa-deviantart\",\"fa-soundcloud\":\"fa-soundcloud\",\"fa-database\":\"fa-database\",\"fa-file-pdf-o\":\"fa-file-pdf-o\",\"fa-file-word-o\":\"fa-file-word-o\",\"fa-file-excel-o\":\"fa-file-excel-o\",\"fa-file-powerpoint-o\":\"fa-file-powerpoint-o\",\"fa-file-photo-o\":\"fa-file-photo-o\",\"fa-file-picture-o\":\"fa-file-picture-o\",\"fa-file-image-o\":\"fa-file-image-o\",\"fa-file-zip-o\":\"fa-file-zip-o\",\"fa-file-archive-o\":\"fa-file-archive-o\",\"fa-file-sound-o\":\"fa-file-sound-o\",\"fa-file-audio-o\":\"fa-file-audio-o\",\"fa-file-movie-o\":\"fa-file-movie-o\",\"fa-file-video-o\":\"fa-file-video-o\",\"fa-file-code-o\":\"fa-file-code-o\",\"fa-vine\":\"fa-vine\",\"fa-codepen\":\"fa-codepen\",\"fa-jsfiddle\":\"fa-jsfiddle\",\"fa-life-bouy\":\"fa-life-bouy\",\"fa-life-buoy\":\"fa-life-buoy\",\"fa-life-saver\":\"fa-life-saver\",\"fa-support\":\"fa-support\",\"fa-life-ring\":\"fa-life-ring\",\"fa-circle-o-notch\":\"fa-circle-o-notch\",\"fa-ra\":\"fa-ra\",\"fa-resistance\":\"fa-resistance\",\"fa-rebel\":\"fa-rebel\",\"fa-ge\":\"fa-ge\",\"fa-empire\":\"fa-empire\",\"fa-git-square\":\"fa-git-square\",\"fa-git\":\"fa-git\",\"fa-y-combinator-square\":\"fa-y-combinator-square\",\"fa-yc-square\":\"fa-yc-square\",\"fa-hacker-news\":\"fa-hacker-news\",\"fa-tencent-weibo\":\"fa-tencent-weibo\",\"fa-qq\":\"fa-qq\",\"fa-wechat\":\"fa-wechat\",\"fa-weixin\":\"fa-weixin\",\"fa-send\":\"fa-send\",\"fa-paper-plane\":\"fa-paper-plane\",\"fa-send-o\":\"fa-send-o\",\"fa-paper-plane-o\":\"fa-paper-plane-o\",\"fa-history\":\"fa-history\",\"fa-circle-thin\":\"fa-circle-thin\",\"fa-header\":\"fa-header\",\"fa-paragraph\":\"fa-paragraph\",\"fa-sliders\":\"fa-sliders\",\"fa-share-alt\":\"fa-share-alt\",\"fa-share-alt-square\":\"fa-share-alt-square\",\"fa-bomb\":\"fa-bomb\",\"fa-soccer-ball-o\":\"fa-soccer-ball-o\",\"fa-futbol-o\":\"fa-futbol-o\",\"fa-tty\":\"fa-tty\",\"fa-binoculars\":\"fa-binoculars\",\"fa-plug\":\"fa-plug\",\"fa-slideshare\":\"fa-slideshare\",\"fa-twitch\":\"fa-twitch\",\"fa-yelp\":\"fa-yelp\",\"fa-newspaper-o\":\"fa-newspaper-o\",\"fa-wifi\":\"fa-wifi\",\"fa-calculator\":\"fa-calculator\",\"fa-paypal\":\"fa-paypal\",\"fa-google-wallet\":\"fa-google-wallet\",\"fa-cc-visa\":\"fa-cc-visa\",\"fa-cc-mastercard\":\"fa-cc-mastercard\",\"fa-cc-discover\":\"fa-cc-discover\",\"fa-cc-amex\":\"fa-cc-amex\",\"fa-cc-paypal\":\"fa-cc-paypal\",\"fa-cc-stripe\":\"fa-cc-stripe\",\"fa-bell-slash\":\"fa-bell-slash\",\"fa-bell-slash-o\":\"fa-bell-slash-o\",\"fa-trash\":\"fa-trash\",\"fa-copyright\":\"fa-copyright\",\"fa-at\":\"fa-at\",\"fa-eyedropper\":\"fa-eyedropper\",\"fa-paint-brush\":\"fa-paint-brush\",\"fa-birthday-cake\":\"fa-birthday-cake\",\"fa-area-chart\":\"fa-area-chart\",\"fa-pie-chart\":\"fa-pie-chart\",\"fa-line-chart\":\"fa-line-chart\",\"fa-lastfm\":\"fa-lastfm\",\"fa-lastfm-square\":\"fa-lastfm-square\",\"fa-toggle-off\":\"fa-toggle-off\",\"fa-toggle-on\":\"fa-toggle-on\",\"fa-bicycle\":\"fa-bicycle\",\"fa-bus\":\"fa-bus\",\"fa-ioxhost\":\"fa-ioxhost\",\"fa-angellist\":\"fa-angellist\",\"fa-cc\":\"fa-cc\",\"fa-shekel\":\"fa-shekel\",\"fa-sheqel\":\"fa-sheqel\",\"fa-ils\":\"fa-ils\",\"fa-meanpath\":\"fa-meanpath\",\"fa-buysellads\":\"fa-buysellads\",\"fa-connectdevelop\":\"fa-connectdevelop\",\"fa-dashcube\":\"fa-dashcube\",\"fa-forumbee\":\"fa-forumbee\",\"fa-leanpub\":\"fa-leanpub\",\"fa-sellsy\":\"fa-sellsy\",\"fa-shirtsinbulk\":\"fa-shirtsinbulk\",\"fa-simplybuilt\":\"fa-simplybuilt\",\"fa-skyatlas\":\"fa-skyatlas\",\"fa-cart-plus\":\"fa-cart-plus\",\"fa-cart-arrow-down\":\"fa-cart-arrow-down\",\"fa-diamond\":\"fa-diamond\",\"fa-ship\":\"fa-ship\",\"fa-user-secret\":\"fa-user-secret\",\"fa-motorcycle\":\"fa-motorcycle\",\"fa-street-view\":\"fa-street-view\",\"fa-heartbeat\":\"fa-heartbeat\",\"fa-venus\":\"fa-venus\",\"fa-mars\":\"fa-mars\",\"fa-mercury\":\"fa-mercury\",\"fa-intersex\":\"fa-intersex\",\"fa-transgender\":\"fa-transgender\",\"fa-transgender-alt\":\"fa-transgender-alt\",\"fa-venus-double\":\"fa-venus-double\",\"fa-mars-double\":\"fa-mars-double\",\"fa-venus-mars\":\"fa-venus-mars\",\"fa-mars-stroke\":\"fa-mars-stroke\",\"fa-mars-stroke-v\":\"fa-mars-stroke-v\",\"fa-mars-stroke-h\":\"fa-mars-stroke-h\",\"fa-neuter\":\"fa-neuter\",\"fa-genderless\":\"fa-genderless\",\"fa-facebook-official\":\"fa-facebook-official\",\"fa-pinterest-p\":\"fa-pinterest-p\",\"fa-whatsapp\":\"fa-whatsapp\",\"fa-server\":\"fa-server\",\"fa-user-plus\":\"fa-user-plus\",\"fa-user-times\":\"fa-user-times\",\"fa-hotel\":\"fa-hotel\",\"fa-bed\":\"fa-bed\",\"fa-viacoin\":\"fa-viacoin\",\"fa-train\":\"fa-train\",\"fa-subway\":\"fa-subway\",\"fa-medium\":\"fa-medium\",\"fa-yc\":\"fa-yc\",\"fa-y-combinator\":\"fa-y-combinator\",\"fa-optin-monster\":\"fa-optin-monster\",\"fa-opencart\":\"fa-opencart\",\"fa-expeditedssl\":\"fa-expeditedssl\",\"fa-battery-4\":\"fa-battery-4\",\"fa-battery\":\"fa-battery\",\"fa-battery-full\":\"fa-battery-full\",\"fa-battery-3\":\"fa-battery-3\",\"fa-battery-three-quarters\":\"fa-battery-three-quarters\",\"fa-battery-2\":\"fa-battery-2\",\"fa-battery-half\":\"fa-battery-half\",\"fa-battery-1\":\"fa-battery-1\",\"fa-battery-quarter\":\"fa-battery-quarter\",\"fa-battery-0\":\"fa-battery-0\",\"fa-battery-empty\":\"fa-battery-empty\",\"fa-mouse-pointer\":\"fa-mouse-pointer\",\"fa-i-cursor\":\"fa-i-cursor\",\"fa-object-group\":\"fa-object-group\",\"fa-object-ungroup\":\"fa-object-ungroup\",\"fa-sticky-note\":\"fa-sticky-note\",\"fa-sticky-note-o\":\"fa-sticky-note-o\",\"fa-cc-jcb\":\"fa-cc-jcb\",\"fa-cc-diners-club\":\"fa-cc-diners-club\",\"fa-clone\":\"fa-clone\",\"fa-balance-scale\":\"fa-balance-scale\",\"fa-hourglass-o\":\"fa-hourglass-o\",\"fa-hourglass-1\":\"fa-hourglass-1\",\"fa-hourglass-start\":\"fa-hourglass-start\",\"fa-hourglass-2\":\"fa-hourglass-2\",\"fa-hourglass-half\":\"fa-hourglass-half\",\"fa-hourglass-3\":\"fa-hourglass-3\",\"fa-hourglass-end\":\"fa-hourglass-end\",\"fa-hourglass\":\"fa-hourglass\",\"fa-hand-grab-o\":\"fa-hand-grab-o\",\"fa-hand-rock-o\":\"fa-hand-rock-o\",\"fa-hand-stop-o\":\"fa-hand-stop-o\",\"fa-hand-paper-o\":\"fa-hand-paper-o\",\"fa-hand-scissors-o\":\"fa-hand-scissors-o\",\"fa-hand-lizard-o\":\"fa-hand-lizard-o\",\"fa-hand-spock-o\":\"fa-hand-spock-o\",\"fa-hand-pointer-o\":\"fa-hand-pointer-o\",\"fa-hand-peace-o\":\"fa-hand-peace-o\",\"fa-trademark\":\"fa-trademark\",\"fa-registered\":\"fa-registered\",\"fa-creative-commons\":\"fa-creative-commons\",\"fa-gg\":\"fa-gg\",\"fa-gg-circle\":\"fa-gg-circle\",\"fa-tripadvisor\":\"fa-tripadvisor\",\"fa-odnoklassniki\":\"fa-odnoklassniki\",\"fa-odnoklassniki-square\":\"fa-odnoklassniki-square\",\"fa-get-pocket\":\"fa-get-pocket\",\"fa-wikipedia-w\":\"fa-wikipedia-w\",\"fa-safari\":\"fa-safari\",\"fa-chrome\":\"fa-chrome\",\"fa-firefox\":\"fa-firefox\",\"fa-opera\":\"fa-opera\",\"fa-internet-explorer\":\"fa-internet-explorer\",\"fa-tv\":\"fa-tv\",\"fa-television\":\"fa-television\",\"fa-contao\":\"fa-contao\",\"fa-500px\":\"fa-500px\",\"fa-amazon\":\"fa-amazon\",\"fa-calendar-plus-o\":\"fa-calendar-plus-o\",\"fa-calendar-minus-o\":\"fa-calendar-minus-o\",\"fa-calendar-times-o\":\"fa-calendar-times-o\",\"fa-calendar-check-o\":\"fa-calendar-check-o\",\"fa-industry\":\"fa-industry\",\"fa-map-pin\":\"fa-map-pin\",\"fa-map-signs\":\"fa-map-signs\",\"fa-map-o\":\"fa-map-o\",\"fa-map\":\"fa-map\",\"fa-commenting\":\"fa-commenting\",\"fa-commenting-o\":\"fa-commenting-o\",\"fa-houzz\":\"fa-houzz\",\"fa-vimeo\":\"fa-vimeo\",\"fa-black-tie\":\"fa-black-tie\",\"fa-fonticons\":\"fa-fonticons\",\"fa-reddit-alien\":\"fa-reddit-alien\",\"fa-edge\":\"fa-edge\",\"fa-credit-card-alt\":\"fa-credit-card-alt\",\"fa-codiepie\":\"fa-codiepie\",\"fa-modx\":\"fa-modx\",\"fa-fort-awesome\":\"fa-fort-awesome\",\"fa-usb\":\"fa-usb\",\"fa-product-hunt\":\"fa-product-hunt\",\"fa-mixcloud\":\"fa-mixcloud\",\"fa-scribd\":\"fa-scribd\",\"fa-pause-circle\":\"fa-pause-circle\",\"fa-pause-circle-o\":\"fa-pause-circle-o\",\"fa-stop-circle\":\"fa-stop-circle\",\"fa-stop-circle-o\":\"fa-stop-circle-o\",\"fa-shopping-bag\":\"fa-shopping-bag\",\"fa-shopping-basket\":\"fa-shopping-basket\",\"fa-hashtag\":\"fa-hashtag\",\"fa-bluetooth\":\"fa-bluetooth\",\"fa-bluetooth-b\":\"fa-bluetooth-b\",\"fa-percent\":\"fa-percent\",\"fa-gitlab\":\"fa-gitlab\",\"fa-wpbeginner\":\"fa-wpbeginner\",\"fa-wpforms\":\"fa-wpforms\",\"fa-envira\":\"fa-envira\",\"fa-universal-access\":\"fa-universal-access\",\"fa-wheelchair-alt\":\"fa-wheelchair-alt\",\"fa-question-circle-o\":\"fa-question-circle-o\",\"fa-blind\":\"fa-blind\",\"fa-audio-description\":\"fa-audio-description\",\"fa-volume-control-phone\":\"fa-volume-control-phone\",\"fa-braille\":\"fa-braille\",\"fa-assistive-listening-systems\":\"fa-assistive-listening-systems\",\"fa-asl-interpreting\":\"fa-asl-interpreting\",\"fa-american-sign-language-interpreting\":\"fa-american-sign-language-interpreting\",\"fa-deafness\":\"fa-deafness\",\"fa-hard-of-hearing\":\"fa-hard-of-hearing\",\"fa-deaf\":\"fa-deaf\",\"fa-glide\":\"fa-glide\",\"fa-glide-g\":\"fa-glide-g\",\"fa-signing\":\"fa-signing\",\"fa-sign-language\":\"fa-sign-language\",\"fa-low-vision\":\"fa-low-vision\",\"fa-viadeo\":\"fa-viadeo\",\"fa-viadeo-square\":\"fa-viadeo-square\",\"fa-snapchat\":\"fa-snapchat\",\"fa-snapchat-ghost\":\"fa-snapchat-ghost\",\"fa-snapchat-square\":\"fa-snapchat-square\",\"fa-pied-piper\":\"fa-pied-piper\",\"fa-first-order\":\"fa-first-order\",\"fa-yoast\":\"fa-yoast\",\"fa-themeisle\":\"fa-themeisle\",\"fa-google-plus-circle\":\"fa-google-plus-circle\",\"fa-google-plus-official\":\"fa-google-plus-official\",\"fa-fa\":\"fa-fa\",\"fa-font-awesome\":\"fa-font-awesome\",\"fa-handshake-o\":\"fa-handshake-o\",\"fa-envelope-open\":\"fa-envelope-open\",\"fa-envelope-open-o\":\"fa-envelope-open-o\",\"fa-linode\":\"fa-linode\",\"fa-address-book\":\"fa-address-book\",\"fa-address-book-o\":\"fa-address-book-o\",\"fa-vcard\":\"fa-vcard\",\"fa-address-card\":\"fa-address-card\",\"fa-vcard-o\":\"fa-vcard-o\",\"fa-address-card-o\":\"fa-address-card-o\",\"fa-user-circle\":\"fa-user-circle\",\"fa-user-circle-o\":\"fa-user-circle-o\",\"fa-user-o\":\"fa-user-o\",\"fa-id-badge\":\"fa-id-badge\",\"fa-drivers-license\":\"fa-drivers-license\",\"fa-id-card\":\"fa-id-card\",\"fa-drivers-license-o\":\"fa-drivers-license-o\",\"fa-id-card-o\":\"fa-id-card-o\",\"fa-quora\":\"fa-quora\",\"fa-free-code-camp\":\"fa-free-code-camp\",\"fa-telegram\":\"fa-telegram\",\"fa-thermometer-4\":\"fa-thermometer-4\",\"fa-thermometer\":\"fa-thermometer\",\"fa-thermometer-full\":\"fa-thermometer-full\",\"fa-thermometer-3\":\"fa-thermometer-3\",\"fa-thermometer-three-quarters\":\"fa-thermometer-three-quarters\",\"fa-thermometer-2\":\"fa-thermometer-2\",\"fa-thermometer-half\":\"fa-thermometer-half\",\"fa-thermometer-1\":\"fa-thermometer-1\",\"fa-thermometer-quarter\":\"fa-thermometer-quarter\",\"fa-thermometer-0\":\"fa-thermometer-0\",\"fa-thermometer-empty\":\"fa-thermometer-empty\",\"fa-shower\":\"fa-shower\",\"fa-bathtub\":\"fa-bathtub\",\"fa-s15\":\"fa-s15\",\"fa-bath\":\"fa-bath\",\"fa-podcast\":\"fa-podcast\",\"fa-window-maximize\":\"fa-window-maximize\",\"fa-window-minimize\":\"fa-window-minimize\",\"fa-window-restore\":\"fa-window-restore\",\"fa-times-rectangle\":\"fa-times-rectangle\",\"fa-window-close\":\"fa-window-close\",\"fa-times-rectangle-o\":\"fa-times-rectangle-o\",\"fa-window-close-o\":\"fa-window-close-o\",\"fa-bandcamp\":\"fa-bandcamp\",\"fa-grav\":\"fa-grav\",\"fa-etsy\":\"fa-etsy\",\"fa-imdb\":\"fa-imdb\",\"fa-ravelry\":\"fa-ravelry\",\"fa-eercast\":\"fa-eercast\",\"fa-microchip\":\"fa-microchip\",\"fa-snowflake-o\":\"fa-snowflake-o\",\"fa-superpowers\":\"fa-superpowers\",\"fa-wpexplorer\":\"fa-wpexplorer\",\"fa-meetup\":\"fa-meetup\",\"sr-only\":\"sr-only\",\"sr-only-focusable\":\"sr-only-focusable\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/font-awesome/css/font-awesome.css\n// module id = 702\n// module chunks = 0","// removed by extract-text-webpack-plugin\nmodule.exports = {\"animated\":\"animated\",\"infinite\":\"infinite\",\"hinge\":\"hinge\",\"bounceIn\":\"bounceIn\",\"bounceOut\":\"bounceOut\",\"flipOutX\":\"flipOutX\",\"flipOutY\":\"flipOutY\",\"bounce\":\"bounce\",\"flash\":\"flash\",\"pulse\":\"pulse\",\"rubberBand\":\"rubberBand\",\"shake\":\"shake\",\"headShake\":\"headShake\",\"swing\":\"swing\",\"tada\":\"tada\",\"wobble\":\"wobble\",\"jello\":\"jello\",\"bounceInDown\":\"bounceInDown\",\"bounceInLeft\":\"bounceInLeft\",\"bounceInRight\":\"bounceInRight\",\"bounceInUp\":\"bounceInUp\",\"bounceOutDown\":\"bounceOutDown\",\"bounceOutLeft\":\"bounceOutLeft\",\"bounceOutRight\":\"bounceOutRight\",\"bounceOutUp\":\"bounceOutUp\",\"fadeIn\":\"fadeIn\",\"fadeInDown\":\"fadeInDown\",\"fadeInDownBig\":\"fadeInDownBig\",\"fadeInLeft\":\"fadeInLeft\",\"fadeInLeftBig\":\"fadeInLeftBig\",\"fadeInRight\":\"fadeInRight\",\"fadeInRightBig\":\"fadeInRightBig\",\"fadeInUp\":\"fadeInUp\",\"fadeInUpBig\":\"fadeInUpBig\",\"fadeOut\":\"fadeOut\",\"fadeOutDown\":\"fadeOutDown\",\"fadeOutDownBig\":\"fadeOutDownBig\",\"fadeOutLeft\":\"fadeOutLeft\",\"fadeOutLeftBig\":\"fadeOutLeftBig\",\"fadeOutRight\":\"fadeOutRight\",\"fadeOutRightBig\":\"fadeOutRightBig\",\"fadeOutUp\":\"fadeOutUp\",\"fadeOutUpBig\":\"fadeOutUpBig\",\"flip\":\"flip\",\"flipInX\":\"flipInX\",\"flipInY\":\"flipInY\",\"lightSpeedIn\":\"lightSpeedIn\",\"lightSpeedOut\":\"lightSpeedOut\",\"rotateIn\":\"rotateIn\",\"rotateInDownLeft\":\"rotateInDownLeft\",\"rotateInDownRight\":\"rotateInDownRight\",\"rotateInUpLeft\":\"rotateInUpLeft\",\"rotateInUpRight\":\"rotateInUpRight\",\"rotateOut\":\"rotateOut\",\"rotateOutDownLeft\":\"rotateOutDownLeft\",\"rotateOutDownRight\":\"rotateOutDownRight\",\"rotateOutUpLeft\":\"rotateOutUpLeft\",\"rotateOutUpRight\":\"rotateOutUpRight\",\"rollIn\":\"rollIn\",\"rollOut\":\"rollOut\",\"zoomIn\":\"zoomIn\",\"zoomInDown\":\"zoomInDown\",\"zoomInLeft\":\"zoomInLeft\",\"zoomInRight\":\"zoomInRight\",\"zoomInUp\":\"zoomInUp\",\"zoomOut\":\"zoomOut\",\"zoomOutDown\":\"zoomOutDown\",\"zoomOutLeft\":\"zoomOutLeft\",\"zoomOutRight\":\"zoomOutRight\",\"zoomOutUp\":\"zoomOutUp\",\"slideInDown\":\"slideInDown\",\"slideInLeft\":\"slideInLeft\",\"slideInRight\":\"slideInRight\",\"slideInUp\":\"slideInUp\",\"slideOutDown\":\"slideOutDown\",\"slideOutLeft\":\"slideOutLeft\",\"slideOutRight\":\"slideOutRight\",\"slideOutUp\":\"slideOutUp\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/animate.css/animate.min.css\n// module id = 703\n// module chunks = 0","import * as actionTypes from '../actions/actionTypes';\nimport { updateObject } from '../utility';\n\nconst initialState = {\n    allCategories: [],\n\n};\n\nconst walmartGetAllCategories = (state, action) => {\n    return updateObject(state, { allCategories: action.allCategories });\n};\n\nconst walmartCategoryReducer = (state = initialState, action) => {\n    switch (action.type) {\n        case actionTypes.WALMART_GET_ALL_CATEGORIES:\n            return walmartGetAllCategories(state, action);\n\n        default:\n            return state;\n    }\n\n};\n\nexport default walmartCategoryReducer;\n\n\n// WEBPACK FOOTER //\n// src/store/reducers/walmartCategory.js"],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;A;;;;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7VA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1hDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtsBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;;;;;;;;AC/CA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxiEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACxMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzhCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC/gBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5gUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3jDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrCA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC/BA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjmBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjQA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACxBA;AACA;;;;;;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACVA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AChHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC98BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACrfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5DA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACpDA;AAAA;AAAA;AACA;AACA;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACfA;AACA;AACA;AACA;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACLA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;AACA;AAWA;AAAA;AACA;AADA;AATA;AACA;AACA;AACA;AACA;AACA;AANA;AACA;AAUA;AACA;AACA;AACA;AACA;AACA;;;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AA/FA;;;;;;ACJA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7TA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACPA;AACA;AACA;AACA;AACA;;;;;;;ACJA;AACA;AACA;AACA;;;;;;;ACHA;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AClBA;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5DA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACzDA;AACA;AACA;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACNA;;;;;;;ACAA;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACdA;AACA;;;;;;;;;;;AACA;;;;;;;;;;;AAEA;AACA;AACA;AAAA;AACA;AADA;AAIA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;;;;;;AAGA;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1zCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7DA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpBA;AACA;AACA;AACA;AACA;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC9BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3VA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtBA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC/FA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAVA;AACA;AAYA;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjqCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1WA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpFA;AAAA;AACA;AACA;AACA;;;;;;;ACHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACxGA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5EA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpBA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACXA;AACA;AACA;AACA;AACA;;;;;;;ACJA;AACA;AACA;AACA;AACA;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACLA;AACA;AACA;AACA;AACA;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACLA;AACA;AACA;AACA;;;;;;;ACHA;;;;;;;ACAA;AACA;AACA;AACA;AACA;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACpBA;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACNA;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACRA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACvDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AChOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACxBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC/HA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACxLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnHA;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACjIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;;;;;;;;;;;;;;;ACAA;AACA;;;AACA;AACA;;;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AADA;AAGA;AACA;AACA;AACA;AACA;AACA;AADA;AAGA;AACA;AACA;AACA;AACA;AACA;AADA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AADA;AADA;AAJA;AAWA;AACA;AACA;AACA;AADA;AAGA;AACA;AAzCA;AACA;AA2CA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAHA;AAOA;AACA;AACA;;;;;;;;;;;;;;;;;;ACtEA;;;;;;AACA;;;;;;AACA;;;;;;;;;AAIA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzBA;;;;;;ACAA;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/XA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClTA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACrEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACjGA;AAAA;AACA;AACA;AACA;;;;;;;ACHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACrIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACbA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChSA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACvPA;AAAA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACLA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpBA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC/BA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACPA;AACA;;;AACA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AACA;AACA;;;;;AACA;AACA;AACA;AAAA;AAEA;AAAA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AACA;AADA;AAHA;AAJA;AAFA;AACA;AAgBA;;;;;;;;;;;;;;;AC5BA;AACA;;;AAAA;AACA;;;;;;;;;;;AACA;;;;;;;;;;;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;;AAPA;AACA;AAWA;;;;;;;ACfA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5IA;;;;;;ACAA;AACA;AACA;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACrEA;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACfA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC/GA;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACfA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClIA;AAAA;AACA;AACA;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC9UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACxBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC3EA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC/DA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC/GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7FA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjWA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7FA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACvHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC3FA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACjGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvRA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;AClBA;AACA;;;;;AACA;AACA;AADA;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACv5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC3FA;AACA;AAHA;AACA;;;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACRA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/TA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5VA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9kBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC9EA;AACA;AAIA;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/BA;AACA;;;AAAA;AACA;;;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;;;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AACA;AACA;;;AAAA;AACA;;;AAEA;AACA;AAEA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAKA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;;;;;AAEA;AACA;AAVA;AACA;AAWA;AACA;AACA;AAFA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAGA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AADA;AADA;AADA;AACA;AAQA;AACA;;;;;;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjqDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACp0hBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7hBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnUA;AAAA;AACA;AACA;AACA;;;;;;;ACHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzaA;AACA;AACA;;;;;;;;ACFA;AAAA;AACA;AACA;AACA;;;;;;;ACHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC9EA;AAAA;AACA;AACA;AACA;;;;;;;ACHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5FA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACjSA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClTA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5JA;AAAA;AACA;AACA;AACA;;;;;;;ACHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACrKA;AAAA;AACA;AACA;AACA;;;;;;;ACHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC9EA;AAAA;AACA;AACA;AACA;;;;;;;ACHA;AAAA;AACA;AACA;AACA;;;;;;;ACHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC/BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1FA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtGA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7BA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnBA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3BA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACRA;AACA;AACA;AACA;;;;;;;;;ACHA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrBA;AAAA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5BA;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtBA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjIA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC9CA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC/CA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACZA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5CA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrGA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACtBA;AACA;;;;;;ACDA;AACA;;;;;;ACDA;AACA;;;;;;;;;;;;;;;ACDA;AACA;;;AAAA;AACA;AAAA;AACA;AAGA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;;;AAEA;;;;;;;;;;;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AAYA;;;;;;AAKA;;;;;;;;;;;;;;;ACnCA;AACA;;;AAAA;AACA;AAAA;AACA;AACA;AACA;;;AAAA;AACA;;;AAEA;AACA;;;AAAA;AACA;AADA;AACA;;;;;;;;;;;AACA;;;AAEA;AAAA;AACA;AADA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAbA;AAcA;AACA;;;AACA;AACA;AACA;AACA;AAIA;;;AAIA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AADA;AADA;AAOA;;;;;;AASA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAHA;AAKA;AACA;AACA;;;;;;;;;;;;;;;AC3EA;AACA;;;AAAA;AACA;AACA;AACA;AAEA;AACA;;;AAAA;AACA;;;;;;;;;AACA;;;;;;;;;;;AAGA;AAAA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AADA;AAAA;AADA;AAAA;AAGA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AADA;AALA;AASA;AAAA;AAAA;AAAA;AAAA;AAVA;AAcA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AADA;AAYA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AADA;AAGA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AADA;AAGA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AADA;AAGA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AADA;AAGA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AADA;AAGA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AADA;AAGA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AADA;AAGA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AADA;AAGA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AADA;AAGA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AADA;AAGA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AADA;AAGA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AADA;AA5DA;AADA;AADA;AAwEA;;;;;;AAIA;AACA;AACA;AADA;AAGA;AACA;AACA;;;;;;;ACvGA;AACA;;;;;;;;;;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWA;AAAA;AAAA;AAAA;AAAA;AAAA;AAXA;AAYA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;AACA;AAHA;AApBA;AACA;AA0BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AALA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AACA;AAKA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACp8BA;AACA;;;AAAA;AACA;AAAA;AACA;;;AAAA;AACA;AAAA;AACA;;;;;;;;;;;AAEA;;;;;;;;;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AADA;AAGA;AAAA;AAAA;AACA;AADA;AAIA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AADA;AAAA;AADA;AADA;AARA;AADA;AAmBA;;;;AAnCA;AACA;AAqCA;;;;;;;;AC7CA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC5BA;AACA;;;;;;;ACDA;AACA;AACA;AACA;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACNA;;;;;;ACAA;AACA;AACA;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACZA;AACA;;;;;;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACjCA;;;;;;;ACAA;AACA;AACA;;;;;;;ACFA;;;;;;ACAA;AACA;AACA;AACA;AACA;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACdA;AACA;AACA;AACA;AACA;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AClBA;;;;;;;ACAA;;;;;;;ACAA;;;;;;ACAA;AACA;;;;;;;ACDA;AACA;AACA;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACxBA;;;;;;ACAA;AACA;AACA;AACA;AACA;;;;;;;ACJA;AACA;AACA;;;;;;;ACFA;AACA;;;;;;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACRA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACrEA;AACA;;;;;;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACRA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC/EA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC3CA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACvCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACxaA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7GA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/GA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC9OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC9JA;;;;;;ACAA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrBA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC1DA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC1EA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClFA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzFA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7EA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5CA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACjEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACjFA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACvDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACvDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC/JA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC9KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChBA;AACA;AACA;AACA;AACA;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACvIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpRA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC3CA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACjFA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACvMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrTA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC/CA;AAAA;AAAA;AACA;AACA;AACA;;;;;;;ACHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5DA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpQA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/GA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7EA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7FA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC3EA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClFA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5IA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7GA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACvCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACJA;AACA;;;AAAA;AACA;AACA;AACA;;;AAAA;AACA;;;;;;;;;;;AAEA;;;;;;;;;;;AAEA;AACA;AACA;AACA;;;;;;AAMA;;;AAGA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AALA;AADA;AAUA;;;;;;AAIA;;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC1BA;AA2BA;AAQA;AAnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC3LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACjqBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACvPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC50CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACtMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACvvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACxTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7EA;AACA;;;;;;;;;;;;;;;ACDA;AACA;;;AACA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AACA;AACA;;;;;;;;;;;AAEA;;;;;;;;;;;;;;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAfA;AAmBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAfA;AAmBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAfA;AAmBA;AACA;AACA;AApEA;AADA;AA0EA;AACA;AACA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AAiBA;AAEA;;;AA7GA;AACA;AACA;AACA;AACA;AACA;;;AA0GA;AAAA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AALA;AADA;AASA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAHA;AAFA;AAQA;AAAA;AAAA;AAAA;AAAA;AAlBA;AAFA;AA2BA;;;;;;AAIA;;;;;;AC7JA;AACA;;;;;;;;;;;;;ACDA;AACA;;;AACA;AACA;;;;;AAEA;AAAA;AAEA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAJA;AAQA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAJA;AAQA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAJA;AAjBA;AADA;AAFA;AACA;AAiCA;;;;;;;;;;;;;;;ACvCA;AACA;;;AAAA;AACA;;;AACA;AACA;;;AAAA;AACA;;;;;;;;;;;AACA;;;;;;;;;;;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAFA;AADA;AAOA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AADA;AAIA;;;;;;AAIA;AACA;AACA;AAFA;AACA;AAKA;;;;;;AC3CA;;;;;;;;;;;;;;;ACAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AACA;AACA;;;;;;;;;;;AACA;;;;;;;;;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AADA;AAGA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AADA;AAWA;AAAA;AAAA;AACA;AADA;AAGA;AAAA;AAAA;AAAA;AACA;AADA;AAGA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AADA;AAGA;AACA;AAAA;AACA;AADA;AAIA;AACA;AAAA;AACA;AADA;AAVA;AArBA;AAsCA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AADA;AAWA;AAAA;AAAA;AACA;AADA;AACA;AADA;AAGA;AAAA;AAAA;AACA;AADA;AAGA;AAAA;AAAA;AAAA;AACA;AADA;AAlBA;AAvCA;AACA;AAiEA;AACA;AACA;AACA;AAAA;AACA;AADA;AAIA;AACA;AACA;AACA;AAAA;AACA;AADA;AAIA;AACA;AACA;AACA;AAAA;AACA;AADA;AAIA;AACA;AACA;AACA;AAAA;AACA;AADA;AAIA;AACA;AACA;AACA;AAAA;AACA;AADA;AAIA;AACA;AACA;AACA;AAAA;AACA;AADA;AAIA;AACA;AACA;AACA;AAAA;AACA;AADA;AAIA;AACA;AACA;AACA;AAAA;AACA;AADA;AAIA;AACA;AACA;AACA;AAAA;AACA;AADA;AAIA;AACA;AACA;AACA;AAAA;AACA;AADA;AAIA;AACA;AACA;AACA;AAAA;AACA;AADA;AAIA;AACA;AACA;AACA;AAAA;AACA;AADA;AAIA;AACA;AACA;AACA;AAAA;AACA;AADA;AAIA;AACA;AACA;AACA;AAAA;AACA;AADA;AAIA;AACA;AACA;AACA;AAAA;AACA;AADA;AAIA;AACA;AACA;AACA;AAAA;AACA;AADA;AAIA;AACA;AACA;AACA;AAAA;AACA;AADA;AAIA;AACA;AACA;AACA;AAAA;AACA;AADA;AAIA;AACA;AACA;AACA;AAAA;AACA;AADA;AAIA;AACA;AACA;AACA;AAAA;AACA;AADA;AAIA;AACA;AACA;AA9IA;AACA;AAgJA;AACA;;;;;;AAIA;AACA;AACA;AAFA;AACA;AAKA;;;;;;AC/OA;AACA;;;;;;;;;;;;;;;ACDA;AACA;;;AACA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;;;AACA;;;;;;;;;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAFA;AAIA;AANA;AAFA;AAYA;;;;;;AAGA;;;;;;ACjCA;AACA;;;;;;;;;;;;;ACDA;AACA;;;AACA;AACA;;;;;AACA;AAAA;AAAA;AACA;AAGA;;;;;;ACRA;AACA;;;;;;ACDA;AACA;;;;;;;;;;;;;;ACDA;AACA;AADA;AACA;AAAA;AACA;;;AACA;AACA;;;AACA;AACA;;;;;;;AAFA;AAFA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AADA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAOA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AACA;AADA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AACA;AAIA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AACA;;;;;;AC5GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACrCA;AACA;AADA;AACA;AAAA;AACA;;;AAAA;AACA;;;AAGA;AACA;;;;;;;AAJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAMA;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACpJA;AACA;;;AAAA;AACA;AACA;AACA;;;;;;;;;;;AAEA;;;;;;;;;;;AAEA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AADA;AADA;AAMA;;;;;;AAIA;;;;;;;;;;;;;;;ACpBA;AACA;;;AAAA;AACA;AAAA;AACA;;;AAAA;AACA;AACA;AACA;;;AACA;AACA;;;;;;;;;;;AACA;;;;;;;;;;;AAEA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAJA;AAMA;AAAA;AAAA;AAAA;AAAA;AAPA;AASA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAPA;AADA;AAVA;AADA;AADA;AA0BA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAMA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAEA;AAFA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AADA;AANA;AAUA;AAAA;AAAA;AACA;AADA;AAXA;AAgBA;AAjBA;AAoBA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAHA;AADA;AAQA;AATA;AAWA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAHA;AADA;AAQA;AATA;AAhCA;AA4CA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAFA;AAIA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAFA;AAvDA;AA6DA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAHA;AAKA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAHA;AAKA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAJA;AAMA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAHA;AAjBA;AADA;AA0BA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAHA;AADA;AAOA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAHA;AAKA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAHA;AANA;AAYA;AAAA;AAAA;AACA;AADA;AAGA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAHA;AAKA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAHA;AANA;AAhBA;AA6BA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAHA;AADA;AAOA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAJA;AAMA;AAAA;AAAA;AACA;AADA;AAPA;AA5CA;AAyDA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAHA;AADA;AAOA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AALA;AAJA;AADA;AAeA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AALA;AAJA;AADA;AAeA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AALA;AAJA;AADA;AA/BA;AA+CA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AADA;AADA;AAvDA;AADA;AA5KA;AADA;AAiPA;;;;;;AAIA;;;;;;AClQA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;;;;;;;;;;;;ACAA;AACA;;;AAAA;AACA;AAAA;AACA;AAAA;AACA;;;AAAA;AACA;AAAA;AACA;;;AAEA;AACA;AAAA;AACA;;;AAAA;AACA;;;AACA;AACA;;;AACA;AACA;;;AAAA;AACA;;;;;;;;;;;AACA;;;;;;;;;;;;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AAFA;AAIA;AACA;AAZA;AAcA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AAFA;AAIA;AACA;AAZA;AAcA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;AACA;AACA;AACA;AAJA;AAMA;AACA;AAfA;AAiBA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AAbA;AAeA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AALA;AAOA;AACA;AAfA;AAiBA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AAdA;AAgBA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AALA;AAOA;AACA;AAhBA;AA9FA;AAiHA;AACA;AAnHA;AA4HA;AAGA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAFA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AALA;AAWA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AARA;AAUA;AACA;AAAA;AAGA;AAEA;;;;;AAtFA;;;AAwFA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AALA;AACA;AAOA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AATA;AACA;AAYA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAFA;AADA;AAOA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AADA;AAGA;AAAA;AAAA;AAAA;AAAA;AALA;AAVA;AAkBA;AAAA;AAAA;AAAA;AAAA;AA1BA;AA+BA;;;;;;AAGA;AACA;AACA;AADA;AAGA;AACA;AAEA;;;;;;;;;;;;;;;;;AC5SA;AACA;;;AAAA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;;;AAAA;AACA;;;AACA;AACA;;;;;;;;;;;;;AAEA;;;;;;;;;;;;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AAdA;AAgBA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AAdA;AAjBA;AAkCA;AACA;AApCA;AAyCA;AAIA;AACA;AACA;AANA;AACA;AASA;AACA;AAGA;AACA;AACA;AACA;AAFA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AARA;AAWA;;;;;AAGA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AALA;AACA;AASA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAVA;AACA;AAYA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAFA;AADA;AAOA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AANA;AALA;AAFA;AARA;AA2BA;;;;;;AAGA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AAEA;;;;;;;;;;;;;;;AClLA;AACA;;;AAAA;AACA;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;AAEA;AACA;AADA;AACA;;;;;;;;;;;AACA;AACA;AAEA;;;;;;;;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AALA;AACA;AAQA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAFA;AADA;AAOA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AADA;AADA;AADA;AARA;AAoBA;;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;AAJA;AAMA;AACA;AACA;AACA;AACA;AAAA;AAAA;AADA;AAGA;AACA;AACA;;;;;;;;;;;;;;;AChGA;AACA;;;AAAA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;;;AACA;AACA;;;AAAA;AACA;;;AACA;AACA;;;AAAA;AACA;;;AAEA;AACA;AADA;AACA;;;;;;;;;;AAHA;AACA;AAGA;;;AACA;AAAA;AACA;AADA;AACA;AADA;AA0BA;AAEA;AACA;AAvBA;AACA;AACA;AACA;AAHA;AACA;AAKA;AACA;AAbA;AAcA;AACA;;;AACA;;;AAIA;;;AAUA;AACA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AADA;AACA;AADA;AACA;AACA;AAFA;AADA;AAOA;AAVA;AAaA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AADA;AADA;AAQA;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAMA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAFA;AAIA;AACA;AACA;;;;;;AC/FA;AACA;;;;;;;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC9KA;AAiFA;AArGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC3GA;AACA;AADA;AACA;;;AACA;AACA;AADA;AACA;AAGA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AAGA;AACA;AACA;AAEA;AAFA;AARA;AAaA;AAEA;AACA;AACA;;;;;;;;;;;;;ACxBA;AACA;AADA;AACA;AAAA;AACA;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AACA;AASA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAZA;AAeA;AACA;AACA;;;;;;;ACrDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1mDA;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChNA;AACA;AACA;AACA;;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACx3CA;AACA;AACA;AACA;AACA;;;;;;ACJA;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC3EA;AACA;AACA;AACA;AACA;;;;;;ACJA;;;;;;;ACAA;AACA;AACA;AACA;;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/VA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjKA;AACA;;;;;;ACDA;AACA;;;;;;ACDA;AACA;;;;;;;;;;;;;ACDA;AACA;AADA;AACA;AAAA;AACA;;;AACA;AACA;AACA;AAFA;AACA;AAIA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AACA;;;A","sourceRoot":""}