{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/util/loading-error.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/util/loading-state-machine.js","webpack:///./node_modules/.pnpm/tslib@1.14.1/node_modules/tslib/tslib.es6.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/parse/index.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/actionTypes.js","webpack:///./src/util/logging/index.tsx","webpack:///./src/data/models/topology.tsx","webpack:///./src/data/models/cluster.tsx","webpack:///./src/data/models/license.tsx","webpack:///./src/data/models/hosts.tsx","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/util/query.js","webpack:///./node_modules/.pnpm/prop-types@15.7.2/node_modules/prop-types/index.js","webpack:///./node_modules/.pnpm/@babel+runtime@7.14.0/node_modules/@babel/runtime/helpers/getPrototypeOf.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/util/assign.js","webpack:///./node_modules/.pnpm/reselect@3.0.1/node_modules/reselect/lib/index.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/vendor/bignumber.js/bignumber.js","webpack:///./node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits_browser.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/actions.js","webpack:///./node_modules/.pnpm/date-fns@2.16.1/node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack:///./node_modules/.pnpm/date-fns@2.16.1/node_modules/date-fns/esm/toDate/index.js","webpack:///./node_modules/.pnpm/@babel+runtime@7.12.5/node_modules/@babel/runtime/helpers/extends.js","webpack:///./node_modules/.pnpm/@babel+runtime@7.14.0/node_modules/@babel/runtime/helpers/classCallCheck.js","webpack:///./node_modules/.pnpm/@babel+runtime@7.14.0/node_modules/@babel/runtime/helpers/createClass.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/structure/plain/splice.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/structure/plain/getIn.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/structure/plain/setIn.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/structure/plain/deepEqual.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/structure/plain/deleteIn.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/structure/plain/keys.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/structure/plain/index.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/util/number-formatter.js","webpack:///./src/worker/api/helpers.tsx","webpack:///./node_modules/.pnpm/@babel+runtime@7.14.0/node_modules/@babel/runtime/helpers/inherits.js","webpack:///./node_modules/.pnpm/safe-buffer@5.2.1/node_modules/safe-buffer/index.js","webpack:///./node_modules/.pnpm/@babel+runtime@7.14.0/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/helper/makeString.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/core/sql/connection/actions-connection.js","webpack:///./node_modules/.pnpm/@babel+runtime@7.14.0/node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/util/nullable.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/components/render-loading-error/render-loading-error.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/worker/api/helpers.js","webpack:///./node_modules/.pnpm/buffer@4.9.2/node_modules/buffer/index.js","webpack:///./node_modules/.pnpm/redux@4.0.4/node_modules/redux/es/redux.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/util/symbols.js","webpack:///./node_modules/.pnpm/@babel+runtime@7.14.0/node_modules/@babel/runtime/helpers/slicedToArray.js","webpack:///./node_modules/.pnpm/reselect@4.0.0/node_modules/reselect/es/index.js","webpack:///./node_modules/.pnpm/react-redux@7.1.3_9a2f9d4864311d39d6f2623bd2f887e8/node_modules/react-redux/es/components/Context.js","webpack:///./node_modules/.pnpm/react-redux@7.1.3_9a2f9d4864311d39d6f2623bd2f887e8/node_modules/react-redux/es/utils/batch.js","webpack:///./node_modules/.pnpm/react-redux@7.1.3_9a2f9d4864311d39d6f2623bd2f887e8/node_modules/react-redux/es/utils/Subscription.js","webpack:///./node_modules/.pnpm/react-redux@7.1.3_9a2f9d4864311d39d6f2623bd2f887e8/node_modules/react-redux/es/components/Provider.js","webpack:///./node_modules/.pnpm/react-redux@7.1.3_9a2f9d4864311d39d6f2623bd2f887e8/node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","webpack:///./node_modules/.pnpm/react-redux@7.1.3_9a2f9d4864311d39d6f2623bd2f887e8/node_modules/react-redux/es/components/connectAdvanced.js","webpack:///./node_modules/.pnpm/react-redux@7.1.3_9a2f9d4864311d39d6f2623bd2f887e8/node_modules/react-redux/es/utils/shallowEqual.js","webpack:///./node_modules/.pnpm/react-redux@7.1.3_9a2f9d4864311d39d6f2623bd2f887e8/node_modules/react-redux/es/connect/wrapMapToProps.js","webpack:///./node_modules/.pnpm/react-redux@7.1.3_9a2f9d4864311d39d6f2623bd2f887e8/node_modules/react-redux/es/connect/mapDispatchToProps.js","webpack:///./node_modules/.pnpm/react-redux@7.1.3_9a2f9d4864311d39d6f2623bd2f887e8/node_modules/react-redux/es/connect/mapStateToProps.js","webpack:///./node_modules/.pnpm/react-redux@7.1.3_9a2f9d4864311d39d6f2623bd2f887e8/node_modules/react-redux/es/connect/mergeProps.js","webpack:///./node_modules/.pnpm/react-redux@7.1.3_9a2f9d4864311d39d6f2623bd2f887e8/node_modules/react-redux/es/connect/selectorFactory.js","webpack:///./node_modules/.pnpm/react-redux@7.1.3_9a2f9d4864311d39d6f2623bd2f887e8/node_modules/react-redux/es/connect/connect.js","webpack:///./node_modules/.pnpm/react-redux@7.1.3_9a2f9d4864311d39d6f2623bd2f887e8/node_modules/react-redux/es/hooks/useReduxContext.js","webpack:///./node_modules/.pnpm/react-redux@7.1.3_9a2f9d4864311d39d6f2623bd2f887e8/node_modules/react-redux/es/hooks/useStore.js","webpack:///./node_modules/.pnpm/react-redux@7.1.3_9a2f9d4864311d39d6f2623bd2f887e8/node_modules/react-redux/es/hooks/useDispatch.js","webpack:///./node_modules/.pnpm/react-redux@7.1.3_9a2f9d4864311d39d6f2623bd2f887e8/node_modules/react-redux/es/hooks/useSelector.js","webpack:///./node_modules/.pnpm/react-redux@7.1.3_9a2f9d4864311d39d6f2623bd2f887e8/node_modules/react-redux/es/index.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/util/noop.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/util/pipe.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/Observable.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/util/toSubscriber.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/util/canReportError.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/Subscriber.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/util/logging/index.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/util/sql-query.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/util/vector.js","webpack:///./node_modules/.pnpm/process@0.11.10/node_modules/process/browser.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/sui/__generated__/light-hex-color-map.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/sui/__generated__/color-variable-map.js","webpack:///./src/data/selectors/routes.tsx","webpack:///./node_modules/.pnpm/@sentry+utils@5.6.1/node_modules/@sentry/utils/esm/misc.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/components/loading/loading.js","webpack:///./node_modules/.pnpm/bn.js@4.12.0/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/.pnpm/date-fns@2.16.1/node_modules/date-fns/esm/_lib/toInteger/index.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/util/version.js","webpack:///./node_modules/.pnpm/@babel+runtime@7.12.5/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack:///./src/util/segment.tsx","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/components/size-circle/size-circle.js","webpack:///./src/view/common/size-circle-cell.tsx","webpack:///./src/memsql/schema-column-info.tsx","webpack:///./node_modules/.pnpm/invariant@2.2.4/node_modules/invariant/browser.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/index.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/core/sql/connection/utils.js","webpack:///./src/util/rate.tsx","webpack:///./src/data/selectors/cluster-metadata.tsx","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/util/form.js","webpack:///./node_modules/.pnpm/react-router5@7.1.0_react@16.12.0+router5@7.0.2/node_modules/react-router5/dist/index.es.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/operators/catchError.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/core/sql/connection/worker-connection.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/util/object.js","webpack:///./node_modules/.pnpm/@babel+runtime@7.12.5/node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/config.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/constants/types.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/util/string.js","webpack:///./node_modules/.pnpm/eventemitter3@4.0.7/node_modules/eventemitter3/index.js","webpack:///./node_modules/.pnpm/@babel+runtime@7.12.5/node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/components/tip/tip.js","webpack:///./src/view/common/internal-link.tsx","webpack:///./node_modules/.pnpm/minimalistic-assert@1.0.1/node_modules/minimalistic-assert/index.js","webpack:///./node_modules/.pnpm/elliptic@6.5.4/node_modules/elliptic/lib/elliptic/utils.js","webpack:///./src/data/selectors/topology.tsx","webpack:///./src/worker/api/clusters.tsx","webpack:///./node_modules/.pnpm/router5-transition-path@7.0.1_router5@7.0.2/node_modules/router5-transition-path/dist/index.es.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/util/UnsubscriptionError.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/Subscription.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/services/single-storage-config.js","webpack:///./src/memsql/db-object-id.tsx","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/packets/index.js","webpack:///./node_modules/.pnpm/@sentry+core@5.6.2/node_modules/@sentry/core/esm/integrations/functiontostring.js","webpack:///./node_modules/.pnpm/@sentry+utils@5.6.1/node_modules/@sentry/utils/esm/string.js","webpack:///./node_modules/.pnpm/@sentry+core@5.6.2/node_modules/@sentry/core/esm/integrations/inboundfilters.js","webpack:///./node_modules/.pnpm/@sentry+utils@5.6.1/node_modules/@sentry/utils/esm/polyfill.js","webpack:///./node_modules/.pnpm/@sentry+utils@5.6.1/node_modules/@sentry/utils/esm/error.js","webpack:///./node_modules/.pnpm/@sentry+core@5.6.2/node_modules/@sentry/core/esm/dsn.js","webpack:///./node_modules/.pnpm/@sentry+core@5.6.2/node_modules/@sentry/core/esm/api.js","webpack:///./node_modules/.pnpm/@sentry+core@5.6.2/node_modules/@sentry/core/esm/integration.js","webpack:///./node_modules/.pnpm/@sentry+core@5.6.2/node_modules/@sentry/core/esm/baseclient.js","webpack:///./node_modules/.pnpm/@sentry+types@5.6.1/node_modules/@sentry/types/esm/status.js","webpack:///./node_modules/.pnpm/@sentry+core@5.6.2/node_modules/@sentry/core/esm/transports/noop.js","webpack:///./node_modules/.pnpm/@sentry+types@5.6.1/node_modules/@sentry/types/esm/severity.js","webpack:///./node_modules/.pnpm/@sentry+core@5.6.2/node_modules/@sentry/core/esm/basebackend.js","webpack:///./node_modules/.pnpm/@sentry+utils@5.6.1/node_modules/@sentry/utils/esm/supports.js","webpack:///./node_modules/.pnpm/@sentry+browser@5.6.2/node_modules/@sentry/browser/esm/tracekit.js","webpack:///./node_modules/.pnpm/@sentry+browser@5.6.2/node_modules/@sentry/browser/esm/parsers.js","webpack:///./node_modules/.pnpm/@sentry+utils@5.6.1/node_modules/@sentry/utils/esm/promisebuffer.js","webpack:///./node_modules/.pnpm/@sentry+browser@5.6.2/node_modules/@sentry/browser/esm/transports/base.js","webpack:///./node_modules/.pnpm/@sentry+browser@5.6.2/node_modules/@sentry/browser/esm/transports/fetch.js","webpack:///./node_modules/.pnpm/@sentry+browser@5.6.2/node_modules/@sentry/browser/esm/transports/xhr.js","webpack:///./node_modules/.pnpm/@sentry+browser@5.6.2/node_modules/@sentry/browser/esm/backend.js","webpack:///./node_modules/.pnpm/@sentry+browser@5.6.2/node_modules/@sentry/browser/esm/version.js","webpack:///./node_modules/.pnpm/@sentry+browser@5.6.2/node_modules/@sentry/browser/esm/client.js","webpack:///./node_modules/.pnpm/@sentry+minimal@5.6.1/node_modules/@sentry/minimal/esm/index.js","webpack:///./node_modules/.pnpm/@sentry+browser@5.6.2/node_modules/@sentry/browser/esm/helpers.js","webpack:///./node_modules/.pnpm/@sentry+browser@5.6.2/node_modules/@sentry/browser/esm/integrations/trycatch.js","webpack:///./node_modules/.pnpm/@sentry+browser@5.6.2/node_modules/@sentry/browser/esm/integrations/breadcrumbs.js","webpack:///./node_modules/.pnpm/@sentry+browser@5.6.2/node_modules/@sentry/browser/esm/integrations/globalhandlers.js","webpack:///./node_modules/.pnpm/@sentry+browser@5.6.2/node_modules/@sentry/browser/esm/integrations/linkederrors.js","webpack:///./node_modules/.pnpm/@sentry+browser@5.6.2/node_modules/@sentry/browser/esm/integrations/useragent.js","webpack:///./node_modules/.pnpm/@sentry+browser@5.6.2/node_modules/@sentry/browser/esm/sdk.js","webpack:///./node_modules/.pnpm/@sentry+core@5.6.2/node_modules/@sentry/core/esm/sdk.js","webpack:///./src/util/sentry.tsx","webpack:///./node_modules/.pnpm/@babel+runtime@7.14.0/node_modules/@babel/runtime/helpers/objectWithoutProperties.js","webpack:///./node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/utils.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_root.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/isArray.js","webpack:///./src/data/selectors/clusters.tsx","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/symbol/observable.js","webpack:///./node_modules/.pnpm/date-fns@2.16.1/node_modules/date-fns/esm/isValid/index.js","webpack:///./node_modules/.pnpm/date-fns@2.16.1/node_modules/date-fns/esm/subMilliseconds/index.js","webpack:///./node_modules/.pnpm/date-fns@2.16.1/node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","webpack:///./node_modules/.pnpm/date-fns@2.16.1/node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","webpack:///./node_modules/.pnpm/date-fns@2.16.1/node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","webpack:///./node_modules/.pnpm/date-fns@2.16.1/node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack:///./node_modules/.pnpm/date-fns@2.16.1/node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack:///./node_modules/.pnpm/date-fns@2.16.1/node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack:///./node_modules/.pnpm/date-fns@2.16.1/node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack:///./node_modules/.pnpm/date-fns@2.16.1/node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack:///./node_modules/.pnpm/date-fns@2.16.1/node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack:///./node_modules/.pnpm/date-fns@2.16.1/node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack:///./node_modules/.pnpm/date-fns@2.16.1/node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack:///./node_modules/.pnpm/date-fns@2.16.1/node_modules/date-fns/esm/_lib/format/formatters/index.js","webpack:///./node_modules/.pnpm/date-fns@2.16.1/node_modules/date-fns/esm/_lib/format/longFormatters/index.js","webpack:///./node_modules/.pnpm/date-fns@2.16.1/node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack:///./node_modules/.pnpm/date-fns@2.16.1/node_modules/date-fns/esm/format/index.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/core/sql/query-editor/reducers-query-editor.js","webpack:///./node_modules/.pnpm/@babel+runtime@7.12.5/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack:///./node_modules/.pnpm/@sentry+utils@5.6.1/node_modules/@sentry/utils/esm/is.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/scheduled/scheduled.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/util/isInteropObservable.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/scheduled/scheduleObservable.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/scheduled/schedulePromise.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/util/isIterable.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/scheduled/scheduleIterable.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/observable/from.js","webpack:///./node_modules/.pnpm/@sentry+utils@5.6.1/node_modules/@sentry/utils/esm/object.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/trim.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/util/rectangle.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/core/sql/explain/layout.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/util/tree.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/core/sql/explain/parse.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/core/sql/explain/worker-explain.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/util/hostReportError.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/ReduxFormContext.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/components/super-table/super-table.js","webpack:///./node_modules/.pnpm/cipher-base@1.0.4/node_modules/cipher-base/index.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/isObject.js","webpack:///./src/data/selectors/pipelines.tsx","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/index.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/symbol/iterator.js","webpack:///./src/view/common/models/cluster-metadata.tsx","webpack:///./src/view/common/ratio-metric-cell.tsx","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/toPath.js","webpack:///./src/data/models/cluster-metadata.tsx","webpack:///./src/memsql/qualified-name.tsx","webpack:///./node_modules/.pnpm/hoist-non-react-statics@3.3.2/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack:///./src/worker/net/backend.tsx","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/components/typography/typography-utility-variants.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/sui/__generated__/border-color-utility-variants.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/sui/__generated__/border-radius-utility-variants.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/sui/__generated__/text-color-utility-variants.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/sui/__generated__/background-color-utility-variants.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/sui/__generated__/font-utility-variants.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/sui/__generated__/space-utility-variants.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/sui/__generated__/size-utility-variants.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/sui/additional-utility-variants.js","webpack:///./node_modules/.pnpm/sqlstring@2.3.1/node_modules/sqlstring/index.js","webpack:///./node_modules/.pnpm/search-params@2.1.3/node_modules/search-params/dist/cjs/index.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/components/custom-scrollbar/custom-scrollbar.js","webpack:///./src/data/selectors/index.tsx","webpack:///./src/data/selectors/license.tsx","webpack:///./node_modules/.pnpm/readable-stream@2.3.7/node_modules/readable-stream/lib/_stream_duplex.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_iso_year/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/start_of_iso_week/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/start_of_day/index.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/isObjectLike.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_getNative.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/memsql/errorcodes.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/sequences/Sequence.js","webpack:///./src/data/actions/cluster-metadata.tsx","webpack:///./node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/index.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/util/isFunction.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/util/isArray.js","webpack:///./src/util/rank-dictionary.tsx","webpack:///./src/util/sql-buffer.tsx","webpack:///./src/data/reducers/console.tsx","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/util/prefixName.js","webpack:///./src/view/common/overrides/external-link.tsx","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/components/icon/icon-tip.js","webpack:///./node_modules/.pnpm/class-variance-authority@0.2.1/node_modules/class-variance-authority/dist/index.esm.js","webpack:///./node_modules/.pnpm/events@3.3.0/node_modules/events/events.js","webpack:///./node_modules/.pnpm/randombytes@2.1.0/node_modules/randombytes/browser.js","webpack:///./node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/errors-browser.js","webpack:///./node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/lib/_stream_duplex.js","webpack:///./node_modules/.pnpm/string_decoder@1.3.0/node_modules/string_decoder/lib/string_decoder.js","webpack:///./node_modules/.pnpm/sha.js@2.4.11/node_modules/sha.js/hash.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/memsql/typecast.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/core/sql/query-editor/selectors-page-editor.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/util/range.js","webpack:///./src/data/actions/topology.tsx","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/core/sql/cluster/models-cluster.js","webpack:///./src/util/supported-device.tsx","webpack:///./node_modules/.pnpm/sqlstring@2.3.2/node_modules/sqlstring/index.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/util/isObject.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/scheduled/scheduleArray.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/operators/map.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/InnerSubscriber.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/util/subscribeToResult.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/OuterSubscriber.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/util/validateComponentProp.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/events/isEvent.js","webpack:///./node_modules/.pnpm/is-promise@2.2.2/node_modules/is-promise/index.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/defaultShouldValidate.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/util/observable.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/Observer.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/sequences/Query.js","webpack:///./src/util/count.tsx","webpack:///./src/util/compression-ratio.tsx","webpack:///./src/util/show-definition-column.tsx","webpack:///./src/view/common/console-query-button.tsx","webpack:///./node_modules/.pnpm/symbol-observable@1.2.0/node_modules/symbol-observable/es/index.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/observable/of.js","webpack:///./src/data/selectors/schema.tsx","webpack:///./src/data/memsql-web-api.tsx","webpack:///./src/data/actions/web-api.tsx","webpack:///./src/worker/api/topology-queries.tsx","webpack:///./src/worker/api/topology.tsx","webpack:///./node_modules/.pnpm/create-hash@1.2.0/node_modules/create-hash/browser.js","webpack:///./node_modules/.pnpm/core-util-is@1.0.3/node_modules/core-util-is/lib/util.js","webpack:///./node_modules/.pnpm/buffer-xor@1.0.3/node_modules/buffer-xor/index.js","webpack:///./node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/common.js","webpack:///./node_modules/.pnpm/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/base/buffer.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/add_days/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/add_milliseconds/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/start_of_iso_year/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/compare_asc/index.js","webpack:///./src/view/topology/columns-info.tsx","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/eq.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_toKey.js","webpack:///./node_modules/.pnpm/date-fns@2.16.1/node_modules/date-fns/esm/addMilliseconds/index.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/isFunction.js","webpack:///./node_modules/.pnpm/date-fns@2.16.1/node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack:///./node_modules/.pnpm/date-fns@2.16.1/node_modules/date-fns/esm/compareAsc/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_time/index.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/defaultShouldError.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/defaultShouldWarn.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/WebSocketWrapper.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/Connection.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/symbol/rxSubscriber.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/util/sql-results.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/util/platform.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/util/remove-from-set.js","webpack:///./src/util/joins/left-join.tsx","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/isEqualWith.js","webpack:///./src/worker/api/version-query.tsx","webpack:///./src/worker/api/proxy.tsx","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/operators/takeUntil.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/worker/net/static-connection.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/worker/net/connection-manager.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/observable/merge.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/components/general-error/general-error.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/components/modal/modal.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/components/centering-wrapper/centering-wrapper.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/components/alert/alert.js","webpack:///(webpack)/buildin/harmony-module.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/core/sql/selectors.js","webpack:///./node_modules/.pnpm/router5-helpers@7.0.1/node_modules/router5-helpers/dist/index.es.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/components/resize/resize-detector.js","webpack:///./node_modules/.pnpm/util-deprecate@1.0.2/node_modules/util-deprecate/browser.js","webpack:///./node_modules/.pnpm/process-nextick-args@2.0.1/node_modules/process-nextick-args/index.js","webpack:///./node_modules/.pnpm/browserify-aes@1.2.0/node_modules/browserify-aes/aes.js","webpack:///./node_modules/.pnpm/evp_bytestokey@1.0.3/node_modules/evp_bytestokey/index.js","webpack:///./node_modules/.pnpm/elliptic@6.5.4/node_modules/elliptic/lib/elliptic/curve/base.js","webpack:///./node_modules/.pnpm/parse-asn1@5.1.6/node_modules/parse-asn1/index.js","webpack:///./node_modules/.pnpm/raf@3.4.1/node_modules/raf/index.js","webpack:///./src/data/actions/bottom-panel.tsx","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/start_of_week/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_calendar_days/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/add_months/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_milliseconds/index.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/pad.js","webpack:///./src/util/studio-config.tsx","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_Symbol.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/isSymbol.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_nativeCreate.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_ListCache.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_assocIndexOf.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_getMapData.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/isArrayLike.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/components/form/form.js","webpack:///./node_modules/.pnpm/react-motion@0.5.2_react@16.12.0/node_modules/react-motion/lib/stripStyle.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_baseAssignValue.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/hooks/use-media-query.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/theme-context.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/hooks/use-local-storage.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/components/condition/condition.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/components/fullscreen/fullscreen.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/core/sql/query-editor/models-query-editor.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/constants/client.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/worker/api/index.js","webpack:///./src/data/actions/hosts.tsx","webpack:///./src/view/common/models/schema.tsx","webpack:///./src/view/pipelines/columns-info.tsx","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/defaultShouldAsyncValidate.js","webpack:///./node_modules/.pnpm/date-fns@2.16.1/node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack:///./node_modules/.pnpm/date-fns@2.16.1/node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack:///./node_modules/.pnpm/date-fns@2.16.1/node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack:///./node_modules/.pnpm/date-fns@2.16.1/node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack:///./node_modules/.pnpm/date-fns@2.16.1/node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack:///./node_modules/.pnpm/date-fns@2.16.1/node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack:///./node_modules/.pnpm/date-fns@2.16.1/node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack:///./node_modules/.pnpm/date-fns@2.16.1/node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack:///./node_modules/.pnpm/date-fns@2.16.1/node_modules/date-fns/esm/locale/en-US/index.js","webpack:///./node_modules/.pnpm/date-fns@2.16.1/node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/core/sql/connection/reducers-connection.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/core/sql/explain/reducers-explain.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/core/sql/log/reducers-log.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/core/sql/reducers.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/worker/protocol.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/worker/middleware.js","webpack:///./node_modules/.pnpm/es6-error@4.1.1/node_modules/es6-error/es6/index.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/SubmissionError.js","webpack:///./node_modules/.pnpm/jwt-decode@2.2.0/node_modules/jwt-decode/lib/index.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/constants/charsets.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/util/isScheduler.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/observable/fromArray.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/util/subscribeToArray.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/util/isArrayLike.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/util/isPromise.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/util/identity.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/util/set.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/util/data-type.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/components/bars/loading-bar.js","webpack:///./src/router/util.tsx","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/components/fullscreen/fullscreen-loading.js","webpack:///./node_modules/.pnpm/@babel+runtime@7.12.5/node_modules/@babel/runtime/helpers/createClass.js","webpack:///./node_modules/.pnpm/react-lifecycles-compat@3.0.4/node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/util/subscribeTo.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/util/subscribeToObservable.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/util/subscribeToPromise.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/util/subscribeToIterable.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/components/feedback-modal/feedback-modal.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/components/feedback-modal/provider.js","webpack:///./node_modules/.pnpm/@sentry+hub@5.6.1/node_modules/@sentry/hub/esm/scope.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/SqlString.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/util/isHotReloading.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/features/management-views/state/actions-management-views.js","webpack:///./node_modules/.pnpm/timers-browserify@2.0.11/node_modules/timers-browserify/main.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/util/json.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/format/index.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/components/typography/text.js","webpack:///./src/init-webpack-base-url.tsx","webpack:///./node_modules/.pnpm/@babel+runtime@7.14.0/node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack:///./node_modules/.pnpm/md5.js@1.3.5/node_modules/md5.js/index.js","webpack:///./node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/readable-browser.js","webpack:///./node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack:///./node_modules/.pnpm/ripemd160@2.0.2/node_modules/ripemd160/index.js","webpack:///./node_modules/.pnpm/sha.js@2.4.11/node_modules/sha.js/index.js","webpack:///./node_modules/.pnpm/stream-browserify@2.0.2/node_modules/stream-browserify/index.js","webpack:///./node_modules/.pnpm/readable-stream@2.3.7/node_modules/readable-stream/readable-browser.js","webpack:///./node_modules/.pnpm/safe-buffer@5.1.2/node_modules/safe-buffer/index.js","webpack:///./node_modules/.pnpm/readable-stream@2.3.7/node_modules/readable-stream/lib/_stream_writable.js","webpack:///./node_modules/.pnpm/des.js@1.0.1/node_modules/des.js/lib/des/cipher.js","webpack:///./node_modules/.pnpm/browserify-aes@1.2.0/node_modules/browserify-aes/browser.js","webpack:///./node_modules/.pnpm/browserify-aes@1.2.0/node_modules/browserify-aes/modes/index.js","webpack:///./node_modules/.pnpm/brorand@1.1.0/node_modules/brorand/index.js","webpack:///./node_modules/.pnpm/browserify-rsa@4.1.0/node_modules/browserify-rsa/index.js","webpack:///./node_modules/.pnpm/bn.js@5.2.1/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/.pnpm/elliptic@6.5.4/node_modules/elliptic/lib/elliptic.js","webpack:///./node_modules/.pnpm/elliptic@6.5.4/node_modules/elliptic/lib/elliptic/curves.js","webpack:///./node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash.js","webpack:///./node_modules/.pnpm/safer-buffer@2.1.2/node_modules/safer-buffer/safer.js","webpack:///./node_modules/.pnpm/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/base/node.js","webpack:///./node_modules/.pnpm/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/base/reporter.js","webpack:///./node_modules/.pnpm/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/constants/der.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/ConnectionConfig.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/util/global-deselect.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_date/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_days_in_month/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/add_weeks/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/compare_desc/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_months/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_seconds/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/locale/en/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/end_of_day/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_iso_week/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_same_week/index.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/capitalize.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/helper/defaultToWhiteSpace.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/chars.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/rtrim.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_MapCache.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_Map.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_baseIsEqual.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_Stack.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/keys.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/isArguments.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/isBuffer.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_isIndex.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/isTypedArray.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/isLength.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_isPrototype.js","webpack:///./node_modules/.pnpm/react-motion@0.5.2_react@16.12.0/node_modules/react-motion/lib/mapToZero.js","webpack:///./node_modules/.pnpm/react-motion@0.5.2_react@16.12.0/node_modules/react-motion/lib/stepper.js","webpack:///./node_modules/.pnpm/performance-now@0.2.0/node_modules/performance-now/lib/performance-now.js","webpack:///./node_modules/.pnpm/react-motion@0.5.2_react@16.12.0/node_modules/react-motion/lib/shouldStopAnimation.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/identity.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_isKey.js","webpack:///./src/view/util/level.tsx","webpack:///./src/view/common/models/topology.tsx","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/core/sql/explain/dimensions.js","webpack:///./node_modules/.pnpm/@babel+runtime@7.12.5/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack:///./node_modules/.pnpm/@loadable+component@5.13.1_react@16.12.0/node_modules/@loadable/component/dist/loadable.esm.js","webpack:///./node_modules/.pnpm/@babel+runtime@7.12.5/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack:///./node_modules/.pnpm/es6-promise@4.2.4/node_modules/es6-promise/dist/es6-promise.js","webpack:///./node_modules/.pnpm/@sentry+utils@5.6.1/node_modules/@sentry/utils/esm/logger.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/merge.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/mapValues.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/util/save-data.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/components/bars/inline-bar.js","webpack:///./src/worker/api/cluster-metadata.tsx","webpack:///./src/worker/api/cluster-metadata-queries.tsx","webpack:///./src/data/selectors/hosts.tsx","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/components/typography/heading.js","webpack:///./src/worker/api/schema-queries.tsx","webpack:///./src/memsql/get-show-create-table-query.tsx","webpack:///./src/worker/api/schema.tsx","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/core/sql/explain/actions-explain.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/core/sql/query-editor/actions-query-editor.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/core/sql/explain/selectors-explain.js","webpack:///./src/worker/api/license.tsx","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/components/feedback-modal/with-feedback-modal.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/util/monus.js","webpack:///./node_modules/.pnpm/date-fns@2.16.1/node_modules/date-fns/esm/closestTo/index.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/features/management-views/state/worker-management-views.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/typings/utils.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/features/help/content/toc-nodes.js","webpack:///./src/data/actions/console.tsx","webpack:///./src/data/selectors/dashboard.tsx","webpack:///./src/worker/api/remote-version.tsx","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/components/form/select.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/components/modal/simple-modal-body.js","webpack:///./src/worker/api/pipelines-queries.tsx","webpack:///./src/worker/api/pipelines.tsx","webpack:///./src/util/joins/outer-join.tsx","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/core/sql/log/actions-log.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/core/sql/connection/selectors-connection.js","webpack:///./src/data/models/schema.tsx","webpack:///./src/data/actions/schema.tsx","webpack:///./src/data/actions/events.tsx","webpack:///./src/data/actions/pipelines.tsx","webpack:///./src/data/actions/schema-tree.tsx","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/core/sql/topology/models-topology.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/components/bars/labeled-inline-bar.js","webpack:///./src/data/selectors/events.tsx","webpack:///./src/data/selectors/schema-tree.tsx","webpack:///./src/data/selectors/system-status.tsx","webpack:///./src/data/reducers/bottom-panel.tsx","webpack:///./src/urls.tsx","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/components/error-boundary/error-boundary.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/components/typography/paragraph.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/components/form/checkbox.js","webpack:///./src/view/cluster/profile-icon.tsx","webpack:///./src/view/common/node-badge.tsx","webpack:///./src/view/hosts/columns-info.tsx","webpack:///./src/worker/api/hosts.tsx","webpack:///./src/worker/api/hosts-queries.tsx","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/util/defer.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/worker/net/query-executor.js","webpack:///./node_modules/.pnpm/core-js@3.6.5/node_modules/core-js/internals/is-array.js","webpack:///./node_modules/.pnpm/core-js@3.6.5/node_modules/core-js/internals/function-bind-context.js","webpack:///./node_modules/.pnpm/core-js@3.6.5/node_modules/core-js/internals/a-function.js","webpack:///./node_modules/.pnpm/core-js@3.6.5/node_modules/core-js/internals/well-known-symbol.js","webpack:///./node_modules/.pnpm/core-js@3.6.5/node_modules/core-js/internals/native-symbol.js","webpack:///./node_modules/.pnpm/isarray@1.0.0/node_modules/isarray/index.js","webpack:///./node_modules/.pnpm/date-fns@2.16.1/node_modules/date-fns/esm/differenceInSeconds/index.js","webpack:///./node_modules/.pnpm/date-fns@2.16.1/node_modules/date-fns/esm/differenceInMilliseconds/index.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/packets/Field.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/Auth.js","webpack:///./node_modules/.pnpm/hash-base@3.1.0/node_modules/hash-base/index.js","webpack:///./node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/lib/_stream_readable.js","webpack:///./node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///./node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///./node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/lib/internal/streams/state.js","webpack:///./node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/lib/_stream_writable.js","webpack:///./node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/lib/_stream_transform.js","webpack:///./node_modules/.pnpm/sha.js@2.4.11/node_modules/sha.js/sha256.js","webpack:///./node_modules/.pnpm/sha.js@2.4.11/node_modules/sha.js/sha512.js","webpack:///./node_modules/.pnpm/readable-stream@2.3.7/node_modules/readable-stream/lib/_stream_readable.js","webpack:///./node_modules/.pnpm/readable-stream@2.3.7/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///./node_modules/.pnpm/readable-stream@2.3.7/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///./node_modules/.pnpm/readable-stream@2.3.7/node_modules/readable-stream/lib/_stream_transform.js","webpack:///./node_modules/.pnpm/create-hmac@1.1.7/node_modules/create-hmac/browser.js","webpack:///./node_modules/.pnpm/create-hash@1.2.0/node_modules/create-hash/md5.js","webpack:///./node_modules/.pnpm/pbkdf2@3.1.2/node_modules/pbkdf2/browser.js","webpack:///./node_modules/.pnpm/pbkdf2@3.1.2/node_modules/pbkdf2/lib/precondition.js","webpack:///./node_modules/.pnpm/pbkdf2@3.1.2/node_modules/pbkdf2/lib/default-encoding.js","webpack:///./node_modules/.pnpm/pbkdf2@3.1.2/node_modules/pbkdf2/lib/sync-browser.js","webpack:///./node_modules/.pnpm/pbkdf2@3.1.2/node_modules/pbkdf2/lib/to-buffer.js","webpack:///./node_modules/.pnpm/des.js@1.0.1/node_modules/des.js/lib/des/utils.js","webpack:///./node_modules/.pnpm/des.js@1.0.1/node_modules/des.js/lib/des/des.js","webpack:///./node_modules/.pnpm/browserify-aes@1.2.0/node_modules/browserify-aes/modes/ctr.js","webpack:///./node_modules/.pnpm/browserify-aes@1.2.0/node_modules/browserify-aes/incr32.js","webpack:///./node_modules/.pnpm/browserify-aes@1.2.0/node_modules/browserify-aes/authCipher.js","webpack:///./node_modules/.pnpm/browserify-aes@1.2.0/node_modules/browserify-aes/streamCipher.js","webpack:///./node_modules/.pnpm/diffie-hellman@5.0.3/node_modules/diffie-hellman/lib/generatePrime.js","webpack:///./node_modules/.pnpm/miller-rabin@4.0.1/node_modules/miller-rabin/lib/mr.js","webpack:///./node_modules/.pnpm/minimalistic-crypto-utils@1.0.1/node_modules/minimalistic-crypto-utils/lib/utils.js","webpack:///./node_modules/.pnpm/elliptic@6.5.4/node_modules/elliptic/lib/elliptic/curve/index.js","webpack:///./node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/sha/common.js","webpack:///./node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/sha/256.js","webpack:///./node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/sha/512.js","webpack:///./node_modules/.pnpm/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1.js","webpack:///./node_modules/.pnpm/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/encoders/index.js","webpack:///./node_modules/.pnpm/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/encoders/der.js","webpack:///./node_modules/.pnpm/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/decoders/index.js","webpack:///./node_modules/.pnpm/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/decoders/der.js","webpack:///./node_modules/.pnpm/public-encrypt@4.0.3/node_modules/public-encrypt/mgf.js","webpack:///./node_modules/.pnpm/public-encrypt@4.0.3/node_modules/public-encrypt/xor.js","webpack:///./node_modules/.pnpm/public-encrypt@4.0.3/node_modules/public-encrypt/withPublic.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/Pool.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/PoolConfig.js","webpack:///./node_modules/.pnpm/csv-stringify@5.5.1/node_modules/csv-stringify/lib/es5/sync.js","webpack:///./node_modules/.pnpm/@babel+runtime@7.14.0/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack:///./node_modules/.pnpm/@babel+runtime@7.14.0/node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/components/render-loading-error/render-multiple-loading-error.js","webpack:///./node_modules/.pnpm/dom-css@2.1.0/node_modules/dom-css/index.js","webpack:///./src/view/schema/const.tsx","webpack:///./src/view/common/models/pipelines.tsx","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/add_hours/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/add_iso_years/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/set_iso_year/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/add_minutes/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/add_quarters/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/add_seconds/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/add_years/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_calendar_iso_years/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_calendar_months/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_quarter/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_calendar_years/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_days/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/sub_iso_years/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/distance_in_words/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/end_of_week/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/end_of_month/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_day_of_year/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/start_of_year/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_valid/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_leap_year/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_iso_day/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_same_hour/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/start_of_hour/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_same_iso_week/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_same_iso_year/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_same_minute/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/start_of_minute/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_same_month/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_same_quarter/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/start_of_quarter/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_same_second/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/start_of_second/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_same_year/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/last_day_of_week/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/set_month/index.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/isBlank.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/decapitalize.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/helper/escapeRegExp.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/cleanDiacritics.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/splice.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/helper/toPositive.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/helper/adjacent.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/camelize.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/underscored.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/dasherize.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/helper/strRepeat.js","webpack:///./node_modules/.pnpm/sprintf-js@1.1.2/node_modules/sprintf-js/src/sprintf.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/toSentence.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/surround.js","webpack:///./src/view/events/columns-info.tsx","webpack:///./src/view/common/overrides/icon-tip.tsx","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_arrayMap.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_copyArray.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_stringToPath.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_toSource.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/toString.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_equalArrays.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_Uint8Array.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_arrayLikeKeys.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_overArg.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/features/active-queries/state/worker-active-queries.js","webpack:///./src/worker/api/events.tsx","webpack:///./node_modules/.pnpm/humanize-plus@1.8.2/node_modules/humanize-plus/dist/humanize.js","webpack:///./node_modules/.pnpm/react-collapse@4.0.3_react-motion@0.5.2+react@16.12.0/node_modules/react-collapse/lib/Collapse.js","webpack:///./node_modules/.pnpm/react-motion@0.5.2_react@16.12.0/node_modules/react-motion/lib/presets.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/FormSection.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/components/radio-button/radio-button.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_assignMergeValue.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_defineProperty.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_baseFor.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_getPrototype.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_safeGet.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/keysIn.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_isStrictComparable.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_matchesStrictComparable.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_baseGet.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_castPath.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/asyncValidation.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/events/silenceEvent.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/events/silenceEvents.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/generateValidator.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/handleSubmit.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/hasError.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/selectors/isValid.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/util/getDisplayName.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/createReduxForm.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/reduxForm.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/createFieldProps.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/events/getValue.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/isReactNative.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/events/onChangeValue.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/util/eventConsts.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/ConnectedField.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/util/shallowCompare.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/createField.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/Field.js","webpack:///./node_modules/.pnpm/date-fns@2.16.1/node_modules/date-fns/esm/differenceInCalendarMonths/index.js","webpack:///./node_modules/.pnpm/date-fns@2.16.1/node_modules/date-fns/esm/differenceInMonths/index.js","webpack:///./node_modules/.pnpm/date-fns@2.16.1/node_modules/date-fns/esm/formatDistance/index.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/components/transition/transition.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/components/toast/toast.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/components/toast/provider.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/deleteInWithCleanUp.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/createReducer.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/reducer.js","webpack:///./node_modules/.pnpm/date-fns@2.16.1/node_modules/date-fns/esm/_lib/cloneObject/index.js","webpack:///./node_modules/.pnpm/date-fns@2.16.1/node_modules/date-fns/esm/_lib/assign/index.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/createFormValueSelector.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/formValueSelector.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/selectors/getFormSyncErrors.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/getFormSyncErrors.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/selectors/getFormMeta.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/getFormMeta.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/selectors/getFormError.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/getFormError.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/selectors/isSubmitting.js","webpack:///./node_modules/.pnpm/redux-form@8.1.0_5c9f86e797cd53f65e3f5dab41590da1/node_modules/redux-form/es/isSubmitting.js","webpack:///./node_modules/.pnpm/@babel+runtime@7.14.0/node_modules/@babel/runtime/helpers/wrapNativeSuper.js","webpack:///./node_modules/.pnpm/@sentry+utils@5.6.1/node_modules/@sentry/utils/esm/memo.js","webpack:///./node_modules/.pnpm/@sentry+hub@5.6.1/node_modules/@sentry/hub/esm/span.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/Protocol.js","webpack:///./node_modules/.pnpm/url@0.11.0/node_modules/url/url.js","webpack:///./node_modules/.pnpm/util@0.11.1/node_modules/util/util.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/PoolConnection.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/observable/empty.js","webpack:///./node_modules/.pnpm/file-saver@2.0.2/node_modules/file-saver/dist/FileSaver.min.js","webpack:///./node_modules/.pnpm/react-custom-scrollbars@4.2.1_react-dom@16.12.0+react@16.12.0/node_modules/react-custom-scrollbars/lib/index.js","webpack:///./node_modules/.pnpm/resize-observer-polyfill@1.5.0/node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","webpack:///./node_modules/.pnpm/symbol-observable@1.2.0/node_modules/symbol-observable/es/ponyfill.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/index.js","webpack:///./node_modules/.pnpm/redux-devtools-extension@2.13.7_redux@4.0.4/node_modules/redux-devtools-extension/index.js","webpack:///./node_modules/.pnpm/query-string@5.1.1/node_modules/query-string/index.js","webpack:///./src/worker/index.worker.tsx","webpack:///./src/app.tsx","webpack:///./node_modules/.pnpm/react-collapse@4.0.3_react-motion@0.5.2+react@16.12.0/node_modules/react-collapse/lib/index.js","webpack:///./src/assets/images/banner-logo.svg","webpack:///./node_modules/.pnpm/react-hot-loader@4.8.8_react-dom@16.12.0+react@16.12.0/node_modules/react-hot-loader/index.js","webpack:///./src/util/handle-mysql-error.tsx","webpack:///./src/view/api/saml-assert.tsx","webpack:///./src/view/common/collapsable-form/section.tsx","webpack:///./src/view/common/collapsable-form/index.tsx","webpack:///./src/view/common/text-input.tsx","webpack:///./src/view/common/form-element.tsx","webpack:///./src/view/common/form-select.tsx","webpack:///./src/view/forms/add-new-cluster.tsx","webpack:///./src/view/connect/add-new-cluster.tsx","webpack:///./src/view/forms/connect-to-cluster.tsx","webpack:///./src/view/forms/delete-cluster.tsx","webpack:///./src/view/connect/clusters-list.tsx","webpack:///./src/view/connect/connect-to-cluster.tsx","webpack:///./src/view/connect/wrapper.tsx","webpack:///./src/view/controllers/connect.tsx","webpack:///./src/view/controllers/router.tsx","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/operators/mergeMap.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/operators/mergeAll.js","webpack:///./node_modules/.pnpm/core-js@3.6.5/node_modules/core-js/features/array/flat-map.js","webpack:///./node_modules/.pnpm/core-js@3.6.5/node_modules/core-js/es/array/flat-map.js","webpack:///./node_modules/.pnpm/core-js@3.6.5/node_modules/core-js/modules/es.array.flat-map.js","webpack:///./node_modules/.pnpm/core-js@3.6.5/node_modules/core-js/internals/flatten-into-array.js","webpack:///./node_modules/.pnpm/core-js@3.6.5/node_modules/core-js/internals/array-species-create.js","webpack:///./node_modules/.pnpm/core-js@3.6.5/node_modules/core-js/internals/use-symbol-as-uid.js","webpack:///./node_modules/.pnpm/core-js@3.6.5/node_modules/core-js/modules/es.array.unscopables.flat-map.js","webpack:///./node_modules/.pnpm/core-js@3.6.5/node_modules/core-js/internals/add-to-unscopables.js","webpack:///./node_modules/.pnpm/core-js@3.6.5/node_modules/core-js/internals/object-create.js","webpack:///./node_modules/.pnpm/core-js@3.6.5/node_modules/core-js/internals/object-define-properties.js","webpack:///./node_modules/.pnpm/core-js@3.6.5/node_modules/core-js/internals/html.js","webpack:///./node_modules/.pnpm/core-js@3.6.5/node_modules/core-js/internals/entry-unbind.js","webpack:///./node_modules/.pnpm/@babel+runtime@7.14.0/node_modules/@babel/runtime/helpers/typeof.js","webpack:///./node_modules/.pnpm/@babel+runtime@7.14.0/node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack:///./node_modules/.pnpm/@babel+runtime@7.14.0/node_modules/@babel/runtime/helpers/isNativeFunction.js","webpack:///./node_modules/.pnpm/@babel+runtime@7.14.0/node_modules/@babel/runtime/helpers/construct.js","webpack:///./node_modules/.pnpm/@babel+runtime@7.14.0/node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","webpack:///./node_modules/.pnpm/sqlstring@2.3.2/node_modules/sqlstring/lib/SqlString.js","webpack:///./node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js","webpack:///./node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js","webpack:///./node_modules/.pnpm/jwt-decode@2.2.0/node_modules/jwt-decode/lib/base64_url_decode.js","webpack:///./node_modules/.pnpm/jwt-decode@2.2.0/node_modules/jwt-decode/lib/atob.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/Parser.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/PacketHeader.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/BufferList.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/sequences/index.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/sequences/ChangeUser.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/packets/AuthSwitchRequestPacket.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/packets/AuthSwitchResponsePacket.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/packets/ClientAuthenticationPacket.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/packets/ComChangeUserPacket.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/packets/ComPingPacket.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/packets/ComQueryPacket.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/packets/ComQuitPacket.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/packets/ComStatisticsPacket.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/packets/EmptyPacket.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/packets/EofPacket.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/packets/ErrorPacket.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/packets/FieldPacket.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/packets/HandshakeInitializationPacket.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/packets/LocalDataFilePacket.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/packets/OkPacket.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/packets/OldPasswordPacket.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/packets/ResultSetHeaderPacket.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/packets/RowDataPacket.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/packets/SSLRequestPacket.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/packets/StatisticsPacket.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/packets/UseOldPasswordPacket.js","webpack:///./node_modules/.pnpm/crypto-browserify@3.12.0/node_modules/crypto-browserify/index.js","webpack:///./node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack:///./node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack:///./node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack:///./node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///./node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack:///./node_modules/.pnpm/sha.js@2.4.11/node_modules/sha.js/sha.js","webpack:///./node_modules/.pnpm/sha.js@2.4.11/node_modules/sha.js/sha1.js","webpack:///./node_modules/.pnpm/sha.js@2.4.11/node_modules/sha.js/sha224.js","webpack:///./node_modules/.pnpm/sha.js@2.4.11/node_modules/sha.js/sha384.js","webpack:///./node_modules/.pnpm/readable-stream@2.3.7/node_modules/readable-stream/lib/internal/streams/BufferList.js","webpack:///./node_modules/.pnpm/setimmediate@1.0.5/node_modules/setimmediate/setImmediate.js","webpack:///./node_modules/.pnpm/readable-stream@2.3.7/node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///./node_modules/.pnpm/readable-stream@2.3.7/node_modules/readable-stream/writable-browser.js","webpack:///./node_modules/.pnpm/readable-stream@2.3.7/node_modules/readable-stream/duplex-browser.js","webpack:///./node_modules/.pnpm/readable-stream@2.3.7/node_modules/readable-stream/transform.js","webpack:///./node_modules/.pnpm/readable-stream@2.3.7/node_modules/readable-stream/passthrough.js","webpack:///./node_modules/.pnpm/create-hmac@1.1.7/node_modules/create-hmac/legacy.js","webpack:///./node_modules/.pnpm/browserify-sign@4.2.1/node_modules/browserify-sign/algos.js","webpack:///./node_modules/.pnpm/pbkdf2@3.1.2/node_modules/pbkdf2/lib/async.js","webpack:///./node_modules/.pnpm/browserify-cipher@1.0.1/node_modules/browserify-cipher/browser.js","webpack:///./node_modules/.pnpm/browserify-des@1.0.2/node_modules/browserify-des/index.js","webpack:///./node_modules/.pnpm/des.js@1.0.1/node_modules/des.js/lib/des.js","webpack:///./node_modules/.pnpm/des.js@1.0.1/node_modules/des.js/lib/des/cbc.js","webpack:///./node_modules/.pnpm/des.js@1.0.1/node_modules/des.js/lib/des/ede.js","webpack:///./node_modules/.pnpm/browserify-aes@1.2.0/node_modules/browserify-aes/encrypter.js","webpack:///./node_modules/.pnpm/browserify-aes@1.2.0/node_modules/browserify-aes/modes/ecb.js","webpack:///./node_modules/.pnpm/browserify-aes@1.2.0/node_modules/browserify-aes/modes/cbc.js","webpack:///./node_modules/.pnpm/browserify-aes@1.2.0/node_modules/browserify-aes/modes/cfb.js","webpack:///./node_modules/.pnpm/browserify-aes@1.2.0/node_modules/browserify-aes/modes/cfb8.js","webpack:///./node_modules/.pnpm/browserify-aes@1.2.0/node_modules/browserify-aes/modes/cfb1.js","webpack:///./node_modules/.pnpm/browserify-aes@1.2.0/node_modules/browserify-aes/modes/ofb.js","webpack:///./node_modules/.pnpm/browserify-aes@1.2.0/node_modules/browserify-aes/ghash.js","webpack:///./node_modules/.pnpm/browserify-aes@1.2.0/node_modules/browserify-aes/decrypter.js","webpack:///./node_modules/.pnpm/browserify-des@1.0.2/node_modules/browserify-des/modes.js","webpack:///./node_modules/.pnpm/diffie-hellman@5.0.3/node_modules/diffie-hellman/browser.js","webpack:///./node_modules/.pnpm/diffie-hellman@5.0.3/node_modules/diffie-hellman/lib/dh.js","webpack:///./node_modules/.pnpm/browserify-sign@4.2.1/node_modules/browserify-sign/browser/index.js","webpack:///./node_modules/.pnpm/browserify-sign@4.2.1/node_modules/browserify-sign/browser/sign.js","webpack:///./node_modules/.pnpm/elliptic@6.5.4/node_modules/elliptic/lib/elliptic/curve/short.js","webpack:///./node_modules/.pnpm/elliptic@6.5.4/node_modules/elliptic/lib/elliptic/curve/mont.js","webpack:///./node_modules/.pnpm/elliptic@6.5.4/node_modules/elliptic/lib/elliptic/curve/edwards.js","webpack:///./node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/sha.js","webpack:///./node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/sha/1.js","webpack:///./node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/sha/224.js","webpack:///./node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/sha/384.js","webpack:///./node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/ripemd.js","webpack:///./node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/hmac.js","webpack:///./node_modules/.pnpm/elliptic@6.5.4/node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","webpack:///./node_modules/.pnpm/elliptic@6.5.4/node_modules/elliptic/lib/elliptic/ec/index.js","webpack:///./node_modules/.pnpm/hmac-drbg@1.0.1/node_modules/hmac-drbg/lib/hmac-drbg.js","webpack:///./node_modules/.pnpm/elliptic@6.5.4/node_modules/elliptic/lib/elliptic/ec/key.js","webpack:///./node_modules/.pnpm/elliptic@6.5.4/node_modules/elliptic/lib/elliptic/ec/signature.js","webpack:///./node_modules/.pnpm/elliptic@6.5.4/node_modules/elliptic/lib/elliptic/eddsa/index.js","webpack:///./node_modules/.pnpm/elliptic@6.5.4/node_modules/elliptic/lib/elliptic/eddsa/key.js","webpack:///./node_modules/.pnpm/elliptic@6.5.4/node_modules/elliptic/lib/elliptic/eddsa/signature.js","webpack:///./node_modules/.pnpm/parse-asn1@5.1.6/node_modules/parse-asn1/asn1.js","webpack:///./node_modules/.pnpm/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/api.js","webpack:///./node_modules/.pnpm/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/encoders/pem.js","webpack:///./node_modules/.pnpm/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/decoders/pem.js","webpack:///./node_modules/.pnpm/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/base/index.js","webpack:///./node_modules/.pnpm/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/constants/index.js","webpack:///./node_modules/.pnpm/parse-asn1@5.1.6/node_modules/parse-asn1/certificate.js","webpack:///./node_modules/.pnpm/parse-asn1@5.1.6/node_modules/parse-asn1/fixProc.js","webpack:///./node_modules/.pnpm/browserify-sign@4.2.1/node_modules/browserify-sign/browser/verify.js","webpack:///./node_modules/.pnpm/create-ecdh@4.0.4/node_modules/create-ecdh/browser.js","webpack:///./node_modules/.pnpm/public-encrypt@4.0.3/node_modules/public-encrypt/browser.js","webpack:///./node_modules/.pnpm/public-encrypt@4.0.3/node_modules/public-encrypt/publicEncrypt.js","webpack:///./node_modules/.pnpm/public-encrypt@4.0.3/node_modules/public-encrypt/privateDecrypt.js","webpack:///./node_modules/.pnpm/randomfill@1.0.4/node_modules/randomfill/browser.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/sequences/Handshake.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/sequences/Ping.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/ResultSet.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/constants/server_status.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/sequences/Quit.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/sequences/Statistics.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/mysqljs/lib/protocol/PacketWriter.js","webpack:///./node_modules/.pnpm/punycode@1.4.1/node_modules/punycode/punycode.js","webpack:///./node_modules/.pnpm/url@0.11.0/node_modules/url/util.js","webpack:///./node_modules/.pnpm/querystring-es3@0.2.1/node_modules/querystring-es3/index.js","webpack:///./node_modules/.pnpm/querystring-es3@0.2.1/node_modules/querystring-es3/decode.js","webpack:///./node_modules/.pnpm/querystring-es3@0.2.1/node_modules/querystring-es3/encode.js","webpack:///./node_modules/.pnpm/util@0.11.1/node_modules/util/support/isBufferBrowser.js","webpack:///./node_modules/.pnpm/inherits@2.0.3/node_modules/inherits/inherits_browser.js","webpack:///./node_modules/.pnpm/fast-text-encoding@1.0.3/node_modules/fast-text-encoding/text.min.js","webpack:///./node_modules/.pnpm/csv-stringify@5.5.1/node_modules/csv-stringify/lib/es5/index.js","webpack:///./node_modules/.pnpm/@babel+runtime@7.14.0/node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack:///./node_modules/.pnpm/@babel+runtime@7.14.0/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack:///./node_modules/.pnpm/@babel+runtime@7.14.0/node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack:///./node_modules/.pnpm/react-custom-scrollbars@4.2.1_react-dom@16.12.0+react@16.12.0/node_modules/react-custom-scrollbars/lib/Scrollbars/index.js","webpack:///./node_modules/.pnpm/performance-now@2.1.0/node_modules/performance-now/lib/performance-now.js","webpack:///./node_modules/.pnpm/prefix-style@2.0.1/node_modules/prefix-style/index.js","webpack:///./node_modules/.pnpm/to-camel-case@1.0.0/node_modules/to-camel-case/index.js","webpack:///./node_modules/.pnpm/to-space-case@1.0.0/node_modules/to-space-case/index.js","webpack:///./node_modules/.pnpm/to-no-case@1.0.2/node_modules/to-no-case/index.js","webpack:///./node_modules/.pnpm/add-px-to-style@1.0.0/node_modules/add-px-to-style/index.js","webpack:///./node_modules/.pnpm/prop-types@15.7.2/node_modules/prop-types/factoryWithThrowingShims.js","webpack:///./node_modules/.pnpm/prop-types@15.7.2/node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./node_modules/.pnpm/react-custom-scrollbars@4.2.1_react-dom@16.12.0+react@16.12.0/node_modules/react-custom-scrollbars/lib/utils/isString.js","webpack:///./node_modules/.pnpm/react-custom-scrollbars@4.2.1_react-dom@16.12.0+react@16.12.0/node_modules/react-custom-scrollbars/lib/utils/getScrollbarWidth.js","webpack:///./node_modules/.pnpm/react-custom-scrollbars@4.2.1_react-dom@16.12.0+react@16.12.0/node_modules/react-custom-scrollbars/lib/utils/returnFalse.js","webpack:///./node_modules/.pnpm/react-custom-scrollbars@4.2.1_react-dom@16.12.0+react@16.12.0/node_modules/react-custom-scrollbars/lib/utils/getInnerWidth.js","webpack:///./node_modules/.pnpm/react-custom-scrollbars@4.2.1_react-dom@16.12.0+react@16.12.0/node_modules/react-custom-scrollbars/lib/utils/getInnerHeight.js","webpack:///./node_modules/.pnpm/react-custom-scrollbars@4.2.1_react-dom@16.12.0+react@16.12.0/node_modules/react-custom-scrollbars/lib/Scrollbars/styles.js","webpack:///./node_modules/.pnpm/react-custom-scrollbars@4.2.1_react-dom@16.12.0+react@16.12.0/node_modules/react-custom-scrollbars/lib/Scrollbars/defaultRenderElements.js","webpack:///./node_modules/.pnpm/@babel+runtime@7.14.0/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack:///./node_modules/.pnpm/@babel+runtime@7.14.0/node_modules/@babel/runtime/helpers/iterableToArray.js","webpack:///./node_modules/.pnpm/@babel+runtime@7.14.0/node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack:///./node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/cjs/react-is.production.min.js","webpack:///./node_modules/.pnpm/@babel+runtime@7.14.0/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/are_ranges_overlapping/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/closest_index_to/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/closest_to/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_calendar_iso_weeks/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_calendar_quarters/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_calendar_weeks/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_hours/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_iso_years/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_minutes/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_quarters/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_weeks/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/difference_in_years/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/locale/en/build_distance_in_words_locale/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/locale/en/build_format_locale/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/locale/_lib/build_formatting_tokens_reg_exp/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/distance_in_words_strict/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/distance_in_words_to_now/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/each_day/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/end_of_hour/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/end_of_iso_week/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/end_of_iso_year/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/end_of_minute/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/end_of_quarter/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/end_of_second/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/end_of_today/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/end_of_tomorrow/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/end_of_year/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/end_of_yesterday/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_date/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_day/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_days_in_year/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_hours/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_iso_weeks_in_year/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_milliseconds/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_minutes/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_month/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_overlapping_days_in_ranges/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_seconds/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/get_year/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_after/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_before/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_equal/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_first_day_of_month/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_friday/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_future/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_last_day_of_month/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_monday/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_past/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_same_day/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_saturday/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_sunday/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_this_hour/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_this_iso_week/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_this_iso_year/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_this_minute/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_this_month/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_this_quarter/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_this_second/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_this_week/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_this_year/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_thursday/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_today/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_tomorrow/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_tuesday/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_wednesday/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_weekend/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_within_range/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/is_yesterday/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/last_day_of_iso_week/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/last_day_of_iso_year/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/last_day_of_month/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/last_day_of_quarter/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/last_day_of_year/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/max/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/min/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/set_date/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/set_day/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/set_day_of_year/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/set_hours/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/set_iso_day/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/set_iso_week/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/set_milliseconds/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/set_minutes/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/set_quarter/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/set_seconds/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/set_year/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/start_of_month/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/start_of_today/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/start_of_tomorrow/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/start_of_yesterday/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/sub_days/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/sub_hours/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/sub_milliseconds/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/sub_minutes/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/sub_months/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/sub_quarters/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/sub_seconds/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/sub_weeks/index.js","webpack:///./node_modules/.pnpm/date-fns@1.29.0/node_modules/date-fns/sub_years/index.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/stripTags.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/chop.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/clean.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/count.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/swapCase.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/escapeHTML.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/helper/escapeChars.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/unescapeHTML.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/helper/htmlEntities.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/insert.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/replaceAll.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/include.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/join.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/lines.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/dedent.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/reverse.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/startsWith.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/endsWith.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/pred.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/succ.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/titleize.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/classify.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/humanize.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/ltrim.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/truncate.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/prune.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/words.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/lpad.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/rpad.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/lrpad.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/sprintf.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/vsprintf.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/toNumber.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/numberFormat.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/strRight.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/strRightBack.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/strLeft.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/strLeftBack.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/toSentenceSerial.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/slugify.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/quote.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/unquote.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/repeat.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/naturalCmp.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/levenshtein.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/toBoolean.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/exports.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/wrap.js","webpack:///./node_modules/.pnpm/underscore.string@3.3.5/node_modules/underscore.string/map.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_getRawTag.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_objectToString.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_memoizeCapped.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/memoize.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_mapCacheClear.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_Hash.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_hashClear.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_baseIsNative.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_isMasked.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_coreJsData.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_getValue.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_hashDelete.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_hashGet.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_hashHas.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_hashSet.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_listCacheClear.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_listCacheDelete.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_listCacheGet.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_listCacheHas.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_listCacheSet.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_mapCacheDelete.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_isKeyable.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_mapCacheGet.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_mapCacheHas.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_mapCacheSet.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_baseToString.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_baseIsEqualDeep.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_stackClear.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_stackDelete.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_stackGet.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_stackHas.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_stackSet.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_SetCache.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_setCacheAdd.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_setCacheHas.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_arraySome.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_cacheHas.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_equalByTag.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_mapToArray.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_setToArray.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_equalObjects.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_getAllKeys.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_baseGetAllKeys.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_arrayPush.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_getSymbols.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_arrayFilter.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/stubArray.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_baseTimes.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_baseIsArguments.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/stubFalse.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_baseIsTypedArray.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_baseUnary.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_nodeUtil.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_baseKeys.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_nativeKeys.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_getTag.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_DataView.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_Promise.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_Set.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_WeakMap.js","webpack:///./node_modules/.pnpm/sqlstring@2.3.1/node_modules/sqlstring/lib/SqlString.js","webpack:///./node_modules/.pnpm/strict-uri-encode@1.1.0/node_modules/strict-uri-encode/index.js","webpack:///./node_modules/.pnpm/decode-uri-component@0.2.0/node_modules/decode-uri-component/index.js","webpack:///./node_modules/.pnpm/react-motion@0.5.2_react@16.12.0/node_modules/react-motion/lib/react-motion.js","webpack:///./node_modules/.pnpm/react-motion@0.5.2_react@16.12.0/node_modules/react-motion/lib/Motion.js","webpack:///./node_modules/.pnpm/react-motion@0.5.2_react@16.12.0/node_modules/react-motion/lib/StaggeredMotion.js","webpack:///./node_modules/.pnpm/react-motion@0.5.2_react@16.12.0/node_modules/react-motion/lib/TransitionMotion.js","webpack:///./node_modules/.pnpm/react-motion@0.5.2_react@16.12.0/node_modules/react-motion/lib/mergeDiff.js","webpack:///./node_modules/.pnpm/react-motion@0.5.2_react@16.12.0/node_modules/react-motion/lib/spring.js","webpack:///./node_modules/.pnpm/react-motion@0.5.2_react@16.12.0/node_modules/react-motion/lib/reorderKeys.js","webpack:///./node_modules/.pnpm/react-collapse@4.0.3_react-motion@0.5.2+react@16.12.0/node_modules/react-collapse/lib/UnmountClosed.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_baseMerge.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_createBaseFor.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_baseMergeDeep.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_cloneBuffer.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_cloneTypedArray.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_cloneArrayBuffer.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_initCloneObject.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_baseCreate.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/isArrayLikeObject.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/isPlainObject.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/toPlainObject.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_copyObject.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_assignValue.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_baseKeysIn.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_nativeKeysIn.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_createAssigner.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_baseRest.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_overRest.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_apply.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_setToString.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_baseSetToString.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/constant.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_shortOut.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_isIterateeCall.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_baseForOwn.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_baseIteratee.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_baseMatches.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_baseIsMatch.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_getMatchData.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_baseMatchesProperty.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/get.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/hasIn.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_baseHasIn.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_hasPath.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/property.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_baseProperty.js","webpack:///./node_modules/.pnpm/lodash@4.17.20/node_modules/lodash/_basePropertyDeep.js","webpack:///./node_modules/.pnpm/react-hot-loader@4.8.8_react-dom@16.12.0+react@16.12.0/node_modules/react-hot-loader/dist/react-hot-loader.production.min.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/core/middleware/actions-analytics.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/observable/forkJoin.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/operators/filter.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/operators/distinctUntilChanged.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/util/EmptyError.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/util/ArgumentOutOfRangeError.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/operators/take.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/operators/defaultIfEmpty.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/operators/throwIfEmpty.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/operators/first.js","webpack:///./src/util/clean-route-name.tsx","webpack:///./src/data/listeners/analytics.tsx","webpack:///./src/data/listeners/block-navigation.tsx","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/scheduler/AsyncAction.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/scheduler/Action.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/Scheduler.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/scheduler/AsyncScheduler.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/scheduler/async.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/operators/debounceTime.js","webpack:///./src/data/listeners/bottom-panel.tsx","webpack:///./src/data/listeners/index.tsx","webpack:///./src/util/observable-from-store.tsx","webpack:///./src/data/middleware/actions-analytics.tsx","webpack:///./src/data/middleware/connect.tsx","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/features/active-queries/state/reducers-active-queries.js","webpack:///./node_modules/.pnpm/gitlab.com+singlestore+engineering+helios@e2721c11dae17292084d2231dbfbbb880ee886f4_92176a4a4e5a86f37a8feefebbefe540/node_modules/@single-js/common/lib/features/management-views/state/reducers-management-views.js","webpack:///./src/data/reducers/cluster-metadata.tsx","webpack:///./src/data/reducers/clusters.tsx","webpack:///./src/data/reducers/events.tsx","webpack:///./src/data/reducers/hosts.tsx","webpack:///./src/data/reducers/license.tsx","webpack:///./src/data/reducers/pipelines.tsx","webpack:///./src/data/reducers/remote-version.tsx","webpack:///./src/util/joins/inner-join.js","webpack:///./src/data/reducers/schema.tsx","webpack:///./src/data/reducers/schema-tree.tsx","webpack:///./src/data/reducers/system-status.tsx","webpack:///./src/data/reducers/topology.tsx","webpack:///./node_modules/.pnpm/redux-router5@7.0.2_redux@4.0.4+router5@7.0.2/node_modules/redux-router5/dist/index.es.js","webpack:///./src/data/reducers/index.tsx","webpack:///./src/worker/extra-apis.tsx","webpack:///./src/data/store.tsx","webpack:///./node_modules/.pnpm/path-parser@4.2.0/node_modules/path-parser/dist/es/path-parser.js","webpack:///./node_modules/.pnpm/route-node@3.4.2/node_modules/route-node/dist/es/route-node.js","webpack:///./node_modules/.pnpm/router5@7.0.2/node_modules/router5/dist/index.es.js","webpack:///./node_modules/.pnpm/router5-plugin-browser@7.0.2_router5@7.0.2/node_modules/router5-plugin-browser/dist/index.es.js","webpack:///./node_modules/.pnpm/router5-plugin-listeners@7.0.2_router5@7.0.2/node_modules/router5-plugin-listeners/dist/index.es.js","webpack:///./node_modules/.pnpm/router5-plugin-logger@7.0.2_router5@7.0.2/node_modules/router5-plugin-logger/dist/index.es.js","webpack:///./src/router/routes.tsx","webpack:///./src/assets/icons/index.tsx","webpack:///./src/setup-icon-library.tsx","webpack:///./src/index.tsx","webpack:///./src/router/index.tsx","webpack:///./node_modules/.pnpm/@sentry+utils@5.6.1/node_modules/@sentry/utils/esm/syncpromise.js","webpack:///./node_modules/.pnpm/@sentry+hub@5.6.1/node_modules/@sentry/hub/esm/hub.js","webpack:///./node_modules/.pnpm/rxjs@6.5.3/node_modules/rxjs/_esm5/internal/observable/fromEvent.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","prefetchChunks","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","deferredPrefetch","apply","shift","deferredModules","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","forEach","undefined","link","document","createElement","nc","setAttribute","rel","as","href","jsonpScriptSrc","head","appendChild","installedModules","p","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","charset","timeout","src","error","Error","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","message","name","request","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","window","oldJsonpFunction","slice","startupResult","isLoadingError","input","LESuccess","LELoading","LEError","constructor","this","isSuccess","isLoading","isError","toJSON","__type__","__val__","loading","errorValue","updateLoadingError","v","f","reduce","state","action","transformer","identity","payload","lastUpdate","Date","updatePayload","lsm","update","getInitialState","selectLoadingOrInitial","selectLastUpdate","selectIsInitial","selectIsSuccess","selectIsError","selectError","selectPayload","extendStatics","b","setPrototypeOf","__proto__","Array","__extends","__","__assign","assign","arguments","__rest","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__read","iterator","ar","next","done","__spread","concat","isDate","MILLISECONDS_IN_HOUR","MILLISECONDS_IN_MINUTE","parseTokenDateTimeDelimeter","parseTokenPlainTime","parseTokenYY","parseTokensYYY","parseTokenYYYY","parseTokensYYYYY","parseTokenMM","parseTokenDDD","parseTokenMMDD","parseTokenWww","parseTokenWwwD","parseTokenHH","parseTokenHHMM","parseTokenHHMMSS","parseTokenTimezone","parseTokenTimezoneZ","parseTokenTimezoneHH","parseTokenTimezoneHHMM","dayOfISOYear","isoYear","week","day","date","setUTCFullYear","diff","getUTCDay","setUTCDate","getUTCDate","argument","dirtyOptions","getTime","additionalDigits","Number","dateStrings","dateString","timeString","array","split","test","token","exec","time","replace","timezone","splitDateString","parseYearResult","parseTokenYYY","parseTokenYYYYY","yearString","year","parseInt","restDateString","centuryString","parseYear","month","dayOfYear","parseDate","offset","timestamp","hours","minutes","parseFloat","seconds","parseTime","timezoneString","absoluteOffset","parseTimezone","getTimezoneOffset","prefix","ARRAY_INSERT","ARRAY_MOVE","ARRAY_POP","ARRAY_PUSH","ARRAY_REMOVE","ARRAY_REMOVE_ALL","ARRAY_SHIFT","ARRAY_SPLICE","ARRAY_UNSHIFT","ARRAY_SWAP","AUTOFILL","BLUR","CHANGE","CLEAR_FIELDS","CLEAR_SUBMIT","CLEAR_SUBMIT_ERRORS","CLEAR_ASYNC_ERROR","DESTROY","FOCUS","INITIALIZE","REGISTER_FIELD","RESET","RESET_SECTION","SET_SUBMIT_FAILED","SET_SUBMIT_SUCCEEDED","START_ASYNC_VALIDATION","START_SUBMIT","STOP_ASYNC_VALIDATION","STOP_SUBMIT","SUBMIT","TOUCH","UNREGISTER_FIELD","UNTOUCH","UPDATE_SYNC_ERRORS","UPDATE_SYNC_WARNINGS","NonLoggableError","disableLogging","logError","log","Sentry","captureException","level","args","warn","debug","humanizeNodePartitionInstanceStatus","node","partitionInstanceStatus","getNodePair","role","pairHost","pairPort","formatNodeAddress","host","port","toString","parseNodeAddress","nodeAddress","splitString","BigNumber","getEmptyNodeLiveMonitoringMetrics","totalCpuUsagePercent","usedMemoryB","memoryLimitB","usedDiskB","totalDiskB","getNodeMemoryUsage","liveMonitoring","isZero","percentValue","dividedBy","ratio","toNumber","total","used","getNodeDiskUsage","decodeClusterJwt","jwt","decodedJwt","profile","jwtDecode","env","end","heliosExpiresAt","splitEndpoint","nam","defaultUser","usr","cxp","id","description","hostname","websocket","websocketSSL","kerberosAutoLogin","helios","clusterID","cid","expiresAt","samlEnabled","formatClusterProfile","formatLicenseUsage","usedCapacity","maximumCapacity","unitPricing","plural","usedCapacityBytes","NumberFormatter","formatBytes","maximumCapacityBytes","formatLicenseType","licenseType","formatHostMemory","systemMemoryB","LONG_EM_DASH","getLoadingHostLiveMonitoringMetrics","totalCpuUsagePercentRate","systemUsedMemoryB","systemTotalMemoryB","netReceivedRateBpS","netTransmittedRateBpS","systemTotalDiskB","systemUsedDiskB","diskWriteRateBpS","diskReadRateBpS","getHostMemoryUsage","getHostDiskUsage","select","conn","sql","values","options","queryStart","self","performance","now","typeCast","withFields","query","rows","fields","getLogger","multiSelect","queries","chain","then","params","multiSelectParallel","getConnection","map","finally","release","multiSelectParallelWithErrors","catch","multiSelectWithErrors","mapMultiSelectErrorResult","handleError","_getPrototypeOf","getPrototypeOf","a","defaultEqualityCheck","areArgumentsShallowlyEqual","equalityCheck","prev","defaultMemoize","func","lastArgs","lastResult","getDependencies","funcs","dependencies","isArray","every","dep","dependencyTypes","join","createSelectorCreator","memoize","_len","memoizeOptions","_key","_len2","_key2","recomputations","resultFunc","pop","memoizedResultFunc","selector","resetRecomputations","createStructuredSelector","selectors","selectorCreator","createSelector","objectKeys","keys","_len3","_key3","composition","index","isNumeric","mathceil","Math","ceil","mathfloor","floor","bignumberError","tooManyDigits","BASE","LOG_BASE","MAX_SAFE_INTEGER","POWS_TEN","SQRT_BASE","MAX","bitFloor","coeffToString","z","charCodeAt","compare","x","y","xc","yc","k","intCheck","min","max","String","isOdd","toExponential","str","charAt","toFixedPoint","len","zs","clone","configObject","div","convertBase","parseNumeric","pow2_53","random53bitInt","basePrefix","dotAfter","dotBefore","isInfinityOrNaN","whitespaceOrPlus","P","valueOf","ONE","DECIMAL_PLACES","ROUNDING_MODE","TO_EXP_NEG","TO_EXP_POS","MIN_EXP","MAX_EXP","CRYPTO","MODULO_MODE","POW_PRECISION","FORMAT","groupSize","secondaryGroupSize","groupSeparator","decimalSeparator","fractionGroupSize","fractionGroupSeparator","suffix","ALPHABET","alphabet","caseChanged","isNum","_isBigNumber","search","substring","round","DEBUG","toUpperCase","toLowerCase","format","rm","c0","ne","maxOrMin","method","normalise","sd","ni","rd","pows10","out","ROUND_UP","ROUND_DOWN","ROUND_CEIL","ROUND_FLOOR","ROUND_HALF_UP","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_CEIL","ROUND_HALF_FLOOR","EUCLID","config","set","obj","crypto","getRandomValues","randomBytes","EXPONENTIAL_AT","RANGE","isBigNumber","maximum","lt","minimum","gt","random","dp","rand","Uint32Array","copy","sum","plus","decimal","toBaseOut","baseIn","baseOut","arrL","arr","reverse","sign","callerIsToString","pow","multiply","base","temp","xlo","xhi","carry","klo","khi","aL","bL","cmp","subtract","more","prod","prodL","q","qc","rem","remL","rem0","xi","xL","yc0","yL","yz","NaN","isNaN","p1","p2","absoluteValue","abs","comparedTo","decimalPlaces","dividedToIntegerBy","idiv","exponentiatedBy","half","isModExp","nIsBig","nIsNeg","nIsOdd","isInteger","mod","times","integerValue","isEqualTo","eq","isFinite","isGreaterThan","isGreaterThanOrEqualTo","gte","isLessThan","isLessThanOrEqualTo","lte","isNegative","isPositive","minus","xLTy","xe","ye","modulo","multipliedBy","xcL","ycL","ylo","yhi","zc","sqrtBase","negated","precision","shiftedBy","squareRoot","sqrt","rep","toFixed","toFormat","g1","g2","intPart","fractionPart","isNeg","intDigits","substr","RegExp","toFraction","md","d0","d1","d2","exp","n0","n1","toPrecision","ctor","superCtor","super_","writable","configurable","TempCtor","actions","arrayInsert","form","field","meta","arrayMove","from","to","arrayPop","arrayPush","arrayRemove","arrayRemoveAll","arrayShift","arraySplice","removeNum","arraySwap","indexA","indexB","arrayUnshift","autofill","blur","touch","change","persistentSubmitErrors","clearFields","keepTouched","clearSubmit","clearSubmitErrors","clearAsyncError","destroy","focus","initialize","keepDirty","otherMeta","registerField","reset","resetSection","sections","startAsyncValidation","startSubmit","stopAsyncValidation","errors","stopSubmit","submit","setSubmitFailed","_len4","_key4","setSubmitSucceeded","_len5","_key5","_len6","_key6","unregisterField","destroyOnUnmount","untouch","_len7","_key7","updateSyncErrors","syncErrors","updateSyncWarnings","syncWarnings","warning","requiredArgs","required","TypeError","toDate","argStr","stack","_extends","source","instance","Constructor","_defineProperties","props","descriptor","protoProps","staticProps","_copy2","_copy3","_copy","path","setInWithPath","pathIndex","_extends2","first","_ref","initialized","other","_error","_warning","isValidElement","deleteInWithPath","rest","firstIndex","_result","_firstIndex","structure","allowsArrayErrors","empty","emptyList","getIn","setIn","deepEqual","deleteIn","items","callback","fromJS","size","some","equals","val","orderChanged","toJS","MEGABYTE","GIGABYTE","TERABYTE","SECOND","MINUTE","HOUR","DAY","TRILLION","BILLION","MILLION","getInitialUTCDate","getUTCFullYear","getUTCMonth","getUTCHours","getUTCMinutes","getUTCSeconds","static","signed","formatted","bytes","formatNumber","numMs","helperDate","second","timeDelta","days","currency","Intl","NumberFormat","style","formatRateS","metric","compactInteger","h","assertHandlerNameIsUnique","makeActionCreator","handle","actionType","actionCreator","handler","subClass","superClass","buffer","Buffer","copyProps","dst","SafeBuffer","arg","encodingOrOffset","alloc","allocUnsafe","allocUnsafeSlow","fill","encoding","buf","SlowBuffer","_typeof","assertThisInitialized","consoleQueryAction","queryExecutorMessageAction","arrayWithoutHoles","iterableToArray","unsupportedIterableToArray","nonIterableSpread","nullableToMaybe","ERROR_NODE","className","icon","rightMargin","LOADING_NODE","loadingMessage","inlineMessage","LOADING_CELL_NODE","width","renderLoadingError","renderPayload","cell","loadingNode","loadingOptions","renderError","_worker","base64","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","Uint8Array","ArrayBuffer","byteOffset","byteLength","fromArrayLike","fromArrayBuffer","string","isEncoding","actual","write","fromString","isBuffer","checked","fromObject","assertSize","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","start","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","dir","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","found","hexWrite","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","fromByteArray","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","decodeCodePointsArray","INSPECT_MAX_BYTES","global","foo","subarray","typedArraySupport","poolSize","_augment","species","_isBuffer","list","pos","swap16","swap32","swap64","inspect","match","thisStart","thisEnd","thisCopy","targetCopy","includes","_arr","ret","toHex","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","code","INVALID_BASE64_RE","Infinity","leadSurrogate","toByteArray","trim","stringtrim","base64clean","randomString","ActionTypes","INIT","REPLACE","PROBE_UNKNOWN_ACTION","isPlainObject","proto","createStore","reducer","preloadedState","enhancer","_ref2","currentReducer","currentState","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","getState","subscribe","listener","isSubscribed","dispatch","listeners","replaceReducer","nextReducer","observable","outerSubscribe","observer","observeState","unsubscribe","getUndefinedStateErrorMessage","combineReducers","reducers","reducerKeys","finalReducers","shapeAssertionError","finalReducerKeys","assertReducerShape","hasChanged","nextState","_i","previousStateForKey","nextStateForKey","errorMessage","bindActionCreator","bindActionCreators","actionCreators","boundActionCreators","_defineProperty","ownKeys","enumerableOnly","filter","sym","getOwnPropertyDescriptor","_objectSpread2","getOwnPropertyDescriptors","defineProperties","compose","applyMiddleware","middlewares","store","_dispatch","middlewareAPI","middleware","HYPHEN","arrayWithHoles","iterableToArrayLimit","nonIterableRest","ReactReduxContext","createContext","CLEARED","nullListeners","notify","createListenerCollection","batch","current","clear","Subscription","parentSub","handleChangeWrapper","_proto","addNestedSub","trySubscribe","notifyNestedSubs","onStateChange","Boolean","tryUnsubscribe","Provider","context","children","contextValue","subscription","previousState","Context","propTypes","shape","isRequired","any","useIsomorphicLayoutEffect","EMPTY_ARRAY","NO_SUBSCRIPTION_ARRAY","storeStateUpdatesReducer","updateCount","initStateUpdates","connectAdvanced","selectorFactory","_ref2$getDisplayName","getDisplayName","_ref2$methodName","methodName","_ref2$renderCountProp","renderCountProp","_ref2$shouldHandleSta","shouldHandleStateChanges","_ref2$storeKey","storeKey","_ref2$withRef","withRef","_ref2$forwardRef","forwardRef","_ref2$context","connectOptions","WrappedComponent","wrappedComponentName","displayName","selectorFactoryOptions","pure","usePureOnlyMemo","ConnectFunction","_useMemo","forwardedRef","wrapperProps","propsContext","ContextToUse","Consumer","didStoreComeFromProps","didStoreComeFromContext","childPropsSelector","createChildSelector","_useMemo2","overriddenContextValue","_useReducer","previousStateUpdateResult","forceComponentUpdateDispatch","lastChildProps","lastWrapperProps","childPropsFromStoreUpdate","renderIsScheduled","actualChildProps","didUnsubscribe","lastThrownError","checkForUpdates","newChildProps","latestStoreState","renderedWrappedComponent","ref","Connect","memo","forwarded","hasOwn","is","shallowEqual","objA","objB","keysA","keysB","wrapMapToPropsConstant","getConstant","constant","constantSelector","dependsOnOwnProps","getDependsOnOwnProps","mapToProps","wrapMapToPropsFunc","proxy","stateOrDispatch","ownProps","mapDispatchToProps","mapStateToProps","defaultMergeProps","stateProps","dispatchProps","mergeProps","mergedProps","areMergedPropsEqual","hasRunOnce","nextMergedProps","wrapMergePropsFunc","impureFinalPropsSelectorFactory","pureFinalPropsSelectorFactory","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","hasRunAtLeastOnce","handleSubsequentCalls","nextOwnProps","nextStateProps","statePropsChanged","propsChanged","stateChanged","finalPropsSelectorFactory","initMapStateToProps","initMapDispatchToProps","initMergeProps","factories","strictEqual","_temp","_ref$connectHOC","connectHOC","_ref$mapStateToPropsF","mapStateToPropsFactories","_ref$mapDispatchToPro","mapDispatchToPropsFactories","_ref$mergePropsFactor","mergePropsFactories","_ref$selectorFactory","_ref3","_ref3$pure","_ref3$areStatesEqual","_ref3$areOwnPropsEqua","_ref3$areStatePropsEq","_ref3$areMergedPropsE","extraOptions","createStoreHook","useReduxContext","useDispatch","useStore","createDispatchHook","refEquality","newBatch","equalityFn","_useReduxContext","contextSub","selectedState","forceRender","latestSubscriptionCallbackError","latestSelector","latestSelectedState","newSelectedState","useSelectorWithStoreAndSubscription","createSelectorHook","noop","pipeFromArray","fns","fn","Observable","_isScalar","_subscribe","lift","operator","observerOrNext","complete","sink","nextOrObserver","Subscriber","rxSubscriber","toSubscriber","add","useDeprecatedSynchronousErrorHandling","syncErrorThrowable","_trySubscribe","syncErrorThrown","syncErrorValue","_a","closed_1","closed","destination","isStopped","canReportError","promiseCtor","_this","getPromiseCtor","subscriber","pipe","operations","toPromise","_super","destinationOrNext","SafeSubscriber","_next","_complete","_unsubscribeAndRecycle","_parentOrParents","_parentSubscriber","_context","__tryOrSetError","__tryOrUnsub","wrappedComplete","parent","_unsubscribe","super","RE_SLASH_G","RE_LEADING_WHITESPACE","RE_WHITESPACE_CHAR","RE_DELIMITER","SQLIdent","raw","escapeId","isVerticalQuery","stripSlashG","consumeUntil","ignoreEscaped","c1","c2","parseQueries","delimiter","maybeConsumeDelimiter","maybeStartInfo","endInfo","consumeQuote","quote","char","nextPos","extractQueries","range","extract","NewVector","v1","v2","scale","negate","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","run","marker","runClearTimeout","Item","nextTick","title","browser","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","binding","cwd","chdir","umask","LIGHT_HEX_COLORS","COLORS","selectRoute","router","route","selectCurrentRouteClusterId","clusterId","dynamicRequire","require","fallbackGlobalObject","getGlobalObject","uuid4","msCrypto","Uint16Array","pad","num","parseUrl","url","fragment","protocol","relative","getEventDescription","exception","event_id","consoleSandbox","originalConsole","wrappedLevels","__sentry__","__sentry_wrapped__","__sentry_original__","addExceptionTypeValue","mechanism","handled","SvgSmall","svgSize","height","viewBox","x1","x2","y1","y2","gradientUnits","stopColor","cx","cy","stroke","SvgLarge","gradientTransform","stopOpacity","Loading","centered","classes","svg","innerClasses","messageNode","inner","assert","msg","inherits","BN","number","endian","isBN","negative","words","red","_init","wordSize","parseHex4Bits","parseHexByte","lowerBound","parseBase","left","right","_initNumber","_initArray","_parseHex","_parseBase","toArray","w","strip","limbLen","limbPow","word","imuln","_iaddn","dest","_expand","_normSign","zeros","groupSizes","groupBases","smallMulTo","ncarry","rword","maxJ","padding","groupBase","modn","idivn","toBuffer","toArrayLike","ArrayType","reqLength","andln","iushrn","clz32","_countBits","_zeroBits","bitLength","zeroBits","toTwos","inotn","iaddn","fromTwos","testn","notn","ineg","neg","iuor","ior","or","uor","iuand","iand","and","uand","iuxor","ixor","xor","uxor","bytesNeeded","bitsLeft","setn","bit","wbit","iadd","isub","comb10MulTo","mid","a0","al0","ah0","a1","al1","ah1","a2","al2","ah2","a3","al3","ah3","a4","al4","ah4","a5","al5","ah5","a6","al6","ah6","a7","al7","ah7","a8","al8","ah8","a9","al9","ah9","b0","bl0","bh0","b1","bl1","bh1","b2","bl2","bh2","b3","bl3","bh3","b4","bl4","bh4","b5","bl5","bh5","b6","bl6","bh6","b7","bl7","bh7","b8","bl8","bh8","b9","bl9","bh9","w0","imul","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","jumboMulTo","FFTM","mulp","mulTo","hncarry","bigMulTo","makeRBT","N","revBin","rb","permute","rbt","rws","iws","rtws","itws","transform","rtwdf","cos","PI","itwdf","sin","rtwdf_","itwdf_","re","ie","ro","io","rx","guessLen13b","odd","conjugate","normalize13b","ws","convert13b","stub","ph","_","rwst","iwst","nrws","nrwst","niwst","rmws","mulf","muln","sqr","isqr","toBitArray","iushln","bits","carryMask","newCarry","ishln","hint","extended","mask","maskedWords","ishrn","shln","ushln","shrn","ushrn","imaskn","maskn","isubn","addn","subn","iabs","_ishlnsubmul","_wordDiv","bhi","qj","divmod","positive","divn","umod","divRound","dm","r2","acc","egcd","A","B","C","D","g","isEven","yp","xp","im","jm","gcd","_invmp","delta","cmpn","invm","bincn","ucmp","gtn","gten","ltn","lten","eqn","Red","toRed","ctx","convertTo","_forceRed","fromRed","convertFrom","forceRed","redAdd","redIAdd","redSub","redISub","redShl","shl","redMul","_verify2","redIMul","redSqr","_verify1","redISqr","redSqrt","redInvm","redNeg","redPow","primes","k256","p224","p192","p25519","MPrime","tmp","_tmp","K256","P224","P192","P25519","prime","_prime","Mont","imod","rinv","minv","ireduce","rlen","imulK","_strip","output","outLen","mod3","one","nOne","lpow","inv","wnd","currentLen","mont","u","toInteger","dirtyNumber","compareVersions","leftElement","rightElement","INVALID_VERSION_STRING","Version","versionTuple","ge","le","stripTag","stripTagFromVersionString","parseVersionElement","versionElement","excluded","sourceKeys","track","properties","DISABLE_UI_TELEMETRY","actionPrefix","APP_NAME","actionName","analytics","ready","JSON","stringify","trackBlurEvent","formName","success","trackInternalLinkClick","category","trackReload","identify","idOrTraits","traits","segmentOptions","integrations","Intercom","hideDefaultLauncher","page","render","color","maxDiameter","diameter","minWidth","minHeight","strokeOpacity","strokeWidth","strokeDasharray","strokeLinecap","SizeCircleCell","text","spaceBetween","React","justifyContent","SizeCircle","Component","defaultProps","DATABASE_COLUMNS","formatter","database","databaseName","Icon","FakeLinkCell","getValue","formatDatabaseStatus","displayPartitionStatus","derived","status","impacted","tableCount","NEGATIVE_INFINITY","statistics","partitionCount","memoryUsagePercent","memoryUsage","diskUsage","diskUsagePercent","getTableRowCount","table","rowCount","getTableMemoryUse","memoryUse","getTableLikeIcon","tableLike","tableStorage","isSharded","TABLE_COLUMNS","tableName","formatTableStorage","ROW_COUNT_TIP","COMPRESSION_RATIO_TIP","uncompressedSize","renderMultipleLoadingError","diskUsageVal","uncompressedSizeVal","compressionRatio","calculateCompressionRatio","formatPercent","compressionRate","VIEW_COLUMNS","view","columnCount","getColumnCompressionRatio","column","compressedSize","getColumnMemoryUse","getColumnDiskUsage","EXCEPTION_TYPES","COLUMN_COLUMNS","getColumnIcon","iconType","columnName","subType","computed","dataType","IconTip","tipProps","direction","iconProps","leftMargin","defaultValueSQL","VIEW_COLUMN_COLUMNS","humanizeIndexType","indexName","indexType","unique","INDEX_COLUMNS","diskUse","columnNames","STORED_PROCEDURE_COLUMNS","sp","definer","showDefinitionColumn","ConsoleQueryButton","tooltip","qualifiedName","UDF_COLUMNS","udf","UDA_COLUMNS","uda","PARTITION_COLUMNS","derivedPartition","partitionName","getPartitionName","formatPartitionStatus","partition","isPartitionImpacted","InternalLink","routeInfo","clusterLink","onClick","stopPropagation","partitionInstances","getPartitionType","masterPartitionInstance","getPartitionMasterInstance","logging","replicaPartitionInstance","getPartitionReplicaInstance","PARTITION_INSTANCE_ROLE_COLUMN","partitionInstance","formatPartitionInstanceRole","RANK_PARTITION_INSTANCE_STATE","buildRankDictionary","PARTITION_INSTANCE_STATE_COLUMN","formatPartitionInstanceState","PARTITION_INSTANCE_LOG_COLUMN","position","PARTITION_INSTANCE_COLUMNS","condition","argIndex","framesToPop","addDays","addHours","addISOYears","addMilliseconds","addMinutes","addMonths","addQuarters","addSeconds","addWeeks","addYears","areRangesOverlapping","closestIndexTo","closestTo","compareAsc","compareDesc","differenceInCalendarDays","differenceInCalendarISOWeeks","differenceInCalendarISOYears","differenceInCalendarMonths","differenceInCalendarQuarters","differenceInCalendarWeeks","differenceInCalendarYears","differenceInDays","differenceInHours","differenceInISOYears","differenceInMilliseconds","differenceInMinutes","differenceInMonths","differenceInQuarters","differenceInSeconds","differenceInWeeks","differenceInYears","distanceInWords","distanceInWordsStrict","distanceInWordsToNow","eachDay","endOfDay","endOfHour","endOfISOWeek","endOfISOYear","endOfMinute","endOfMonth","endOfQuarter","endOfSecond","endOfToday","endOfTomorrow","endOfWeek","endOfYear","endOfYesterday","getDate","getDay","getDayOfYear","getDaysInMonth","getDaysInYear","getHours","getISODay","getISOWeek","getISOWeeksInYear","getISOYear","getMilliseconds","getMinutes","getMonth","getOverlappingDaysInRanges","getQuarter","getSeconds","getYear","isAfter","isBefore","isEqual","isFirstDayOfMonth","isFriday","isFuture","isLastDayOfMonth","isLeapYear","isMonday","isPast","isSameDay","isSameHour","isSameISOWeek","isSameISOYear","isSameMinute","isSameMonth","isSameQuarter","isSameSecond","isSameWeek","isSameYear","isSaturday","isSunday","isThisHour","isThisISOWeek","isThisISOYear","isThisMinute","isThisMonth","isThisQuarter","isThisSecond","isThisWeek","isThisYear","isThursday","isToday","isTomorrow","isTuesday","isValid","isWednesday","isWeekend","isWithinRange","isYesterday","lastDayOfISOWeek","lastDayOfISOYear","lastDayOfMonth","lastDayOfQuarter","lastDayOfWeek","lastDayOfYear","parse","setDate","setDay","setDayOfYear","setHours","setISODay","setISOWeek","setISOYear","setMilliseconds","setMinutes","setMonth","setQuarter","setSeconds","setYear","startOfDay","startOfHour","startOfISOWeek","startOfISOYear","startOfMinute","startOfMonth","startOfQuarter","startOfSecond","startOfToday","startOfTomorrow","startOfWeek","startOfYear","startOfYesterday","subDays","subHours","subISOYears","subMilliseconds","subMinutes","subMonths","subQuarters","subSeconds","subWeeks","subYears","getMsgStateError","calculateRateS","previousValue","currentValue","previousDate","currentDate","calculateRateMs","selectHaEnabled","clusterMetadata","clusterStatistics","haEnabled","selectClusterStatisticsError","selectMemsqlVersion","memsqlVersion","selectPartitions","partitionsPayload","partitions","selectPartitionInstances","selectPartitionsSort","partitionsSort","getPartitionInstances","allPartitionInstances","kind","ordinal","RANK_SLAVE_STATE","getWorstSlave","expectedNumSlaves","orderBy","pi","computePartitionStatus","masterState","worstSlaveState","drReplica","derivePartitionStatus","masterPartition","find","worstSlave","derivePartitions","topology","nodes","getExpectedNumSlaves","syncState","slavePartitions","getSyncState","selectSortedPartitions","currentDatabase","sort","selectedPartitions","columnId","columnInfo","col","selectCurrentPartitionName","selectCurrentPartition","selectPartitionInstancesSort","partitionInstancesSort","selectSortedCurrentPartitionInstances","selectedPartitionInstances","RANK_PARTITION_STATUS","deriveDatabaseStatus","dbPartitions","deriveDatabaseImpacted","derivedRowsThroughputPerSecond","rowsThroughput","isPreviousError","previous","isCurrentError","previousRowsThroughput","currentRowsThroughput","derivedRowsReadPerSecond","rowsReturnedByReads","readTime","derivedRowsWritePerSecond","rowsAffectedByWrites","selectIsRowsThroughputEnabled","rowsThroughputEnabled","requiredFieldValidator","maxLengthFieldValidator","maxLength","regexFieldValidator","regex","combineValidators","validators","routeContext","routerContext","RouterProvider","mounted","routeState","previousRoute","forceUpdate","componentDidMount","componentWillUnmount","PureComponent","BaseLink","isActive","clickHandler","active","buildUrl","routeName","routeParams","buildPath","_b","_c","activeStrict","_d","ignoreQueryParams","successCallback","errorCallback","evt","defaultPrevented","comboKey","metaKey","altKey","ctrlKey","shiftKey","button","preventDefault","navigate","routeOptions","activeClassName","linkProps","linkclassName","withRouter","BaseComponent","withRoute","routeContext$$1","RouteNodeRenderer","shouldComponentUpdate","nextProps","nodeName","Link","CatchOperator","caught","CatchSubscriber","err2","innerSubscriber","InnerSubscriber","subscribeToResult","OuterSubscriber","initConnection","manager","primaryConnectionConfig","monitoring","user","password","isLocal","reuseCredentials","username","monitoringConfig","monitoringManager","monitoringState","primaryConnection","connected","monitoringConnection","MEMSQL_PING_SAGA_ID","memsqlPing","sagas","register","timeoutId","running","lastError","ping","getPooledConnection","memsqlPingStop","stop","of","QUERY_LOGGERS","errorsOnly","queryMsg","verbose","metrics","endTimeUnix","duration","formatDuration","startTimeUnix","count","affectedRows","initQueryExecutor","connectionConfig","initialQueryRowLimit","loggerType","getQueryExecutor","createQueryExecutor","init","merge","executor","$emitter","messageObservable","$msgs","$layoutMsgs","$logs","$connectedMsg","act","mergeAll","closeQueryExecutor","close","cancelQuery","$canceling","getCancelQueryError","$errorLogs","cancelUsing","staticQueryGroup","queryGroup","defer","runQueryGroup","stopQueryGroup","continueQueryGroup","skip","runNoCtxSingleQuery","contextInitPromise","contextInitError","runNoCtxParallelQueries","omit","picked","omitted","_enable_super_gross_mode_that_will_cause_bad_things","DECIMAL","TINY","SHORT","LONG","FLOAT","DOUBLE","NULL","TIMESTAMP","LONGLONG","INT24","DATE","TIME","DATETIME","YEAR","NEWDATE","VARCHAR","BIT","TIMESTAMP2","DATETIME2","TIME2","NEWDECIMAL","ENUM","SET","TINY_BLOB","MEDIUM_BLOB","LONG_BLOB","BLOB","VAR_STRING","STRING","GEOMETRY","overridePlural","has","Events","EE","emitter","_events","_eventsCount","clearEvent","EventEmitter","eventNames","events","names","handlers","ee","listenerCount","prefixed","Tip","getBounds","$el","HTMLElement","getBoundingClientRect","handleMove","bounds","clientX","clientY","top","bottom","handleEnter","setState","visible","handleLeave","forceVisible","disabled","spacing","overlayClassName","otherProps","eventHandlers","onMouseMove","onMouseEnter","onMouseOut","overlayWrapperProps","restProps","overlay","layer","currentClusterId","underlineOnHover","classnames","connect","equal","utils","minAssert","minUtils","zero2","encode","getNAF","naf","getJSF","k1","k2","jsf","m8","u1","u2","m14","m24","cachedProperty","computer","parseBytes","intFromLE","selectTopologyLoading","selectTopologyLastUpdate","selectTopologyError","selectDerivedNodesLoading","selectDerivedNodesLastUpdate","selectDerivedNodesError","selectNodes","selectNodesSort","nodesSort","selectNodePartitionInstancesSort","nodePartitionInstancesSort","selectNumAggregators","selectNumLeaves","selectMasterAggregator","selectNumUniqueHosts","uniqBy","deriveNodes","getNodePartitionInstanceStatus","selectSortedDerivedNodes","ALL_NODES_PAGE_COLUMNS","selectCurrentNodeAddress","selectCurrentNode","nodeHostPort","selectCurrentNodePartitionInstances","selectSortedNodePartitionInstances","NODE_PARTITION_INSTANCE_COLUMNS","RANK_NODE_PI_STATUS","mapPIToNodePIStatus","filteredPartitionInstances","piStatuses","piStatus","getClusters","backend","addCluster","clusterObj","testConnect","cluster","deleteCluster","nameToIDs","ids","hasMetaParams","extractSegmentParams","transitionPath","toState","fromState","toStateOptions","fromStateIds","toStateIds","maxI","reload","_loop_1","leftParams","rightParams","state_1","pointOfDifference","toDeactivate","toActivate","intersection","shouldUpdateNode","fromSate","matching","activatedSegment","UnsubscriptionError","UnsubscriptionErrorImpl","_subscriptions","remove","isFunction","flattenUnsubscriptionErrors","isObject","teardown","EMPTY","subscriptions","subscriptionIndex","errs","SINGLE_STORAGE_CONFIG","DEFAULT_EDITOR_CONFIG","selectedDatabase","rowLimit","editorPosition","firstVisibleLine","cursorInfo","getDefaultSingleStorageConfig","hasError","isHelpMenuOpen","editors","helpMenu","menu","isOpen","tutorial","location","step","progress","readSingleStorageConfig","configString","localStorage","getItem","setSingleStorageConfig","updater","oldConfig","updatedConfig","setItem","getEditorFromConfig","connectionId","defaultConnectedClusterId","editorId","editor","cloneDeep","genTableId","genFunctionId","functionName","AuthSwitchRequestPacket","AuthSwitchResponsePacket","ClientAuthenticationPacket","ComChangeUserPacket","ComPingPacket","ComQueryPacket","ComQuitPacket","ComStatisticsPacket","EmptyPacket","EofPacket","ErrorPacket","Field","FieldPacket","HandshakeInitializationPacket","LocalDataFilePacket","OkPacket","OldPasswordPacket","ResultSetHeaderPacket","RowDataPacket","SSLRequestPacket","StatisticsPacket","UseOldPasswordPacket","originalFunctionToString","FunctionToString","setupOnce","Function","truncate","safeJoin","keysToEventMessage","includedKeys","serialized","isMatchingPattern","pattern","DEFAULT_IGNORE_ERRORS","InboundFilters","_options","hub","getIntegration","client","getClient","clientOptions","getOptions","_mergeOptions","_shouldDropEvent","_isSentryError","logger","_isIgnoredError","_isBlacklistedUrl","_getEventFilterUrl","_isWhitelistedUrl","ignoreInternal","_oO","ignoreErrors","_getPossibleEventMessages","blacklistUrls","whitelistUrls","oO","stacktrace","frames_1","frames","filename","frames_2","prop","SentryError","_newTarget","DSN_REGEX","ERROR_MESSAGE","Dsn","_fromString","_fromComponents","_validate","withPassword","pass","projectId","components","component","API","dsn","_dsnObject","getDsn","getStoreEndpoint","_getBaseUrl","getStoreEndpointPath","getStoreEndpointWithUrlEncodedAuth","auth","sentry_key","sentry_version","getRequestHeaders","clientName","clientVersion","header","getReportDialogEndpoint","dialogOptions","endpoint","encodedOptions","encodeURIComponent","email","installedIntegrations","setupIntegrations","defaultIntegrations","userIntegrations","userIntegrationsNames_1","pickedIntegrationsNames_1","defaultIntegration","userIntegration","getIntegrationsToSetup","integration","setupIntegration","Status","BaseClient","backendClass","_integrations","_processing","_backend","_dsn","_isEnabled","scope","eventId","_getBackend","eventFromException","_processEvent","finalEvent","reason","captureMessage","eventFromMessage","captureEvent","flush","_isClientProcessing","clearInterval","interval","getTransport","transportFlushed","enabled","getIntegrations","ticked","setInterval","_prepareEvent","environment","dist","maxValueLength","prepared","_addIntegrations","sdk","applyToEvent","sdkInfo","integrationsArray","beforeSend","sampleRate","sendEvent","beforeSendResult","_handleAsyncBeforeSend","originalException","processedEvent","fromHttpCode","Success","RateLimit","Invalid","Failed","Unknown","Severity","NoopTransport","Skipped","BaseBackend","_transport","_setupTransport","_exception","_hint","_message","_level","supportsFetch","Headers","Request","Response","supportsReferrerPolicy","referrerPolicy","Debug","Info","Warning","Fatal","Critical","Log","TraceKit","_report","_collectWindowErrors","_computeStackTrace","_linesOfContext","UNKNOWN_FUNCTION","ERROR_TYPES_RE","_has","getLocationHref","_oldOnerrorHandler","_onErrorHandlerInstalled","lastException","lastExceptionStack","_notifyHandlers","isWindowError","_traceKitWindowOnError","lineNo","columnNo","errorObj","_augmentStackTraceWithInitialElement","processLastException","line","groups","_traceKitWindowOnUnhandledRejection","_lastExceptionStack","_lastException","ex","incomplete","_installGlobalHandler","_installGlobalUnhandledRejectionHandler","onunhandledrejection","_computeStackTraceFromStackProp","submatch","parts","element","chrome","gecko","winjs","geckoEval","chromeEval","lines","reference","isNative","columnNumber","stackInfo","initial","unshift","partial","_computeStackTraceByWalkingCallerChain","depth","item","recursion","curr","caller","sourceURL","fileName","lineNumber","computeStackTrace","popSize","opera10Regex","opera11Regex","_computeStackTraceFromStacktraceProp","popFrames","lineRE1","lineRE2","lineRE3","scripts","getElementsByTagName","inlineScriptBlocks","_computeStackTraceFromOperaMultiLineMessage","original","exceptionFromStacktrace","prepareFramesForEvent","eventFromStacktrace","localStack","firstFrameFunction","lastFrameFunction","frame","colno","function","in_app","lineno","PromiseBuffer","_limit","_buffer","isReady","task","drain","capturedSetTimeout","BaseTransport","FetchTransport","defaultOptions","body","fetch","response","XHRTransport","XMLHttpRequest","onreadystatechange","readyState","open","send","BrowserBackend","transportOptions","transport","_buildEvent","domException","name_1","message_1","messageEvent","syntheticException","exceptionKeys","extra","__serialized__","eventFromPlainObject","synthetic","stringException","attachStacktrace","SDK_VERSION","BrowserClient","platform","packages","showReportDialog","async","onLoad","callOnHub","configureScope","withScope","keypressTimeout","lastCapturedEvent","ignoreOnError","ignoreNextOnError","wrap","before","sentryWrapped","wrappedArguments","handleEvent","addEventProcessor","debounceTimer","breadcrumbEventHandler","eventName","debounce","captureBreadcrumb","_htmlTreeAsString","addBreadcrumb","keypressEventHandler","tagName","isContentEditable","elem","nextStr","currentElem","sepLength","_htmlElementAsString","parentNode","attr","attrWhitelist","getAttribute","TryCatch","_ignoreOnError","_wrapTimeFunction","originalCallback","getFunctionName","_wrapRAF","_wrapEventTarget","lastHref","Breadcrumbs","dom","history","sentry","xhr","_instrumentConsole","originalConsoleLevel","breadcrumbData","_instrumentDOM","addEventListener","innerOriginal","_instrumentFetch","isNativeFunc","doc","sandbox","hidden","contentWindow","removeChild","supportsNativeFetch","originalFetch","fetchInput","filterUrl","addSentryBreadcrumb","fetchData","status_code","_instrumentHistory","isChromePackagedApp","app","runtime","hasHistoryApi","pushState","replaceState","captureUrlChange","parsedLoc","parsedTo","parsedFrom","oldOnPopState","onpopstate","currentHref","historyReplacementFunction","originalHistoryFunction","_instrumentXHR","xhrproto","originalOpen","__sentry_xhr__","__sentry_own_request__","originalSend","onreadystatechangeHandler","wrapProp","breadcrumb","serializedData","event_1","GlobalHandlers","stackTraceLimit","_eventFromGlobalHandler","_eventFromIncompleteRejection","fallbackValue","fallbackType","LinkedErrors","_handler","linkedErrors","_walkErrorTree","UserAgent","navigator","headers","userAgent","window_1","SENTRY_RELEASE","clientClass","enable","bindClient","initAndBind","sentryEventsReported","project","SentryBrowser","STUDIO_COMMIT_HASH","exceptionValue","lastFrame","secondLastFrame","isMonacoSearchRegexError","setStudioVersion","STUDIO_VERSION","licenseKey","setTag","studioVersion","crumb","objectWithoutPropertiesLoose","sourceSymbolKeys","isSurrogatePair","htonl","zero8","enc","toHex32","join32","split32","rotr32","rotl32","sum32","sum32_3","sum32_4","sum32_5","sum64","ah","al","bh","sum64_hi","bl","sum64_lo","sum64_4_hi","ch","cl","dh","dl","sum64_4_lo","sum64_5_hi","eh","el","sum64_5_lo","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","freeGlobal","freeSelf","root","selectClusters","clusters","selectClustersError","selectClustersLoadingOrInitial","selectCurrentCluster","selectCurrentClusterId","jwtCluster","dirtyDate","dirtyAmount","amount","addLeadingZeros","targetLength","signedYear","M","dayPeriodEnumValue","H","S","numberOfDigits","milliseconds","getUTCMilliseconds","MILLISECONDS_IN_DAY","startOfUTCISOWeek","weekStartsOn","setUTCHours","getUTCISOWeekYear","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfUTCISOWeekYear","fourthOfJanuary","MILLISECONDS_IN_WEEK","startOfUTCWeek","locale","localeWeekStartsOn","defaultWeekStartsOn","getUTCWeekYear","localeFirstWeekContainsDate","firstWeekContainsDate","defaultFirstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","startOfUTCWeekYear","firstWeek","dayPeriodEnum","G","localize","era","ordinalNumber","unit","lightFormatters","Y","signedWeekYear","weekYear","R","Q","quarter","L","getUTCWeek","I","isoWeek","getUTCISOWeek","setUTCMonth","startOfYearTimestamp","difference","getUTCDayOfYear","E","dayOfWeek","localDayOfWeek","isoDayOfWeek","dayPeriod","K","X","_localize","timezoneOffset","_originalDate","formatTimezoneWithOptionalMinutes","formatTimezone","O","formatTimezoneShort","originalDate","T","dirtyDelimiter","absOffset","dateLongFormatter","formatLong","timeLongFormatter","dateTimeFormat","matchResult","datePattern","timePattern","dateTime","protectedDayOfYearTokens","protectedWeekYearTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","throwProtectedError","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyFormatStr","formatStr","getTimezoneOffsetInMilliseconds","utcDate","formatterOptions","firstCharacter","longFormatter","cleanEscapedString","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","CONNECTION_ID","DEFAULT_EDITOR_HEIGHT_FRACTION","getStateFromLocalStorage","stateFromLocalStorage","perQueryRowLimit","selectedRange","initialLocalStorage","initialState","initQueryExecutorError","connectionState","connectionError","connectionClusterId","canceling","sessionQueries","expectedQuery","groupId","logsTab","queryContexts","tabs","nextTabId","focusResultTab","activeTabId","runningQueryTabId","dimensions","editorWidthFraction","editorHeightFraction","modifyTabState","tabId","modifier","tab","createNewTab","queryContext","results","skipRemainingGroupQueries","runningQueryTab","tabState","newSessionQueries","queryLog","queryEditorReducer","_query","queryLogs","zipWith","handleQueryExecutorMessage","currentIndex","totalQueries","getQueryGroupSize","summary","closingTabId","oldTabs","newTabs","activeTabIndex","findIndex","newStatus","sameQueryTabs","queryLogIndex","_objectWithoutPropertiesLoose","wat","isErrorEvent","isDOMError","isDOMException","isString","isPrimitive","isRegExp","isThenable","isSyntheticEvent","scheduled","scheduler","isInteropObservable","schedule","scheduleObservable","isPromise","schedulePromise","isArrayLike","scheduleArray","isIterable","return","scheduleIterable","subscribeTo","replacement","wrapped","_Oo","urlEncode","jsonSize","encodeURI","utf8Length","normalizeToSize","maxSize","normalize","normalizeValue","Event","walk","normalized","serializeValue","objectifyError","innerKey","unmemoize","makeString","defaultToWhiteSpace","nativeTrim","characters","shiftRectangle","displacement","shiftBoundary","vertices","endY","minDistance","i1","i2","endY1","endY2","fallback","joinPoint","preExtend","startEndY","boundary","bStart","bRest","shiftLayout","rootBounds","leftBoundary","rightBoundary","leafCount","generateLayout","tree","dataToDimensions","getSpacing","singleEdgeHeight","bracketHeight","horizontalGap","layoutSubtree","nodeDimensions","nodeHeight","childYOffset","childLayouts","child","preLayout","layout","gap","gapMultiplier","targetGap","expansion","childNodes","flatten","childMaxHeight","nodeX","nodeBounds","childrenLeftBoundary","childrenRightBoundary","reduceRight","topLeftCorner","topRightCorner","parentString","sublayout","center","NewTree","rootId","mapTree","mapper","newTree","cb","toVisit","nextNodeId","nextNode","visit","nodeId","parseRawExplain","rawPlan","throwParseError","explain","Plan","planType","parseNode","actual_row_count","actual_total_time","inputs","subselects","subselect","executorInstance","isTerminal","treeNode","totalTimeMs","maxRowCount","maxTotalTimeMs","maxEstimatedRowCount","maxAbsDeltaRowCount","db","actualRowCount","percent","isMax","est_table_rows","est_rows","estimatedRowCount","deltaRowCount","actual_cpu_time","network_time","memory_usage","absDifference","KNOWN_WARNINGS_DOCS_LINKS","type_mismatched_comparisons","KNOWN_WARNINGS_DESCRIPTIONS","has_empty_tables","has_large_join_singlebox_optimizer","has_large_predicate_count","parseExplainString","rawExplain","sourceType","loading$","createExplainLayoutAction","compute$","clusterInfo","queryInfo","warnings","generateExplainLayout","rawJSON","plan","info","memsql_version","num_online_aggs","num_online_leaves","context_database","memsql_version_hash","numOnlineAggs","numOnlineLeaves","contextDatabase","memsqlVersionHash","parseClusterInfo","query_info","query_text","total_runtime_ms","queryText","totalRuntime","parseQueryInfo","missingStats","dbName","columns","linkName","generateStatsWarning","planWarnings","warningCategory","descriptions","showReprofileButton","parseExplainWarnings","guessedType","generateExplainActionForQuery","messageToExplainLayoutAction","lastInGroup","createExplainQueryGroupRepr","onError","perRowLimit","createProfileQueryGroupRepr","dynamicExplainQuery","$loading","$compute","doneSelecting","EXPLAIN","hostReportError","ReduxFormContext","withReduxForm","Hoc","_React$Component","_this$props","_reduxForm","bounded","propColumnsToStateColumns","defaultMaxWidth","defaultMinWidth","maxWidth","MIN_RESIZE_COLUMN_WIDTH","computeColumnPositions","tableWidth","contentMinWidth","sumBy","defaultColumnWidth","preferredWidths","widths","fillDelta","ratios","ratiosSum","deltas","fillColumnsToWidth","computeColumnPositionsAutoFit","columnDataWidths","sumWidths","cappedColumns","manualOverrideWidth","TableInner","columnsStyle","renderedColumns","rowsStyle","renderedRows","innerRef","compact","emptyState","columnsClasses","rowsClasses","rowsContent","isEmpty","SuperTable","handleResizeColumnMouseDown","columnPositions","columnResize","startX","handleMouseMove","handleMouseUp","updateColumnWidth","handleResizeColumnDoubleClick","columnIndexToMeasure","autofit","newColumns","newColumnPositions","handleTableResize","newPositions","hasMeasured","handleScroll","scrollTop","doneMeasuringColumn","measuredWidth","doneMeasuringTable","measuring","dataWidths","childElementCount","getColumnHeight","stateColumns","componentDidUpdate","cancel","removeEventListener","removeColumnsWidths","getColumnsIds","previousColumns","nextColumns","previousColumnsIds","nextColumnsIds","getRowsWithHeights","rowHeight","row","getRowWithHeight","renderMeasuringTable","SuperColumn","onSort","columnIndex","flatMap","rowIndex","cells","Cell","rowId","tables","renderedColumn","renderedRowForColumn","renderMeasuringColumn","computeVirtualizationInfo","overscanCount","scrollBottom","firstRowIndex","lastRowIndex","totalHeight","topOffset","cumulativeHeight","clickable","addNativeTooltipToStrings","fixedNumRowsDisplayed","verticallyAlignCells","minRowsDisplayed","renderWrapperRowComponent","itemDataTestId","extendLastColumn","wrapText","nonResizable","resizing","ResizeHandle","onMouseDown","onMouseUp","onDoubleClick","fullHeight","last","minRowsHeight","maxRowsHeight","renderView","SuperRow","striped","tableStyle","totalColumnWidth","renderTrackVertical","borderRadius","onScrollFrame","tabIndex","onResize","computedLeft","computedBarMarginLeft","RESIZE_HANDLE_WIDTH","marginLeft","subTitle","textAlign","disableDescriptionIcon","handleSort","sortIcon","sortable","descriptionIcon","fixedWidth","cellsProperties","onClickCell","selected","disabledTipProps","nativeTooltip","cellClassName","cellIndex","cellElement","wrapperClassName","isTextNode","verticallyAlignText","revealOnHover","addSort","Transform","StringDecoder","CipherBase","hashMode","_finalOrDigest","final","_final","__final","_decoder","_encoding","inputEnc","outputEnc","outData","_update","_toString","setAutoPadding","getAuthTag","setAuthTag","setAAD","_transform","_flush","fin","selectPipelines","pipelines","selectPipelinesLoading","selectPipelinesError","selectPipelinesLastUpdate","selectPipelinesSort","selectSortedPipelines","PIPELINES_COLUMNS","getSymbolIterator","PARTITION_INSTANCE_STATUS_ICON","online","replicating","provisioning","unrecoverable","recovering","transition","pending","offline","unknown","getPartitionInstanceStatusIcon","styleProps","iconColor","getPartitionInstanceStatusIconClass","displayPartitionInstanceState","getPartitionInstanceStatusClass","PARTITION_STATUS_ICON","degraded_recovering","offline_recovering","degraded_unrecoverable","getPartitionStatusIcon","_getPartitionStatusIcon","iconState","getPartitionStatusIconClass","_formatPartitionStatus","getPartitionStatusClass","formatPartitionSyncState","BAR_COLOR","critical","DEFAULT_BAR_COLOR","RatioMetricCell","labelPosition","bottomLabel","barClassName","getMetricStatus","entries","clamp","LabeledInlineBar","label","arrayMap","copyArray","isSymbol","stringToPath","toKey","getPartitionErrors","_getPartitionHasSlaveMismatch","slaveCount","numDetachedInstances","_countPartitionDetachedSlaves","syncReplicated","_getPartitionIsIncorrectlyAsync","getPartitionStatusMessage","partitionStatus","getDatabaseStatusMessage","databaseStatus","getPartitionInstanceName","getPartitionInstancePartitionName","getPartitionInstanceType","quotedDatabaseName","quotedEntityName","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","KNOWN_STATICS","callee","arity","MEMO_STATICS","TYPE_STATICS","getStatics","isMemo","ForwardRef","Memo","getOwnPropertyNames","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","API_URL","makeRequest","pathParts","BASE_URL","Accept","ok","json","API_CLUSTERS_SLUG","customRequester","redirectSamlLogin","allTextVariants","commonTypographyUtilityVariants","white","currentColor","display","fontWeight","fontSize","lineHeight","textTransform","capitalize","uppercase","lowercase","textStyle","normal","italic","flexGrow","flexShrink","justifySelf","auto","stretch","alignSelf","baseline","centerAlign","true","ellipsis","overflowWrap","anywhere","borderRadiusUtilityVariants","small","medium","large","xlarge","pill","textColorUtilityVariants","backgroundColorUtilityVariants","fontWeightUtilityVariants","regular","semibold","bold","fontSizeUtilityVariants","lineHeightUtilityVariants","short","long","spaceUtilityVariants","spaceUtilityKey","sizeUtilityVariants","sizeUtilityKey","full","displayUtilityVariants","block","inline","allMarginUtilityVariants","mx","my","mt","mr","mb","ml","allSizeUtilityVariants","maxHeight","makeOptions","opts","arrayFormat","booleanFormat","nullFormat","encodeValue","decodeValue","decodeURIComponent","encodeNull","encodeBoolean","encodeName","getNameEncoder","encodeArray","getSearch","parseName","bracketPosition","hasBrackets","param","rawName","decodedValue","decode","build","paramName","paramsToOmit","querystring","removedParams","kept","removed","keep","paramsToKeep","keptParams","CustomScrollbar","renderTrackHorizontal","renderThumbHorizontal","renderThumbVertical","theme","dark","finalStyle","zIndex","scrollbar","newProps","renderTrackHorizontalDefault","renderTrackVerticalDefault","themeStyle","backgroundColor","cursor","renderThumbHorizontalDefault","renderThumbVerticalDefault","selectLicenseLoading","license","licenseInfo","selectLicenseLastUpdate","selectLicenseError","selectLicenseInfo","selectLicenseUsage","pna","Duplex","util","Readable","Writable","readable","allowHalfOpen","onend","_writableState","ended","onEndNT","highWaterMark","_readableState","destroyed","_destroy","getFullYear","setFullYear","baseIsNative","Packets","LONG_STACK_DELIMITER","Sequence","_callback","_callSite","_ended","_timeout","_idleNext","_idlePrev","_idleStart","_idleTimeout","_repeat","_id","determinePacket","byte","hasErrorHandler","_packetToError","packet","errno","sqlState","_addLongStackTrace","callSiteStack","_onTimeout","buildClusterStatisticsAction","buildMemsqlPartitionsAction","sortPartitions","sortPartitionInstances","dict","ASTERISK_HALF_LINE","repeat","separator","numFields","formatCell","contents","padEnd","truncateBuffer","idx","bufferWithQuery","bufferWithFields","vertical","bufferWithRow","fieldPad","longestFieldLength","padStart","formatRow","cleanUpLastQuery","rowsPrinted","bufferWithSuccessMetrics","emittedRows","MAX_SCROLLBACK_LENGTH","queryExecutorState","activeHistory","editingQueryIndex","appendHistory","consoleReducer","newIdx","automated","savedQuery","currentQuery","fieldsPrinted","newQueryInfo","bufferWithRows","sectionPrefix","ExternalLink","ExternalLinkBase","iconName","tip","booleanToString","flat","cva","class","variants","defaultVariants","getVariantClassNames","variant","variantProp","defaultVariantProp","variantKey","propsWithoutUndefined","getCompoundVariantClassNames","compoundVariants","param1","classNames","compoundVariantOptions","ReflectOwnKeys","Reflect","ReflectApply","receiver","NumberIsNaN","errorListener","resolver","eventTargetAgnosticAddListener","flags","addErrorHandlerIfEventEmitter","_maxListeners","defaultMaxListeners","checkListener","_getMaxListeners","_addListener","prepend","existing","newListener","warned","onceWrapper","fired","wrapFn","_onceWrap","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","wrapListener","setMaxListeners","getMaxListeners","doError","er","originalListener","spliceOne","rawListeners","MAX_BYTES","MAX_UINT32","generated","codes","createErrorType","Base","NodeError","_Base","arg1","arg2","arg3","getMessage","oneOf","expected","thing","determiner","this_len","endsWith","getBuffer","nb","nenc","retried","_normalizeEncoding","normalizeEncoding","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","utf8CheckExtraBytes","utf8CheckIncomplete","Hash","blockSize","finalSize","_block","_finalSize","_blockSize","accum","assigned","remainder","digest","lowBits","highBits","hash","_hash","getRawTag","objectToString","symToStringTag","typecast","nonnegativeTime","startsWith","parseTimeToSeconds","selectConnectionState","queryEditor","selectQueryLogs","selectTabs","selectActiveTabId","selectRunningQueryTabId","selectActiveTabState","selectRunningQueryTabState","selectRunningTabId","selectActiveTabIsRunning","runningTabId","selectStateResults","selectCanceling","selectSort","selectRunningQueryGroupLogs","selectRunningQueryGroupStatuses","selectRunningQueryGroupError","queryStatuses","queryStatus","selectBuffer","sortResultRows","indexPattern","sortColumnIndex","fieldType","selectResultsToExport","canExportResultsAsCSV","selectCurrentEditorResults","totalRows","selectCanExportResultsAsCSV","selectQueryRanges","selectActiveQueryRange","queryRanges","cursorIdx","userSelected","closest","candidate","nextCandidate","nextCandidateStart","newlineIdx","selectEditorConnectionCanRunQuery","selectEditorExplainQueryStatus","activeQueryRange","canRunQuery","canExplainQuery","disabledMessage","selectFirstSelection","selectEditorCanRunQuery","firstSelection","iterRowCol","RowColumnRange","startRow","startColumn","endRow","endColumn","toAbsolute","AbsoluteRange","lastIdx","setStart","setEnd","toRowColumn","lastRow","lastCol","buildTopologyAction","sortNodes","sortNodePartitionInstances","uaParser","UAParser","isSupportedBrowser","getBrowser","versionNumber","getMajorVersion","isMobileDevice","getDevice","isSupportedDevice","thisArg","MapOperator","MapSubscriber","outerValue","outerIndex","notifyNext","notifyError","notifyComplete","outerSubscriber","innerValue","innerIndex","innerSub","propName","componentName","default","initialRender","lastFieldValidatorKeys","fieldValidatorKeys","mapFilter","ResultSet","ServerStatus","Query","nestTables","_resultSet","_results","_fields","_index","_loadError","parser","resultSet","eofPackets","fieldPackets","resultSetHeaderPacket","fieldCount","packetLength","_handleFinalResultPacket","serverStatus","SERVER_MORE_RESULTS_EXISTS","connection","stream","objectMode","_read","_connection","resume","pause","pred","consoleQueryExecutorState","buttonProps","Button","consoleRunQuery","ghost","selectSchemaSort","schema","selectColumns","selectViewColumns","viewColumns","selectIndexes","indexes","selectDatabases","databases","selectDatabaseNames","schemaSummary","databaseNames","selectTables","selectViews","views","selectStoredProcedures","storedProcedures","selectUDFs","userDefinedFunctions","selectUDAs","aggregates","selectCurrentDatabaseName","selectCurrentTableName","selectCurrentDatabase","currentDatabaseName","selectCurrentTableLike","currentTableName","tablesPerDatabase","viewsPerDatabase","selectCurrentTable","deriveColumns","maxDiskUsagePerTable","maxPerTable","tableId","columnDiskUsage","currentMax","maxMemoryUsagePerTable","columnMemoryUsage","maxDiskUsage","maxMemoryUsage","deriveTables","derivedTables","derivedTablesByDatabase","allTables","tablesPerDb","columnsByDatabase","derivedTable","currentDiskUsage","columnUncompressedSize","currentUncompressedSize","maxDiskUsagePerDatabase","maxPerDatabase","tableDiskUsage","maxMemoryUsagePerDatabase","tableMemoryUsage","selectSortedTables","filteredTables","deriveViews","derivedViews","derivedViewsPerDb","viewsPerDb","viewsColumnsByDatabase","viewColumn","viewId","selectSortedViews","selectedViews","selectSortedStoredProcedures","selectedSortedProcedures","selectSortedUDFs","selectedUDFs","selectSortedUDAs","selectedUDAs","aggregate","deriveDatabases","derivedPartitions","derivedNodes","derivedDatabases","databasePartitions","dataPartitionInstanceNodeCount","totalLeafCount","dataPartitions","part","dataPartitionInstances","dataPart","defaultValue","percentDefaultValue","tableStatistics","tableUncompressedSize","databaseDiskUsage","selectSortedDatabases","databaseInfo","selectSortedColumns","currentTable","selectedColumns","selectSortedViewColumns","selectSortedIndexes","selectedIndexes","selectCurrentDerivedTable","selectCurrentDerivedDatabase","selectCurrentView","selectSchemaExplorerLoading","statisticsLoading","selectSchemaExplorerNeedsLoading","selectSchemaExplorerLoaded","selectSchemaExplorerError","structureError","statisticsError","selectSchemaExplorerLastUpdate","lastStatisticsUpdate","selectSchemaSummaryLoading","selectSchemaSummaryLastUpdate","selectSchemaSummaryError","selectSchemaFullPayload","selectSampleData","sampleData","selectSampleDataError","selectSchemaPipelinesSort","selectSchemaSortedPipelines","selectedPipelines","pipeline","deriveDatabasesMetadata","selectAnyDatabasesOfflineWithoutPartitions","derivedParititons","withPartitions","makeWebApiRequest","webPing","SQL_WHERE_IP_ADDR","ipAddress","SqlString","SQL_NODES_LIVE_CPU","SQL_NODES_LIVE_MEMORY","SQL_NODES_LIVE_DISK","buildNodes","rawLeaves","rawAggregators","leaves","rawLeaf","openedConnections","averageLatency","availabilityGroup","aggregators","rawAggregator","masterAggregator","fetchTopologyData","queryTopology","startDate","deltaTimeS","buildNodesLiveMonitoringAction","sqlNodesLiveCPU","sqlNodesLiveMemory","sqlNodesLiveDisk","previousResults","newPartialPayload","nodeCpuUsage","nodeCpuLimit","memsqlTotalUsedCumulativeNs","timestampNs","numCpus","cgroupQuotaNs","cgroupPeriodNs","calculateNodeCpuUsagePercent","sqlNodesLiveMemoryRow","totalMemoryB","cgroupMemoryLimitB","sqlNodesLiveDiskRow","NODES_LIVE_MONITORING_SAGA_ID","nodesLiveMonitoringStart","liveMonitor","resultsObj","nodesLiveMonitoringStop","MD5","RIPEMD160","sha","alg","isBoolean","isNull","isNullOrUndefined","isNumber","isUndefined","BlockHash","pendingTotal","outSize","hmacStrength","padLength","_delta8","_delta32","_pad","_digest","Reporter","DecoderBuffer","EncoderBuffer","reporter","isEncoderBuffer","isDecoderBuffer","save","restore","fail","_reporterState","dirtyDateLeft","dirtyDateRight","timeLeft","timeRight","NODE_STATE_COLUMN","nodeStateLevel","getNodeStateLevel","titleize","NODE_PARTITION_INSTANCE_STATUS","formatNodePartitionInstanceStatus","NODE_ROLE_COLUMN","humanizeNodeRole","NODE_AVAILABILITY_GROUP_COLUMN","NODE_AVAILABILITY_PAIR_COLUMN","nodePair","NODE_CONNECTIONS_COLUMN","NODE_LATENCY_COLUMN","NODE_ADDRESS_COLUMN","NODE_CPU_USAGE_TIP","NODE_CPU_USAGE_COLUMN","cpuUsage","NODE_MEMORY_USAGE_TIP","NODE_MEMORY_USAGE_COLUMN","nodeMemoryUsage","NODE_DISK_USAGE_TIP","NODE_DISK_USAGE_COLUMN","nodeDiskUsage","getNodesPageColumns","physicalMonitoringEnabled","getHostPageColumns","ALL_HOST_PAGE_COLUMNS","baseGetTag","tag","getDateMillisecondsPart","baseTimezoneOffset","millisecondsPartOfTimezoneOffset","dateLeft","dateRight","ssl","_handleOpen","_opened","_flushQueue","_readQueue","_handleMessage","_handleError","_handleClose","_ws","WebSocket","binaryType","onopen","onmessage","onclose","_socket","socket","_protocol","_connectCalled","threadId","_handleNetworkError","_handleProtocolConnect","_handleProtocolHandshake","_handleProtocolError","_handleProtocolDrain","_handleProtocolEnd","_handleProtocolEnqueue","handshake","_startTLS","beginTransaction","commit","rollback","createQuery","_implyConnect","_enqueue","stats","quit","escape","queryFormat","stringifyObjects","getConnectionConfig","_handleConnectTimeout","errorno","syscall","handleNetworkError","sequence","FIELD_DECODER","TextDecoder","rawResultToArray","IS_MAC","newlineCharacter","replaceAllNewlineByPlatformNewline","removeFromSet","leftJoin","comparator","arr1","arr2","iterator1","iterator2","comparison","baseIsEqual","customizer","fetchMemsqlVersion","sqlGetMemSQLVersionRow","Value","PROXY_SAGA_ID","proxyPing","logSilentError","logFocusConnectionError","proxyPingStop","formatErrorMsg","rowBatcher","fatal","emitError","pendingErrorState","emitState","onFields","currentQueryFields","emitResultSet","onResult","handleDatabaseChange","handlePerQueryRowLimitChange","insertId","changedRows","onSequenceEnd","emitSequenceEnd","RE_USE_DATABASE","RE_CLEAN_DATABASE_NAME","getSelectedDatabase","emitMessage","droppedDatabase","RE_DROP_DATABASE","getDroppedDatabase","RE_SET_SELECT_LIMIT","queryArray","RE_CLEAN_ROW_LIMIT","getPerQueryRowLimitSelected","RowBatcher","emitRows","init$","info$","fromEvent","end$","notifier","runQuery","SQL_SELECT_LIMIT","observables","concurrent","POSITIVE_INFINITY","GeneralError","errorHeader","Modal","handleKeyDown","onClose","keyCode","ESC","disableClose","handleClickWrapper","$wrapper","viewClassName","viewOuterClassName","innerContentPadding","hideCloseButton","autoHide","viewOuterClasses","viewClasses","maxModalHeight","closeButton","modal","onKeyDown","autoHeight","autoHeightMin","autoHeightMax","CenteringWrapper","ALERT_ICON","Alert","squareCorners","showIcon","alertTitle","originalModule","webpackPolyfill","dotOrEnd","dotOrStart","getName","normaliseSegment","testRouteWithSegment","applySegment","segment","startsWithSegment","endsWithSegment","includesSegment","styles","visibility","ResizeDetector","entry","contentRect","parentElement","observe","unobserve","trace","asUInt32Array","scrubVec","cryptBlock","keySchedule","SUB_MIX","SBOX","nRounds","t0","t1","t2","t3","SUB_MIX0","SUB_MIX1","SUB_MIX2","SUB_MIX3","s0","s1","s2","s3","ksRow","RCON","INV_SBOX","INV_SUB_MIX","sx","x4","x8","AES","_reset","keySize","keyWords","ksRows","invKeySchedule","ik","ksR","tt","_nRounds","_keySchedule","_invKeySchedule","encryptBlockRaw","encryptBlock","decryptBlock","m1","scrub","salt","keyBits","ivLen","keyLen","iv","keyStart","ivStart","BaseCurve","conf","zero","two","pointFromJSON","gRed","_wnafT1","_wnafT2","_wnafT3","_wnafT4","_bitLength","adjustCount","redN","_maxwellTrick","BasePoint","curve","precomputed","point","validate","_fixedNafMul","doubles","_getDoubles","nafW","repr","jpoint","mixedAdd","points","toP","_wnafMul","nafPoints","_getNAFPoints","dblp","_wnafMulAdd","defW","coeffs","jacobianResult","wndWidth","comb","toJ","ja","jb","decodePoint","pointFromX","encodeCompressed","_encode","getX","getY","precompute","power","beta","_getBeta","_hasDoubles","dbl","asn1","aesid","fixProc","ciphers","compat","parseKeys","passphrase","subtype","ndata","stripped","certificate","tbsCertificate","subjectPublicKeyInfo","PublicKey","algorithm","RSAPublicKey","subjectPublicKey","subjectPrivateKey","pub_key","DSAparam","decrypt","kde","kdeparams","iters","algo","cipher","cipherText","keylen","pbkdf2Sync","createDecipheriv","EncryptedPrivateKey","PrivateKey","RSAPrivateKey","privateKey","ECPrivateKey","priv_key","DSAPrivateKey","parameters","signature","vendors","raf","caf","_now","cp","cancelled","polyfill","requestAnimationFrame","cancelAnimationFrame","changeBottomPanelHeight","changeBottomPanelTab","startOfDayLeft","startOfDayRight","timestampLeft","timestampRight","desiredMonth","dateWithDesiredMonth","daysInMonth","strRepeat","padStr","padlen","STUDIO_CONFIG_KEY","DEFAULT_CLUSTER_CONFIG","getClustersWithDefault","Proxy","DEFAULT_STUDIO_CONFIG","freeze","notificationManager","sidebarCollapsed","readStudioConfig","setStudioConfig","isObjectLike","nativeCreate","getNative","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","isKeyable","__data__","isLength","FormSubmitButton","secondary","loadingSpinner","buttonStyleProps","primary","FormHeader","leftAlign","headerTitle","headerDescription","FormBody","headerProps","innerClassName","formElementClassName","formBodyFullWidth","formBodyFullHeight","formError","formHeader","headerClassName","withoutFormTag","handleSubmit","onSubmit","Form","noValidate","useMediaQuery","getMatches","matchMedia","matches","setMatches","useState","handleChange","useEffect","ThemeContext","ThemeProvider","systemTheme","themePreferenceLocalStorage","setThemePreferenceLocalStorage","initialValue","storedValue","setStoredValue","valueToStore","useLocalStorage","themePreference","setThemePreference","classList","themeConditional","useTheme","useContext","Condition","check","$scrollbar","handleAnimationEnd","dispatchEvent","scrollToTop","fullWidth","closeButtonClasses","universal","onAnimationEnd","PER_QUERY_ROW_LIMIT","CLIENT_LONG_PASSWORD","CLIENT_FOUND_ROWS","CLIENT_LONG_FLAG","CLIENT_CONNECT_WITH_DB","CLIENT_NO_SCHEMA","CLIENT_COMPRESS","CLIENT_ODBC","CLIENT_LOCAL_FILES","CLIENT_IGNORE_SPACE","CLIENT_PROTOCOL_41","CLIENT_INTERACTIVE","CLIENT_SSL","CLIENT_IGNORE_SIGPIPE","CLIENT_TRANSACTIONS","CLIENT_RESERVED","CLIENT_SECURE_CONNECTION","CLIENT_MULTI_STATEMENTS","CLIENT_MULTI_RESULTS","CLIENT_PS_MULTI_RESULTS","CLIENT_PLUGIN_AUTH","CLIENT_SSL_VERIFY_SERVER_CERT","CLIENT_REMEMBER_OPTIONS","ApiHandler","extraApis","apis","getHandlers","api","getApiHandler","findHandler","ac","handlesAction","handleAction","buildHostsAction","sortHosts","sortHostNodes","COLUMN_CATEGORY_ICON","datetime","geospatial","enum","getDatabaseStatusLevel","DATA_TYPE_TO_CATEGORY","formatPipelineState","getSourceTypeIcon","pipelineName","numFailedBatches","formatLastBatchState","lastBatch","formatBatchTimestamp","rowsWritten","trigger","pristine","syncValidationPasses","formatDistanceLocale","lessThanXSeconds","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","buildFormatLongFn","defaultWidth","formats","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","buildLocalizeFn","dirtyIndex","valuesArray","formattingValues","defaultFormattingWidth","_defaultWidth","_width","argumentCallback","buildMatchFn","dirtyString","matchPattern","matchPatterns","defaultMatchWidth","matchedString","parsePatterns","defaultParseWidth","predicate","findKey","valueCallback","formatDistance","addSuffix","formatRelative","_date","_baseDate","_dirtyOptions","rem100","narrow","abbreviated","wide","am","pm","midnight","noon","morning","afternoon","evening","night","parsePattern","parseResult","DEFAULT_EXPANDED_SECTIONS","viewportTransform","selectedIndex","expandedSections","explainTabFor","nextId","messages","coreReducers","takeRight","sectionName","nextStreamId","counter","worker","_recv","streamId","postMessage","getWorkerMiddleware","apiHandler","_classCallCheck","_possibleConstructorReturn","ReferenceError","ExtendableError","_extendableBuiltin2","captureStackTrace","_inherits","cls","ExtendableBuiltin","_extendableBuiltin","_ExtendableError","SubmissionError","base64_url_decode","InvalidTokenError","BIG5_CHINESE_CI","LATIN2_CZECH_CS","DEC8_SWEDISH_CI","CP850_GENERAL_CI","LATIN1_GERMAN1_CI","HP8_ENGLISH_CI","KOI8R_GENERAL_CI","LATIN1_SWEDISH_CI","LATIN2_GENERAL_CI","SWE7_SWEDISH_CI","ASCII_GENERAL_CI","UJIS_JAPANESE_CI","SJIS_JAPANESE_CI","CP1251_BULGARIAN_CI","LATIN1_DANISH_CI","HEBREW_GENERAL_CI","TIS620_THAI_CI","EUCKR_KOREAN_CI","LATIN7_ESTONIAN_CS","LATIN2_HUNGARIAN_CI","KOI8U_GENERAL_CI","CP1251_UKRAINIAN_CI","GB2312_CHINESE_CI","GREEK_GENERAL_CI","CP1250_GENERAL_CI","LATIN2_CROATIAN_CI","GBK_CHINESE_CI","CP1257_LITHUANIAN_CI","LATIN5_TURKISH_CI","LATIN1_GERMAN2_CI","ARMSCII8_GENERAL_CI","UTF8_GENERAL_CI","CP1250_CZECH_CS","UCS2_GENERAL_CI","CP866_GENERAL_CI","KEYBCS2_GENERAL_CI","MACCE_GENERAL_CI","MACROMAN_GENERAL_CI","CP852_GENERAL_CI","LATIN7_GENERAL_CI","LATIN7_GENERAL_CS","MACCE_BIN","CP1250_CROATIAN_CI","UTF8MB4_GENERAL_CI","UTF8MB4_BIN","LATIN1_BIN","LATIN1_GENERAL_CI","LATIN1_GENERAL_CS","CP1251_BIN","CP1251_GENERAL_CI","CP1251_GENERAL_CS","MACROMAN_BIN","UTF16_GENERAL_CI","UTF16_BIN","UTF16LE_GENERAL_CI","CP1256_GENERAL_CI","CP1257_BIN","CP1257_GENERAL_CI","UTF32_GENERAL_CI","UTF32_BIN","UTF16LE_BIN","BINARY","ARMSCII8_BIN","ASCII_BIN","CP1250_BIN","CP1256_BIN","CP866_BIN","DEC8_BIN","GREEK_BIN","HEBREW_BIN","HP8_BIN","KEYBCS2_BIN","KOI8R_BIN","KOI8U_BIN","LATIN2_BIN","LATIN5_BIN","LATIN7_BIN","CP850_BIN","CP852_BIN","SWE7_BIN","UTF8_BIN","BIG5_BIN","EUCKR_BIN","GB2312_BIN","GBK_BIN","SJIS_BIN","TIS620_BIN","UCS2_BIN","UJIS_BIN","GEOSTD8_GENERAL_CI","GEOSTD8_BIN","LATIN1_SPANISH_CI","CP932_JAPANESE_CI","CP932_BIN","EUCJPMS_JAPANESE_CI","EUCJPMS_BIN","CP1250_POLISH_CI","UTF16_UNICODE_CI","UTF16_ICELANDIC_CI","UTF16_LATVIAN_CI","UTF16_ROMANIAN_CI","UTF16_SLOVENIAN_CI","UTF16_POLISH_CI","UTF16_ESTONIAN_CI","UTF16_SPANISH_CI","UTF16_SWEDISH_CI","UTF16_TURKISH_CI","UTF16_CZECH_CI","UTF16_DANISH_CI","UTF16_LITHUANIAN_CI","UTF16_SLOVAK_CI","UTF16_SPANISH2_CI","UTF16_ROMAN_CI","UTF16_PERSIAN_CI","UTF16_ESPERANTO_CI","UTF16_HUNGARIAN_CI","UTF16_SINHALA_CI","UTF16_GERMAN2_CI","UTF16_CROATIAN_MYSQL561_CI","UTF16_UNICODE_520_CI","UTF16_VIETNAMESE_CI","UCS2_UNICODE_CI","UCS2_ICELANDIC_CI","UCS2_LATVIAN_CI","UCS2_ROMANIAN_CI","UCS2_SLOVENIAN_CI","UCS2_POLISH_CI","UCS2_ESTONIAN_CI","UCS2_SPANISH_CI","UCS2_SWEDISH_CI","UCS2_TURKISH_CI","UCS2_CZECH_CI","UCS2_DANISH_CI","UCS2_LITHUANIAN_CI","UCS2_SLOVAK_CI","UCS2_SPANISH2_CI","UCS2_ROMAN_CI","UCS2_PERSIAN_CI","UCS2_ESPERANTO_CI","UCS2_HUNGARIAN_CI","UCS2_SINHALA_CI","UCS2_GERMAN2_CI","UCS2_CROATIAN_MYSQL561_CI","UCS2_UNICODE_520_CI","UCS2_VIETNAMESE_CI","UCS2_GENERAL_MYSQL500_CI","UTF32_UNICODE_CI","UTF32_ICELANDIC_CI","UTF32_LATVIAN_CI","UTF32_ROMANIAN_CI","UTF32_SLOVENIAN_CI","UTF32_POLISH_CI","UTF32_ESTONIAN_CI","UTF32_SPANISH_CI","UTF32_SWEDISH_CI","UTF32_TURKISH_CI","UTF32_CZECH_CI","UTF32_DANISH_CI","UTF32_LITHUANIAN_CI","UTF32_SLOVAK_CI","UTF32_SPANISH2_CI","UTF32_ROMAN_CI","UTF32_PERSIAN_CI","UTF32_ESPERANTO_CI","UTF32_HUNGARIAN_CI","UTF32_SINHALA_CI","UTF32_GERMAN2_CI","UTF32_CROATIAN_MYSQL561_CI","UTF32_UNICODE_520_CI","UTF32_VIETNAMESE_CI","UTF8_UNICODE_CI","UTF8_ICELANDIC_CI","UTF8_LATVIAN_CI","UTF8_ROMANIAN_CI","UTF8_SLOVENIAN_CI","UTF8_POLISH_CI","UTF8_ESTONIAN_CI","UTF8_SPANISH_CI","UTF8_SWEDISH_CI","UTF8_TURKISH_CI","UTF8_CZECH_CI","UTF8_DANISH_CI","UTF8_LITHUANIAN_CI","UTF8_SLOVAK_CI","UTF8_SPANISH2_CI","UTF8_ROMAN_CI","UTF8_PERSIAN_CI","UTF8_ESPERANTO_CI","UTF8_HUNGARIAN_CI","UTF8_SINHALA_CI","UTF8_GERMAN2_CI","UTF8_CROATIAN_MYSQL561_CI","UTF8_UNICODE_520_CI","UTF8_VIETNAMESE_CI","UTF8_GENERAL_MYSQL500_CI","UTF8MB4_UNICODE_CI","UTF8MB4_ICELANDIC_CI","UTF8MB4_LATVIAN_CI","UTF8MB4_ROMANIAN_CI","UTF8MB4_SLOVENIAN_CI","UTF8MB4_POLISH_CI","UTF8MB4_ESTONIAN_CI","UTF8MB4_SPANISH_CI","UTF8MB4_SWEDISH_CI","UTF8MB4_TURKISH_CI","UTF8MB4_CZECH_CI","UTF8MB4_DANISH_CI","UTF8MB4_LITHUANIAN_CI","UTF8MB4_SLOVAK_CI","UTF8MB4_SPANISH2_CI","UTF8MB4_ROMAN_CI","UTF8MB4_PERSIAN_CI","UTF8MB4_ESPERANTO_CI","UTF8MB4_HUNGARIAN_CI","UTF8MB4_SINHALA_CI","UTF8MB4_GERMAN2_CI","UTF8MB4_CROATIAN_MYSQL561_CI","UTF8MB4_UNICODE_520_CI","UTF8MB4_VIETNAMESE_CI","UTF8_GENERAL50_CI","ARMSCII8","ASCII","BIG5","CP1250","CP1251","CP1256","CP1257","CP866","CP850","CP852","CP932","DEC8","EUCJPMS","EUCKR","GB2312","GBK","GEOSTD8","GREEK","HEBREW","HP8","KEYBCS2","KOI8R","KOI8U","LATIN1","LATIN2","LATIN5","LATIN7","MACCE","MACROMAN","SJIS","SWE7","TIS620","UCS2","UJIS","UTF16","UTF16LE","UTF8","UTF8MB4","UTF32","isScheduler","fromArray","subscribeToArray","updateFromSet","oldValue","newValue","bool","tinyint","smallint","mediumint","int","bigint","double","float","binary","varchar","varbinary","longtext","longblob","mediumblob","blob","tinyblob","mediumtext","tinytext","geographypoint","geography","LoadingBar","featureName","isCreateClusterPageAvailable","ENABLED_FEATURES","MANAGED_SERVICE","FullscreenLoading","componentWillMount","componentWillReceiveProps","prevState","componentWillUpdate","prevProps","__reactInternalSnapshotFlag","__reactInternalSnapshot","getSnapshotBeforeUpdate","isReactComponent","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","UNSAFE_componentWillMount","UNSAFE_componentWillReceiveProps","UNSAFE_componentWillUpdate","newApiName","maybeSnapshot","snapshot","__suppressDeprecationWarning","obs","iterable","FeedbackModal","externalLink","initialProviderValue","changeFeedbackModalStatus","FeedbackModalContext","handleChangeStatus","Scope","_notifyingListeners","_scopeListeners","_eventProcessors","_breadcrumbs","_user","_tags","_extra","addScopeListener","_notifyScopeListeners","_notifyEventProcessors","processors","processor","setUser","setTags","tags","setExtras","setExtra","setFingerprint","fingerprint","_fingerprint","setLevel","setTransaction","transaction","_transaction","setContext","setSpan","span","_span","startSpan","parentSpan","setParent","getSpan","newScope","maxBreadcrumbs","mergedBreadcrumb","clearBreadcrumbs","_applyFingerprint","contexts","breadcrumbs","getGlobalEventProcessors","__SENTRY__","globalEventProcessors","addGlobalEventProcessor","castModule","hot","mvChangeFilters","mvChangeActivityType","mvChangeDatabase","mvSortQueries","mvSortNodes","mvChangeStatsColumns","cancelMvRecording","mvFull","changeMvHistoricalDropdown","clearMvData","Timeout","clearFn","_clearFn","unref","enroll","msecs","_idleTimeoutId","unenroll","_unrefActive","setImmediate","clearImmediate","jsonReplacer","rawValue","jsonReviver","enLocale","formatters","removeFormattingTokens","delimeter","localeFormatters","buildFormatFn","formatFn","textVariants","__webpack_public_path__","_setPrototypeOf","HashBase","ARRAY16","rotl","fnF","fnG","fnH","fnI","_blockOffset","_length","Stream","PassThrough","finished","ERR_STREAM_PREMATURE_CLOSE","eos","called","onlegacyfinish","onfinish","writableEnded","readableEnded","endEmitted","onrequest","req","setHeader","abort","isRequest","zl","zr","sl","sr","hl","hr","_e","fn1","fn2","fn3","fn4","fn5","br","cr","dr","tl","tr","Algorithm","sha1","sha224","sha256","sha384","sha512","ondata","ondrain","_isStdio","didOnEnd","cleanup","CorkedRequest","finish","corkReq","pendingcb","corkedRequestsFree","onCorkedFinish","asyncWrite","WritableState","internalUtil","deprecate","OurUint8Array","realHasInstance","destroyImpl","nop","isDuplex","writableObjectMode","hwm","writableHwm","writableHighWaterMark","defaultHwm","finalCalled","needDrain","ending","noDecode","decodeStrings","defaultEncoding","writing","corked","sync","bufferProcessing","onwrite","writecb","writelen","onwriteStateUpdate","finishMaybe","errorEmitted","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","_write","writev","_writev","doWrite","onwriteDrain","holder","allBuffers","isBuf","callFinal","need","prefinish","hasInstance","_uint8ArrayToBuffer","writeAfterEnd","valid","validChunk","newChunk","decodeChunk","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","_undestroy","undestroy","Cipher","bufferOff","_updateDecrypt","_updateEncrypt","_flushBuffer","inputOff","outputOff","_finalEncrypt","_finalDecrypt","_unpad","deciphers","modes","createCipher","createCipheriv","Cipheriv","createDecipher","Decipher","Decipheriv","listCiphers","getCiphers","modeModules","ECB","CBC","CFB","CFB8","CFB1","OFB","CTR","GCM","Rand","generate","_rand","getBytes","getByte","getr","priv","modulus","prime1","prime2","crt","blinds","blinder","publicExponent","unblinder","blind","blinded","qinv","coefficient","exponent1","m2","exponent2","move","_move","for","modrn","allocate","_toArrayLikeLE","_toArrayLikeBE","isNegNum","elliptic","curves","ec","eddsa","pre","PresetCurve","edwards","isInfinity","defineCurve","lambda","basis","common","ripemd","hmac","ripemd160","safer","Safer","kStringMaxLength","constants","MAX_LENGTH","MAX_STRING_LENGTH","methods","Node","_baseState","reverseArgs","choice","optional","use","useDecoder","explicit","implicit","contains","_wrap","cstate","_useArgs","def","newKey","_decode","wrapResult","prevObj","present","prevKey","enterKey","_peekTag","_decodeGeneric","_decodeChoice","enterObject","_decodeTag","_getUse","leaveObject","exitKey","leaveKey","_decodeList","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeBool","_decodeInt","entity","_use","_createEncoderBuffer","_encodeValue","_skipDefault","content","primitive","_encodeChoice","_encodePrimitive","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool","_isNumstr","_isPrintstr","ReporterError","rethrow","pathLen","inherited","tagClass","tagClassByName","tagByName","ConnectionConfig","baseUrl","localAddress","socketPath","user2","connectTimeout","insecureAuth","supportBigNumbers","bigNumberStrings","pool","multipleStatements","maxPacketSize","charsetNumber","getCharsetNumber","defaultFlags","getDefaultFlags","clientFlags","mergeFlags","userFlags","allFlags","parseFlagList","newFlags","flag","flagList","pathname","globalDeselect","getSelection","selection","removeAllRanges","monthIndex","buildDistanceInWordsLocale","buildFormatLocale","dateLeftStartOfWeek","dateRightStartOfWeek","lowercaseRest","remainingChars","escapeRegExp","nativeTrimRight","trimRight","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","Map","baseIsEqualDeep","bitmask","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","arrayLikeKeys","baseKeys","baseIsArguments","objectProto","isArguments","stubFalse","freeExports","nodeType","freeModule","reIsUint","baseIsTypedArray","baseUnary","nodeUtil","nodeIsTypedArray","isTypedArray","Ctor","secondPerFrame","destX","newV","newX","reusedTuple","getNanoSeconds","hrtime","loadTime","currentStyle","currentVelocity","styleValue","reIsDeepProp","reIsPlainProp","LevelMap","getNodePartitionInstanceStatusIconName","getNodePartitionInstanceStatusLevel","iconStatusLevel","getNodePartitionInstanceStatusIcon","getOverallNodeStateLevel","level1","level2","TABLE_SCAN_FRACTION","executorInstanceToDimensions","heightMultiplier","_assertThisInitialized","invariant","LOADABLE_SHARED","initialChunks","createLoadable","_ref$defaultResolveCo","defaultResolveComponent","_render","loadable","loadableConstructor","requireAsync","resolveConstructor","cache","_getCacheKey","cacheKey","Loadable","resolveComponent","preload","InnerLoadable","__chunkExtractor","requireSync","ssr","loadSync","addChunk","chunkName","loadAsync","triggerOnLoad","safeSetState","_this2","getCacheKey","getCache","setCache","_this3","loadedModule","suspense","_this$props2","propFallback","_this$state","cachedResult","EnhancedInnerLoadable","extractor","load","lazy","_createLoadable","_createLoadable$1","loadable$1","lazy$1","loadable$2","lib","factory","vertxNext","customSchedulerFn","asap","scheduleFlush","browserWindow","browserGlobal","BrowserMutationObserver","MutationObserver","WebKitMutationObserver","isNode","isWorker","Uint8ClampedArray","importScripts","MessageChannel","useSetTimeout","globalSetTimeout","channel","iterations","onFulfillment","onRejection","PROMISE_ID","makePromise","_state","invokeCallback","resolve$1","createTextNode","characterData","port1","port2","vertx","runOnLoop","runOnContext","attemptVertx","PENDING","TRY_CATCH_ERROR","getThen","handleMaybeThenable","maybeThenable","then$$1","thenable","fulfill","handleOwnThenable","sealed","fulfillmentHandler","rejectionHandler","tryThen","_label","handleForeignThenable","publishRejection","_onerror","publish","_subscribers","subscribers","settled","detail","hasCallback","succeeded","failed","tryCatch","Enumerator","_instanceConstructor","_remaining","_enumerate","_eachEntry","resolve$$1","_then","_settledAt","Promise$1","_willSettleAt","enumerator","needsResolver","initializePromise","needsNew","race","_setScheduler","scheduleFn","_setAsap","asapFn","_asap","local","promiseToString","cast","PREFIX","Logger","_enabled","disable","baseMerge","createAssigner","srcIndex","baseAssignValue","baseForOwn","baseIteratee","iteratee","saveData","baseName","extension","Blob","InlineBar","squaredCorners","background","border","queryClusterStatistics","sqlClusterHA","fetchClusterStatistics","createMemsqlVersionAction","queryMemsqlVersion","areRefPartitionsSyncReplicated","fetchPartitionData","getMemsqlPartitionsData","sqlClusterStatus","sqlDistributedPartitions","sqlDistributedDatabases","numPartitions","clusterStatus","partitionHash","getPartitionState","isOffline","parsedRole","details","queryPartitionData","mapSQLRowsThroughput","sqlRowsThroughputProps","sqlProp","variableName","variableValue","queryRowsThroughput","fetchRowsThroughput","createRowsThroughputAction","errorAction","isRowsThroughputEnabled","isRowsTroughputEnabled","selectHostsLoading","hosts","selectHostsLastUpdate","selectHostsError","selectHosts","hostsPayload","selectHostsSort","hostsSort","selectHostNodesSort","hostNodesSort","deriveHosts","allNodes","address","selectSortedHosts","ALL_HOSTS_COLUMNS","selectCurrentHostAddress","hostId","selectCurrentHost","hostAddress","selectSortedHostNodes","selectIsPhysicalMonitoringEnabled","headingVariants","headingVariantPropKeys","heading","Heading","Comp","variantProps","elementProps","commonProps","createHeadingComponent","H1","H2","H3","H4","dbColumn","tableColumn","escapedDb","escapedTable","SQL_EXCLUDE_SYSTEM_DATABASES","SQL_STRUCTURE_DATABASES","SQL_STRUCTURE_TABLES_SINGLE_QUERY_MIN_VERSION","SQL_STRUCTURE_COLUMNS","SQL_STATISTICS_COLUMNS_MEMORY","SQL_STATISTICS_TABLE","SQL_MEMORY_USAGE","SQL_AVAILABLE_MEMORY","SQL_TOTAL_MEMORY","SQL_DISK_USAGE","SQL_TOTAL_DISK","SQL_DATABASE_NAMES","sortTables","getTableType","getTableStorage","parseSqlStructureTable","tableType","parseTableSingleQuery","queryTables","queryFilter","sqlStructureTables","tableQueries","distributed","Table_type","Storage_type","parseTableShowTables","fetchAndEmitSchemaStructure","sqlColumns","tableLikes","ordinalPosition","isNullable","autoIncrement","columnStorage","allTablesPerDatabase","allViewsPerDatabase","tablesSorted","fetchSchemaStructure","structureAction","fetchAndEmitDatabasesStructure","tableCountRows","databaseStats","syncRepl","statisticsData","remoteName","fetchDatabasesStructure","databasesStructure","queryDatabasesStructure","queryDatabaseStructure","queryStructure","fetchAndEmitExtraSchemaStructure","createClusterStatisticsAction","filterIndexes","sqlIndexesStats","sqlColumnarIndexesStats","hashedIndex","nonUnique","savedIndex","columnarIndex","sqlColumnarIndex","totalSize","indexId","mapValues","otherIndex","functionsPromise","functionQueries","resultSets","each","functionId","Definer","queryFunctions","storedProceduresPromise","storedProcedureQueries","queryStoredProcedures","aggregatesPromise","aggregateQueries","queryAggregates","fetchAndEmitSchemaStatistics","mappedResults","sqlTableMemoryStats","tableStats","createStatisticsAction","querySchemaStatistics","$loadingClusterStatistics","$loadingSchemaStatistics","columnarSegments","columnStatistics","logFocusError","fetchAndEmitExtraSchemaStatistics","createSchemaSummaryAction","sqlDatabasesDiskUsage","sqlMemoryUsage","sqlAvailableMemory","sqlTotalMemory","sqlDiskUsage","sqlTotalDisk","sqlDatabaseNames","topDiskDatabases","take","memoryUsageB","availableMemoryB","diskUsageB","diskTotalB","memoryAvailable","memoryTotal","diskTotal","querySchemaSummary","$loadingSummary","queryLightSchemaSummary","queryTableLikeSample","sampleRows","queryShowCreateTableLikeSql","getShowCreateTableQuery","explainViewportTransform","changeExplainTab","explainQuery","profileQuery","expandSection","collapseSection","updateLocalStorageBuffer","editBuffer","updateLocalStorageCursorInfo","setCursorInfo","setFirstVisibleLine","updateLocalStorageFirstVisibleLine","sortResults","queryTexts","saveResultsAsCSV","csv","getAnalytics","changeEditorHeight","changeEditorWidth","closeEditorTab","closeAllEditorTabs","changeEditorActiveTab","changeEditorActiveLogsTab","initQueryEditorQueryExecutor","localStorageDatabase","selectExplainLayout","selectExplainRawJSON","selectExplainLayoutLoading","selectExplainLayoutError","selectExplainNodes","selectExplainLayoutWarnings","selectExplainSource","selectExplainSourceType","selectPlanType","selectExplainQueryInfo","selectActiveExecutorInstance","selectLayout","selectNumOperations","selectTotalNetworkTraffic","network_traffic","selectTotalTimeMs","totalTime","allUndefined","nodeTotalTimeMs","selectTotalMemoryUsage","totalMemoryUsage","selectClusterInfo","MEGABYTE_TO_BYTES","getLicenseType","lowerCase","getLicenseInfo","sqlGlobalStatus","sqlLicense","statusRow","Variable_name","keyBy","Maximum_cluster_capacity","Used_cluster_capacity","License_expiration","License_key","License_type","License_version","License","expirationDate","rawMaxCapacity","rawUsedCapacity","expiration","secondsToExpiration","queryLicense","currentDateResult","statusRows","dateRows","withFeedbackModal","dirtyDateToCompare","dirtyDatesArray","dateToCompare","timeToCompare","distance","SQL_GET_READ_ADVANCED_COUNTERS","SQL_MV_NODES","SQL_MV_ACTIVITIES_TIMESTAMP","SQL_MV_ACTIVITIES_CUMULATIVE","actToCumulativeStats","cpuTimeMs","cpuWaitTimeMs","elapsedTimeMs","memoryBs","memoryMajorFaults","lockTimeMs","lockRowTimeMs","logBufferTimeMs","logFlushTimeMs","logBufferWriteB","networkTimeMs","networkLogicalRecvB","networkLogicalSendB","networkB","diskTimeMs","diskLogicalReadB","diskLogicalWriteB","diskPhysicalReadB","diskPhysicalWriteB","diskB","deltaStatsToMvStats","divideByDeltaTimeS","cpuTime","cpuWaitTime","memoryB","lockTime","lockRowTime","logBufferTime","logFlushTime","networkTime","diskTime","generateCumulativeActivities","sqlActivities","activities","makeCumulativeActivity","aggregatorActivityName","activityName","activityType","nullable","runCount","successCount","failureCount","partitionId","cumulativeActivity","hashMvActivity","mvActivity","makeLowActivity","mvNodeArrayToMap","nodesObj","getDeltaActivities","startActivities","finalSqlActivities","deltaActivities","finalAct","startAct","monus","cumulativeStats","sqlNodeToMvNode","sqlNode","ipAddr","maxMemoryMb","memoryUsedMb","mvFullStart","fixedInterval","requestedStartDate","buildActionStart","mvFullStartAction","buildMvFullStartAction","mvHistorical","desiredFirstTs","desiredSecondTs","monitoringDatabaseName","monitoringClusterName","desiredFirstTsAdjusted","desiredSecondTsAdjusted","ts","firstTs","secondTs","firstTsString","secondTsString","firstTsActivities","secondTsActivities","nodesInfo","monitoringSqlNodeToMvNode","mvFullStop","startTime","requestedStopDate","advancedCounters","tuple","mvFullStopAction","mvFullPayload","buildMvFullAction","mvFullFixedInterval","sqlActivity","buildFixedIntervalMvFullAction","getMvHistoricalOldestTimestamp","convertDateToUTC","checkMonitoringSchema","compareExpectedSchema","transformToExpectedSchema","EXPECTED_MONITORING_SCHEMA","datatype","currentSchema","expectedSchema","isMatch","TABLE_NAME","COLUMN_NAME","DATA_TYPE","dateUTC","UTC","rootNodeId","consoleEditQuery","consoleShiftQuery","initConsoleQueryExecutor","selectClusterMetadataLoading","isDashboardLoading","nodesLoading","clusterMetadataLoading","pipelinesLoading","schemaSummaryLoading","licenseLoading","lastDashboardUpdate","nodesLastUpdate","clusterMetadataLastUpdate","pipelinesLastUpdate","schemaSummaryLastUpdate","licenseLastUpdate","createLatestMemsqlVersionAction","createLatestStudioVersionAction","queryLatestMemsqlVersion","queryLatestStudioVersion","Select","inputProps","styleType","SimpleModalBody","SQL_ORDER_BY","SQL_PIPELINES_QUERY","SQL_PIPELINES_FAILED_BATCHES_QUERY","SQL_PIPELINES_LAST_BATCH_QUERY","getPipelineState","getPipelineSourceType","sourceTypeStr","getBatchState","batchState","joinPipelinesData","curry","pushToOutput","pipelineId","lastBatchState","lastBatchTimestamp","lastBatchRowsWritten","joinPipelinesWithData","basePipeline","queryPipelines","sqlPipelines","sqlPipelinesFailedBatches","sqlPipelinesLastBatch","pipelinesData","sortBy","createPipelinesAction","logMsgCreator","focusTab","logInfo","getDataTypesForCategory","pickBy","uniq","getSchemaEntityID","compareSchemaEntities","schemaSort","schemaRestore","clearTableLikeSample","clearShowCreateTableLikeSqlAction","sortEvents","sortPipelines","expandDatabase","collapseDatabase","expandTable","collapseTable","schemaTreeChangeSearch","abbreviateNodeRole","bar","selectEventsLoading","selectEventsError","selectEventsSort","selectEventsLastUpdate","selectEvents","selectSortedEvents","EVENT_COLUMNS","selectFunctions","functions","selectSchemaTree","schemaTree","expandedDatabases","expandedTables","searchQuery","searchEscaped","searchRegex","getTableColumns","needsMatch","getDatabaseTables","fullyExpanded","databaseTables","tableMatches","expanded","getDatabaseFunctions","functionLike","databasesToReturn","databaseMatches","selectMemsqlOnline","systemStatus","memsqlConnection","proxyConnection","DEFAULT_HEIGHT","activeTab","everOpened","openToDefaultHeightIfClosed","bottomPanelReducer","EXTERNAL_LINKS","training","troubleshooting","documentation","licensing","firefox","upgradeClusterLink","ErrorBoundary","componentDidCatch","errorsToCatch","componentStack","generalErrorProps","paragraphVariants","paragraphVariantPropKeys","paragraph","Paragraph","Checkbox","CLUSTER_PROFILE_COLORS","PRODUCTION","STAGING","DEVELOPMENT","CLUSTER_PROFILE_ICONS","ClusterProfileIcon","tooltipText","NODE_BADGE_ABBREVIATED","LEAF","AGGREGATOR","MASTER_AGGREGATOR","NODE_BADGE_CLASS","NodeBadge","classname","HOSTS_ADDRESS_COLUMN","HOSTS_NODES_COLUMN","leavesNode","childAggsNode","masterAggsNode","numLeaves","numChildAggs","numMasterAggs","maxNode","HOSTS_CPU_COUNT_COLUMN","cpuCount","HOSTS_CPU_USAGE_COLUMN","HOSTS_MEMORY_COLUMN","HOSTS_MEMORY_USAGE_COLUMN","HOST_DISK_USAGE_TIP","HOSTS_DISK_USAGE_COLUMN","getHostsColumns","SECOND_IN_NANOSECONDS","buildHostsPayload","rawHosts","rawHost","systemMemoryMib","fetchHostsData","queryHosts","HOSTS_LIVE_MONITORING_SAGA_ID","hostsLiveMonitoringStart","sqlHostsLiveCPU","sqlHostsLiveMemory","sqlHostsLiveNetworkCumulative","sqlHostsLiveDisk","sqlNodesLiveDiskCumulative","sqlHostsLiveCPURow","previousSqlHostsLiveCPURow","hostIpAddress","totalUsedCumulativeNs","sqlHostsLiveMemoryRow","hostTotalMemoryB","hostUsedMemoryB","currentNetworkRow","previousNetworkRow","interfaceName","receivedCumulativeB","transmittedCumulativeB","receivedRate","transmittedRate","currentNetReceivedRate","currentNetTransmittedRate","hostDiskInfo","currentDiskCumulativeRow","previousDiskCumulativeRow","readCumulativeB","writeCumulativeB","readRate","writeRate","currentDiskReadRate","currentDiskWriteRate","buildHostsLiveMonitoringAction","hostsLiveMonitoringStop","isPhysicalMonitoringEnabled","deferred","SQL_SET_SELECT_LIMIT","staticConnectionFactory","handleMessage","queryQueue","queryErrored","currentQueryGroupDefer","runNextQuery","connectStaticConnection","reconnect","currentPerQueryRowLimit","previousConnectError","currentSilencedQuery","currentMeta","silencedQuery","isInitializingQueryExecutorContext","currentRowLimitDefer","resetInternalState","defaultPerQueryRowLimit","reconnectingClusteriId","isClusterReconnectingStillSame","tryConnect","staticConnection","reconnectTimeoutId","runInitialQueryGroup","resetOldConnection","equalsConnectionFactory","changeConnectionTarget","initialQueryGroup","querySetRowLimit","queryUseDatabase","setRowLimit","initConnectionState$","initConnectionClusterId$","initQueryGroupContext","previousContext","resetQueryGroupContext","group","runAsyncQueryGroup","skipErrors","createSelectDatabaseQueryGroupRepr","internal","createPerQueryRowLimitSelectQueryGroupRepr","classof","aFunction","it","shared","uid","NATIVE_SYMBOL","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","fails","Types","typeToString","parseLengthCodedString","parseLengthCodedBuffer","geometry","parseGeometryValue","Crypto","Auth","createHash","authMethodName","statusText","atob","scramble","stage1","stage2","hashPassword","nr","nr2","xor32","add32","mul32","and32","shl32","int31Write","randomInit","seed1","seed2","max_value","max_value_dbl","myRnd","scramble323","hashPass","hashMessage","int32Read","_finalized","throwIfNotStringOrBuffer","ReadableState","EElistenerCount","debugUtil","debuglog","createReadableStreamAsyncIterator","BufferList","getHighWaterMark","_require$codes","ERR_INVALID_ARG_TYPE","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","errorOrDestroy","kProxyEvents","readableObjectMode","pipes","pipesCount","flowing","reading","needReadable","emittedReadable","readableListening","resumeScheduled","paused","emitClose","autoDestroy","awaitDrain","readingMore","decoder","readableAddChunk","addToFront","skipChunkCheck","emitReadable","emitReadable_","onEofChunk","chunkInvalid","maybeReadMore","isPaused","setEncoding","MAX_HWM","howMuchToRead","computeNewHighWaterMark","flow","maybeReadMore_","updateReadableListening","nReadingNextTick","resume_","fromList","consume","endReadable","endReadableNT","wState","xs","nOrig","doRead","pipeOpts","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","cleanedUp","pipeOnDrain","dests","ev","asyncIterator","_fromList","emitErrorAndCloseNT","emitErrorNT","emitCloseNT","readableDestroyed","writableDestroyed","rState","ERR_INVALID_OPT_VALUE","duplexKey","highWaterMarkFrom","ERR_MULTIPLE_CALLBACK","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","_transformState","transforming","writechunk","rs","needTransform","writeencoding","W","Sha256","_w","maj","sigma0","sigma1","gamma0","_f","_g","_h","T1","T2","Sha512","Ch","xl","Gamma0","Gamma0l","Gamma1","Gamma1l","getCarry","_ah","_bh","_ch","_dh","_eh","_fh","_gh","_hh","_al","_bl","_cl","_dl","_el","_fl","_gl","_hl","fh","gh","hh","fl","gl","xh","gamma0l","gamma1","gamma1l","Wi7h","Wi7l","Wi16h","Wi16l","Wil","Wih","majh","majl","sigma0h","sigma0l","sigma1h","sigma1l","Kih","Kil","chh","chl","t1l","t1h","t2l","t2h","writeInt64BE","readableHwm","readableHighWaterMark","needMoreData","hasStrings","tail","copyFromBufferString","copyFromBuffer","fromListPartial","increasedAwaitDrain","Legacy","md5","ZEROS","Hmac","blocksize","_alg","ipad","_ipad","opad","_opad","pbkdf2","MAX_ALLOC","checkParameters","sizes","rmd160","saltLen","shaFunc","rmd160Func","getDigest","ipad1","ipad2","DK","block1","destPos","hLen","U","ip","inL","inR","outL","outR","rip","pc1","r28shl","pc2table","pc2","expand","sTable","substitute","permuteTable","padSplit","DESState","DES","_desState","deriveKeys","shiftTable","kL","kR","inp","inOff","outOff","_encrypt","_decrypt","lStart","rStart","keyL","keyR","incr32","getBlock","_cipher","_prev","encrypt","chunkNum","_cache","aes","GHASH","StreamCipher","ck","_ghash","_finID","ghash","toPad","ivBits","calcIv","_secCache","_alen","_mode","_authTag","_called","rump","xorTest","findPrime","simpleSieve","fermatTest","TWENTYFOUR","millerRabin","TWO","FIVE","TEN","THREE","ELEVEN","FOUR","_getPrimes","gen","n2","bn","brorand","MillerRabin","_randbelow","min_bytes","_randrange","rone","rn1","getDivisor","ch32","maj32","p32","ft_1","s0_256","s1_256","g0_256","g1_256","shaCommon","sha256_K","SHA256","sha512_K","SHA512","ch64_hi","yh","yl","zh","ch64_lo","maj64_hi","maj64_lo","s0_512_hi","s0_512_lo","s1_512_hi","s1_512_lo","g0_512_hi","g0_512_lo","g1_512_hi","g1_512_lo","_prepareBlock","c0_hi","c0_lo","c1_hi","c1_lo","c2_hi","c2_lo","c3_hi","c3_lo","c4_hi","c4_lo","T1_hi","T1_lo","T2_hi","T2_lo","bignum","define","decoders","encoders","der","pem","DEREncoder","DERNode","encodedTag","encodeTag","lenOctets","unused","ident","objid","numArray","_getEncoder","dataBuffer","defaultBuffer","DERDecoder","derDecodeTag","oct","tagStr","derDecodeLen","decodedTag","_skipUntilEnd","possibleEnd","numstr","printstr","identifiers","subident","mon","hour","sec","_getDecoder","i2ops","seed","paddedMsg","Pool","poolConfig","queueLimit","acquireTimeout","connectionLimit","waitForConnections","_acquiringConnections","_allConnections","_freeConnections","_connectionQueue","_closed","spliceConnection","doesConnectionLimitHasSlots","poolConnectionConfig","conn2","conn1","acquireConnection","_purgeConnection","_enqueueCallback","_pool","releaseConnection","nextConnection","calledBack","waitingClose","onEnd","domain","_removeConnection","_quitSequence","_realEnd","records","stringifier","Stringifier","record","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","arrayLikeToArray","minLen","dataArr","toCamelCase","addPxToStyle","camel","cssProp","detect","cssText","dirtyISOYear","MINUTES_IN_MONTH","localizeOptions","months","includeSeconds","monthsSinceStartOfYear","years","cleanDate","dateLeftStartOfHour","dateRightStartOfHour","dateLeftStartOfYear","dateRightStartOfYear","dateLeftStartOfMinute","dateRightStartOfMinute","dateLeftStartOfQuarter","dateRightStartOfQuarter","currentMonth","dateLeftStartOfSecond","dateRightStartOfSecond","dirtyMonth","chars","howmany","decap","decapitalize","qty","not_string","not_bool","not_type","not_primitive","numeric_arg","not_json","placeholder","key_access","index_access","sprintf","sprintf_format","sprintf_parse","vsprintf","fmt","parse_tree","pad_character","pad_length","is_positive","tree_length","param_no","pad_char","align","sprintf_cache","_fmt","arg_names","SyntaxError","field_list","replacement_field","field_match","rtrim","lastSeparator","serial","lastMember","wrapper","eventTime","eventSeverity","eventType","eventDetails","IconTipBase","memoizeCapped","rePropName","reEscapeChar","subString","funcToString","baseToString","SetCache","arraySome","cacheHas","equalFunc","isPartial","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othIndex","baseTimes","isIndex","isArr","isArg","isBuff","isType","skipIndexes","SQL_ACTIVE_PROCESSES_ENABLED","isActiveProcessesEnabled","SQL_ACTIVE_PROCESSES","queryActiveProcesses","processes","processId","elapsedTime","submitted","nodeHost","nodePort","killQuery","getEventSeverity","queryEvents","SQL_EVENTS_QUERY","rawEvents","rawEvent","createEventsAction","TIME_FORMATS","LABELS_FOR_POWERS_OF_KILO","exists","maybe","isFiniteNumber","Humanize","intword","charWidth","decimals","signString","unsignedNumber","unsignedNumberString","numberLength","numberLengths","bigNumPrefixes","decimalIndex","unsignedNumberCharacterArray","wholePartArray","decimalPartArray","wholePart","decimalPart","outputNumber","intComma","intcomma","fileSize","filesize","minnum","pluralize","thousand","firstComma","_number","_thousand","_position","commas","_decimal","usePrecision","normalizePrecision","overrides","smallTimes","numberString","singular","truncateWords","truncatewords","boundedNumber","bound","truncatenumber","oxford","limitStr","numItems","limitIndex","dictionary","joiner","defs","frequency","verb","pace","intervalMs","timeUnit","relativePace","rate","roundedPace","nl2br","br2nl","downCaseTail","capitalizeAll","titleCase","smallWords","internalCaps","splitOnWhiteSpaceRegex","splitOnHyphensRegex","_doTitleCase","_string","hyphenated","firstOrLast","titleCasedArray","stringArray","titlecase","Collapse","_createClass","_react2","_interopRequireDefault","_propTypes2","_reactMotion","WAITING","RESIZING","RESTING","IDLING","_React$PureComponent","_initialiseProps","_props","isOpened","forceInitialAnimation","onRest","getTo","clientHeight","hasNestedCollapse","_props2","onMeasure","clientWidth","Motion","getMotionProps","renderContent","springConfig","objectOf","fixedHeight","onRender","collapse","onContentRef","onWrapperRef","setResting","getWrapperStyle","overflow","defaultStyle","spring","_props3","_objectWithoutProperties","noWobble","stiffness","damping","gentle","wobbly","stiff","FormSection","_Component","RadioButton","cardDisplay","labelNode","labelClasses","checkmark","cardClassName","centerCard","descriptionNode","radioInput","htmlFor","baseFor","createBaseFor","getPrototype","overArg","baseKeysIn","srcValue","castPath","isKey","handleErrors","rejected","isEvent","getError","plain","asyncValidate","onSubmitFail","onSubmitSuccess","asyncErrors","doSubmit","submitError","submitResult","asyncValidateResult","submitErrors","getErrorKeys","getFormState","ignoreSubmitErrors","nonNullGetFormState","formState","registeredFields","formActions","arrayActions","propsToNotUpdateFor","checkSubmit","initialConfig","touchOnBlur","touchOnChange","shouldAsyncValidate","defaultShouldAsyncValidate","shouldValidate","defaultShouldValidate","shouldError","defaultShouldError","shouldWarn","defaultShouldWarn","enableReinitialize","keepDirtyOnReinitialize","updateUnregisteredFields","forceUnregisterOnUnmount","createRef","fieldCounts","fieldValidators","fieldWarners","lastFieldWarnerKeys","innerOnSubmit","submitPromise","getValues","isPristine","getValidator","getWarner","nextCount","unregister","lastCount","_destroyOnUnmount","getFieldList","keySeq","excludeFieldArray","getValidators","validator","generateValidator","getWarners","warners","warner","generateWarner","fieldNeedsValidationForBlur","fieldNeedsValidationForChange","asyncBlurFields","asyncChangeFields","submitting","valuesToValidate","blurredField","submitCompleted","submitFailed","listenToSubmit","submitOrEvent","_this$props3","validExceptSubmit","initIfNeeded","initialValues","_keepDirty","keepValues","lastInitialValues","updateSyncErrorsIfNeeded","nextSyncErrors","nextError","lastSyncErrors","_this$props4","noErrors","nextNoErrors","clearSubmitPromiseIfNeeded","submitIfNeeded","_this$props5","triggerSubmit","shouldErrorFunction","_this$props6","shouldValidateOverridden","shouldErrorOverridden","validateIfNeeded","_this$props7","fieldLevelValidate","propsToValidate","_merge2","updateSyncWarningsIfNeeded","nextSyncWarnings","nextWarning","lastSyncWarnings","_this$props8","noWarnings","nextNoWarnings","shouldWarnFunction","_this$props9","shouldWarnOverridden","warnIfNeeded","_this$props10","fieldLevelWarn","fieldWarnerKeys","propsToWarn","_merge3","isHotReloading","onChange","_config$immutableProp","immutableProps","_this$props11","_this$props12","anyTouched","asyncValidating","dirty","invalid","propNamespace","submitSucceeded","reduxFormProps","propsToPass","registerInnerOnSubmit","arrayOf","oneOfType","connector","stateInitial","shouldUpdateInitialValues","shouldResetValues","initialProps","bindForm","boundFormACs","boundArrayACs","boundFocus","connectedFormACs","connectedArrayACs","insert","removeAll","computedActions","ConnectedForm","ReduxForm","_React$Component2","_this4","_proto2","_this$props13","WithContext","_value","asyncError","onBlur","onDrop","onDragStart","onFocus","syncError","syncWarning","custom","formattedFieldValue","defaultFormattedValue","formatFieldValue","autofilled","touched","visited","isReactNative","nativeEvent","detypedEvent","_detypedEvent$target","files","dataTransfer","option","getSelectedValues","product","dataKey","eventPreventDefault","eventDataTransferGetData","getData","eventDataTransferSetData","setData","ConnectedField","handleFocus","handleBlur","handleDragStart","handleDrop","nextPropsKeys","thisPropsKeys","getRenderedComponent","_createFieldProps","validateComponentProp","_ownProps$_reduxForm","getSyncError","getSyncWarning","objectValue","otherValue","indexOrkey","propsEqual","stateEqual","previousValues","oldName","prefixName","newName","yearDiff","monthDiff","isLastMonthNotFull","MINUTES_IN_DAY","dirtyBaseDate","cloneObject","offsetInSeconds","nearestMonth","reduceElementsState","elements","handleClickClose","hideToast","TOAST_Z_INDEX","toast","getToastStyle","TOAST_HEIGHT","opacity","transitionDuration","transitionTimingFunction","renderToast","ToastContext","reduceToastState","toasts","showTimeoutIds","hideTimeoutIds","removeTimeoutIds","toastCounter","addToast","timeoutID","showToast","delay","removeToast","onHide","toastOptions","renderedToasts","shouldDeleteDefault","shouldDelete","deleteInWithCleanUp","pathTokens","dotIndex","parentPath","_parent","initialValuesPath","initialValueComparison","_behaviors","plainDeleteInWithCleanUp","doSplice","force","doPlainSplice","rootKeys","nonValuesValue","behaviors","_ref2$meta","_ref3$meta","_ref4","_ref5","_ref6","_ref6$meta","_ref7","_ref8","_ref9","_ref9$meta","_ref10","_ref10$meta","valueA","valueB","_ref11","_ref12","_ref13","_ref13$meta","_ref14","_ref14$meta","fieldCurrentValue","_ref15","_ref16","_ref16$meta","_ref17","previouslyActive","_ref18","_ref18$meta","keepSubmitSucceeded","mapData","previousInitialValues","newInitialValues","newValues","overwritePristineValue","previousInitialValue","newInitialValue","_ref19","_ref19$payload","_ref20","section","_ref21","_ref22","fieldErrors","_ref23","_ref24","_ref25","_ref26","_ref26$payload","_ref27","_ref28","_ref28$payload","_ref29","_ref29$payload","decorate","plugin","callPlugin","processed","receiveAllFormActions","byForm","behavior","dirtyObject","accumulator","isNativeFunction","construct","_wrapNativeSuper","Class","Wrapper","_hasWeakSet","WeakSet","_inner","delete","TRACEPARENT_REGEXP","Span","_traceId","_spanId","_sampled","setSampled","sampled","fromTraceparent","traceparent","parent_1","toTraceparent","span_id","trace_id","Sequences","Timers","PacketWriter","Protocol","_config","_fatalError","_handshakeSequence","_handshaked","_destroyed","_queue","_handshakeInitializationPacket","_parser","Parser","handleParserError","onPacket","_parsePacket","Handshake","changeUser","ChangeUser","Ping","Statistics","Quit","_delegateError","seq","_validateEnqueue","_emitPacket","_dequeue","_tlsUpgradeCompleteHandler","resetPacketNumber","_startSequence","prefixBefore","prefixAfter","Packet","_determinePacket","protocol41","packetName","_debugPacket","_parsePacketDebug","packetWriter","peak","_shouldErrorBubbleUp","_hasPendingErrorHandlers","incoming","headline","punycode","Url","slashes","urlParse","resolveObject","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","hostlessProtocol","slashedProtocol","parseQueryString","slashesDenoteHost","queryIndex","splitter","uSplit","simplePath","lowerProto","atSign","hostEnd","hec","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","toASCII","ae","esc","qm","tkeys","tk","tkey","rkeys","rk","rkey","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","authInHost","hasTrailingSlash","up","isAbsolute","descriptors","formatRegExp","objects","noDeprecation","throwDeprecation","traceDeprecation","debugEnviron","debugs","stylize","stylizeNoColor","colors","showHidden","_extend","customInspect","stylizeWithColor","formatValue","recurseTimes","simple","formatPrimitive","visibleKeys","arrayToHash","formatError","braces","toUTCString","formatProperty","formatArray","cur","numLinesEst","reduceToSingleString","desc","NODE_DEBUG","pid","origin","kCustomPromisifiedSymbol","callbackifyOnRejected","newReason","promisify","promiseResolve","promiseReject","callbackify","callbackified","maybeCb","rej","PoolConnection","_removeFromPool","emptyScheduled","autoBom","responseType","MouseEvent","createEvent","initMouseEvent","saveAs","HTMLAnchorElement","URL","webkitURL","download","createObjectURL","revokeObjectURL","msSaveOrOpenBlob","innerText","safari","FileReader","onloadend","readAsDataURL","Scrollbars","_Scrollbars","_Scrollbars2","MapShim","getIndex","anonymous","__entries__","prototypeAccessors","isBrowser","global$1","requestAnimationFrame$1","transitionKeys","mutationObserverSupported","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","refresh","leadingCall","trailingCall","lastCallTime","resolvePending","timeoutCallback","timeStamp","throttle","addObserver","connect_","removeObserver","observers","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","attributes","childList","subtree","disconnect","propertyName","getInstance","instance_","defineConfigurable","getWindowOf","ownerDocument","defaultView","emptyRect","createRectInit","toFloat","getBordersSize","positions","getHTMLElementContentRect","getComputedStyle","paddings","getPaddings","horizPad","vertPad","boxSizing","documentElement","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","SVGGraphicsElement","SVGElement","getBBox","getContentRect","bbox","getSVGContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","rect","broadcastRect","ResizeObserverEntry","rectInit","Constr","DOMRectReadOnly","ResizeObserverSPI","controller","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","Element","observations","clearActive","this$1","observation","WeakMap","ResizeObserver","symbolObservablePonyfill","_wrapped","fn2method","VERSION","isBlank","stripTags","chop","clean","cleanDiacritics","swapCase","escapeHTML","unescapeHTML","replaceAll","include","dedent","succ","camelize","underscored","dasherize","classify","humanize","ltrim","prune","lpad","rpad","lrpad","numberFormat","strRight","strRightBack","strLeft","strLeftBack","toSentence","toSentenceSerial","slugify","surround","unquote","naturalCmp","levenshtein","toBoolean","lstrip","rstrip","rjust","ljust","toBool","camelcase","mapChars","prototype2method","prototypeMethods","composeWithDevTools","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","devToolsEnhancer","__REDUX_DEVTOOLS_EXTENSION__","strictUriEncode","objectAssign","decodeComponent","strict","keysSorter","parserForArrayFormat","encoderForArrayFormat","val2","Worker","App","ReduxProvider","ToastProvider","FeedbackModalProvider","RouterController","UnmountClosed","getErrorMessage","SAMLAssert","samlLoginAssertion","SAML_LOGIN_ASSERTION","samlLoginClusterId","SAML_LOGIN_CLUSTER_ID","samlLoginUser","SAML_LOGIN_USER","initialError","Section","sectionError","sectionErrorIcon","fieldValues","handleToggle","renderFieldValues","getFieldValues","CollapsableForm","handleSectionChange","activeSection","canSubmit","formSections","sectionConfig","renderFields","TextInput","FormElement","inputEl","messageEl","metaBools","fixedInput","restInput","CustomInput","FormSelect","ADD_NEW_CLUSTER_FORM_NAME","formValueSelector","errorSelector","getFormSyncErrors","metaSelector","getFormMeta","validatePortField","validateClusterNameField","validateClusterDescriptionField","trackAddNewClusterBlur","_event","_newValue","renderFieldValue","setFieldError","handleFormConnectErrors","locate","credentials","clusterName","autoFocus","fieldMetas","profileValue","reduxForm","validateForm","newClusterRequestObj","AddNewClusterForm","syncErrorsSelector","submitErrorsSelector","getFormError","submittingSelector","isSubmitting","AddNewClusterPage","$fullscreen","shouldScrollTop","handleCancel","onCancel","formErrors","FullScreen","ConnectToClusterForm","managedService","passwordField","submitLabel","usernameLabel","formContentClasses","DeleteClusterForm","clusterProfile","_values","agreement","CLUSTERS_LIST_ITEM_CLASS","BaseClustersListItem","handleKeyPress","currentTarget","charCode","Key","ENTER","handleClickBackToClustersList","ROOT_REDIRECT","handleClickDeleteCluster","openDeleteClusterModal","handleClick","allowClusterMutations","onKeyPress","ClustersListItem","BaseClustersList","handleClickCluster","handleOpenFeedbackModal","handleOpenDeleteClusterModal","currentDeleteClusterId","handleCloseDeleteClusterModal","renderAddCreateButton","routerInfo","errorMsg","disableAddNewClusterUI","currentCluster","addNewClusterButton","ClustersList","ConnectToClusterPage","renderErrorMsg","ConnectWrapper","logoWrapper","logo","BANNER_LOGO","alt","ConnectController","triedAutoConnection","handleConnect","redirect","setClusterHostname","setClusterPort","redirectInfo","handleAddClusterCancel","clusterConfig","autoLogin","testRoute","ConnectToCluster","ClusterController","CreateCluster","webPingIntervalId","Suspense","mergeMap","resultSelector","ii","MergeMapOperator","MergeMapSubscriber","hasCompleted","_tryNext","_innerSub","ish","entryUnbind","$","flattenIntoArray","toObject","toLength","arraySpeciesCreate","callbackfn","sourceLen","targetIndex","sourceIndex","mapFn","SPECIES","wellKnownSymbol","originalArray","sham","addToUnscopables","definePropertyModule","UNSCOPABLES","ArrayPrototype","activeXDocument","anObject","enumBugKeys","hiddenKeys","html","documentCreateElement","sharedKey","PROTOTYPE","SCRIPT","IE_PROTO","EmptyConstructor","scriptTag","LT","NullProtoObject","ActiveXObject","iframeDocument","iframe","JS","parentWindow","NullProtoObjectViaActiveX","F","Properties","DESCRIPTORS","getBuiltIn","CONSTRUCTOR","METHOD","isNativeReflectConstruct","_construct","Parent","ID_GLOBAL_REGEXP","QUAL_GLOBAL_REGEXP","CHARS_GLOBAL_REGEXP","CHARS_ESCAPE_MAP","escapeString","chunkIndex","lastIndex","escapedVal","zeroPad","forbidQualified","timeZone","dateToString","arrayToList","bufferToString","toSqlString","objectToValues","placeholdersRegex","valuesIndex","minute","millisecond","dt","tz","convertTimezone","setTime","b64","lens","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","maxChunkLength","len2","encodeChunk","lookup","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","rt","LN2","b64DecodeUnicode","InvalidCharacterError","bs","bc","MUL_32BIT","PacketHeader","_supportBigNumbers","_nextBuffers","_longPacketBuffers","_offset","_packetEnd","_packetHeader","_packetOffset","_onError","_onPacket","_nextPacketNumber","_paused","_combineNextBuffers","parseUnsignedNumber","incrementPacketNumber","MAX_PACKET_LENGTH","_advanceToNextPacket","_combineLongPacketBuffers","hadException","append","sliceEnd","sliceStart","sliceLength","chunks","parseLengthCodedNumber","parseString","parseBuffer","low","high","parseFiller","parseNullTerminatedBuffer","_nullByteOffset","parseNullTerminatedString","parsePacketTerminatedBuffer","parsePacketTerminatedString","parseGeometry","byteOrder","wkbType","numPoints","numRings","reachedPacketEnd","currentPacketNumber","buffers","remainingBytes","trailingPacketBytes","bufs","_password","_database","_charsetNumber","_currentConfig","currentConfig","handshakeInitializationPacket","scrambleBuff","authMethodData","writer","writeUnsignedNumber","writeNullTerminatedString","writeBuffer","filler","writeFiller","writeLengthCodedBuffer","command","writeString","warningCount","sqlStateMarker","catalog","orgTable","orgName","charsetNr","zeroFill","writeLengthCodedString","writeLengthCodedNumber","Client","protocolVersion","serverVersion","scrambleBuff1","filler1","serverCapabilities1","serverLanguage","serverCapabilities2","scrambleLength","filler2","scrambleBuff2","filler3","pluginData","writeNullTerminatedBuffer","Charsets","IEEE_754_BINARY_64_PRECISION","_typeCast","fieldPacket","typeMatch","originalString","let_STRING","ClientConstants","rng","pseudoRandomBytes","prng","createHmac","algos","algoKeys","hashes","getHashes","DiffieHellmanGroup","createDiffieHellmanGroup","getDiffieHellman","createDiffieHellman","DiffieHellman","createSign","Sign","createVerify","Verify","createECDH","publicEncrypt","privateEncrypt","publicDecrypt","privateDecrypt","rf","randomFill","randomFillSync","createCredentials","symbols","_getString","_getBuffer","_objectSpread","_Object$setPrototypeO","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","iter","onReadable","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","lastPromise","wrapForNext","_Object$create","ERR_MISSING_ARGS","destroyer","popCallback","streams","destroys","Sha","rotl30","ft","Sha1","rotl5","Sha224","Sha384","registerImmediate","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","attachTo","runIfPresent","postMessageIsAsynchronous","oldOnMessage","canUsePostMessage","attachEvent","ZERO_BUF","subtle","toBrowser","checks","getNextTick","queueMicrotask","browserPbkdf2","importKey","deriveBits","resolvePromise","prom","checkNative","resp","aesModes","desModes","ebtk","suite","des","instantiate","EDE","modeName","_des","des3","CBCState","_cbcInit","_cbcState","superProto","EDEState","k3","_edeState","MODES","AuthCipher","Splitter","_autopadding","PADDING","setTo","padBuff","encryptStart","encryptByte","byteParam","shiftIn","ZEROES","_multiply","lsbVi","Vi","Zi","abl","_last","padded","unpad","autoPadding","DH","ENCODINGS","generator","genc","generatePrime","SEVEN","setPublicKey","pub","_pub","setPrivateKey","_priv","primeCache","malleable","setGenerator","__prime","_primeLen","_primeCode","formatReturnValue","hex","checkPrime","__gen","generateKeys","_gen","getPublicKey","computeSecret","secret","getPrime","front","getPrivateKey","getGenerator","verify","algorithms","_hashType","_tag","_signType","sig","EC","getKey","hlen","hbits","bits2int","bits2octets","obits","makeKey","kv","makeR","hashType","signType","curveId","keyFromPrivate","toDER","ecSign","dsaSign","ShortCurve","tinv","zeroA","threeA","endo","_getEndomorphism","_endoWnafT1","_endoWnafT2","Point","isRed","inf","JPoint","zOne","betas","_getEndoRoots","lambdas","vec","_getEndoBasis","ntinv","prevR","aprxSqrt","len1","_endoSplit","q1","q2","ax","rhs","_endoWnafMulAdd","npoints","ncoeffs","fromJSON","endoMul","obj2point","nx","ny","ys1","dyinv","mulAdd","jmulAdd","_precompute","zinv","zinv2","ay","pz2","z2","h2","h3","nz","jx","jy","jz","jz4","jyd","jx2","jyd2","jyd4","dny","_zeroDbl","_threeDbl","_dbl","xx","yy","yyyy","yyyy8","c8","gamma","alpha","beta4","beta8","ggamma8","jy2","jxd4","jyd8","trpl","zz","mm","yyu4","kbase","z3","pz3","eqXToP","MontCurve","i4","a24","aa","bb","diffAdd","da","jumlAdd","EdwardsCurve","twisted","mOneA","dd","oneC","_mulA","_mulC","lhs","pointFromY","_extDbl","nt","_projDbl","_extAdd","_projAdd","zi","sha1_K","SHA1","SHA224","SHA384","Kh","Ah","Bh","Dh","Eh","rh","sh","outer","HmacDRBG","KeyPair","Signature","nh","keyPair","fromPrivate","keyFromPublic","fromPublic","genKeyPair","drbg","pers","persEnc","entropy","entropyEnc","nonce","ns2","_truncateToN","truncOnly","bkey","getPrivate","ns1","kp","kpX","recoveryParam","canonical","sinv","getPublic","recoverPubKey","isYOdd","isSecondKey","rInv","getKeyRecoveryParam","Qprime","predResist","minEntropy","_reseed","reseedInterval","V","nonceEnc","_hmac","kmac","reseed","addEnc","_importPrivate","privEnc","_importPublic","pubEnc","derive","_importDER","Position","place","getLength","octetLen","rmPadding","constructLength","octets","slen","backHalf","EDDSA","pointClass","encodingLength","keyFromSecret","hashInt","Rencoded","encodePoint","s_","pubBytes","makeSignature","SG","fromSecret","lastIx","normed","xIsOdd","encodeInt","decodeInt","isPoint","_secret","_pubBytes","privBytes","getSecret","_R","_S","_Rencoded","_Sencoded","Sencoded","toBytes","AlgorithmIdentifier","bitstr","null_","PrivateKeyInfo","octstr","EncryptedPrivateKeyInfo","ECParameters","namedCurve","Entity","_createNamed","Generated","_initNamed","PEMEncoder","PEMDecoder","_reverse","asn","Time","utcTime","utctime","generalTime","gentime","AttributeTypeValue","SubjectPublicKeyInfo","RelativeDistinguishedName","setof","RDNSequence","seqof","Name","rdnSequence","Validity","Extension","TBSCertificate","X509Certificate","findProc","startRegex","fullRegex","evp","okey","decrypted","cipherKey","match2","checkValue","pubkey","ecVerify","unpacked","montp","dsaVerify","padNum","ECDH","aliases","secp256k1","secp224r1","prime256v1","prime192v1","ed25519","secp384r1","secp521r1","curveType","p256","secp256r1","secp192r1","p384","p521","inenc","mgf","withPublic","publicKey","iHash","hLen2","ps","dblen","maskedDb","maskedSeed","oaep","nonZero","pkcs1","zBuffer","dif","oldBrowser","safeBuffer","randombytes","kBufferMaxLength","kMaxUint32","assertOffset","actualFill","ourBuf","uint","dataRes","_sendCredentials","SERVER_STATUS_IN_TRANS","SERVER_STATUS_AUTOCOMMIT","SERVER_QUERY_NO_GOOD_INDEX_USED","SERVER_QUERY_NO_INDEX_USED","SERVER_STATUS_CURSOR_EXISTS","SERVER_STATUS_LAST_ROW_SENT","SERVER_STATUS_DB_DROPPED","SERVER_STATUS_NO_BACKSLASH_ESCAPES","SERVER_STATUS_METADATA_CHANGED","SERVER_QUERY_WAS_SLOW","SERVER_PS_OUT_PARAMS","BIT_16","BIT_24","BUFFER_ALLOC_SIZE","packets","packetNumber","_allocate","newSize","oldBuffer","maxInt","regexPunycode","regexNonASCII","regexSeparators","stringFromCharCode","mapDomain","ucs2decode","ucs2encode","digitToBasic","digit","adapt","firstTime","baseMinusTMin","basic","oldi","baseMinusT","inputLength","bias","handledCPCount","basicLength","handledCPCountPlusOne","qMinusT","qs","sep","regexp","maxKeys","kstr","vstr","stringifyPrimitive","ks","TextEncoder","responseText","_slicedToArray","_arrayWithHoles","_n","_s","_iterableToArrayLimit","_nonIterableRest","bom_utf8","_Transform","opt","underscore","record_delimiter","bom","CsvError","quoted","quoted_empty","quoted_match","quoted_string","eof","normalize_columns","chunkIsHeader","_this$options","_this$__cast","__cast","_this$__cast2","_i2","_field","_this$__cast3","_this$__cast4","_err","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","_field2","_this$__cast5","_this$__cast6","_err2","_value2","csvrecord","_loop","_i3","_record$_i","containsdelimiter","containsQuote","containsEscape","containsRecordDelimiter","quotedString","quotedMatch","shouldQuote","_regexp","_ret","_newcolumns","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","newcolumns","_i4","_iteratorNormalCompletion4","_didIteratorError4","_iteratorError4","_step4","_iterator4","_iteratorNormalCompletion5","_didIteratorError5","_iteratorError5","_step5","_iterator5","_Error","_i5","_contexts","charCodeOfDot","getTag","expression","INFINITY","_raf2","_raf3","_domCss2","_react","_isString2","_getScrollbarWidth2","_returnFalse2","_getInnerWidth2","_getInnerHeight2","_styles","_defaultRenderElements","getScrollLeft","getScrollTop","getScrollWidth","getScrollHeight","getClientWidth","getClientHeight","getThumbHorizontalWidth","getThumbVerticalHeight","getScrollLeftForOffset","getScrollTopForOffset","scrollLeft","scrollToLeft","scrollToRight","scrollToBottom","handleTrackMouseEnter","handleTrackMouseLeave","handleHorizontalTrackMouseDown","handleVerticalTrackMouseDown","handleHorizontalThumbMouseDown","handleVerticalThumbMouseDown","handleWindowResize","handleDrag","handleDragEnd","didMountUniversal","addListeners","componentDidMountUniversal","removeListeners","requestFrame","hideTracksTimeout","detectScrollingInterval","scrollWidth","scrollHeight","_ref2$scrollLeft","_ref2$scrollTop","_ref2$scrollWidth","_ref2$scrollHeight","_ref2$clientWidth","_ref2$clientHeight","thumbSize","thumbMinSize","_view","trackWidth","trackHorizontal","_view2","trackHeight","trackVertical","_view3","_view4","thumbHorizontal","thumbVertical","teardownDragging","onScroll","viewScrollLeft","viewScrollTop","detectScrolling","onScrollStart","handleScrollStartAutoHide","showTracks","onScrollStop","handleScrollStopAutoHide","hideTracks","targetLeft","thumbWidth","targetTop","thumbHeight","offsetWidth","prevPageX","offsetHeight","prevPageY","disableSelectStyle","onselectstart","disableSelectStyleReset","dragging","stopImmediatePropagation","setupDragging","handleDragEndAutoHide","trackMouseOver","handleTrackMouseEnterAutoHide","handleTrackMouseLeaveAutoHide","scrolling","autoHideTimeout","handleScrollStart","lastViewScrollLeft","lastViewScrollTop","handleScrollStop","_this5","_this6","_props4","onUpdate","hideTracksWhenNotNeeded","trackHorizontalWidth","thumbHorizontalWidth","thumbHorizontalStyle","trackVerticalHeight","thumbVerticalHeight","thumbVerticalStyle","trackHorizontalStyle","trackVerticalStyle","_this7","scrollbarWidth","_props5","autoHideDuration","containerStyle","containerStyleDefault","containerStyleAutoHeight","viewStyle","viewStyleDefault","marginRight","marginBottom","viewStyleAutoHeight","viewStyleUniversalInitial","trackAutoHeightStyle","trackHorizontalStyleDefault","trackVerticalStyleDefault","container","cloneElement","thumbHorizontalStyleDefault","thumbVerticalStyleDefault","renderViewDefault","moduleLoadTime","nodeLoadTime","upTime","uptime","prefixes","space","letter","hasSpace","hasSeparator","separatorSplitter","unseparate","hasCamel","camelSplitter","uppers","uncamelize","IS_UNITLESS","animationIterationCount","boxFlex","boxFlexGroup","boxOrdinalGroup","flex","flexPositive","flexNegative","flexOrder","gridRow","gridColumn","lineClamp","order","orphans","tabSize","widows","zoom","fillOpacity","strokeDashoffset","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propFullName","getShim","ReactPropTypes","symbol","elementType","instanceOf","exact","checkPropTypes","PropTypes","MsOverflowStyle","_domCss","_getComputedStyle","paddingLeft","paddingRight","paddingTop","paddingBottom","WebkitOverflowScrolling","userSelect","$$typeof","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Fragment","Lazy","Portal","Profiler","StrictMode","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","dirtyInitialRangeStartDate","dirtyInitialRangeEndDate","dirtyComparedRangeStartDate","dirtyComparedRangeEndDate","initialStartTime","initialEndTime","comparedStartTime","comparedEndTime","startOfISOWeekLeft","startOfISOWeekRight","startOfWeekLeft","startOfWeekRight","distanceInWordsLocale","buildFormattingTokensRegExp","months3char","monthsFull","weekdays2char","weekdays3char","weekdaysFull","meridiemUppercase","meridiemLowercase","meridiemFull","formatterToken","commonFormatterKeys","formatterKeys","formattingTokens","MINUTES_IN_YEAR","mathPartial","partialMethod","dirtyStartDate","dirtyEndDate","dirtyStep","endTime","dates","thisYear","differenceInMs","dirtyLeftDate","dirtyRightDate","dateLeftStartOfDay","dateRightStartOfDay","dirtyDates","latestTimestamp","earliestTimestamp","dirtyDayOfMonth","dayOfMonth","dirtyDay","currentDay","dirtyDayOfYear","dirtyHours","dirtyISOWeek","dirtyMilliseconds","dirtyMinutes","dirtyQuarter","dirtySeconds","dirtyYear","escapeChars","regexString","htmlEntities","entityCode","nbsp","cent","pound","yen","euro","reg","quot","amp","apos","ignorecase","needle","indent","getIndent","toPositive","starts","ends","adjacent","nativeTrimLeft","trimLeft","truncateStr","pruneStr","template","factor","dec","dsep","tsep","fnums","lastSep","quoteChar","str1","str2","cmpRegex","tokens1","tokens2","num1","num2","prevRow","nextCol","curCol","boolMatch","matchers","matcher","down","trueValues","falseValues","seperator","cut","preserveSpaces","trailingSpaces","current_column","nativeObjectToString","isOwn","unmasked","memoized","Cache","hashClear","hashDelete","hashGet","hashHas","hashSet","isMasked","toSource","reIsHostCtor","funcProto","reIsNative","coreJsData","maskSrcKey","assocIndexOf","getMapData","symbolProto","symbolToString","equalArrays","equalByTag","equalObjects","argsTag","arrayTag","objectTag","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","pairs","LARGE_ARRAY_SIZE","setCacheAdd","setCacheHas","mapToArray","setToArray","symbolValueOf","convert","stacked","getAllKeys","objProps","objLength","objStacked","skipCtor","objValue","objCtor","othCtor","baseGetAllKeys","getSymbols","keysFunc","symbolsFunc","arrayFilter","stubArray","nativeGetSymbols","resIndex","typedArrayTags","freeProcess","types","isPrototype","nativeKeys","DataView","Set","mapTag","promiseTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","ctorString","singleMatcher","multiMatcher","decodeComponents","tokens","encodedURI","replaceMap","customDecodeURIComponent","_interopRequire","_Motion","_StaggeredMotion","StaggeredMotion","_TransitionMotion","TransitionMotion","_spring","_presets","presets","_stripStyle","stripStyle","_reorderKeys","reorderKeys","_mapToZero2","_stripStyle2","_stepper4","_performanceNow2","_shouldStopAnimation2","msPerFrame","wasAnimating","animationID","prevTime","accumulatedTime","unreadPropStyle","clearUnreadPropStyle","destStyle","lastIdealStyle","lastIdealVelocity","startAnimationIfNecessary","propsStyle","currentTime","currentFrameCompletion","framesToCatchUp","newLastIdealStyle","newLastIdealVelocity","newCurrentStyle","newCurrentVelocity","newLastIdealStyleValue","newLastIdealVelocityValue","_stepper","_stepper2","nextIdealX","nextIdealV","defaultState","renderedChildren","Children","only","unreadPropStyles","currentStyles","currentVelocities","lastIdealStyles","lastIdealVelocities","someDirty","destStyles","shouldStopAnimationAll","newLastIdealStyles","newLastIdealVelocities","newCurrentStyles","newCurrentVelocities","defaultStyles","_mergeDiff2","rehydrateStyles","mergedPropsStyles","plainStyles","cUnreadPropStyles","mergedPropsStyle","mergeAndSync","willEnter","willLeave","didLeave","oldMergedPropsStyles","oldCurrentStyles","oldCurrentVelocities","oldLastIdealStyles","oldLastIdealVelocities","newMergedPropsStyles","oldIndex","oldMergedPropsStyle","leavingStyle","newMergedPropsStyleCell","foundOldIndex","plainStyle","velocity","unmounting","_mergeAndSync","propStyles","_mergeAndSync2","newMergedPropsStyle","styleThatEntered","defaultStyleCell","_mergeAndSync3","hydratedStyles","onRemove","prevKeyIndex","nextKeyIndex","nextOrderA","nextOrderB","prevOrderA","prevOrderB","pivot","defaultConfig","_presets2","_Collapse","shouldUnmount","assignMergeValue","baseMergeDeep","keysIn","safeGet","fromRight","cloneBuffer","cloneTypedArray","initCloneObject","isArrayLikeObject","toPlainObject","mergeFunc","isCommon","isTyped","isDeep","cloneArrayBuffer","typedArray","arrayBuffer","baseCreate","objectCreate","objectCtorString","copyObject","assignValue","isNew","nativeKeysIn","isProto","baseRest","isIterateeCall","assigner","sources","guard","overRest","setToString","nativeMax","otherArgs","baseSetToString","shortOut","nativeNow","lastCalled","stamp","baseMatches","baseMatchesProperty","baseIsMatch","getMatchData","matchesStrictComparable","matchData","noCustomizer","COMPARE_PARTIAL_FLAG","isStrictComparable","hasIn","baseGet","baseHasIn","hasPath","hasFunc","baseProperty","basePropertyDeep","AppContainer","areComponentsEqual","setConfig","cold","configureComponent","singlejsAnalyticsHandlers","QUERY_GROUP_START","isQueryInternal","QUERY_EXECUTOR_CANCEL","QUERY_GROUP_CONTINUE","QUERY_GROUP_STOP","QUERY_EDITOR_SORT","_action","SELECT_EXPLAIN_NODE","EXPLAIN_LAYOUT","CHANGE_EXPLAIN_TAB","EXPLAIN_SIDEBAR_CLICK","forkJoinInternal","completed","emitted","hasValue","FilterOperator","FilterSubscriber","distinctUntilChanged","keySelector","DistinctUntilChangedOperator","DistinctUntilChangedSubscriber","hasKey","EmptyError","EmptyErrorImpl","ArgumentOutOfRangeError","ArgumentOutOfRangeErrorImpl","TakeOperator","TakeSubscriber","defaultIfEmpty","DefaultIfEmptyOperator","DefaultIfEmptySubscriber","throwIfEmpty","errorFactory","defaultErrorFactory","ThrowIfEmptyOperator","ThrowIfEmptySubscriber","hasDefaultValue","ALL_DOTS","state$","didChangeRoute$","newRoute","didChangeLicense$","didChangeMemsqlVersion$","first_1","resultSelector_1","forkJoin","clusterLicenseId","setLicenseKey","setMemsqlVersion","cleanRouteName","studio_version","AsyncAction","work","recycleAsyncId","requestAsyncId","execute","_execute","errored","Action","Scheduler","SchedulerAction","AsyncScheduler","delegate","DebounceTimeOperator","dueTime","DebounceTimeSubscriber","debouncedSubscription","lastValue","clearDebounce","dispatchNext","debouncedNext","bottomPanel","subscribeAll","observableFromStore","onbeforeunload","blockNavigation","tableKindToLabel","studioAnalyticsHandlers","TOPOLOGY","PIPELINES","EVENTS","MEMSQL_PARTITIONS","SCHEMA_SUMMARY","SCHEMA_STATISTICS","SCHEMA_TREE_EXPAND_DATABASE","SCHEMA_TREE_COLLAPSE_DATABASE","SCHEMA_TREE_EXPAND_TABLE","SCHEMA_TREE_COLLAPSE_TABLE","SORT_EVENTS","SORT_NODES","SORT_NODE_PARTITION_INSTANCES","SORT_HOSTS","SORT_HOST_NODES","CHANGE_BOTTOM_PANEL_TAB","CONNECT","CLUSTERS_ADD_ERROR","SCHEMA_RESTORE","MV_FULL_START","MV_FULL","MV_CANCEL_RECORDING","MV_SORT_QUERIES","isUserCaused","MV_SORT_NODES","CONSOLE_CONNECTION_ID","activeProcesses","activeProcessesEnabled","selectedProcessIds","killedProcessIds","filters","queriesSort","selectedStatsColumns","recording","mvHistoricalLoading","mvOldestTimestamp","selectedActivityTypes","selectedDatabases","validMonitoring","historicalSelectedTimeId","ALLOW_CLUSTER_MUTATIONS","DISABLE_ADD_NEW_CLUSTER_UI","disableHosts","latestMemsqlVersion","latestStudioVersion","innerJoin","arrs","iterators","canContinue","getAllValues","allValuesEqual","minimumIndex","structureInitial","statisticsLoaded","createTableLikeSql","columnarSegmentsError","columnStatisticsError","getInitialLoadingStructure","loadingStructure","NAVIGATE_TO","CANCEL_TRANSITION","TRANSITION_ERROR","TRANSITION_SUCCESS","TRANSITION_START","CLEAR_ERRORS","CAN_DEACTIVATE","CAN_ACTIVATE","transitionStart","transitionSuccess","transitionError","router5ReduxMiddleware","setDependency","usePlugin","onTransitionStart","onTransitionSuccess","onTransitionError","reduxPluginFactory","canDeactivate","canActivate","transitionRoute","appReducer","reduceLoadingStateMachine","reduceLSM","newClusters","webConnection","lastStructureUpdate","statsPayload","numReplicas","entityKind","remoteVersion","managementViews","op","union","without","startSnapshot","snapshotTime","activeQueries","oldActiveProcessesArray","newActiveProcesses","newActiveProcessesArray","oldActiveProcesses","oldProcess","newProcess","shouldKeepProcessSelected","previouslySelected","selectedId","processIds","killedId","exportedItem","TopologyApi","ClusterApi","ManagementViewsApi","ProxyApi","SchemaApi","EventsApi","ClusterMetadataApi","PipelinesApi","LicenseApi","HostsApi","ActiveProcessesApi","RemoteApi","workerMiddleware","defaultOrConstrained","rules","tokenise","rule","otherVal","Path","hasUrlParams","hasSpatParam","hasMatrixParams","hasQueryParams","spatParams","getParams","urlParams","queryParams","createPath","isQueryParam","strictTrailingSlash","optTrailingSlash","urlTest","partialTest","delimited","upToDelimiter","existingVal","appendQueryParam","ignoreConstraints","ignoreSearch","encodedUrlParams","missingParameters","searchParams","sparams","searchPart","caseSensitive","getMetaFromSegments","segments","accName","allParams","matchChildren","pathSegment","currentMatch","consumedBefore","queryParamsMode","strongMatching","isRoot","remainingPath","consumedPath","getPath","remainingQueryParams_1","getNonAbsoluteChildren","nodes_1","sortPredicate","originalChildren","leftPath","rightPath","leftSegments","rightSegments","leftParamsCount","rightParamsCount","leftParamLength","rightParamLength","trailingSlashMode","RouteNode","childRoutes","finalSort","absolute","checkParents","sortDescendants","getParentSegments","setPath","addRouteNode","routeNode","fullName","addNode","getSegmentsByName","sortChildren","nonSearchParams","segments_1","extraParams","searchParamsObject","segmentPath","finalPath","buildPathFromSegments","buildState","matchPath","getSegmentsMatchingPath","matchedSegments","firstSegmentParams","lastSegmentSlashChild","findSlashChild","buildStateFromMatch","hasParentsParams","findAbsoluteChildren","absoluteChildren","routes","matched","filteredRoutes","findSegmentByName","startingNodes","finalMatch","autoCleanUp","allowNotFound","rewritePathOnMatch","errorCodes","withState","stateId","routerState","makeState","forceId","defaultParams","makeNotFoundState","state1","state2","getUrlParams","rootNode","state1Params","state2Params","areStatesDescendants","parentState","childState","forwardState","forwardMap","eventsMap","onStart","onStop","onTransitionCancel","withPlugins","routerPlugins","startPlugin","appliedPlugin","executeFactory","removeEventListeners","getPlugins","plugins","removePluginFns","removePlugin","withMiddleware","middlewareFactories","middlewareFunctions","useMiddleware","middlewareFunction","clearMiddleware","getMiddlewareFactories","getMiddlewareFunctions","withObservability","callbacks","finalListener","unsubscribeHandler","invokeEventListeners","_cb","isCancelled","errorKey","remainingFunctions","isState","processFn","stepFn","errBase","_done","newState","hasStateChanged","mergeStates","resVal","promiseError","isMapped","withNavigation","cancelCurrentTransition","lastArg","isStarted","sameStates","skipTransition","transitionToState","redirected","navigateToDefault","defaultRoute","getLifecycleFunctions","canDeactivateFunctions","canActivateFunctions","makeError","isUnknownRoute","asyncBase","forceDeactivate","canDeactivateFunctionMap","fnMap","canActivateFunctionMap","activeSegments_1","clearCanDeactivate","noop$1","withRouterLifecycle","started","startPath","startState","startPathOrState","invokeErrCb","navigateToDefault_1","redirect_1","toFunction","withRouteLifecycle","canDeactivateFactories","canActivateFactories","getLifecycleFactories","canDeactivateHandler","canActivateHandler","createRouter","routerOptions","setOption","withOptions","routerDependencies","dependencyName","dependency","setDependencies","deps","getInjectables","factoryFunction","withDependencies","forward","fromRoute","toRoute","onRouteAdded","forwardTo","decodeParams","encodeParams","strictEquality","activeState","paramsWithDefault","encodedParams","decodedParams","builtPath","setRootPath","rootPath","withRoutes","safelyEncodePath","decodeURI","safeBrowser","getBase","addPopstateListener","shouldAddHashChangeListener","useHash","getLocation","hashPrefix","getHash","mergeState","preserveHash","removePopStateListener","transitionOptions","routerStart","updateBrowserState","trimmedState","finalState","onPopState","matchUrl","urlToPath","replaceHistoryState","lastKnownState","historyState","hasState","statesAreEqual","normalizedName","invokeListeners","getListeners","addNodeListener","removeNodeListener","addRouteListener","removeRouteListener","intersectionNode","startGroup","endGroup","groupCollapsed","groupEnd","ALLOW_ALL_REGEX","encodeDecodeOptions","BASE_PATH","connectRoute","clusterRoute","deployRoute","ICON_PACK","STUDIO_ICONS","STUDIO_CUSTOM_ICONS","setup","servicesLocator","initServices","externalLinks","setupIconLibrary","withBrowser","withLogger","listenersPlugin","loggerPlugin","browserPlugin","customHandlers","router5Middleware","singlejsHandler","customHandler","connectMiddleware","subscribeListeners","newStore","_debug","reactRoot","getElementById","States","SyncPromise","_handlers","_resolve","_setResult","RESOLVED","_reject","REJECTED","_executeHandlers","onFail","onSuccess","_attachHandler","onfulfilled","onrejected","Hub","_version","_stack","_invokeClient","getStackTop","isOlderThan","pushScope","getStack","parentScope","popScope","getScope","_lastEventId","finalHint","lastEventId","beforeBreadcrumb","finalBreadcrumb","extras","oldHub","makeMain","traceHeaders","getMainCarrier","carrier","registry","getHubFromCarrier","setHubOnCarrier","getCurrentHub","hasHubOnCarrier","activeDomain","registryHubTopStack","setupSubscription","sourceObj","isEventTarget","source_1","isJQueryStyleEventEmitter","source_2","isNodeStyleEventEmitter","source_3"],"mappings":"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KAAM,eACN85L,SAAU,UAEd,CACI95L,KAAM,kBACN85L,SAAU,UAEd,CACI95L,KAAM,gBACN85L,SAAU,UAEd,CACI95L,KAAM,eACN85L,SAAU,UAEd,CACI95L,KAAM,YACN85L,SAAU,UAEd,CACI95L,KAAM,sBACN85L,SAAU,UAEd,CACI95L,KAAM,YACN85L,SAAU,UAEd,CACI95L,KAAM,kBACN85L,SAAU,UAEd,CACI95L,KAAM,UACN85L,SAAU,YAEd,CACI95L,KAAM,eACN85L,SAAU,YAEd,CACI95L,KAAM,YACN85L,SAAU,UAEd,CACI95L,KAAM,gBACN85L,SAAU,UAEd,CACI95L,KAAM,sBACN85L,SAAU,UAEd,CACI95L,KAAM,uBACN85L,SAAU,UAEd,CACI95L,KAAM,uBACN85L,SAAU,UAEd,CACI95L,KAAM,wBACN85L,SAAU,UAEd,CACI95L,KAAM,mBACN85L,SAAU,UAEd,CACI95L,KAAM,oBACN85L,SAAU,UAEd,CACI95L,KAAM,qBACN85L,SAAU,UAEd,CACI95L,KAAM,qBACN85L,SAAU,UAEd,CACI95L,KAAM,yBACN85L,SAAU,UAEd,CACI95L,KAAM,yBACN85L,SAAU,UAEd,CACI95L,KAAM,KACN85L,SAAU,aAEd,CACI95L,KAAM,UACN85L,SAAU,WAEd,CACI95L,KAAM,cACN85L,SAAU,UAItB,CACI95L,KAAM,eACN6qG,QAAS,CACL,CACI7qG,KAAM,UACN85L,SAAU,WAEd,CACI95L,KAAM,cACN85L,SAAU,QAEd,CACI95L,KAAM,SACN85L,SAAU,QAEd,CACI95L,KAAM,KACN85L,SAAU,eAItB,CACI95L,KAAM,YACN6qG,QAAS,CACL,CACI7qG,KAAM,cACN85L,SAAU,QAEd,CACI95L,KAAM,OACN85L,SAAU,QAEd,CACI95L,KAAM,SACN85L,SAAU,QAEd,CACI95L,KAAM,KACN85L,SAAU,aAEd,CACI95L,KAAM,UACN85L,SAAU,YAEd,CACI95L,KAAM,gBACN85L,SAAU,YAEd,CACI95L,KAAM,OACN85L,SAAU,YAEd,CACI95L,KAAM,iBACN85L,SAAU,YAEd,CACI95L,KAAM,SACN85L,SAAU,YAEd,CACI95L,KAAM,UACN85L,SAAU,YAEd,CACI95L,KAAM,cACN85L,SAAU,YAEd,CACI95L,KAAM,aACN85L,SAAU,YAEd,CACI95L,KAAM,UACN85L,SAAU,YAEd,CACI95L,KAAM,aACN85L,SAAU,YAEd,CACI95L,KAAM,gBACN85L,SAAU,YAEd,CACI95L,KAAM,eACN85L,SAAU,YAEd,CACI95L,KAAM,UACN85L,SAAU,cAItB,CACI95L,KAAM,UACN6qG,QAAS,CACL,CACI7qG,KAAM,SACN85L,SAAU,QAEd,CACI95L,KAAM,OACN85L,SAAU,YAEd,CACI95L,KAAM,cACN85L,SAAU,QAEd,CACI95L,KAAM,UACN85L,SAAU,YAEd,CACI95L,KAAM,OACN85L,SAAU,YAEd,CACI95L,KAAM,OACN85L,SAAU,YAEd,CACI95L,KAAM,OACN85L,SAAU,YAEd,CACI95L,KAAM,YACN85L,SAAU,YAEd,CACI95L,KAAM,YACN85L,SAAU,YAEd,CACI95L,KAAM,MACN85L,SAAU,YAEd,CACI95L,KAAM,QACN85L,SAAU,UAEd,CACI95L,KAAM,SACN85L,SAAU,UAEd,CACI95L,KAAM,WACN85L,SAAU,YAItB,CACI95L,KAAM,YACN6qG,QAAS,CACL,CACI7qG,KAAM,cACN85L,SAAU,QAEd,CACI95L,KAAM,OACN85L,SAAU,QAEd,CACI95L,KAAM,SACN85L,SAAU,QAEd,CACI95L,KAAM,KACN85L,SAAU,aAEd,CACI95L,KAAM,WACN85L,SAAU,aAEd,CACI95L,KAAM,UACN85L,SAAU,YAEd,CACI95L,KAAM,aACN85L,SAAU,YAEd,CACI95L,KAAM,iBACN85L,SAAU,YAEd,CACI95L,KAAM,UACN85L,SAAU,YAEd,CACI95L,KAAM,OACN85L,SAAU,YAEd,CACI95L,KAAM,OACN85L,SAAU,YAEd,CACI95L,KAAM,WACN85L,SAAU,YAEd,CACI95L,KAAM,UACN85L,SAAU,cAItB,CACI95L,KAAM,WACN6qG,QAAS,CACL,CACI7qG,KAAM,cACN85L,SAAU,QAEd,CACI95L,KAAM,OACN85L,SAAU,QAEd,CACI95L,KAAM,SACN85L,SAAU,QAEd,CACI95L,KAAM,KACN85L,SAAU,aAEd,CACI95L,KAAM,UACN85L,SAAU,YAEd,CACI95L,KAAM,UACN85L,SAAU,YAEd,CACI95L,KAAM,UACN85L,SAAU,YAEd,CACI95L,KAAM,OACN85L,SAAU,YAEd,CACI95L,KAAM,OACN85L,SAAU,YAEd,CACI95L,KAAM,gBACN85L,SAAU,YAEd,CACI95L,KAAM,gBACN85L,SAAU,YAEd,CACI95L,KAAM,QACN85L,SAAU,YAEd,CACI95L,KAAM,qBACN85L,SAAU,YAEd,CACI95L,KAAM,WACN85L,SAAU,UAEd,CACI95L,KAAM,gBACN85L,SAAU,UAEd,CACI95L,KAAM,sBACN85L,SAAU,UAEd,CACI95L,KAAM,iBACN85L,SAAU,UAEd,CACI95L,KAAM,uBACN85L,SAAU,UAEd,CACI95L,KAAM,qBACN85L,SAAU,UAEd,CACI95L,KAAM,yBACN85L,SAAU,UAEd,CACI95L,KAAM,SACN85L,SAAU,UAEd,CACI95L,KAAM,UACN85L,SAAU,cAItB,CACI95L,KAAM,aACN6qG,QAAS,CACL,CACI7qG,KAAM,UACN85L,SAAU,WAEd,CACI95L,KAAM,cACN85L,SAAU,QAEd,CACI95L,KAAM,KACN85L,SAAU,aAEd,CACI95L,KAAM,gBACN85L,SAAU,WAEd,CACI95L,KAAM,aACN85L,SAAU,YAEd,CACI95L,KAAM,gBACN85L,SAAU,aAItB,CACI95L,KAAM,SACN6qG,QAAS,CACL,CACI7qG,KAAM,WACN85L,SAAU,YAEd,CACI95L,KAAM,2BACN85L,SAAU,OAEd,CACI95L,KAAM,0BACN85L,SAAU,OAEd,CACI95L,KAAM,cACN85L,SAAU,SAItB,CACI95L,KAAM,OACN6qG,QAAS,CACL,CACI7qG,KAAM,IACN85L,SAAU,SAItB,CACI95L,KAAM,YACN6qG,QAAS,CACL,CACI7qG,KAAM,KACN85L,SAAU,aAEd,CA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/D,KAAM,EACNigE,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,kEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,sEAINzmE,IAAK,CACHlnB,IAAK,EACL2tF,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,iEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,sE,+BCrwBR,IAAIzhG,EAAK,EAAQ,IACb2wN,EAAW,EAAQ,KACnBj2L,EAAQ,EAAQ,IAChB++F,EAAS,EAAQ,KACjB5wJ,EAAO,EAAQ,KACfg3B,EAAS66B,EAAM76B,OAEf+wN,EAAU,EAAQ,KAClBC,EAAY,EAAQ,KAExB,SAASvI,EAAGhrP,GACV,KAAM/P,gBAAgB+6P,GACpB,OAAO,IAAIA,EAAGhrP,GAGO,iBAAZA,IACTuiC,EAAO74C,OAAOC,UAAUC,eAAeC,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","file":"app.9b217ee2e795282e2af2.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n \t\tvar prefetchChunks = data[3] || [];\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n \t\tdeferredPrefetch.push.apply(deferredPrefetch, prefetchChunks);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n \t\tif(deferredModules.length === 0) {\n \t\t\t// chunk prefetching for javascript\n \t\t\tdeferredPrefetch.forEach(function(chunkId) {\n \t\t\t\tif(installedChunks[chunkId] === undefined) {\n \t\t\t\t\tinstalledChunks[chunkId] = null;\n \t\t\t\t\tvar link = document.createElement('link');\n\n \t\t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\t\tlink.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t\t}\n \t\t\t\t\tlink.rel = \"prefetch\";\n \t\t\t\t\tlink.as = \"script\";\n \t\t\t\t\tlink.href = jsonpScriptSrc(chunkId);\n \t\t\t\t\tdocument.head.appendChild(link);\n \t\t\t\t}\n \t\t\t});\n \t\t\tdeferredPrefetch.length = 0;\n \t\t}\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t4: 0\n \t};\n\n \tvar deferredModules = [], deferredPrefetch = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"\" + ({\"2\":\"vendors~cluster-controller~create-cluster\",\"6\":\"cluster-controller\",\"7\":\"create-cluster\",\"8\":\"page-editor\",\"9\":\"vendors~cluster-controller\",\"10\":\"vendors~page-editor\"}[chunkId]||chunkId) + \".\" + {\"2\":\"6d14411d099e8eadc2ba\",\"3\":\"88c2fd43c44b95811b6c\",\"6\":\"29dedb01dd2846dd0a8f\",\"7\":\"92315392a384426d8d1a\",\"8\":\"593b04291358d063650d\",\"9\":\"1ce22b7a06f0ccc924cd\",\"10\":\"8eaaf6b90eb2b8723f66\",\"11\":\"207a5446f9e6cac9258d\",\"12\":\"4d65635a99e6cf2b04af\",\"13\":\"c538f76ca28ac4ffef6b\",\"14\":\"813a63ed69bf8f4d5815\",\"15\":\"59a4226227dd992ebe02\",\"16\":\"c3f52a324bb4e544341c\",\"17\":\"6f7025b4460f5dc55ff6\",\"18\":\"d8adb076354ddfe9aebe\",\"19\":\"d4d4288fda6538c012ea\",\"20\":\"3b94a37f4884f679e43c\",\"21\":\"bcb6dfa5411882d4bc00\",\"22\":\"5fed9c085adee7f57b19\",\"23\":\"d6568934f2b12a6f8c8f\",\"24\":\"570e4a86ac92eec5c648\",\"25\":\"4bc11ab550e8453b001a\",\"26\":\"a4907ccfb33acf14657d\",\"27\":\"3dccf8256256ce18283d\",\"28\":\"ff883b8258a35e223c30\",\"29\":\"81d7459b3f3c63255509\",\"30\":\"737c6544573470fd3b43\",\"31\":\"157efd9b8be0538a431a\",\"32\":\"9c1fd89c4e4d6ffc815a\",\"33\":\"4d600c924104f76fe98f\",\"34\":\"def2bee2e8594362e0d2\",\"35\":\"0f1f9e38144e768858a9\",\"36\":\"c45b25dc4be6514d3f6d\",\"37\":\"b982972fcdd7ef592529\",\"38\":\"c0139865d0dac191041c\",\"39\":\"abcba9b090fe95a349a1\",\"40\":\"a1c6fb3f5c4d9adc7582\",\"41\":\"bb736073419aa79b858f\",\"42\":\"82bca8f8e5148beebc31\",\"43\":\"f8a4a39181d40d4edfc1\",\"44\":\"fe202a2f5b79d8ea99c5\",\"45\":\"3d34e5daff96fc93f39f\",\"46\":\"48ea7aebd3f766d2bb1e\",\"47\":\"0b078ca907cda3888128\",\"48\":\"f4730ad973e042187d20\",\"49\":\"4548ee1d538e28a4e5e0\",\"50\":\"cfb73b96d27b9e306d18\",\"51\":\"5deb0d40f2b7d4fe4910\",\"52\":\"103554c0a8a4c20b8825\",\"53\":\"29c00f87a1f2d0e2e6e9\",\"54\":\"bfac97caac83ee989a4b\",\"55\":\"c473b7b5e6ffbbcc8cc2\",\"56\":\"cbf48cd5d882e058c33a\",\"57\":\"4cdbf49d2ec614447b16\",\"58\":\"fa125549ebc1fbdae661\",\"59\":\"3dda653b1e6b421dd4b6\",\"60\":\"4bcaaa2736031ff140b1\",\"61\":\"c2deaa1517e6bdb200ee\",\"62\":\"020ca90c990f0515cd71\",\"63\":\"609f3c3276d4e3b367f6\",\"64\":\"43b065fa915302226620\",\"65\":\"a42aa95ada167d979f8a\",\"66\":\"0b42353ddb6f2e34200b\",\"67\":\"ec62803e7ad697671c67\",\"68\":\"f54143cc95413d629e62\",\"69\":\"007c775e2f3d2b96b7af\",\"70\":\"d3c6df248a9ac9127f0e\",\"71\":\"42dd511d9b919a54ef64\",\"72\":\"1463e6a06d51fe57bd04\",\"73\":\"a3e03d92d51df16cd72a\"}[chunkId] + \".js\"\n \t}\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 \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\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, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\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// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \tvar startupResult = (function() {\n \t// add entry module to deferred list\n \tdeferredModules.push([661,0,1]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n \t})();\n\n \twebpackJsonpCallback([[], {}, 0, [0,2,9,6]]);\n \treturn startupResult;\n","export function isLoadingError(input) {\n return (input instanceof LESuccess ||\n input instanceof LELoading ||\n input instanceof LEError);\n}\nexport class LESuccess {\n constructor(value) {\n this.value = value;\n }\n isSuccess() {\n return true;\n }\n isLoading() {\n return false;\n }\n isError() {\n return false;\n }\n toJSON() {\n return {\n __type__: \"LESuccess\",\n __val__: this.value,\n };\n }\n}\nexport class LELoading {\n constructor() {\n this.loading = true;\n }\n isSuccess() {\n return false;\n }\n isLoading() {\n return true;\n }\n isError() {\n return false;\n }\n toJSON() {\n return {\n __type__: \"LELoading\",\n __val__: undefined,\n };\n }\n}\nexport class LEError {\n constructor(value) {\n this.error = true;\n this.errorValue = undefined;\n this.errorValue = value;\n }\n isSuccess() {\n return false;\n }\n isLoading() {\n return false;\n }\n isError() {\n return true;\n }\n toJSON() {\n return {\n __type__: \"LEError\",\n __val__: undefined,\n };\n }\n}\nexport function updateLoadingError(v, f) {\n if (v.isError()) {\n return new LEError();\n }\n else if (v.isLoading()) {\n return new LELoading();\n }\n else {\n return f(v.value);\n }\n}\n","import _ from \"lodash\";\nexport function reduce(state, action, transformer = _.identity) {\n if (action.error) {\n state = {\n state: \"error\",\n error: action.payload,\n loading: false,\n };\n }\n else if (action.payload.loading) {\n state = {\n ...state,\n loading: true,\n };\n }\n else {\n state = {\n state: \"success\",\n payload: transformer(action.payload.data),\n lastUpdate: new Date(),\n loading: false,\n };\n }\n return state;\n}\nexport function updatePayload(lsm, update) {\n if (lsm.state === \"success\") {\n return {\n ...lsm,\n payload: update(lsm.payload),\n };\n }\n return lsm;\n}\nexport function initialLSM() {\n return {\n state: \"initial\",\n loading: false,\n };\n}\nexport function successLSM(payload) {\n return {\n state: \"success\",\n lastUpdate: new Date(),\n loading: false,\n payload,\n };\n}\nexport function loadingLSM() {\n return {\n state: \"initial\",\n loading: true,\n };\n}\nexport function errorLSM(error) {\n return {\n state: \"error\",\n loading: false,\n error,\n };\n}\nexport function getInitialState() {\n return { state: \"initial\", loading: false };\n}\nexport const selectLoadingOrInitial = (s) => s.loading || s.state === \"initial\";\nexport const selectLastUpdate = (s) => s.state === \"success\" ? s.lastUpdate : undefined;\nexport const selectIsInitial = (s) => s.state === \"initial\";\nexport const selectIsSuccess = (s) => s.state === \"success\";\nexport const selectIsError = (s) => s.state === \"error\";\nexport function selectError(s) {\n return s.state === \"error\" ? s.error : undefined;\n}\nexport function selectPayload(s) {\n return s.state === \"success\" ? s.payload : undefined;\n}\nexport function select(s) {\n if (s.state === \"success\") {\n const out = {\n payload: s.payload,\n lastUpdated: s.lastUpdate,\n error: undefined,\n loading: false,\n };\n return out;\n }\n else if (s.loading || s.state === \"initial\") {\n const out = {\n payload: undefined,\n lastUpdated: undefined,\n loading: true,\n error: undefined,\n };\n return out;\n }\n else {\n const out = {\n payload: undefined,\n lastUpdated: undefined,\n loading: false,\n error: s.error,\n };\n return out;\n }\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","var isDate = require('../is_date/index.js')\n\nvar MILLISECONDS_IN_HOUR = 3600000\nvar MILLISECONDS_IN_MINUTE = 60000\nvar DEFAULT_ADDITIONAL_DIGITS = 2\n\nvar parseTokenDateTimeDelimeter = /[T ]/\nvar parseTokenPlainTime = /:/\n\n// year tokens\nvar parseTokenYY = /^(\\d{2})$/\nvar parseTokensYYY = [\n /^([+-]\\d{2})$/, // 0 additional digits\n /^([+-]\\d{3})$/, // 1 additional digit\n /^([+-]\\d{4})$/ // 2 additional digits\n]\n\nvar parseTokenYYYY = /^(\\d{4})/\nvar parseTokensYYYYY = [\n /^([+-]\\d{4})/, // 0 additional digits\n /^([+-]\\d{5})/, // 1 additional digit\n /^([+-]\\d{6})/ // 2 additional digits\n]\n\n// date tokens\nvar parseTokenMM = /^-(\\d{2})$/\nvar parseTokenDDD = /^-?(\\d{3})$/\nvar parseTokenMMDD = /^-?(\\d{2})-?(\\d{2})$/\nvar parseTokenWww = /^-?W(\\d{2})$/\nvar parseTokenWwwD = /^-?W(\\d{2})-?(\\d{1})$/\n\n// time tokens\nvar parseTokenHH = /^(\\d{2}([.,]\\d*)?)$/\nvar parseTokenHHMM = /^(\\d{2}):?(\\d{2}([.,]\\d*)?)$/\nvar parseTokenHHMMSS = /^(\\d{2}):?(\\d{2}):?(\\d{2}([.,]\\d*)?)$/\n\n// timezone tokens\nvar parseTokenTimezone = /([Z+-].*)$/\nvar parseTokenTimezoneZ = /^(Z)$/\nvar parseTokenTimezoneHH = /^([+-])(\\d{2})$/\nvar parseTokenTimezoneHHMM = /^([+-])(\\d{2}):?(\\d{2})$/\n\n/**\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If an argument is a string, the function tries to parse it.\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If all above fails, the function passes the given argument to Date constructor.\n *\n * @param {Date|String|Number} argument - the value to convert\n * @param {Object} [options] - the object with options\n * @param {0 | 1 | 2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * var result = parse('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Parse string '+02014101',\n * // if the additional number of digits in the extended year format is 1:\n * var result = parse('+02014101', {additionalDigits: 1})\n * //=> Fri Apr 11 2014 00:00:00\n */\nfunction parse (argument, dirtyOptions) {\n if (isDate(argument)) {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime())\n } else if (typeof argument !== 'string') {\n return new Date(argument)\n }\n\n var options = dirtyOptions || {}\n var additionalDigits = options.additionalDigits\n if (additionalDigits == null) {\n additionalDigits = DEFAULT_ADDITIONAL_DIGITS\n } else {\n additionalDigits = Number(additionalDigits)\n }\n\n var dateStrings = splitDateString(argument)\n\n var parseYearResult = parseYear(dateStrings.date, additionalDigits)\n var year = parseYearResult.year\n var restDateString = parseYearResult.restDateString\n\n var date = parseDate(restDateString, year)\n\n if (date) {\n var timestamp = date.getTime()\n var time = 0\n var offset\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time)\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone)\n } else {\n // get offset accurate to hour in timezones that change offset\n offset = new Date(timestamp + time).getTimezoneOffset()\n offset = new Date(timestamp + time + offset * MILLISECONDS_IN_MINUTE).getTimezoneOffset()\n }\n\n return new Date(timestamp + time + offset * MILLISECONDS_IN_MINUTE)\n } else {\n return new Date(argument)\n }\n}\n\nfunction splitDateString (dateString) {\n var dateStrings = {}\n var array = dateString.split(parseTokenDateTimeDelimeter)\n var timeString\n\n if (parseTokenPlainTime.test(array[0])) {\n dateStrings.date = null\n timeString = array[0]\n } else {\n dateStrings.date = array[0]\n timeString = array[1]\n }\n\n if (timeString) {\n var token = parseTokenTimezone.exec(timeString)\n if (token) {\n dateStrings.time = timeString.replace(token[1], '')\n dateStrings.timezone = token[1]\n } else {\n dateStrings.time = timeString\n }\n }\n\n return dateStrings\n}\n\nfunction parseYear (dateString, additionalDigits) {\n var parseTokenYYY = parseTokensYYY[additionalDigits]\n var parseTokenYYYYY = parseTokensYYYYY[additionalDigits]\n\n var token\n\n // YYYY or ±YYYYY\n token = parseTokenYYYY.exec(dateString) || parseTokenYYYYY.exec(dateString)\n if (token) {\n var yearString = token[1]\n return {\n year: parseInt(yearString, 10),\n restDateString: dateString.slice(yearString.length)\n }\n }\n\n // YY or ±YYY\n token = parseTokenYY.exec(dateString) || parseTokenYYY.exec(dateString)\n if (token) {\n var centuryString = token[1]\n return {\n year: parseInt(centuryString, 10) * 100,\n restDateString: dateString.slice(centuryString.length)\n }\n }\n\n // Invalid ISO-formatted year\n return {\n year: null\n }\n}\n\nfunction parseDate (dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) {\n return null\n }\n\n var token\n var date\n var month\n var week\n\n // YYYY\n if (dateString.length === 0) {\n date = new Date(0)\n date.setUTCFullYear(year)\n return date\n }\n\n // YYYY-MM\n token = parseTokenMM.exec(dateString)\n if (token) {\n date = new Date(0)\n month = parseInt(token[1], 10) - 1\n date.setUTCFullYear(year, month)\n return date\n }\n\n // YYYY-DDD or YYYYDDD\n token = parseTokenDDD.exec(dateString)\n if (token) {\n date = new Date(0)\n var dayOfYear = parseInt(token[1], 10)\n date.setUTCFullYear(year, 0, dayOfYear)\n return date\n }\n\n // YYYY-MM-DD or YYYYMMDD\n token = parseTokenMMDD.exec(dateString)\n if (token) {\n date = new Date(0)\n month = parseInt(token[1], 10) - 1\n var day = parseInt(token[2], 10)\n date.setUTCFullYear(year, month, day)\n return date\n }\n\n // YYYY-Www or YYYYWww\n token = parseTokenWww.exec(dateString)\n if (token) {\n week = parseInt(token[1], 10) - 1\n return dayOfISOYear(year, week)\n }\n\n // YYYY-Www-D or YYYYWwwD\n token = parseTokenWwwD.exec(dateString)\n if (token) {\n week = parseInt(token[1], 10) - 1\n var dayOfWeek = parseInt(token[2], 10) - 1\n return dayOfISOYear(year, week, dayOfWeek)\n }\n\n // Invalid ISO-formatted date\n return null\n}\n\nfunction parseTime (timeString) {\n var token\n var hours\n var minutes\n\n // hh\n token = parseTokenHH.exec(timeString)\n if (token) {\n hours = parseFloat(token[1].replace(',', '.'))\n return (hours % 24) * MILLISECONDS_IN_HOUR\n }\n\n // hh:mm or hhmm\n token = parseTokenHHMM.exec(timeString)\n if (token) {\n hours = parseInt(token[1], 10)\n minutes = parseFloat(token[2].replace(',', '.'))\n return (hours % 24) * MILLISECONDS_IN_HOUR +\n minutes * MILLISECONDS_IN_MINUTE\n }\n\n // hh:mm:ss or hhmmss\n token = parseTokenHHMMSS.exec(timeString)\n if (token) {\n hours = parseInt(token[1], 10)\n minutes = parseInt(token[2], 10)\n var seconds = parseFloat(token[3].replace(',', '.'))\n return (hours % 24) * MILLISECONDS_IN_HOUR +\n minutes * MILLISECONDS_IN_MINUTE +\n seconds * 1000\n }\n\n // Invalid ISO-formatted time\n return null\n}\n\nfunction parseTimezone (timezoneString) {\n var token\n var absoluteOffset\n\n // Z\n token = parseTokenTimezoneZ.exec(timezoneString)\n if (token) {\n return 0\n }\n\n // ±hh\n token = parseTokenTimezoneHH.exec(timezoneString)\n if (token) {\n absoluteOffset = parseInt(token[2], 10) * 60\n return (token[1] === '+') ? -absoluteOffset : absoluteOffset\n }\n\n // ±hh:mm or ±hhmm\n token = parseTokenTimezoneHHMM.exec(timezoneString)\n if (token) {\n absoluteOffset = parseInt(token[2], 10) * 60 + parseInt(token[3], 10)\n return (token[1] === '+') ? -absoluteOffset : absoluteOffset\n }\n\n return 0\n}\n\nfunction dayOfISOYear (isoYear, week, day) {\n week = week || 0\n day = day || 0\n var date = new Date(0)\n date.setUTCFullYear(isoYear, 0, 4)\n var fourthOfJanuaryDay = date.getUTCDay() || 7\n var diff = week * 7 + day + 1 - fourthOfJanuaryDay\n date.setUTCDate(date.getUTCDate() + diff)\n return date\n}\n\nmodule.exports = parse\n","export var prefix = '@@redux-form/';\nexport var ARRAY_INSERT = prefix + \"ARRAY_INSERT\";\nexport var ARRAY_MOVE = prefix + \"ARRAY_MOVE\";\nexport var ARRAY_POP = prefix + \"ARRAY_POP\";\nexport var ARRAY_PUSH = prefix + \"ARRAY_PUSH\";\nexport var ARRAY_REMOVE = prefix + \"ARRAY_REMOVE\";\nexport var ARRAY_REMOVE_ALL = prefix + \"ARRAY_REMOVE_ALL\";\nexport var ARRAY_SHIFT = prefix + \"ARRAY_SHIFT\";\nexport var ARRAY_SPLICE = prefix + \"ARRAY_SPLICE\";\nexport var ARRAY_UNSHIFT = prefix + \"ARRAY_UNSHIFT\";\nexport var ARRAY_SWAP = prefix + \"ARRAY_SWAP\";\nexport var AUTOFILL = prefix + \"AUTOFILL\";\nexport var BLUR = prefix + \"BLUR\";\nexport var CHANGE = prefix + \"CHANGE\";\nexport var CLEAR_FIELDS = prefix + \"CLEAR_FIELDS\";\nexport var CLEAR_SUBMIT = prefix + \"CLEAR_SUBMIT\";\nexport var CLEAR_SUBMIT_ERRORS = prefix + \"CLEAR_SUBMIT_ERRORS\";\nexport var CLEAR_ASYNC_ERROR = prefix + \"CLEAR_ASYNC_ERROR\";\nexport var DESTROY = prefix + \"DESTROY\";\nexport var FOCUS = prefix + \"FOCUS\";\nexport var INITIALIZE = prefix + \"INITIALIZE\";\nexport var REGISTER_FIELD = prefix + \"REGISTER_FIELD\";\nexport var RESET = prefix + \"RESET\";\nexport var RESET_SECTION = prefix + \"RESET_SECTION\";\nexport var SET_SUBMIT_FAILED = prefix + \"SET_SUBMIT_FAILED\";\nexport var SET_SUBMIT_SUCCEEDED = prefix + \"SET_SUBMIT_SUCCEEDED\";\nexport var START_ASYNC_VALIDATION = prefix + \"START_ASYNC_VALIDATION\";\nexport var START_SUBMIT = prefix + \"START_SUBMIT\";\nexport var STOP_ASYNC_VALIDATION = prefix + \"STOP_ASYNC_VALIDATION\";\nexport var STOP_SUBMIT = prefix + \"STOP_SUBMIT\";\nexport var SUBMIT = prefix + \"SUBMIT\";\nexport var TOUCH = prefix + \"TOUCH\";\nexport var UNREGISTER_FIELD = prefix + \"UNREGISTER_FIELD\";\nexport var UNTOUCH = prefix + \"UNTOUCH\";\nexport var UPDATE_SYNC_ERRORS = prefix + \"UPDATE_SYNC_ERRORS\";\nexport var UPDATE_SYNC_WARNINGS = prefix + \"UPDATE_SYNC_WARNINGS\";","import Sentry from \"util/sentry\";\nexport class NonLoggableError extends Error {\n constructor() {\n super(...arguments);\n this.disableLogging = true;\n }\n}\n// The `logError` method is used to log errors. Right now there are two types\n// of errors - the ones that can be logged to Sentry and the ones that can't.\n// Some errors may have user data or are too noisy for us to have in Sentry and\n// that's why we don't log them. Every error that cannot be logged to Sentry\n// should be an instance of `NonLoggableError`.\n//\n// Any other errors are assumed to be JavaScript runtime errors, and those get\n// logged to Sentry.\nexport function logError(error, message) {\n if (message) {\n log(\"error\", message, error);\n }\n else {\n log(\"error\", error);\n }\n if (!(\"disableLogging\" in error && error.disableLogging)) {\n Sentry.captureException(error);\n }\n}\nexport function log(level, ...args) {\n if (level === \"info\") {\n console.log(...args);\n }\n else if (level === \"error\") {\n console.error(...args);\n }\n else if (level === \"warn\") {\n console.warn(...args);\n }\n else if (level === \"debug\") {\n console.debug(\"[Debug]\", ...args);\n }\n}\n","import { LEError, LELoading, LESuccess, } from \"@single-js/common/util/loading-error\";\nimport BigNumber from \"@single-js/common/vendor/bignumber.js/bignumber\";\nexport const humanizeNodePartitionInstanceStatus = (node) => {\n if (node.partitionInstanceStatus === \"PARTITIONS_ONLINE\") {\n return \"Partitions Online\";\n }\n else if (node.partitionInstanceStatus === \"PARTITIONS_OFFLINE_RECOVERING\") {\n return \"Partitions Offline Recovering\";\n }\n else if (node.partitionInstanceStatus === \"PARTITIONS_OFFLINE\") {\n return \"Partitions Offline\";\n }\n else if (node.partitionInstanceStatus === \"PARTITIONS_UNKNOWN\") {\n return \"Unknown Partitions Status\";\n }\n return node.partitionInstanceStatus;\n};\n// Takes in a node and returns its pair in the `host:port`\n// format. If the node is not a leaf or it does not have\n// a pair, then this returns undefined.\nexport const getNodePair = (node) => {\n if (node.role === \"LEAF\" && node.pairHost && node.pairPort) {\n return `${node.pairHost}:${node.pairPort}`;\n }\n};\nexport function formatNodeAddress({ host, port, }) {\n return `${host}:${port.toString()}`;\n}\nexport function parseNodeAddress(nodeAddress) {\n const splitString = nodeAddress.split(\":\");\n if (splitString.length !== 2) {\n return undefined;\n }\n const [host, port] = splitString;\n return { host, port: new BigNumber(port) };\n}\nexport function getEmptyNodeLiveMonitoringMetrics() {\n return {\n totalCpuUsagePercent: new LELoading(),\n usedMemoryB: new LELoading(),\n memoryLimitB: new LELoading(),\n usedDiskB: new LELoading(),\n totalDiskB: new LELoading(),\n };\n}\nexport const getNodeMemoryUsage = (node) => {\n const { liveMonitoring: { memoryLimitB, usedMemoryB }, } = node;\n if (usedMemoryB.isLoading() && memoryLimitB.isLoading()) {\n return new LELoading();\n }\n else if (memoryLimitB.isLoading() ||\n usedMemoryB.isLoading() ||\n usedMemoryB.isError() ||\n memoryLimitB.isError() ||\n memoryLimitB.value.isZero()) {\n return new LEError();\n }\n else {\n const percentValue = usedMemoryB.value.dividedBy(memoryLimitB.value);\n return new LESuccess({\n ratio: percentValue.toNumber(),\n total: memoryLimitB.value,\n used: usedMemoryB.value,\n });\n }\n};\nexport const getNodeDiskUsage = (node) => {\n const { liveMonitoring: { usedDiskB, totalDiskB }, } = node;\n if (usedDiskB.isLoading() && totalDiskB.isLoading()) {\n return new LELoading();\n }\n else if (totalDiskB.isLoading() ||\n usedDiskB.isLoading() ||\n usedDiskB.isError() ||\n totalDiskB.isError() ||\n totalDiskB.value.isZero()) {\n return new LEError();\n }\n else {\n const percentValue = usedDiskB.value.dividedBy(totalDiskB.value);\n return new LESuccess({\n ratio: percentValue.toNumber(),\n total: totalDiskB.value,\n used: usedDiskB.value,\n });\n }\n};\n","import jwtDecode from \"jwt-decode\";\nconst STAGING_PROFILE = \"s\";\nconst DEVELOPMENT_PROFILE = \"d\";\nexport function decodeClusterJwt(jwt) {\n // jwtDecode can raise an error if the argument is not a valid string, and\n // we return undefined if so.\n let decodedJwt;\n try {\n decodedJwt = jwtDecode(jwt);\n }\n catch (err) {\n return undefined;\n }\n let profile;\n switch (decodedJwt.env) {\n case STAGING_PROFILE:\n profile = \"STAGING\";\n break;\n case DEVELOPMENT_PROFILE:\n profile = \"DEVELOPMENT\";\n break;\n default:\n profile = \"PRODUCTION\";\n }\n if (!decodedJwt.end) {\n return undefined;\n }\n const splitEndpoint = decodedJwt.end.split(\":\");\n const name = decodedJwt.nam || splitEndpoint[0];\n const port = Number(splitEndpoint[1]) || 3306;\n const defaultUser = decodedJwt.usr || \"\";\n let heliosExpiresAt;\n if (decodedJwt.cxp) {\n heliosExpiresAt = new Date(decodedJwt.cxp * 1000); // convert to milliseconds\n }\n return {\n id: jwt,\n name,\n description: \"\",\n profile,\n hostname: splitEndpoint[0],\n port,\n defaultUser,\n websocket: false,\n websocketSSL: false,\n kerberosAutoLogin: false,\n helios: {\n clusterID: decodedJwt.cid,\n expiresAt: heliosExpiresAt,\n },\n // JWT users can never be SAML users as SAML authentication is currently not available for Helios clusters\n samlEnabled: false,\n };\n}\nexport function formatClusterProfile(profile) {\n switch (profile) {\n case \"DEVELOPMENT\":\n return \"Development\";\n case \"STAGING\":\n return \"Staging\";\n case \"PRODUCTION\":\n return \"Production\";\n default:\n return \"Unknown\";\n }\n}\n","import NumberFormatter from \"@single-js/common/util/number-formatter\";\nimport { plural } from \"@single-js/common/util/string\";\nexport function formatLicenseUsage({ usedCapacity, maximumCapacity, unitPricing, }) {\n if (unitPricing) {\n if (maximumCapacity === \"unlimited\") {\n return `${usedCapacity} ${plural(\"unit\", usedCapacity)} allocated of unlimited available`;\n }\n else {\n return `${usedCapacity} ${plural(\"unit\", usedCapacity)} allocated of ${maximumCapacity} available`;\n }\n }\n else {\n if (maximumCapacity === \"unlimited\") {\n const usedCapacityBytes = NumberFormatter.formatBytes(usedCapacity);\n return `${usedCapacityBytes} allocated of unlimited available`;\n }\n else {\n const usedCapacityBytes = NumberFormatter.formatBytes(usedCapacity);\n const maximumCapacityBytes = NumberFormatter.formatBytes(maximumCapacity);\n return `${usedCapacityBytes} allocated of ${maximumCapacityBytes} available`;\n }\n }\n}\nexport function formatLicenseType(licenseType) {\n switch (licenseType) {\n case \"free\":\n return \"Free\";\n case \"enterprise\":\n return \"Enterprise\";\n case \"developer\":\n return \"Developer\";\n case \"standard\":\n return \"Standard\";\n default:\n return \"Unknown\";\n }\n}\n","import { LEError, LELoading, LESuccess, } from \"@single-js/common/util/loading-error\";\nimport NumberFormatter from \"@single-js/common/util/number-formatter\";\nimport { LONG_EM_DASH } from \"@single-js/common/util/symbols\";\nexport function formatHostMemory(host) {\n if (host.systemMemoryB) {\n return NumberFormatter.formatBytes(host.systemMemoryB);\n }\n else {\n return LONG_EM_DASH;\n }\n}\nexport function getLoadingHostLiveMonitoringMetrics() {\n return {\n totalCpuUsagePercentRate: new LELoading(),\n systemUsedMemoryB: new LELoading(),\n systemTotalMemoryB: new LELoading(),\n netReceivedRateBpS: new LELoading(),\n netTransmittedRateBpS: new LELoading(),\n systemTotalDiskB: new LELoading(),\n systemUsedDiskB: new LELoading(),\n diskWriteRateBpS: new LELoading(),\n diskReadRateBpS: new LELoading(),\n };\n}\nexport const getHostMemoryUsage = (host) => {\n const { liveMonitoring: { systemUsedMemoryB, systemTotalMemoryB }, } = host;\n if (systemUsedMemoryB.isLoading() && systemTotalMemoryB.isLoading()) {\n return new LELoading();\n }\n else if (systemUsedMemoryB.isLoading() ||\n systemTotalMemoryB.isLoading() ||\n systemUsedMemoryB.isError() ||\n systemTotalMemoryB.isError() ||\n systemTotalMemoryB.value.isZero()) {\n return new LEError();\n }\n else {\n const percentValue = systemUsedMemoryB.value.dividedBy(systemTotalMemoryB.value);\n return new LESuccess({\n ratio: percentValue.toNumber(),\n total: systemTotalMemoryB.value,\n used: systemUsedMemoryB.value,\n });\n }\n};\nexport const getHostDiskUsage = (host) => {\n const { liveMonitoring: { systemUsedDiskB, systemTotalDiskB }, } = host;\n if (systemUsedDiskB.isLoading() && systemTotalDiskB.isLoading()) {\n return new LELoading();\n }\n else if (systemUsedDiskB.isLoading() ||\n systemTotalDiskB.isLoading() ||\n systemUsedDiskB.isError() ||\n systemTotalDiskB.isError() ||\n systemTotalDiskB.value.isZero()) {\n return new LEError();\n }\n else {\n const percentValue = systemUsedDiskB.value.dividedBy(systemTotalDiskB.value);\n return new LESuccess({\n ratio: percentValue.toNumber(),\n total: systemTotalDiskB.value,\n used: systemUsedDiskB.value,\n });\n }\n};\n","// The type definitions for this file live in ./query.d.ts.\n\nimport _ from \"lodash\";\n\nimport { servicesLocator } from \"../services/services-locator\";\n\nexport function select(conn, sql, values, options) {\n const queryStart = self.performance.now();\n\n return new Promise((resolve, reject) => {\n let typeCast = true;\n if (options && options.typeCast !== undefined) {\n typeCast = options.typeCast;\n }\n\n let withFields = false;\n if (options && options.withFields !== undefined) {\n withFields = options.withFields;\n }\n\n return conn.query(\n { sql, values, typeCast },\n (\n error /*: Nullable*/,\n rows /*: Array*/,\n fields /*: Maybe*/\n ) => {\n if (error) {\n return reject(error);\n } else {\n servicesLocator\n .getLogger()\n .log(\n \"debug\",\n `[util/query::select] ${sql} took (ms)`,\n self.performance.now() - queryStart\n );\n\n if (withFields) {\n return resolve({ rows, fields });\n } else {\n return resolve(rows);\n }\n }\n }\n );\n });\n}\n\nexport function multiSelect(conn, ...queries) {\n return _.reduce(\n queries,\n (chain, query) =>\n chain.then((result) =>\n select(conn, query.sql, query.params).then((rows) => [\n ...result,\n rows,\n ])\n ),\n Promise.resolve([])\n );\n}\n\n// If any of the queries fails, the promise immediately rejects.\nexport function multiSelectParallel({ getConnection, queries }) {\n const promises = queries.map((query) => {\n return getConnection().then((conn) => {\n return select(conn, query.sql, query.params).finally(() => {\n conn.release();\n });\n });\n });\n\n return Promise.all(promises);\n}\n\nexport function multiSelectParallelWithErrors({ getConnection, queries }) {\n const promises = queries.map((query) => {\n return getConnection().then((conn) => {\n // We \"catch\" the error and resolve it so that the Promise.all below\n // doesn't stop on the first error. Instead, we want the errors to\n // be part of the resulting array.\n return select(conn, query.sql, query.params)\n .catch((err) => err)\n .finally(() => {\n conn.release();\n });\n });\n });\n\n return Promise.all(promises);\n}\n\n// `multiSelectWithErrors` is similar to `multiSelect` but instead of rejecting\n// on the first error, it returns errors to the caller along with rows.\nexport function multiSelectWithErrors(conn, ...queries) {\n return _.reduce(\n queries,\n (chain, query) =>\n chain.then((result) =>\n select(conn, query.sql, query.params)\n .then((rows) => [...result, rows])\n .catch((err) => [...result, err])\n ),\n Promise.resolve([])\n );\n}\n\n// Map the type 'MultiSelectErrorResult' into the result type and throws an\n// exception when an error occurs. A callback 'handleError' can be passed\n// whenever a custom error handling logic is needed\nexport function mapMultiSelectErrorResult(payload, handleError) {\n if (_.isError(payload)) {\n if (handleError) {\n return handleError(payload);\n } else {\n throw payload;\n }\n } else {\n return payload;\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\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","// This function was used when MemSQL Studio was still using Flow to merge\n// objects. It is no longer necessary and could be replaced with { ...a, ...b }\n// everywhere it's used. To avoid breaking git blame too much for now, we're\n// keeping this function as is.\nexport default function (a, ...b) {\n return Object.assign({}, a, ...b);\n}\n","'use strict';\n\nexports.__esModule = true;\nexports.defaultMemoize = defaultMemoize;\nexports.createSelectorCreator = createSelectorCreator;\nexports.createStructuredSelector = createStructuredSelector;\nfunction defaultEqualityCheck(a, b) {\n return a === b;\n}\n\nfunction areArgumentsShallowlyEqual(equalityCheck, prev, next) {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n }\n\n // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n var length = prev.length;\n for (var i = 0; i < length; i++) {\n if (!equalityCheck(prev[i], next[i])) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction defaultMemoize(func) {\n var equalityCheck = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultEqualityCheck;\n\n var lastArgs = null;\n var lastResult = null;\n // we reference arguments instead of spreading them for performance reasons\n return function () {\n if (!areArgumentsShallowlyEqual(equalityCheck, lastArgs, arguments)) {\n // apply arguments instead of spreading for performance.\n lastResult = func.apply(null, arguments);\n }\n\n lastArgs = arguments;\n return lastResult;\n };\n}\n\nfunction getDependencies(funcs) {\n var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n if (!dependencies.every(function (dep) {\n return typeof dep === 'function';\n })) {\n var dependencyTypes = dependencies.map(function (dep) {\n return typeof dep;\n }).join(', ');\n throw new Error('Selector creators expect all input-selectors to be functions, ' + ('instead received the following types: [' + dependencyTypes + ']'));\n }\n\n return dependencies;\n}\n\nfunction createSelectorCreator(memoize) {\n for (var _len = arguments.length, memoizeOptions = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n memoizeOptions[_key - 1] = arguments[_key];\n }\n\n return function () {\n for (var _len2 = arguments.length, funcs = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n funcs[_key2] = arguments[_key2];\n }\n\n var recomputations = 0;\n var resultFunc = funcs.pop();\n var dependencies = getDependencies(funcs);\n\n var memoizedResultFunc = memoize.apply(undefined, [function () {\n recomputations++;\n // apply arguments instead of spreading for performance.\n return resultFunc.apply(null, arguments);\n }].concat(memoizeOptions));\n\n // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\n var selector = defaultMemoize(function () {\n var params = [];\n var length = dependencies.length;\n\n for (var i = 0; i < length; i++) {\n // apply arguments instead of spreading and mutate a local list of params for performance.\n params.push(dependencies[i].apply(null, arguments));\n }\n\n // apply arguments instead of spreading for performance.\n return memoizedResultFunc.apply(null, params);\n });\n\n selector.resultFunc = resultFunc;\n selector.recomputations = function () {\n return recomputations;\n };\n selector.resetRecomputations = function () {\n return recomputations = 0;\n };\n return selector;\n };\n}\n\nvar createSelector = exports.createSelector = createSelectorCreator(defaultMemoize);\n\nfunction createStructuredSelector(selectors) {\n var selectorCreator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : createSelector;\n\n if (typeof selectors !== 'object') {\n throw new Error('createStructuredSelector expects first argument to be an object ' + ('where each property is a selector, instead received a ' + typeof selectors));\n }\n var objectKeys = Object.keys(selectors);\n return selectorCreator(objectKeys.map(function (key) {\n return selectors[key];\n }), function () {\n for (var _len3 = arguments.length, values = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n values[_key3] = arguments[_key3];\n }\n\n return values.reduce(function (composition, value, index) {\n composition[objectKeys[index]] = value;\n return composition;\n }, {});\n });\n}","/*\n * bignumber.js v9.0.0\n * A JavaScript library for arbitrary-precision arithmetic.\n * https://github.com/MikeMcl/bignumber.js\n * Copyright (c) 2019 Michael Mclaughlin \n * MIT Licensed.\n *\n * BigNumber.prototype methods | BigNumber methods\n * |\n * absoluteValue abs | clone\n * comparedTo | config set\n * decimalPlaces dp | DECIMAL_PLACES\n * dividedBy div | ROUNDING_MODE\n * dividedToIntegerBy idiv | EXPONENTIAL_AT\n * exponentiatedBy pow | RANGE\n * integerValue | CRYPTO\n * isEqualTo eq | MODULO_MODE\n * isFinite | POW_PRECISION\n * isGreaterThan gt | FORMAT\n * isGreaterThanOrEqualTo gte | ALPHABET\n * isInteger | isBigNumber\n * isLessThan lt | maximum max\n * isLessThanOrEqualTo lte | minimum min\n * isNaN | random\n * isNegative | sum\n * isPositive |\n * isZero |\n * minus |\n * modulo mod |\n * multipliedBy times |\n * negated |\n * plus |\n * precision sd |\n * shiftedBy |\n * squareRoot sqrt |\n * toExponential |\n * toFixed |\n * toFormat |\n * toFraction |\n * toJSON |\n * toNumber |\n * toPrecision |\n * toString |\n * valueOf |\n *\n */\n\nvar BigNumber,\n isNumeric = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i,\n mathceil = Math.ceil,\n mathfloor = Math.floor,\n bignumberError = \"[BigNumber Error] \",\n tooManyDigits =\n bignumberError +\n \"Number primitive has more than 15 significant digits: \",\n BASE = 1e14,\n LOG_BASE = 14,\n MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1\n // MAX_INT32 = 0x7fffffff, // 2^31 - 1\n POWS_TEN = [\n 1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13,\n ],\n SQRT_BASE = 1e7,\n // EDITABLE\n // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and\n // the arguments to toExponential, toFixed, toFormat, and toPrecision.\n MAX = 1e9; // 0 to MAX_INT32\n\n/*\n * Create and return a BigNumber constructor.\n */\nfunction clone(configObject) {\n var div,\n convertBase,\n parseNumeric,\n P = (BigNumber.prototype = {\n constructor: BigNumber,\n toString: null,\n valueOf: null,\n }),\n ONE = new BigNumber(1),\n //----------------------------- EDITABLE CONFIG DEFAULTS -------------------------------\n\n // The default values below must be integers within the inclusive ranges stated.\n // The values can also be changed at run-time using BigNumber.set.\n\n // The maximum number of decimal places for operations involving division.\n DECIMAL_PLACES = 20, // 0 to MAX\n // The rounding mode used when rounding to the above decimal places, and when using\n // toExponential, toFixed, toFormat and toPrecision, and round (default value).\n // UP 0 Away from zero.\n // DOWN 1 Towards zero.\n // CEIL 2 Towards +Infinity.\n // FLOOR 3 Towards -Infinity.\n // HALF_UP 4 Towards nearest neighbour. If equidistant, up.\n // HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\n // HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\n // HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\n // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\n ROUNDING_MODE = 4, // 0 to 8\n // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS]\n\n // The exponent value at and beneath which toString returns exponential notation.\n // Number type: -7\n TO_EXP_NEG = -7, // 0 to -MAX\n // The exponent value at and above which toString returns exponential notation.\n // Number type: 21\n TO_EXP_POS = 21, // 0 to MAX\n // RANGE : [MIN_EXP, MAX_EXP]\n\n // The minimum exponent value, beneath which underflow to zero occurs.\n // Number type: -324 (5e-324)\n MIN_EXP = -1e7, // -1 to -MAX\n // The maximum exponent value, above which overflow to Infinity occurs.\n // Number type: 308 (1.7976931348623157e+308)\n // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow.\n MAX_EXP = 1e7, // 1 to MAX\n // Whether to use cryptographically-secure random number generation, if available.\n CRYPTO = false, // true or false\n // The modulo mode used when calculating the modulus: a mod n.\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\n // The remainder (r) is calculated as: r = a - n * q.\n //\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\n // DOWN 1 The remainder has the same sign as the dividend.\n // This modulo mode is commonly known as 'truncated division' and is\n // equivalent to (a % n) in JavaScript.\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\n // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function.\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)).\n // The remainder is always positive.\n //\n // The truncated division, floored division, Euclidian division and IEEE 754 remainder\n // modes are commonly used for the modulus operation.\n // Although the other rounding modes can also be used, they may not give useful results.\n MODULO_MODE = 1, // 0 to 9\n // The maximum number of significant digits of the result of the exponentiatedBy operation.\n // If POW_PRECISION is 0, there will be unlimited significant digits.\n POW_PRECISION = 0, // 0 to MAX\n // The format specification used by the BigNumber.prototype.toFormat method.\n FORMAT = {\n prefix: \"\",\n groupSize: 3,\n secondaryGroupSize: 0,\n groupSeparator: \",\",\n decimalSeparator: \".\",\n fractionGroupSize: 0,\n fractionGroupSeparator: \"\\xA0\", // non-breaking space\n suffix: \"\",\n },\n // The alphabet used for base conversion. It must be at least 2 characters long, with no '+',\n // '-', '.', whitespace, or repeated character.\n // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'\n ALPHABET = \"0123456789abcdefghijklmnopqrstuvwxyz\";\n\n //------------------------------------------------------------------------------------------\n\n // CONSTRUCTOR\n\n /*\n * The BigNumber constructor and exported function.\n * Create and return a new instance of a BigNumber object.\n *\n * v {number|string|BigNumber} A numeric value.\n * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive.\n */\n function BigNumber(v, b) {\n var alphabet,\n c,\n caseChanged,\n e,\n i,\n isNum,\n len,\n str,\n x = this;\n\n // Enable constructor call without `new`.\n if (!(x instanceof BigNumber)) return new BigNumber(v, b);\n\n if (b == null) {\n if (v && v._isBigNumber === true) {\n x.s = v.s;\n\n if (!v.c || v.e > MAX_EXP) {\n x.c = x.e = null;\n } else if (v.e < MIN_EXP) {\n x.c = [(x.e = 0)];\n } else {\n x.e = v.e;\n x.c = v.c.slice();\n }\n\n return;\n }\n\n if ((isNum = typeof v == \"number\") && v * 0 == 0) {\n // Use `1 / n` to handle minus zero also.\n x.s = 1 / v < 0 ? ((v = -v), -1) : 1;\n\n // Fast path for integers, where n < 2147483648 (2**31).\n if (v === ~~v) {\n for (e = 0, i = v; i >= 10; i /= 10, e++);\n\n if (e > MAX_EXP) {\n x.c = x.e = null;\n } else {\n x.e = e;\n x.c = [v];\n }\n\n return;\n }\n\n str = String(v);\n } else {\n if (!isNumeric.test((str = String(v))))\n return parseNumeric(x, str, isNum);\n\n x.s = str.charCodeAt(0) == 45 ? ((str = str.slice(1)), -1) : 1;\n }\n\n // Decimal point?\n if ((e = str.indexOf(\".\")) > -1) str = str.replace(\".\", \"\");\n\n // Exponential form?\n if ((i = str.search(/e/i)) > 0) {\n // Determine exponent.\n if (e < 0) e = i;\n e += +str.slice(i + 1);\n str = str.substring(0, i);\n } else if (e < 0) {\n // Integer.\n e = str.length;\n }\n } else {\n // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\n intCheck(b, 2, ALPHABET.length, \"Base\");\n\n // Allow exponential notation to be used with base 10 argument, while\n // also rounding to DECIMAL_PLACES as with other bases.\n if (b == 10) {\n x = new BigNumber(v);\n return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);\n }\n\n str = String(v);\n\n if ((isNum = typeof v == \"number\")) {\n // Avoid potential interpretation of Infinity and NaN as base 44+ values.\n if (v * 0 != 0) return parseNumeric(x, str, isNum, b);\n\n x.s = 1 / v < 0 ? ((str = str.slice(1)), -1) : 1;\n\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\n if (\n BigNumber.DEBUG &&\n str.replace(/^0\\.0*|\\./, \"\").length > 15\n ) {\n throw Error(tooManyDigits + v);\n }\n } else {\n x.s = str.charCodeAt(0) === 45 ? ((str = str.slice(1)), -1) : 1;\n }\n\n alphabet = ALPHABET.slice(0, b);\n e = i = 0;\n\n // Check that str is a valid base b number.\n // Don't use RegExp, so alphabet can contain special characters.\n for (len = str.length; i < len; i++) {\n if (alphabet.indexOf((c = str.charAt(i))) < 0) {\n if (c == \".\") {\n // If '.' is not the first character and it has not be found before.\n if (i > e) {\n e = len;\n continue;\n }\n } else if (!caseChanged) {\n // Allow e.g. hexadecimal 'FF' as well as 'ff'.\n if (\n (str == str.toUpperCase() &&\n (str = str.toLowerCase())) ||\n (str == str.toLowerCase() &&\n (str = str.toUpperCase()))\n ) {\n caseChanged = true;\n i = -1;\n e = 0;\n continue;\n }\n }\n\n return parseNumeric(x, String(v), isNum, b);\n }\n }\n\n // Prevent later check for length on converted number.\n isNum = false;\n str = convertBase(str, b, 10, x.s);\n\n // Decimal point?\n if ((e = str.indexOf(\".\")) > -1) str = str.replace(\".\", \"\");\n else e = str.length;\n }\n\n // Determine leading zeros.\n for (i = 0; str.charCodeAt(i) === 48; i++);\n\n // Determine trailing zeros.\n for (len = str.length; str.charCodeAt(--len) === 48; );\n\n if ((str = str.slice(i, ++len))) {\n len -= i;\n\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\n if (\n isNum &&\n BigNumber.DEBUG &&\n len > 15 &&\n (v > MAX_SAFE_INTEGER || v !== mathfloor(v))\n ) {\n throw Error(tooManyDigits + x.s * v);\n }\n\n // Overflow?\n if ((e = e - i - 1) > MAX_EXP) {\n // Infinity.\n x.c = x.e = null;\n\n // Underflow?\n } else if (e < MIN_EXP) {\n // Zero.\n x.c = [(x.e = 0)];\n } else {\n x.e = e;\n x.c = [];\n\n // Transform base\n\n // e is the base 10 exponent.\n // i is where to slice str to get the first element of the coefficient array.\n i = (e + 1) % LOG_BASE;\n if (e < 0) i += LOG_BASE; // i < 1\n\n if (i < len) {\n if (i) x.c.push(+str.slice(0, i));\n\n for (len -= LOG_BASE; i < len; ) {\n x.c.push(+str.slice(i, (i += LOG_BASE)));\n }\n\n i = LOG_BASE - (str = str.slice(i)).length;\n } else {\n i -= len;\n }\n\n for (; i--; str += \"0\");\n x.c.push(+str);\n }\n } else {\n // Zero.\n x.c = [(x.e = 0)];\n }\n }\n\n // CONSTRUCTOR PROPERTIES\n\n BigNumber.clone = clone;\n\n BigNumber.ROUND_UP = 0;\n BigNumber.ROUND_DOWN = 1;\n BigNumber.ROUND_CEIL = 2;\n BigNumber.ROUND_FLOOR = 3;\n BigNumber.ROUND_HALF_UP = 4;\n BigNumber.ROUND_HALF_DOWN = 5;\n BigNumber.ROUND_HALF_EVEN = 6;\n BigNumber.ROUND_HALF_CEIL = 7;\n BigNumber.ROUND_HALF_FLOOR = 8;\n BigNumber.EUCLID = 9;\n\n /*\n * Configure infrequently-changing library-wide settings.\n *\n * Accept an object with the following optional properties (if the value of a property is\n * a number, it must be an integer within the inclusive range stated):\n *\n * DECIMAL_PLACES {number} 0 to MAX\n * ROUNDING_MODE {number} 0 to 8\n * EXPONENTIAL_AT {number|number[]} -MAX to MAX or [-MAX to 0, 0 to MAX]\n * RANGE {number|number[]} -MAX to MAX (not zero) or [-MAX to -1, 1 to MAX]\n * CRYPTO {boolean} true or false\n * MODULO_MODE {number} 0 to 9\n * POW_PRECISION {number} 0 to MAX\n * ALPHABET {string} A string of two or more unique characters which does\n * not contain '.'.\n * FORMAT {object} An object with some of the following properties:\n * prefix {string}\n * groupSize {number}\n * secondaryGroupSize {number}\n * groupSeparator {string}\n * decimalSeparator {string}\n * fractionGroupSize {number}\n * fractionGroupSeparator {string}\n * suffix {string}\n *\n * (The values assigned to the above FORMAT object properties are not checked for validity.)\n *\n * E.g.\n * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 })\n *\n * Ignore properties/parameters set to null or undefined, except for ALPHABET.\n *\n * Return an object with the properties current values.\n */\n BigNumber.config = BigNumber.set = function (obj) {\n var p, v;\n\n if (obj != null) {\n if (typeof obj == \"object\") {\n // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive.\n // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}'\n if (obj.hasOwnProperty((p = \"DECIMAL_PLACES\"))) {\n v = obj[p];\n intCheck(v, 0, MAX, p);\n DECIMAL_PLACES = v;\n }\n\n // ROUNDING_MODE {number} Integer, 0 to 8 inclusive.\n // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}'\n if (obj.hasOwnProperty((p = \"ROUNDING_MODE\"))) {\n v = obj[p];\n intCheck(v, 0, 8, p);\n ROUNDING_MODE = v;\n }\n\n // EXPONENTIAL_AT {number|number[]}\n // Integer, -MAX to MAX inclusive or\n // [integer -MAX to 0 inclusive, 0 to MAX inclusive].\n // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}'\n if (obj.hasOwnProperty((p = \"EXPONENTIAL_AT\"))) {\n v = obj[p];\n if (v && v.pop) {\n intCheck(v[0], -MAX, 0, p);\n intCheck(v[1], 0, MAX, p);\n TO_EXP_NEG = v[0];\n TO_EXP_POS = v[1];\n } else {\n intCheck(v, -MAX, MAX, p);\n TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v);\n }\n }\n\n // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or\n // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive].\n // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}'\n if (obj.hasOwnProperty((p = \"RANGE\"))) {\n v = obj[p];\n if (v && v.pop) {\n intCheck(v[0], -MAX, -1, p);\n intCheck(v[1], 1, MAX, p);\n MIN_EXP = v[0];\n MAX_EXP = v[1];\n } else {\n intCheck(v, -MAX, MAX, p);\n if (v) {\n MIN_EXP = -(MAX_EXP = v < 0 ? -v : v);\n } else {\n throw Error(\n bignumberError + p + \" cannot be zero: \" + v\n );\n }\n }\n }\n\n // CRYPTO {boolean} true or false.\n // '[BigNumber Error] CRYPTO not true or false: {v}'\n // '[BigNumber Error] crypto unavailable'\n if (obj.hasOwnProperty((p = \"CRYPTO\"))) {\n v = obj[p];\n if (v === !!v) {\n if (v) {\n if (\n typeof crypto != \"undefined\" &&\n crypto &&\n (crypto.getRandomValues || crypto.randomBytes)\n ) {\n CRYPTO = v;\n } else {\n CRYPTO = !v;\n throw Error(\n bignumberError + \"crypto unavailable\"\n );\n }\n } else {\n CRYPTO = v;\n }\n } else {\n throw Error(\n bignumberError + p + \" not true or false: \" + v\n );\n }\n }\n\n // MODULO_MODE {number} Integer, 0 to 9 inclusive.\n // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}'\n if (obj.hasOwnProperty((p = \"MODULO_MODE\"))) {\n v = obj[p];\n intCheck(v, 0, 9, p);\n MODULO_MODE = v;\n }\n\n // POW_PRECISION {number} Integer, 0 to MAX inclusive.\n // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}'\n if (obj.hasOwnProperty((p = \"POW_PRECISION\"))) {\n v = obj[p];\n intCheck(v, 0, MAX, p);\n POW_PRECISION = v;\n }\n\n // FORMAT {object}\n // '[BigNumber Error] FORMAT not an object: {v}'\n if (obj.hasOwnProperty((p = \"FORMAT\"))) {\n v = obj[p];\n if (typeof v == \"object\") FORMAT = v;\n else\n throw Error(\n bignumberError + p + \" not an object: \" + v\n );\n }\n\n // ALPHABET {string}\n // '[BigNumber Error] ALPHABET invalid: {v}'\n if (obj.hasOwnProperty((p = \"ALPHABET\"))) {\n v = obj[p];\n\n // Disallow if only one character,\n // or if it contains '+', '-', '.', whitespace, or a repeated character.\n if (\n typeof v == \"string\" &&\n !/^.$|[+-.\\s]|(.).*\\1/.test(v)\n ) {\n ALPHABET = v;\n } else {\n throw Error(bignumberError + p + \" invalid: \" + v);\n }\n }\n } else {\n // '[BigNumber Error] Object expected: {v}'\n throw Error(bignumberError + \"Object expected: \" + obj);\n }\n }\n\n return {\n DECIMAL_PLACES: DECIMAL_PLACES,\n ROUNDING_MODE: ROUNDING_MODE,\n EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],\n RANGE: [MIN_EXP, MAX_EXP],\n CRYPTO: CRYPTO,\n MODULO_MODE: MODULO_MODE,\n POW_PRECISION: POW_PRECISION,\n FORMAT: FORMAT,\n ALPHABET: ALPHABET,\n };\n };\n\n /*\n * Return true if v is a BigNumber instance, otherwise return false.\n *\n * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed.\n *\n * v {any}\n *\n * '[BigNumber Error] Invalid BigNumber: {v}'\n */\n BigNumber.isBigNumber = function (v) {\n if (!v || v._isBigNumber !== true) return false;\n if (!BigNumber.DEBUG) return true;\n\n var i,\n n,\n c = v.c,\n e = v.e,\n s = v.s;\n\n out: if ({}.toString.call(c) == \"[object Array]\") {\n if (\n (s === 1 || s === -1) &&\n e >= -MAX &&\n e <= MAX &&\n e === mathfloor(e)\n ) {\n // If the first element is zero, the BigNumber value must be zero.\n if (c[0] === 0) {\n if (e === 0 && c.length === 1) return true;\n break out;\n }\n\n // Calculate number of digits that c[0] should have, based on the exponent.\n i = (e + 1) % LOG_BASE;\n if (i < 1) i += LOG_BASE;\n\n // Calculate number of digits of c[0].\n //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) {\n if (String(c[0]).length == i) {\n for (i = 0; i < c.length; i++) {\n n = c[i];\n if (n < 0 || n >= BASE || n !== mathfloor(n)) break out;\n }\n\n // Last element cannot be zero, unless it is the only element.\n if (n !== 0) return true;\n }\n }\n\n // Infinity/NaN\n } else if (\n c === null &&\n e === null &&\n (s === null || s === 1 || s === -1)\n ) {\n return true;\n }\n\n throw Error(bignumberError + \"Invalid BigNumber: \" + v);\n };\n\n /*\n * Return a new BigNumber whose value is the maximum of the arguments.\n *\n * arguments {number|string|BigNumber}\n */\n BigNumber.maximum = BigNumber.max = function () {\n return maxOrMin(arguments, P.lt);\n };\n\n /*\n * Return a new BigNumber whose value is the minimum of the arguments.\n *\n * arguments {number|string|BigNumber}\n */\n BigNumber.minimum = BigNumber.min = function () {\n return maxOrMin(arguments, P.gt);\n };\n\n /*\n * Return a new BigNumber with a random value equal to or greater than 0 and less than 1,\n * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing\n * zeros are produced).\n *\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\n *\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}'\n * '[BigNumber Error] crypto unavailable'\n */\n BigNumber.random = (function () {\n var pow2_53 = 0x20000000000000;\n\n // Return a 53 bit integer n, where 0 <= n < 9007199254740992.\n // Check if Math.random() produces more than 32 bits of randomness.\n // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits.\n // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1.\n var random53bitInt =\n (Math.random() * pow2_53) & 0x1fffff\n ? function () {\n return mathfloor(Math.random() * pow2_53);\n }\n : function () {\n return (\n ((Math.random() * 0x40000000) | 0) * 0x800000 +\n ((Math.random() * 0x800000) | 0)\n );\n };\n\n return function (dp) {\n var a,\n b,\n e,\n k,\n v,\n i = 0,\n c = [],\n rand = new BigNumber(ONE);\n\n if (dp == null) dp = DECIMAL_PLACES;\n else intCheck(dp, 0, MAX);\n\n k = mathceil(dp / LOG_BASE);\n\n if (CRYPTO) {\n // Browsers supporting crypto.getRandomValues.\n if (crypto.getRandomValues) {\n a = crypto.getRandomValues(new Uint32Array((k *= 2)));\n\n for (; i < k; ) {\n // 53 bits:\n // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2)\n // 11111 11111111 11111111 11111111 11100000 00000000 00000000\n // ((Math.pow(2, 32) - 1) >>> 11).toString(2)\n // 11111 11111111 11111111\n // 0x20000 is 2^21.\n v = a[i] * 0x20000 + (a[i + 1] >>> 11);\n\n // Rejection sampling:\n // 0 <= v < 9007199254740992\n // Probability that v >= 9e15, is\n // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251\n if (v >= 9e15) {\n b = crypto.getRandomValues(new Uint32Array(2));\n a[i] = b[0];\n a[i + 1] = b[1];\n } else {\n // 0 <= v <= 8999999999999999\n // 0 <= (v % 1e14) <= 99999999999999\n c.push(v % 1e14);\n i += 2;\n }\n }\n i = k / 2;\n\n // Node.js supporting crypto.randomBytes.\n } else if (crypto.randomBytes) {\n // buffer\n a = crypto.randomBytes((k *= 7));\n\n for (; i < k; ) {\n // 0x1000000000000 is 2^48, 0x10000000000 is 2^40\n // 0x100000000 is 2^32, 0x1000000 is 2^24\n // 11111 11111111 11111111 11111111 11111111 11111111 11111111\n // 0 <= v < 9007199254740992\n v =\n (a[i] & 31) * 0x1000000000000 +\n a[i + 1] * 0x10000000000 +\n a[i + 2] * 0x100000000 +\n a[i + 3] * 0x1000000 +\n (a[i + 4] << 16) +\n (a[i + 5] << 8) +\n a[i + 6];\n\n if (v >= 9e15) {\n crypto.randomBytes(7).copy(a, i);\n } else {\n // 0 <= (v % 1e14) <= 99999999999999\n c.push(v % 1e14);\n i += 7;\n }\n }\n i = k / 7;\n } else {\n CRYPTO = false;\n throw Error(bignumberError + \"crypto unavailable\");\n }\n }\n\n // Use Math.random.\n if (!CRYPTO) {\n for (; i < k; ) {\n v = random53bitInt();\n if (v < 9e15) c[i++] = v % 1e14;\n }\n }\n\n k = c[--i];\n dp %= LOG_BASE;\n\n // Convert trailing digits to zeros according to dp.\n if (k && dp) {\n v = POWS_TEN[LOG_BASE - dp];\n c[i] = mathfloor(k / v) * v;\n }\n\n // Remove trailing elements which are zero.\n for (; c[i] === 0; c.pop(), i--);\n\n // Zero?\n if (i < 0) {\n c = [(e = 0)];\n } else {\n // Remove leading elements which are zero and adjust exponent accordingly.\n for (e = -1; c[0] === 0; c.splice(0, 1), e -= LOG_BASE);\n\n // Count the digits of the first element of c to determine leading zeros, and...\n for (i = 1, v = c[0]; v >= 10; v /= 10, i++);\n\n // adjust the exponent accordingly.\n if (i < LOG_BASE) e -= LOG_BASE - i;\n }\n\n rand.e = e;\n rand.c = c;\n return rand;\n };\n })();\n\n /*\n * Return a BigNumber whose value is the sum of the arguments.\n *\n * arguments {number|string|BigNumber}\n */\n BigNumber.sum = function () {\n var i = 1,\n args = arguments,\n sum = new BigNumber(args[0]);\n for (; i < args.length; ) sum = sum.plus(args[i++]);\n return sum;\n };\n\n // PRIVATE FUNCTIONS\n\n // Called by BigNumber and BigNumber.prototype.toString.\n convertBase = (function () {\n var decimal = \"0123456789\";\n\n /*\n * Convert string of baseIn to an array of numbers of baseOut.\n * Eg. toBaseOut('255', 10, 16) returns [15, 15].\n * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5].\n */\n function toBaseOut(str, baseIn, baseOut, alphabet) {\n var j,\n arr = [0],\n arrL,\n i = 0,\n len = str.length;\n\n for (; i < len; ) {\n for (arrL = arr.length; arrL--; arr[arrL] *= baseIn);\n\n arr[0] += alphabet.indexOf(str.charAt(i++));\n\n for (j = 0; j < arr.length; j++) {\n if (arr[j] > baseOut - 1) {\n if (arr[j + 1] == null) arr[j + 1] = 0;\n arr[j + 1] += (arr[j] / baseOut) | 0;\n arr[j] %= baseOut;\n }\n }\n }\n\n return arr.reverse();\n }\n\n // Convert a numeric string of baseIn to a numeric string of baseOut.\n // If the caller is toString, we are converting from base 10 to baseOut.\n // If the caller is BigNumber, we are converting from baseIn to base 10.\n return function (str, baseIn, baseOut, sign, callerIsToString) {\n var alphabet,\n d,\n e,\n k,\n r,\n x,\n xc,\n y,\n i = str.indexOf(\".\"),\n dp = DECIMAL_PLACES,\n rm = ROUNDING_MODE;\n\n // Non-integer.\n if (i >= 0) {\n k = POW_PRECISION;\n\n // Unlimited precision.\n POW_PRECISION = 0;\n str = str.replace(\".\", \"\");\n y = new BigNumber(baseIn);\n x = y.pow(str.length - i);\n POW_PRECISION = k;\n\n // Convert str as if an integer, then restore the fraction part by dividing the\n // result by its base raised to a power.\n\n y.c = toBaseOut(\n toFixedPoint(coeffToString(x.c), x.e, \"0\"),\n 10,\n baseOut,\n decimal\n );\n y.e = y.c.length;\n }\n\n // Convert the number as integer.\n\n xc = toBaseOut(\n str,\n baseIn,\n baseOut,\n callerIsToString\n ? ((alphabet = ALPHABET), decimal)\n : ((alphabet = decimal), ALPHABET)\n );\n\n // xc now represents str as an integer and converted to baseOut. e is the exponent.\n e = k = xc.length;\n\n // Remove trailing zeros.\n for (; xc[--k] == 0; xc.pop());\n\n // Zero?\n if (!xc[0]) return alphabet.charAt(0);\n\n // Does str represent an integer? If so, no need for the division.\n if (i < 0) {\n --e;\n } else {\n x.c = xc;\n x.e = e;\n\n // The sign is needed for correct rounding.\n x.s = sign;\n x = div(x, y, dp, rm, baseOut);\n xc = x.c;\n r = x.r;\n e = x.e;\n }\n\n // xc now represents str converted to baseOut.\n\n // THe index of the rounding digit.\n d = e + dp + 1;\n\n // The rounding digit: the digit to the right of the digit that may be rounded up.\n i = xc[d];\n\n // Look at the rounding digits and mode to determine whether to round up.\n\n k = baseOut / 2;\n r = r || d < 0 || xc[d + 1] != null;\n\n r =\n rm < 4\n ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\n : i > k ||\n (i == k &&\n (rm == 4 ||\n r ||\n (rm == 6 && xc[d - 1] & 1) ||\n rm == (x.s < 0 ? 8 : 7)));\n\n // If the index of the rounding digit is not greater than zero, or xc represents\n // zero, then the result of the base conversion is zero or, if rounding up, a value\n // such as 0.00001.\n if (d < 1 || !xc[0]) {\n // 1^-dp or 0\n str = r\n ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0))\n : alphabet.charAt(0);\n } else {\n // Truncate xc to the required number of decimal places.\n xc.length = d;\n\n // Round up?\n if (r) {\n // Rounding up may mean the previous digit has to be rounded up and so on.\n for (--baseOut; ++xc[--d] > baseOut; ) {\n xc[d] = 0;\n\n if (!d) {\n ++e;\n xc = [1].concat(xc);\n }\n }\n }\n\n // Determine trailing zeros.\n for (k = xc.length; !xc[--k]; );\n\n // E.g. [4, 11, 15] becomes 4bf.\n for (i = 0, str = \"\"; i <= k; str += alphabet.charAt(xc[i++]));\n\n // Add leading zeros, decimal point and trailing zeros as required.\n str = toFixedPoint(str, e, alphabet.charAt(0));\n }\n\n // The caller will add the sign.\n return str;\n };\n })();\n\n // Perform division in the specified base. Called by div and convertBase.\n div = (function () {\n // Assume non-zero x and k.\n function multiply(x, k, base) {\n var m,\n temp,\n xlo,\n xhi,\n carry = 0,\n i = x.length,\n klo = k % SQRT_BASE,\n khi = (k / SQRT_BASE) | 0;\n\n for (x = x.slice(); i--; ) {\n xlo = x[i] % SQRT_BASE;\n xhi = (x[i] / SQRT_BASE) | 0;\n m = khi * xlo + xhi * klo;\n temp = klo * xlo + (m % SQRT_BASE) * SQRT_BASE + carry;\n carry = ((temp / base) | 0) + ((m / SQRT_BASE) | 0) + khi * xhi;\n x[i] = temp % base;\n }\n\n if (carry) x = [carry].concat(x);\n\n return x;\n }\n\n function compare(a, b, aL, bL) {\n var i, cmp;\n\n if (aL != bL) {\n cmp = aL > bL ? 1 : -1;\n } else {\n for (i = cmp = 0; i < aL; i++) {\n if (a[i] != b[i]) {\n cmp = a[i] > b[i] ? 1 : -1;\n break;\n }\n }\n }\n\n return cmp;\n }\n\n function subtract(a, b, aL, base) {\n var i = 0;\n\n // Subtract b from a.\n for (; aL--; ) {\n a[aL] -= i;\n i = a[aL] < b[aL] ? 1 : 0;\n a[aL] = i * base + a[aL] - b[aL];\n }\n\n // Remove leading zeros.\n for (; !a[0] && a.length > 1; a.splice(0, 1));\n }\n\n // x: dividend, y: divisor.\n return function (x, y, dp, rm, base) {\n var cmp,\n e,\n i,\n more,\n n,\n prod,\n prodL,\n q,\n qc,\n rem,\n remL,\n rem0,\n xi,\n xL,\n yc0,\n yL,\n yz,\n s = x.s == y.s ? 1 : -1,\n xc = x.c,\n yc = y.c;\n\n // Either NaN, Infinity or 0?\n if (!xc || !xc[0] || !yc || !yc[0]) {\n return new BigNumber(\n // Return NaN if either NaN, or both Infinity or 0.\n !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc)\n ? NaN\n : // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0.\n (xc && xc[0] == 0) || !yc\n ? s * 0\n : s / 0\n );\n }\n\n q = new BigNumber(s);\n qc = q.c = [];\n e = x.e - y.e;\n s = dp + e + 1;\n\n if (!base) {\n base = BASE;\n e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);\n s = (s / LOG_BASE) | 0;\n }\n\n // Result exponent may be one less then the current value of e.\n // The coefficients of the BigNumbers from convertBase may have trailing zeros.\n for (i = 0; yc[i] == (xc[i] || 0); i++);\n\n if (yc[i] > (xc[i] || 0)) e--;\n\n if (s < 0) {\n qc.push(1);\n more = true;\n } else {\n xL = xc.length;\n yL = yc.length;\n i = 0;\n s += 2;\n\n // Normalise xc and yc so highest order digit of yc is >= base / 2.\n\n n = mathfloor(base / (yc[0] + 1));\n\n // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1.\n // if (n > 1 || n++ == 1 && yc[0] < base / 2) {\n if (n > 1) {\n yc = multiply(yc, n, base);\n xc = multiply(xc, n, base);\n yL = yc.length;\n xL = xc.length;\n }\n\n xi = yL;\n rem = xc.slice(0, yL);\n remL = rem.length;\n\n // Add zeros to make remainder as long as divisor.\n for (; remL < yL; rem[remL++] = 0);\n yz = yc.slice();\n yz = [0].concat(yz);\n yc0 = yc[0];\n if (yc[1] >= base / 2) yc0++;\n // Not necessary, but to prevent trial digit n > base, when using base 3.\n // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15;\n\n do {\n n = 0;\n\n // Compare divisor and remainder.\n cmp = compare(yc, rem, yL, remL);\n\n // If divisor < remainder.\n if (cmp < 0) {\n // Calculate trial digit, n.\n\n rem0 = rem[0];\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\n\n // n is how many times the divisor goes into the current remainder.\n n = mathfloor(rem0 / yc0);\n\n // Algorithm:\n // product = divisor multiplied by trial digit (n).\n // Compare product and remainder.\n // If product is greater than remainder:\n // Subtract divisor from product, decrement trial digit.\n // Subtract product from remainder.\n // If product was less than remainder at the last compare:\n // Compare new remainder and divisor.\n // If remainder is greater than divisor:\n // Subtract divisor from remainder, increment trial digit.\n\n if (n > 1) {\n // n may be > base only when base is 3.\n if (n >= base) n = base - 1;\n\n // product = divisor * trial digit.\n prod = multiply(yc, n, base);\n prodL = prod.length;\n remL = rem.length;\n\n // Compare product and remainder.\n // If product > remainder then trial digit n too high.\n // n is 1 too high about 5% of the time, and is not known to have\n // ever been more than 1 too high.\n while (compare(prod, rem, prodL, remL) == 1) {\n n--;\n\n // Subtract divisor from product.\n subtract(\n prod,\n yL < prodL ? yz : yc,\n prodL,\n base\n );\n prodL = prod.length;\n cmp = 1;\n }\n } else {\n // n is 0 or 1, cmp is -1.\n // If n is 0, there is no need to compare yc and rem again below,\n // so change cmp to 1 to avoid it.\n // If n is 1, leave cmp as -1, so yc and rem are compared again.\n if (n == 0) {\n // divisor < remainder, so n must be at least 1.\n cmp = n = 1;\n }\n\n // product = divisor\n prod = yc.slice();\n prodL = prod.length;\n }\n\n if (prodL < remL) prod = [0].concat(prod);\n\n // Subtract product from remainder.\n subtract(rem, prod, remL, base);\n remL = rem.length;\n\n // If product was < remainder.\n if (cmp == -1) {\n // Compare divisor and new remainder.\n // If divisor < new remainder, subtract divisor from remainder.\n // Trial digit n too low.\n // n is 1 too low about 5% of the time, and very rarely 2 too low.\n while (compare(yc, rem, yL, remL) < 1) {\n n++;\n\n // Subtract divisor from remainder.\n subtract(rem, yL < remL ? yz : yc, remL, base);\n remL = rem.length;\n }\n }\n } else if (cmp === 0) {\n n++;\n rem = [0];\n } // else cmp === 1 and n will be 0\n\n // Add the next digit, n, to the result array.\n qc[i++] = n;\n\n // Update the remainder.\n if (rem[0]) {\n rem[remL++] = xc[xi] || 0;\n } else {\n rem = [xc[xi]];\n remL = 1;\n }\n } while ((xi++ < xL || rem[0] != null) && s--);\n\n more = rem[0] != null;\n\n // Leading zero?\n if (!qc[0]) qc.splice(0, 1);\n }\n\n if (base == BASE) {\n // To calculate q.e, first get the number of digits of qc[0].\n for (i = 1, s = qc[0]; s >= 10; s /= 10, i++);\n\n round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);\n\n // Caller is convertBase.\n } else {\n q.e = e;\n q.r = +more;\n }\n\n return q;\n };\n })();\n\n /*\n * Return a string representing the value of BigNumber n in fixed-point or exponential\n * notation rounded to the specified decimal places or significant digits.\n *\n * n: a BigNumber.\n * i: the index of the last digit required (i.e. the digit that may be rounded up).\n * rm: the rounding mode.\n * id: 1 (toExponential) or 2 (toPrecision).\n */\n function format(n, i, rm, id) {\n var c0, e, ne, len, str;\n\n if (rm == null) rm = ROUNDING_MODE;\n else intCheck(rm, 0, 8);\n\n if (!n.c) return n.toString();\n\n c0 = n.c[0];\n ne = n.e;\n\n if (i == null) {\n str = coeffToString(n.c);\n str =\n id == 1 || (id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS))\n ? toExponential(str, ne)\n : toFixedPoint(str, ne, \"0\");\n } else {\n n = round(new BigNumber(n), i, rm);\n\n // n.e may have changed if the value was rounded up.\n e = n.e;\n\n str = coeffToString(n.c);\n len = str.length;\n\n // toPrecision returns exponential notation if the number of significant digits\n // specified is less than the number of digits necessary to represent the integer\n // part of the value in fixed-point notation.\n\n // Exponential notation.\n if (id == 1 || (id == 2 && (i <= e || e <= TO_EXP_NEG))) {\n // Append zeros?\n for (; len < i; str += \"0\", len++);\n str = toExponential(str, e);\n\n // Fixed-point notation.\n } else {\n i -= ne;\n str = toFixedPoint(str, e, \"0\");\n\n // Append zeros?\n if (e + 1 > len) {\n if (--i > 0) for (str += \".\"; i--; str += \"0\");\n } else {\n i += e - len;\n if (i > 0) {\n if (e + 1 == len) str += \".\";\n for (; i--; str += \"0\");\n }\n }\n }\n }\n\n return n.s < 0 && c0 ? \"-\" + str : str;\n }\n\n // Handle BigNumber.max and BigNumber.min.\n function maxOrMin(args, method) {\n var n,\n i = 1,\n m = new BigNumber(args[0]);\n\n for (; i < args.length; i++) {\n n = new BigNumber(args[i]);\n\n // If any number is NaN, return NaN.\n if (!n.s) {\n m = n;\n break;\n } else if (method.call(m, n)) {\n m = n;\n }\n }\n\n return m;\n }\n\n /*\n * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP.\n * Called by minus, plus and times.\n */\n function normalise(n, c, e) {\n var i = 1,\n j = c.length;\n\n // Remove trailing zeros.\n for (; !c[--j]; c.pop());\n\n // Calculate the base 10 exponent. First get the number of digits of c[0].\n for (j = c[0]; j >= 10; j /= 10, i++);\n\n // Overflow?\n if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {\n // Infinity.\n n.c = n.e = null;\n\n // Underflow?\n } else if (e < MIN_EXP) {\n // Zero.\n n.c = [(n.e = 0)];\n } else {\n n.e = e;\n n.c = c;\n }\n\n return n;\n }\n\n // Handle values that fail the validity test in BigNumber.\n parseNumeric = (function () {\n var basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i,\n dotAfter = /^([^.]+)\\.$/,\n dotBefore = /^\\.([^.]+)$/,\n isInfinityOrNaN = /^-?(Infinity|NaN)$/,\n whitespaceOrPlus = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\n\n return function (x, str, isNum, b) {\n var base,\n s = isNum ? str : str.replace(whitespaceOrPlus, \"\");\n\n // No exception on ±Infinity or NaN.\n if (isInfinityOrNaN.test(s)) {\n x.s = isNaN(s) ? null : s < 0 ? -1 : 1;\n } else {\n if (!isNum) {\n // basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i\n s = s.replace(basePrefix, function (m, p1, p2) {\n base =\n (p2 = p2.toLowerCase()) == \"x\"\n ? 16\n : p2 == \"b\"\n ? 2\n : 8;\n return !b || b == base ? p1 : m;\n });\n\n if (b) {\n base = b;\n\n // E.g. '1.' to '1', '.1' to '0.1'\n s = s\n .replace(dotAfter, \"$1\")\n .replace(dotBefore, \"0.$1\");\n }\n\n if (str != s) return new BigNumber(s, base);\n }\n\n // '[BigNumber Error] Not a number: {n}'\n // '[BigNumber Error] Not a base {b} number: {n}'\n if (BigNumber.DEBUG) {\n throw Error(\n bignumberError +\n \"Not a\" +\n (b ? \" base \" + b : \"\") +\n \" number: \" +\n str\n );\n }\n\n // NaN\n x.s = null;\n }\n\n x.c = x.e = null;\n };\n })();\n\n /*\n * Round x to sd significant digits using rounding mode rm. Check for over/under-flow.\n * If r is truthy, it is known that there are more digits after the rounding digit.\n */\n function round(x, sd, rm, r) {\n var d,\n i,\n j,\n k,\n n,\n ni,\n rd,\n xc = x.c,\n pows10 = POWS_TEN;\n\n // if x is not Infinity or NaN...\n if (xc) {\n // rd is the rounding digit, i.e. the digit after the digit that may be rounded up.\n // n is a base 1e14 number, the value of the element of array x.c containing rd.\n // ni is the index of n within x.c.\n // d is the number of digits of n.\n // i is the index of rd within n including leading zeros.\n // j is the actual index of rd within n (if < 0, rd is a leading zero).\n out: {\n // Get the number of digits of the first element of xc.\n for (d = 1, k = xc[0]; k >= 10; k /= 10, d++);\n i = sd - d;\n\n // If the rounding digit is in the first element of xc...\n if (i < 0) {\n i += LOG_BASE;\n j = sd;\n n = xc[(ni = 0)];\n\n // Get the rounding digit at index j of n.\n rd = (n / pows10[d - j - 1]) % 10 | 0;\n } else {\n ni = mathceil((i + 1) / LOG_BASE);\n\n if (ni >= xc.length) {\n if (r) {\n // Needed by sqrt.\n for (; xc.length <= ni; xc.push(0));\n n = rd = 0;\n d = 1;\n i %= LOG_BASE;\n j = i - LOG_BASE + 1;\n } else {\n break out;\n }\n } else {\n n = k = xc[ni];\n\n // Get the number of digits of n.\n for (d = 1; k >= 10; k /= 10, d++);\n\n // Get the index of rd within n.\n i %= LOG_BASE;\n\n // Get the index of rd within n, adjusted for leading zeros.\n // The number of leading zeros of n is given by LOG_BASE - d.\n j = i - LOG_BASE + d;\n\n // Get the rounding digit at index j of n.\n rd = j < 0 ? 0 : (n / pows10[d - j - 1]) % 10 | 0;\n }\n }\n\n r =\n r ||\n sd < 0 ||\n // Are there any non-zero digits after the rounding digit?\n // The expression n % pows10[d - j - 1] returns all digits of n to the right\n // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\n xc[ni + 1] != null ||\n (j < 0 ? n : n % pows10[d - j - 1]);\n\n r =\n rm < 4\n ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\n : rd > 5 ||\n (rd == 5 &&\n (rm == 4 ||\n r ||\n (rm == 6 &&\n // Check whether the digit to the left of the rounding digit is odd.\n (i > 0\n ? j > 0\n ? n / pows10[d - j]\n : 0\n : xc[ni - 1]) %\n 10 &\n 1) ||\n rm == (x.s < 0 ? 8 : 7)));\n\n if (sd < 1 || !xc[0]) {\n xc.length = 0;\n\n if (r) {\n // Convert sd to decimal places.\n sd -= x.e + 1;\n\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\n xc[0] = pows10[(LOG_BASE - (sd % LOG_BASE)) % LOG_BASE];\n x.e = -sd || 0;\n } else {\n // Zero.\n xc[0] = x.e = 0;\n }\n\n return x;\n }\n\n // Remove excess digits.\n if (i == 0) {\n xc.length = ni;\n k = 1;\n ni--;\n } else {\n xc.length = ni + 1;\n k = pows10[LOG_BASE - i];\n\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\n // j > 0 means i > number of leading zeros of n.\n xc[ni] =\n j > 0\n ? mathfloor((n / pows10[d - j]) % pows10[j]) * k\n : 0;\n }\n\n // Round up?\n if (r) {\n for (;;) {\n // If the digit to be rounded up is in the first element of xc...\n if (ni == 0) {\n // i will be the length of xc[0] before k is added.\n for (i = 1, j = xc[0]; j >= 10; j /= 10, i++);\n j = xc[0] += k;\n for (k = 1; j >= 10; j /= 10, k++);\n\n // if i != k the length has increased.\n if (i != k) {\n x.e++;\n if (xc[0] == BASE) xc[0] = 1;\n }\n\n break;\n } else {\n xc[ni] += k;\n if (xc[ni] != BASE) break;\n xc[ni--] = 0;\n k = 1;\n }\n }\n }\n\n // Remove trailing zeros.\n for (i = xc.length; xc[--i] === 0; xc.pop());\n }\n\n // Overflow? Infinity.\n if (x.e > MAX_EXP) {\n x.c = x.e = null;\n\n // Underflow? Zero.\n } else if (x.e < MIN_EXP) {\n x.c = [(x.e = 0)];\n }\n }\n\n return x;\n }\n\n function valueOf(n) {\n var str,\n e = n.e;\n\n if (e === null) return n.toString();\n\n str = toFixedPoint(coeffToString(n.c), e, \"0\");\n\n return n.s < 0 ? \"-\" + str : str;\n }\n\n // PROTOTYPE/INSTANCE METHODS\n\n /*\n * Return a new BigNumber whose value is the absolute value of this BigNumber.\n */\n P.absoluteValue = P.abs = function () {\n var x = new BigNumber(this);\n if (x.s < 0) x.s = 1;\n return x;\n };\n\n /*\n * Return\n * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b),\n * -1 if the value of this BigNumber is less than the value of BigNumber(y, b),\n * 0 if they have the same value,\n * or null if the value of either is NaN.\n */\n P.comparedTo = function (y, b) {\n return compare(this, new BigNumber(y, b));\n };\n\n /*\n * If dp is undefined or null or true or false, return the number of decimal places of the\n * value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\n *\n * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this\n * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or\n * ROUNDING_MODE if rm is omitted.\n *\n * [dp] {number} Decimal places: integer, 0 to MAX inclusive.\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\n *\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\n */\n P.decimalPlaces = P.dp = function (dp, rm) {\n var c,\n n,\n v,\n x = this;\n\n if (dp != null) {\n intCheck(dp, 0, MAX);\n if (rm == null) rm = ROUNDING_MODE;\n else intCheck(rm, 0, 8);\n\n return round(new BigNumber(x), dp + x.e + 1, rm);\n }\n\n if (!(c = x.c)) return null;\n n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;\n\n // Subtract the number of trailing zeros of the last number.\n if ((v = c[v])) for (; v % 10 == 0; v /= 10, n--);\n if (n < 0) n = 0;\n\n return n;\n };\n\n /*\n * n / 0 = I\n * n / N = N\n * n / I = 0\n * 0 / n = 0\n * 0 / 0 = N\n * 0 / N = N\n * 0 / I = 0\n * N / n = N\n * N / 0 = N\n * N / N = N\n * N / I = N\n * I / n = I\n * I / 0 = I\n * I / N = N\n * I / I = N\n *\n * Return a new BigNumber whose value is the value of this BigNumber divided by the value of\n * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE.\n */\n P.dividedBy = P.div = function (y, b) {\n return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE);\n };\n\n /*\n * Return a new BigNumber whose value is the integer part of dividing the value of this\n * BigNumber by the value of BigNumber(y, b).\n */\n P.dividedToIntegerBy = P.idiv = function (y, b) {\n return div(this, new BigNumber(y, b), 0, 1);\n };\n\n /*\n * Return a BigNumber whose value is the value of this BigNumber exponentiated by n.\n *\n * If m is present, return the result modulo m.\n * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE.\n * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE.\n *\n * The modular power operation works efficiently when x, n, and m are integers, otherwise it\n * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0.\n *\n * n {number|string|BigNumber} The exponent. An integer.\n * [m] {number|string|BigNumber} The modulus.\n *\n * '[BigNumber Error] Exponent not an integer: {n}'\n */\n P.exponentiatedBy = P.pow = function (n, m) {\n var half,\n isModExp,\n i,\n k,\n more,\n nIsBig,\n nIsNeg,\n nIsOdd,\n y,\n x = this;\n\n n = new BigNumber(n);\n\n // Allow NaN and ±Infinity, but not other non-integers.\n if (n.c && !n.isInteger()) {\n throw Error(\n bignumberError + \"Exponent not an integer: \" + valueOf(n)\n );\n }\n\n if (m != null) m = new BigNumber(m);\n\n // Exponent of MAX_SAFE_INTEGER is 15.\n nIsBig = n.e > 14;\n\n // If x is NaN, ±Infinity, ±0 or ±1, or n is ±Infinity, NaN or ±0.\n if (\n !x.c ||\n !x.c[0] ||\n (x.c[0] == 1 && !x.e && x.c.length == 1) ||\n !n.c ||\n !n.c[0]\n ) {\n // The sign of the result of pow when x is negative depends on the evenness of n.\n // If +n overflows to ±Infinity, the evenness of n would be not be known.\n y = new BigNumber(\n Math.pow(+valueOf(x), nIsBig ? 2 - isOdd(n) : +valueOf(n))\n );\n return m ? y.mod(m) : y;\n }\n\n nIsNeg = n.s < 0;\n\n if (m) {\n // x % m returns NaN if abs(m) is zero, or m is NaN.\n if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN);\n\n isModExp = !nIsNeg && x.isInteger() && m.isInteger();\n\n if (isModExp) x = x.mod(m);\n\n // Overflow to ±Infinity: >=2**1e10 or >=1.0000024**1e15.\n // Underflow to ±0: <=0.79**1e10 or <=0.9999975**1e15.\n } else if (\n n.e > 9 &&\n (x.e > 0 ||\n x.e < -1 ||\n (x.e == 0\n ? // [1, 240000000]\n x.c[0] > 1 || (nIsBig && x.c[1] >= 24e7)\n : // [80000000000000] [99999750000000]\n x.c[0] < 8e13 || (nIsBig && x.c[0] <= 9999975e7)))\n ) {\n // If x is negative and n is odd, k = -0, else k = 0.\n k = x.s < 0 && isOdd(n) ? -0 : 0;\n\n // If x >= 1, k = ±Infinity.\n if (x.e > -1) k = 1 / k;\n\n // If n is negative return ±0, else return ±Infinity.\n return new BigNumber(nIsNeg ? 1 / k : k);\n } else if (POW_PRECISION) {\n // Truncating each coefficient array to a length of k after each multiplication\n // equates to truncating significant digits to POW_PRECISION + [28, 41],\n // i.e. there will be a minimum of 28 guard digits retained.\n k = mathceil(POW_PRECISION / LOG_BASE + 2);\n }\n\n if (nIsBig) {\n half = new BigNumber(0.5);\n if (nIsNeg) n.s = 1;\n nIsOdd = isOdd(n);\n } else {\n i = Math.abs(+valueOf(n));\n nIsOdd = i % 2;\n }\n\n y = new BigNumber(ONE);\n\n // Performs 54 loop iterations for n of 9007199254740991.\n for (;;) {\n if (nIsOdd) {\n y = y.times(x);\n if (!y.c) break;\n\n if (k) {\n if (y.c.length > k) y.c.length = k;\n } else if (isModExp) {\n y = y.mod(m); //y = y.minus(div(y, m, 0, MODULO_MODE).times(m));\n }\n }\n\n if (i) {\n i = mathfloor(i / 2);\n if (i === 0) break;\n nIsOdd = i % 2;\n } else {\n n = n.times(half);\n round(n, n.e + 1, 1);\n\n if (n.e > 14) {\n nIsOdd = isOdd(n);\n } else {\n i = +valueOf(n);\n if (i === 0) break;\n nIsOdd = i % 2;\n }\n }\n\n x = x.times(x);\n\n if (k) {\n if (x.c && x.c.length > k) x.c.length = k;\n } else if (isModExp) {\n x = x.mod(m); //x = x.minus(div(x, m, 0, MODULO_MODE).times(m));\n }\n }\n\n if (isModExp) return y;\n if (nIsNeg) y = ONE.div(y);\n\n return m\n ? y.mod(m)\n : k\n ? round(y, POW_PRECISION, ROUNDING_MODE, more)\n : y;\n };\n\n /*\n * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer\n * using rounding mode rm, or ROUNDING_MODE if rm is omitted.\n *\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\n *\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}'\n */\n P.integerValue = function (rm) {\n var n = new BigNumber(this);\n if (rm == null) rm = ROUNDING_MODE;\n else intCheck(rm, 0, 8);\n return round(n, n.e + 1, rm);\n };\n\n /*\n * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b),\n * otherwise return false.\n */\n P.isEqualTo = P.eq = function (y, b) {\n return compare(this, new BigNumber(y, b)) === 0;\n };\n\n /*\n * Return true if the value of this BigNumber is a finite number, otherwise return false.\n */\n P.isFinite = function () {\n return !!this.c;\n };\n\n /*\n * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b),\n * otherwise return false.\n */\n P.isGreaterThan = P.gt = function (y, b) {\n return compare(this, new BigNumber(y, b)) > 0;\n };\n\n /*\n * Return true if the value of this BigNumber is greater than or equal to the value of\n * BigNumber(y, b), otherwise return false.\n */\n P.isGreaterThanOrEqualTo = P.gte = function (y, b) {\n return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0;\n };\n\n /*\n * Return true if the value of this BigNumber is an integer, otherwise return false.\n */\n P.isInteger = function () {\n return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;\n };\n\n /*\n * Return true if the value of this BigNumber is less than the value of BigNumber(y, b),\n * otherwise return false.\n */\n P.isLessThan = P.lt = function (y, b) {\n return compare(this, new BigNumber(y, b)) < 0;\n };\n\n /*\n * Return true if the value of this BigNumber is less than or equal to the value of\n * BigNumber(y, b), otherwise return false.\n */\n P.isLessThanOrEqualTo = P.lte = function (y, b) {\n return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0;\n };\n\n /*\n * Return true if the value of this BigNumber is NaN, otherwise return false.\n */\n P.isNaN = function () {\n return !this.s;\n };\n\n /*\n * Return true if the value of this BigNumber is negative, otherwise return false.\n */\n P.isNegative = function () {\n return this.s < 0;\n };\n\n /*\n * Return true if the value of this BigNumber is positive, otherwise return false.\n */\n P.isPositive = function () {\n return this.s > 0;\n };\n\n /*\n * Return true if the value of this BigNumber is 0 or -0, otherwise return false.\n */\n P.isZero = function () {\n return !!this.c && this.c[0] == 0;\n };\n\n /*\n * n - 0 = n\n * n - N = N\n * n - I = -I\n * 0 - n = -n\n * 0 - 0 = 0\n * 0 - N = N\n * 0 - I = -I\n * N - n = N\n * N - 0 = N\n * N - N = N\n * N - I = N\n * I - n = I\n * I - 0 = I\n * I - N = N\n * I - I = N\n *\n * Return a new BigNumber whose value is the value of this BigNumber minus the value of\n * BigNumber(y, b).\n */\n P.minus = function (y, b) {\n var i,\n j,\n t,\n xLTy,\n x = this,\n a = x.s;\n\n y = new BigNumber(y, b);\n b = y.s;\n\n // Either NaN?\n if (!a || !b) return new BigNumber(NaN);\n\n // Signs differ?\n if (a != b) {\n y.s = -b;\n return x.plus(y);\n }\n\n var xe = x.e / LOG_BASE,\n ye = y.e / LOG_BASE,\n xc = x.c,\n yc = y.c;\n\n if (!xe || !ye) {\n // Either Infinity?\n if (!xc || !yc)\n return xc ? ((y.s = -b), y) : new BigNumber(yc ? x : NaN);\n\n // Either zero?\n if (!xc[0] || !yc[0]) {\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\n return yc[0]\n ? ((y.s = -b), y)\n : new BigNumber(\n xc[0]\n ? x\n : // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\n ROUNDING_MODE == 3\n ? -0\n : 0\n );\n }\n }\n\n xe = bitFloor(xe);\n ye = bitFloor(ye);\n xc = xc.slice();\n\n // Determine which is the bigger number.\n if ((a = xe - ye)) {\n if ((xLTy = a < 0)) {\n a = -a;\n t = xc;\n } else {\n ye = xe;\n t = yc;\n }\n\n t.reverse();\n\n // Prepend zeros to equalise exponents.\n for (b = a; b--; t.push(0));\n t.reverse();\n } else {\n // Exponents equal. Check digit by digit.\n j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;\n\n for (a = b = 0; b < j; b++) {\n if (xc[b] != yc[b]) {\n xLTy = xc[b] < yc[b];\n break;\n }\n }\n }\n\n // x < y? Point xc to the array of the bigger number.\n if (xLTy) (t = xc), (xc = yc), (yc = t), (y.s = -y.s);\n\n b = (j = yc.length) - (i = xc.length);\n\n // Append zeros to xc if shorter.\n // No need to add zeros to yc if shorter as subtract only needs to start at yc.length.\n if (b > 0) for (; b--; xc[i++] = 0);\n b = BASE - 1;\n\n // Subtract yc from xc.\n for (; j > a; ) {\n if (xc[--j] < yc[j]) {\n for (i = j; i && !xc[--i]; xc[i] = b);\n --xc[i];\n xc[j] += BASE;\n }\n\n xc[j] -= yc[j];\n }\n\n // Remove leading zeros and adjust exponent accordingly.\n for (; xc[0] == 0; xc.splice(0, 1), --ye);\n\n // Zero?\n if (!xc[0]) {\n // Following IEEE 754 (2008) 6.3,\n // n - n = +0 but n - n = -0 when rounding towards -Infinity.\n y.s = ROUNDING_MODE == 3 ? -1 : 1;\n y.c = [(y.e = 0)];\n return y;\n }\n\n // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity\n // for finite x and y.\n return normalise(y, xc, ye);\n };\n\n /*\n * n % 0 = N\n * n % N = N\n * n % I = n\n * 0 % n = 0\n * -0 % n = -0\n * 0 % 0 = N\n * 0 % N = N\n * 0 % I = 0\n * N % n = N\n * N % 0 = N\n * N % N = N\n * N % I = N\n * I % n = N\n * I % 0 = N\n * I % N = N\n * I % I = N\n *\n * Return a new BigNumber whose value is the value of this BigNumber modulo the value of\n * BigNumber(y, b). The result depends on the value of MODULO_MODE.\n */\n P.modulo = P.mod = function (y, b) {\n var q,\n s,\n x = this;\n\n y = new BigNumber(y, b);\n\n // Return NaN if x is Infinity or NaN, or y is NaN or zero.\n if (!x.c || !y.s || (y.c && !y.c[0])) {\n return new BigNumber(NaN);\n\n // Return x if y is Infinity or x is zero.\n } else if (!y.c || (x.c && !x.c[0])) {\n return new BigNumber(x);\n }\n\n if (MODULO_MODE == 9) {\n // Euclidian division: q = sign(y) * floor(x / abs(y))\n // r = x - qy where 0 <= r < abs(y)\n s = y.s;\n y.s = 1;\n q = div(x, y, 0, 3);\n y.s = s;\n q.s *= s;\n } else {\n q = div(x, y, 0, MODULO_MODE);\n }\n\n y = x.minus(q.times(y));\n\n // To match JavaScript %, ensure sign of zero is sign of dividend.\n if (!y.c[0] && MODULO_MODE == 1) y.s = x.s;\n\n return y;\n };\n\n /*\n * n * 0 = 0\n * n * N = N\n * n * I = I\n * 0 * n = 0\n * 0 * 0 = 0\n * 0 * N = N\n * 0 * I = N\n * N * n = N\n * N * 0 = N\n * N * N = N\n * N * I = N\n * I * n = I\n * I * 0 = N\n * I * N = N\n * I * I = I\n *\n * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value\n * of BigNumber(y, b).\n */\n P.multipliedBy = P.times = function (y, b) {\n var c,\n e,\n i,\n j,\n k,\n m,\n xcL,\n xlo,\n xhi,\n ycL,\n ylo,\n yhi,\n zc,\n base,\n sqrtBase,\n x = this,\n xc = x.c,\n yc = (y = new BigNumber(y, b)).c;\n\n // Either NaN, ±Infinity or ±0?\n if (!xc || !yc || !xc[0] || !yc[0]) {\n // Return NaN if either is NaN, or one is 0 and the other is Infinity.\n if (\n !x.s ||\n !y.s ||\n (xc && !xc[0] && !yc) ||\n (yc && !yc[0] && !xc)\n ) {\n y.c = y.e = y.s = null;\n } else {\n y.s *= x.s;\n\n // Return ±Infinity if either is ±Infinity.\n if (!xc || !yc) {\n y.c = y.e = null;\n\n // Return ±0 if either is ±0.\n } else {\n y.c = [0];\n y.e = 0;\n }\n }\n\n return y;\n }\n\n e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);\n y.s *= x.s;\n xcL = xc.length;\n ycL = yc.length;\n\n // Ensure xc points to longer array and xcL to its length.\n if (xcL < ycL)\n (zc = xc), (xc = yc), (yc = zc), (i = xcL), (xcL = ycL), (ycL = i);\n\n // Initialise the result array with zeros.\n for (i = xcL + ycL, zc = []; i--; zc.push(0));\n\n base = BASE;\n sqrtBase = SQRT_BASE;\n\n for (i = ycL; --i >= 0; ) {\n c = 0;\n ylo = yc[i] % sqrtBase;\n yhi = (yc[i] / sqrtBase) | 0;\n\n for (k = xcL, j = i + k; j > i; ) {\n xlo = xc[--k] % sqrtBase;\n xhi = (xc[k] / sqrtBase) | 0;\n m = yhi * xlo + xhi * ylo;\n xlo = ylo * xlo + (m % sqrtBase) * sqrtBase + zc[j] + c;\n c = ((xlo / base) | 0) + ((m / sqrtBase) | 0) + yhi * xhi;\n zc[j--] = xlo % base;\n }\n\n zc[j] = c;\n }\n\n if (c) {\n ++e;\n } else {\n zc.splice(0, 1);\n }\n\n return normalise(y, zc, e);\n };\n\n /*\n * Return a new BigNumber whose value is the value of this BigNumber negated,\n * i.e. multiplied by -1.\n */\n P.negated = function () {\n var x = new BigNumber(this);\n x.s = -x.s || null;\n return x;\n };\n\n /*\n * n + 0 = n\n * n + N = N\n * n + I = I\n * 0 + n = n\n * 0 + 0 = 0\n * 0 + N = N\n * 0 + I = I\n * N + n = N\n * N + 0 = N\n * N + N = N\n * N + I = N\n * I + n = I\n * I + 0 = I\n * I + N = N\n * I + I = I\n *\n * Return a new BigNumber whose value is the value of this BigNumber plus the value of\n * BigNumber(y, b).\n */\n P.plus = function (y, b) {\n var t,\n x = this,\n a = x.s;\n\n y = new BigNumber(y, b);\n b = y.s;\n\n // Either NaN?\n if (!a || !b) return new BigNumber(NaN);\n\n // Signs differ?\n if (a != b) {\n y.s = -b;\n return x.minus(y);\n }\n\n var xe = x.e / LOG_BASE,\n ye = y.e / LOG_BASE,\n xc = x.c,\n yc = y.c;\n\n if (!xe || !ye) {\n // Return ±Infinity if either ±Infinity.\n if (!xc || !yc) return new BigNumber(a / 0);\n\n // Either zero?\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\n if (!xc[0] || !yc[0])\n return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0);\n }\n\n xe = bitFloor(xe);\n ye = bitFloor(ye);\n xc = xc.slice();\n\n // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts.\n if ((a = xe - ye)) {\n if (a > 0) {\n ye = xe;\n t = yc;\n } else {\n a = -a;\n t = xc;\n }\n\n t.reverse();\n for (; a--; t.push(0));\n t.reverse();\n }\n\n a = xc.length;\n b = yc.length;\n\n // Point xc to the longer array, and b to the shorter length.\n if (a - b < 0) (t = yc), (yc = xc), (xc = t), (b = a);\n\n // Only start adding at yc.length - 1 as the further digits of xc can be ignored.\n for (a = 0; b; ) {\n a = ((xc[--b] = xc[b] + yc[b] + a) / BASE) | 0;\n xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;\n }\n\n if (a) {\n xc = [a].concat(xc);\n ++ye;\n }\n\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\n // ye = MAX_EXP + 1 possible\n return normalise(y, xc, ye);\n };\n\n /*\n * If sd is undefined or null or true or false, return the number of significant digits of\n * the value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\n * If sd is true include integer-part trailing zeros in the count.\n *\n * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this\n * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or\n * ROUNDING_MODE if rm is omitted.\n *\n * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive.\n * boolean: whether to count integer-part trailing zeros: true or false.\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\n *\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\n */\n P.precision = P.sd = function (sd, rm) {\n var c,\n n,\n v,\n x = this;\n\n if (sd != null && sd !== !!sd) {\n intCheck(sd, 1, MAX);\n if (rm == null) rm = ROUNDING_MODE;\n else intCheck(rm, 0, 8);\n\n return round(new BigNumber(x), sd, rm);\n }\n\n if (!(c = x.c)) return null;\n v = c.length - 1;\n n = v * LOG_BASE + 1;\n\n if ((v = c[v])) {\n // Subtract the number of trailing zeros of the last element.\n for (; v % 10 == 0; v /= 10, n--);\n\n // Add the number of digits of the first element.\n for (v = c[0]; v >= 10; v /= 10, n++);\n }\n\n if (sd && x.e + 1 > n) n = x.e + 1;\n\n return n;\n };\n\n /*\n * Return a new BigNumber whose value is the value of this BigNumber shifted by k places\n * (powers of 10). Shift to the right if n > 0, and to the left if n < 0.\n *\n * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive.\n *\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}'\n */\n P.shiftedBy = function (k) {\n intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);\n return this.times(\"1e\" + k);\n };\n\n /*\n * sqrt(-n) = N\n * sqrt(N) = N\n * sqrt(-I) = N\n * sqrt(I) = I\n * sqrt(0) = 0\n * sqrt(-0) = -0\n *\n * Return a new BigNumber whose value is the square root of the value of this BigNumber,\n * rounded according to DECIMAL_PLACES and ROUNDING_MODE.\n */\n P.squareRoot = P.sqrt = function () {\n var m,\n n,\n r,\n rep,\n t,\n x = this,\n c = x.c,\n s = x.s,\n e = x.e,\n dp = DECIMAL_PLACES + 4,\n half = new BigNumber(\"0.5\");\n\n // Negative/NaN/Infinity/zero?\n if (s !== 1 || !c || !c[0]) {\n return new BigNumber(\n !s || (s < 0 && (!c || c[0])) ? NaN : c ? x : 1 / 0\n );\n }\n\n // Initial estimate.\n s = Math.sqrt(+valueOf(x));\n\n // Math.sqrt underflow/overflow?\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\n if (s == 0 || s == 1 / 0) {\n n = coeffToString(c);\n if ((n.length + e) % 2 == 0) n += \"0\";\n s = Math.sqrt(+n);\n e = bitFloor((e + 1) / 2) - (e < 0 || e % 2);\n\n if (s == 1 / 0) {\n n = \"1e\" + e;\n } else {\n n = s.toExponential();\n n = n.slice(0, n.indexOf(\"e\") + 1) + e;\n }\n\n r = new BigNumber(n);\n } else {\n r = new BigNumber(s + \"\");\n }\n\n // Check for zero.\n // r could be zero if MIN_EXP is changed after the this value was created.\n // This would cause a division by zero (x/t) and hence Infinity below, which would cause\n // coeffToString to throw.\n if (r.c[0]) {\n e = r.e;\n s = e + dp;\n if (s < 3) s = 0;\n\n // Newton-Raphson iteration.\n for (;;) {\n t = r;\n r = half.times(t.plus(div(x, t, dp, 1)));\n\n if (\n coeffToString(t.c).slice(0, s) ===\n (n = coeffToString(r.c)).slice(0, s)\n ) {\n // The exponent of r may here be one less than the final result exponent,\n // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits\n // are indexed correctly.\n if (r.e < e) --s;\n n = n.slice(s - 3, s + 1);\n\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits\n // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the\n // iteration.\n if (n == \"9999\" || (!rep && n == \"4999\")) {\n // On the first iteration only, check to see if rounding up gives the\n // exact result as the nines may infinitely repeat.\n if (!rep) {\n round(t, t.e + DECIMAL_PLACES + 2, 0);\n\n if (t.times(t).eq(x)) {\n r = t;\n break;\n }\n }\n\n dp += 4;\n s += 4;\n rep = 1;\n } else {\n // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact\n // result. If not, then there are further digits and m will be truthy.\n if (!+n || (!+n.slice(1) && n.charAt(0) == \"5\")) {\n // Truncate to the first rounding digit.\n round(r, r.e + DECIMAL_PLACES + 2, 1);\n m = !r.times(r).eq(x);\n }\n\n break;\n }\n }\n }\n }\n\n return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);\n };\n\n /*\n * Return a string representing the value of this BigNumber in exponential notation and\n * rounded using ROUNDING_MODE to dp fixed decimal places.\n *\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\n *\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\n */\n P.toExponential = function (dp, rm) {\n if (dp != null) {\n intCheck(dp, 0, MAX);\n dp++;\n }\n return format(this, dp, rm, 1);\n };\n\n /*\n * Return a string representing the value of this BigNumber in fixed-point notation rounding\n * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted.\n *\n * Note: as with JavaScript's number type, (-0).toFixed(0) is '0',\n * but e.g. (-0.00001).toFixed(0) is '-0'.\n *\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\n *\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\n */\n P.toFixed = function (dp, rm) {\n if (dp != null) {\n intCheck(dp, 0, MAX);\n dp = dp + this.e + 1;\n }\n return format(this, dp, rm);\n };\n\n /*\n * Return a string representing the value of this BigNumber in fixed-point notation rounded\n * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties\n * of the format or FORMAT object (see BigNumber.set).\n *\n * The formatting object may contain some or all of the properties shown below.\n *\n * FORMAT = {\n * prefix: '',\n * groupSize: 3,\n * secondaryGroupSize: 0,\n * groupSeparator: ',',\n * decimalSeparator: '.',\n * fractionGroupSize: 0,\n * fractionGroupSeparator: '\\xA0', // non-breaking space\n * suffix: ''\n * };\n *\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\n * [format] {object} Formatting options. See FORMAT pbject above.\n *\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\n * '[BigNumber Error] Argument not an object: {format}'\n */\n P.toFormat = function (dp, rm, format) {\n var str,\n x = this;\n\n if (format == null) {\n if (dp != null && rm && typeof rm == \"object\") {\n format = rm;\n rm = null;\n } else if (dp && typeof dp == \"object\") {\n format = dp;\n dp = rm = null;\n } else {\n format = FORMAT;\n }\n } else if (typeof format != \"object\") {\n throw Error(bignumberError + \"Argument not an object: \" + format);\n }\n\n str = x.toFixed(dp, rm);\n\n if (x.c) {\n var i,\n arr = str.split(\".\"),\n g1 = +format.groupSize,\n g2 = +format.secondaryGroupSize,\n groupSeparator = format.groupSeparator || \"\",\n intPart = arr[0],\n fractionPart = arr[1],\n isNeg = x.s < 0,\n intDigits = isNeg ? intPart.slice(1) : intPart,\n len = intDigits.length;\n\n if (g2) (i = g1), (g1 = g2), (g2 = i), (len -= i);\n\n if (g1 > 0 && len > 0) {\n i = len % g1 || g1;\n intPart = intDigits.substr(0, i);\n for (; i < len; i += g1)\n intPart += groupSeparator + intDigits.substr(i, g1);\n if (g2 > 0) intPart += groupSeparator + intDigits.slice(i);\n if (isNeg) intPart = \"-\" + intPart;\n }\n\n str = fractionPart\n ? intPart +\n (format.decimalSeparator || \"\") +\n ((g2 = +format.fractionGroupSize)\n ? fractionPart.replace(\n new RegExp(\"\\\\d{\" + g2 + \"}\\\\B\", \"g\"),\n \"$&\" + (format.fractionGroupSeparator || \"\")\n )\n : fractionPart)\n : intPart;\n }\n\n return (format.prefix || \"\") + str + (format.suffix || \"\");\n };\n\n /*\n * Return an array of two BigNumbers representing the value of this BigNumber as a simple\n * fraction with an integer numerator and an integer denominator.\n * The denominator will be a positive non-zero value less than or equal to the specified\n * maximum denominator. If a maximum denominator is not specified, the denominator will be\n * the lowest value necessary to represent the number exactly.\n *\n * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator.\n *\n * '[BigNumber Error] Argument {not an integer|out of range} : {md}'\n */\n P.toFraction = function (md) {\n var d,\n d0,\n d1,\n d2,\n e,\n exp,\n n,\n n0,\n n1,\n q,\n r,\n s,\n x = this,\n xc = x.c;\n\n if (md != null) {\n n = new BigNumber(md);\n\n // Throw if md is less than one or is not an integer, unless it is Infinity.\n if ((!n.isInteger() && (n.c || n.s !== 1)) || n.lt(ONE)) {\n throw Error(\n bignumberError +\n \"Argument \" +\n (n.isInteger()\n ? \"out of range: \"\n : \"not an integer: \") +\n valueOf(n)\n );\n }\n }\n\n if (!xc) return new BigNumber(x);\n\n d = new BigNumber(ONE);\n n1 = d0 = new BigNumber(ONE);\n d1 = n0 = new BigNumber(ONE);\n s = coeffToString(xc);\n\n // Determine initial denominator.\n // d is a power of 10 and the minimum max denominator that specifies the value exactly.\n e = d.e = s.length - x.e - 1;\n d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];\n md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n;\n\n exp = MAX_EXP;\n MAX_EXP = 1 / 0;\n n = new BigNumber(s);\n\n // n0 = d1 = 0\n n0.c[0] = 0;\n\n for (;;) {\n q = div(n, d, 0, 1);\n d2 = d0.plus(q.times(d1));\n if (d2.comparedTo(md) == 1) break;\n d0 = d1;\n d1 = d2;\n n1 = n0.plus(q.times((d2 = n1)));\n n0 = d2;\n d = n.minus(q.times((d2 = d)));\n n = d2;\n }\n\n d2 = div(md.minus(d0), d1, 0, 1);\n n0 = n0.plus(d2.times(n1));\n d0 = d0.plus(d2.times(d1));\n n0.s = n1.s = x.s;\n e = e * 2;\n\n // Determine which fraction is closer to x, n0/d0 or n1/d1\n r =\n div(n1, d1, e, ROUNDING_MODE)\n .minus(x)\n .abs()\n .comparedTo(div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1\n ? [n1, d1]\n : [n0, d0];\n\n MAX_EXP = exp;\n\n return r;\n };\n\n /*\n * Return the value of this BigNumber converted to a number primitive.\n */\n P.toNumber = function () {\n return +valueOf(this);\n };\n\n /*\n * Return a string representing the value of this BigNumber rounded to sd significant digits\n * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits\n * necessary to represent the integer part of the value in fixed-point notation, then use\n * exponential notation.\n *\n * [sd] {number} Significant digits. Integer, 1 to MAX inclusive.\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\n *\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\n */\n P.toPrecision = function (sd, rm) {\n if (sd != null) intCheck(sd, 1, MAX);\n return format(this, sd, rm, 2);\n };\n\n /*\n * Return a string representing the value of this BigNumber in base b, or base 10 if b is\n * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and\n * ROUNDING_MODE.\n *\n * [b] {number} Integer, 2 to ALPHABET.length inclusive.\n *\n * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\n */\n P.toString = function (b) {\n var str,\n n = this,\n s = n.s,\n e = n.e;\n\n // Infinity or NaN?\n if (e === null) {\n if (s) {\n str = \"Infinity\";\n if (s < 0) str = \"-\" + str;\n } else {\n str = \"NaN\";\n }\n } else {\n if (b == null) {\n str = toFixedPoint(coeffToString(n.c), e, \"0\");\n } else if (b === 10) {\n n = round(\n new BigNumber(n),\n DECIMAL_PLACES + e + 1,\n ROUNDING_MODE\n );\n str = toFixedPoint(coeffToString(n.c), n.e, \"0\");\n } else {\n intCheck(b, 2, ALPHABET.length, \"Base\");\n str = convertBase(\n toFixedPoint(coeffToString(n.c), e, \"0\"),\n 10,\n b,\n s,\n true\n );\n }\n\n if (s < 0 && n.c[0]) str = \"-\" + str;\n }\n\n return str;\n };\n\n /*\n * Return as toString, but do not accept a base argument, and include the minus sign for\n * negative zero.\n */\n P.valueOf = function () {\n return valueOf(this);\n };\n\n P.toJSON = function () {\n return {\n __type__: \"BigNumber\",\n __val__: valueOf(this),\n };\n };\n\n P._isBigNumber = true;\n\n if (configObject != null) BigNumber.set(configObject);\n\n return BigNumber;\n}\n\n// PRIVATE HELPER FUNCTIONS\n\n// These functions don't need access to variables,\n// e.g. DECIMAL_PLACES, in the scope of the `clone` function above.\n\nfunction bitFloor(n) {\n var i = n | 0;\n return n > 0 || n === i ? i : i - 1;\n}\n\n// Return a coefficient array as a string of base 10 digits.\nfunction coeffToString(a) {\n var s,\n z,\n i = 1,\n j = a.length,\n r = a[0] + \"\";\n\n for (; i < j; ) {\n s = a[i++] + \"\";\n z = LOG_BASE - s.length;\n for (; z--; s = \"0\" + s);\n r += s;\n }\n\n // Determine trailing zeros.\n for (j = r.length; r.charCodeAt(--j) === 48; );\n\n return r.slice(0, j + 1 || 1);\n}\n\n// Compare the value of BigNumbers x and y.\nfunction compare(x, y) {\n var a,\n b,\n xc = x.c,\n yc = y.c,\n i = x.s,\n j = y.s,\n k = x.e,\n l = y.e;\n\n // Either NaN?\n if (!i || !j) return null;\n\n a = xc && !xc[0];\n b = yc && !yc[0];\n\n // Either zero?\n if (a || b) return a ? (b ? 0 : -j) : i;\n\n // Signs differ?\n if (i != j) return i;\n\n a = i < 0;\n b = k == l;\n\n // Either Infinity?\n if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1;\n\n // Compare exponents.\n if (!b) return (k > l) ^ a ? 1 : -1;\n\n j = (k = xc.length) < (l = yc.length) ? k : l;\n\n // Compare digit by digit.\n for (i = 0; i < j; i++)\n if (xc[i] != yc[i]) return (xc[i] > yc[i]) ^ a ? 1 : -1;\n\n // Compare lengths.\n return k == l ? 0 : (k > l) ^ a ? 1 : -1;\n}\n\n/*\n * Check that n is a primitive number, an integer, and in range, otherwise throw.\n */\nfunction intCheck(n, min, max, name) {\n if (n < min || n > max || n !== mathfloor(n)) {\n throw Error(\n bignumberError +\n (name || \"Argument\") +\n (typeof n == \"number\"\n ? n < min || n > max\n ? \" out of range: \"\n : \" not an integer: \"\n : \" not a primitive number: \") +\n String(n)\n );\n }\n}\n\n// Assumes finite n.\nfunction isOdd(n) {\n var k = n.c.length - 1;\n return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;\n}\n\nfunction toExponential(str, e) {\n return (\n (str.length > 1 ? str.charAt(0) + \".\" + str.slice(1) : str) +\n (e < 0 ? \"e\" : \"e+\") +\n e\n );\n}\n\nfunction toFixedPoint(str, e, z) {\n var len, zs;\n\n // Negative exponent?\n if (e < 0) {\n // Prepend zeros.\n for (zs = z + \".\"; ++e; zs += z);\n str = zs + str;\n\n // Positive exponent\n } else {\n len = str.length;\n\n // Append zeros.\n if (++e > len) {\n for (zs = z, e -= len; --e; zs += z);\n str += zs;\n } else if (e < len) {\n str = str.slice(0, e) + \".\" + str.slice(e);\n }\n }\n\n return str;\n}\n\nBigNumber = clone();\n\nexport default BigNumber;\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","import _extends from \"@babel/runtime/helpers/extends\";\nimport { ARRAY_INSERT, ARRAY_MOVE, ARRAY_POP, ARRAY_PUSH, ARRAY_REMOVE, ARRAY_REMOVE_ALL, ARRAY_SHIFT, ARRAY_SPLICE, ARRAY_SWAP, ARRAY_UNSHIFT, AUTOFILL, BLUR, CHANGE, CLEAR_SUBMIT, CLEAR_SUBMIT_ERRORS, CLEAR_ASYNC_ERROR, DESTROY, FOCUS, INITIALIZE, REGISTER_FIELD, RESET, RESET_SECTION, CLEAR_FIELDS, SET_SUBMIT_FAILED, SET_SUBMIT_SUCCEEDED, START_ASYNC_VALIDATION, START_SUBMIT, STOP_ASYNC_VALIDATION, STOP_SUBMIT, SUBMIT, TOUCH, UNREGISTER_FIELD, UNTOUCH, UPDATE_SYNC_ERRORS, UPDATE_SYNC_WARNINGS } from './actionTypes';\n\nvar arrayInsert = function arrayInsert(form, field, index, value) {\n return {\n type: ARRAY_INSERT,\n meta: {\n form: form,\n field: field,\n index: index\n },\n payload: value\n };\n};\n\nvar arrayMove = function arrayMove(form, field, from, to) {\n return {\n type: ARRAY_MOVE,\n meta: {\n form: form,\n field: field,\n from: from,\n to: to\n }\n };\n};\n\nvar arrayPop = function arrayPop(form, field) {\n return {\n type: ARRAY_POP,\n meta: {\n form: form,\n field: field\n }\n };\n};\n\nvar arrayPush = function arrayPush(form, field, value) {\n return {\n type: ARRAY_PUSH,\n meta: {\n form: form,\n field: field\n },\n payload: value\n };\n};\n\nvar arrayRemove = function arrayRemove(form, field, index) {\n return {\n type: ARRAY_REMOVE,\n meta: {\n form: form,\n field: field,\n index: index\n }\n };\n};\n\nvar arrayRemoveAll = function arrayRemoveAll(form, field) {\n return {\n type: ARRAY_REMOVE_ALL,\n meta: {\n form: form,\n field: field\n }\n };\n};\n\nvar arrayShift = function arrayShift(form, field) {\n return {\n type: ARRAY_SHIFT,\n meta: {\n form: form,\n field: field\n }\n };\n};\n\nvar arraySplice = function arraySplice(form, field, index, removeNum, value) {\n var action = {\n type: ARRAY_SPLICE,\n meta: {\n form: form,\n field: field,\n index: index,\n removeNum: removeNum\n }\n };\n\n if (value !== undefined) {\n action.payload = value;\n }\n\n return action;\n};\n\nvar arraySwap = function arraySwap(form, field, indexA, indexB) {\n if (indexA === indexB) {\n throw new Error('Swap indices cannot be equal');\n }\n\n if (indexA < 0 || indexB < 0) {\n throw new Error('Swap indices cannot be negative');\n }\n\n return {\n type: ARRAY_SWAP,\n meta: {\n form: form,\n field: field,\n indexA: indexA,\n indexB: indexB\n }\n };\n};\n\nvar arrayUnshift = function arrayUnshift(form, field, value) {\n return {\n type: ARRAY_UNSHIFT,\n meta: {\n form: form,\n field: field\n },\n payload: value\n };\n};\n\nvar autofill = function autofill(form, field, value) {\n return {\n type: AUTOFILL,\n meta: {\n form: form,\n field: field\n },\n payload: value\n };\n};\n\nvar blur = function blur(form, field, value, touch) {\n return {\n type: BLUR,\n meta: {\n form: form,\n field: field,\n touch: touch\n },\n payload: value\n };\n};\n\nvar change = function change(form, field, value, touch, persistentSubmitErrors) {\n return {\n type: CHANGE,\n meta: {\n form: form,\n field: field,\n touch: touch,\n persistentSubmitErrors: persistentSubmitErrors\n },\n payload: value\n };\n};\n\nvar clearSubmit = function clearSubmit(form) {\n return {\n type: CLEAR_SUBMIT,\n meta: {\n form: form\n }\n };\n};\n\nvar clearSubmitErrors = function clearSubmitErrors(form) {\n return {\n type: CLEAR_SUBMIT_ERRORS,\n meta: {\n form: form\n }\n };\n};\n\nvar clearAsyncError = function clearAsyncError(form, field) {\n return {\n type: CLEAR_ASYNC_ERROR,\n meta: {\n form: form,\n field: field\n }\n };\n};\n\nvar clearFields = function clearFields(form, keepTouched, persistentSubmitErrors) {\n for (var _len = arguments.length, fields = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n fields[_key - 3] = arguments[_key];\n }\n\n return {\n type: CLEAR_FIELDS,\n meta: {\n form: form,\n keepTouched: keepTouched,\n persistentSubmitErrors: persistentSubmitErrors,\n fields: fields\n }\n };\n};\n\nvar destroy = function destroy() {\n for (var _len2 = arguments.length, form = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n form[_key2] = arguments[_key2];\n }\n\n return {\n type: DESTROY,\n meta: {\n form: form\n }\n };\n};\n\nvar focus = function focus(form, field) {\n return {\n type: FOCUS,\n meta: {\n form: form,\n field: field\n }\n };\n};\n\nvar initialize = function initialize(form, values, keepDirty, otherMeta) {\n if (otherMeta === void 0) {\n otherMeta = {};\n }\n\n if (keepDirty instanceof Object) {\n otherMeta = keepDirty;\n keepDirty = false;\n }\n\n return {\n type: INITIALIZE,\n meta: _extends({\n form: form,\n keepDirty: keepDirty\n }, otherMeta),\n payload: values\n };\n};\n\nvar registerField = function registerField(form, name, type) {\n return {\n type: REGISTER_FIELD,\n meta: {\n form: form\n },\n payload: {\n name: name,\n type: type\n }\n };\n};\n\nvar reset = function reset(form) {\n return {\n type: RESET,\n meta: {\n form: form\n }\n };\n};\n\nvar resetSection = function resetSection(form) {\n for (var _len3 = arguments.length, sections = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n sections[_key3 - 1] = arguments[_key3];\n }\n\n return {\n type: RESET_SECTION,\n meta: {\n form: form,\n sections: sections\n }\n };\n};\n\nvar startAsyncValidation = function startAsyncValidation(form, field) {\n return {\n type: START_ASYNC_VALIDATION,\n meta: {\n form: form,\n field: field\n }\n };\n};\n\nvar startSubmit = function startSubmit(form) {\n return {\n type: START_SUBMIT,\n meta: {\n form: form\n }\n };\n};\n\nvar stopAsyncValidation = function stopAsyncValidation(form, errors) {\n return {\n type: STOP_ASYNC_VALIDATION,\n meta: {\n form: form\n },\n payload: errors,\n error: !!(errors && Object.keys(errors).length)\n };\n};\n\nvar stopSubmit = function stopSubmit(form, errors) {\n return {\n type: STOP_SUBMIT,\n meta: {\n form: form\n },\n payload: errors,\n error: !!(errors && Object.keys(errors).length)\n };\n};\n\nvar submit = function submit(form) {\n return {\n type: SUBMIT,\n meta: {\n form: form\n }\n };\n};\n\nvar setSubmitFailed = function setSubmitFailed(form) {\n for (var _len4 = arguments.length, fields = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n fields[_key4 - 1] = arguments[_key4];\n }\n\n return {\n type: SET_SUBMIT_FAILED,\n meta: {\n form: form,\n fields: fields\n },\n error: true\n };\n};\n\nvar setSubmitSucceeded = function setSubmitSucceeded(form) {\n for (var _len5 = arguments.length, fields = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {\n fields[_key5 - 1] = arguments[_key5];\n }\n\n return {\n type: SET_SUBMIT_SUCCEEDED,\n meta: {\n form: form,\n fields: fields\n },\n error: false\n };\n};\n\nvar touch = function touch(form) {\n for (var _len6 = arguments.length, fields = new Array(_len6 > 1 ? _len6 - 1 : 0), _key6 = 1; _key6 < _len6; _key6++) {\n fields[_key6 - 1] = arguments[_key6];\n }\n\n return {\n type: TOUCH,\n meta: {\n form: form,\n fields: fields\n }\n };\n};\n\nvar unregisterField = function unregisterField(form, name, destroyOnUnmount) {\n if (destroyOnUnmount === void 0) {\n destroyOnUnmount = true;\n }\n\n return {\n type: UNREGISTER_FIELD,\n meta: {\n form: form\n },\n payload: {\n name: name,\n destroyOnUnmount: destroyOnUnmount\n }\n };\n};\n\nvar untouch = function untouch(form) {\n for (var _len7 = arguments.length, fields = new Array(_len7 > 1 ? _len7 - 1 : 0), _key7 = 1; _key7 < _len7; _key7++) {\n fields[_key7 - 1] = arguments[_key7];\n }\n\n return {\n type: UNTOUCH,\n meta: {\n form: form,\n fields: fields\n }\n };\n};\n\nvar updateSyncErrors = function updateSyncErrors(form, syncErrors, error) {\n if (syncErrors === void 0) {\n syncErrors = {};\n }\n\n return {\n type: UPDATE_SYNC_ERRORS,\n meta: {\n form: form\n },\n payload: {\n syncErrors: syncErrors,\n error: error\n }\n };\n};\n\nvar updateSyncWarnings = function updateSyncWarnings(form, syncWarnings, warning) {\n if (syncWarnings === void 0) {\n syncWarnings = {};\n }\n\n return {\n type: UPDATE_SYNC_WARNINGS,\n meta: {\n form: form\n },\n payload: {\n syncWarnings: syncWarnings,\n warning: warning\n }\n };\n};\n\nvar actions = {\n arrayInsert: arrayInsert,\n arrayMove: arrayMove,\n arrayPop: arrayPop,\n arrayPush: arrayPush,\n arrayRemove: arrayRemove,\n arrayRemoveAll: arrayRemoveAll,\n arrayShift: arrayShift,\n arraySplice: arraySplice,\n arraySwap: arraySwap,\n arrayUnshift: arrayUnshift,\n autofill: autofill,\n blur: blur,\n change: change,\n clearFields: clearFields,\n clearSubmit: clearSubmit,\n clearSubmitErrors: clearSubmitErrors,\n clearAsyncError: clearAsyncError,\n destroy: destroy,\n focus: focus,\n initialize: initialize,\n registerField: registerField,\n reset: reset,\n resetSection: resetSection,\n startAsyncValidation: startAsyncValidation,\n startSubmit: startSubmit,\n stopAsyncValidation: stopAsyncValidation,\n stopSubmit: stopSubmit,\n submit: submit,\n setSubmitFailed: setSubmitFailed,\n setSubmitSucceeded: setSubmitSucceeded,\n touch: touch,\n unregisterField: unregisterField,\n untouch: untouch,\n updateSyncErrors: updateSyncErrors,\n updateSyncWarnings: updateSyncWarnings\n};\nexport default actions;","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","import requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\n\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument); // Clone the date\n\n if (argument instanceof Date || typeof argument === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule\"); // eslint-disable-next-line no-console\n\n console.warn(new Error().stack);\n }\n\n return new Date(NaN);\n }\n}","function _extends() {\n module.exports = _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","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\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var splice = function splice(array, index, removeNum, value) {\n array = array || [];\n\n if (index < array.length) {\n if (value === undefined && !removeNum) {\n // inserting undefined\n var _copy2 = [].concat(array);\n\n _copy2.splice(index, 0, true); // temporary placeholder\n\n\n _copy2[index] = undefined; // set to undefined\n\n return _copy2;\n }\n\n if (value != null) {\n var _copy3 = [].concat(array);\n\n _copy3.splice(index, removeNum, value); // removing and adding\n\n\n return _copy3;\n }\n\n var _copy = [].concat(array);\n\n _copy.splice(index, removeNum); // removing\n\n\n return _copy;\n }\n\n if (removeNum) {\n // trying to remove non-existant item: return original array\n return array;\n } // trying to add outside of range: just set value\n\n\n var copy = [].concat(array);\n copy[index] = value;\n return copy;\n};\n\nexport default splice;","import _toPath from \"lodash/toPath\";\n\nvar getIn = function getIn(state, field) {\n if (!state) {\n return state;\n }\n\n var path = _toPath(field);\n\n var length = path.length;\n\n if (!length) {\n return undefined;\n }\n\n var result = state;\n\n for (var i = 0; i < length && result; ++i) {\n result = result[path[i]];\n }\n\n return result;\n};\n\nexport default getIn;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _toPath from \"lodash/toPath\";\n\nvar setInWithPath = function setInWithPath(state, value, path, pathIndex) {\n var _extends2;\n\n if (pathIndex >= path.length) {\n return value;\n }\n\n var first = path[pathIndex];\n var firstState = state && (Array.isArray(state) ? state[Number(first)] : state[first]);\n var next = setInWithPath(firstState, value, path, pathIndex + 1);\n\n if (!state) {\n if (isNaN(first)) {\n var _ref;\n\n return _ref = {}, _ref[first] = next, _ref;\n }\n\n var initialized = [];\n initialized[parseInt(first, 10)] = next;\n return initialized;\n }\n\n if (Array.isArray(state)) {\n var copy = [].concat(state);\n copy[parseInt(first, 10)] = next;\n return copy;\n }\n\n return _extends({}, state, (_extends2 = {}, _extends2[first] = next, _extends2));\n};\n\nvar setIn = function setIn(state, field, value) {\n return setInWithPath(state, value, _toPath(field), 0);\n};\n\nexport default setIn;","import _isEqualWith from \"lodash/isEqualWith\";\nimport React from 'react';\n\nvar customizer = function customizer(obj, other) {\n if (obj === other) return true;\n\n if (!obj && !other) {\n var objIsEmpty = obj === null || obj === undefined || obj === '';\n var otherIsEmpty = other === null || other === undefined || other === '';\n return objIsEmpty === otherIsEmpty;\n }\n\n if (obj && other && obj._error !== other._error) return false;\n if (obj && other && obj._warning !== other._warning) return false;\n if (React.isValidElement(obj) || React.isValidElement(other)) return false;\n};\n\nvar deepEqual = function deepEqual(a, b) {\n return _isEqualWith(a, b, customizer);\n};\n\nexport default deepEqual;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _toPath from \"lodash/toPath\";\n\nfunction deleteInWithPath(state, first) {\n if (state === undefined || state === null || first === undefined || first === null) {\n return state;\n }\n\n for (var _len = arguments.length, rest = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n rest[_key - 2] = arguments[_key];\n }\n\n if (rest.length) {\n if (Array.isArray(state)) {\n if (isNaN(first)) {\n throw new Error(\"Must access array elements with a number, not \\\"\" + String(first) + \"\\\".\");\n }\n\n var firstIndex = Number(first);\n\n if (firstIndex < state.length) {\n var result = deleteInWithPath.apply(void 0, [state && state[firstIndex]].concat(rest));\n\n if (result !== state[firstIndex]) {\n var copy = [].concat(state);\n copy[firstIndex] = result;\n return copy;\n }\n }\n\n return state;\n }\n\n if (first in state) {\n var _extends2;\n\n var _result = deleteInWithPath.apply(void 0, [state && state[first]].concat(rest));\n\n return state[first] === _result ? state : _extends({}, state, (_extends2 = {}, _extends2[first] = _result, _extends2));\n }\n\n return state;\n }\n\n if (Array.isArray(state)) {\n if (isNaN(first)) {\n throw new Error(\"Cannot delete non-numerical index from an array. Given: \\\"\" + String(first));\n }\n\n var _firstIndex = Number(first);\n\n if (_firstIndex < state.length) {\n var _copy = [].concat(state);\n\n _copy.splice(_firstIndex, 1);\n\n return _copy;\n }\n\n return state;\n }\n\n if (first in state) {\n var _copy2 = _extends({}, state);\n\n delete _copy2[first];\n return _copy2;\n }\n\n return state;\n}\n\nvar deleteIn = function deleteIn(state, field) {\n return deleteInWithPath.apply(void 0, [state].concat(_toPath(field)));\n};\n\nexport default deleteIn;","function keys(value) {\n if (!value) {\n return [];\n }\n\n if (Array.isArray(value)) {\n return value.map(function (i) {\n return i.name;\n });\n }\n\n return Object.keys(value);\n}\n\nexport default keys;","import splice from './splice';\nimport getIn from './getIn';\nimport setIn from './setIn';\nimport deepEqual from './deepEqual';\nimport deleteIn from './deleteIn';\nimport keys from './keys';\nvar structure = {\n allowsArrayErrors: true,\n empty: {},\n emptyList: [],\n getIn: getIn,\n setIn: setIn,\n deepEqual: deepEqual,\n deleteIn: deleteIn,\n forEach: function forEach(items, callback) {\n return items.forEach(callback);\n },\n fromJS: function fromJS(value) {\n return value;\n },\n keys: keys,\n size: function size(array) {\n return array ? array.length : 0;\n },\n some: function some(items, callback) {\n return items.some(callback);\n },\n splice: splice,\n equals: function equals(a, b) {\n return b.every(function (val) {\n return ~a.indexOf(val);\n });\n },\n orderChanged: function orderChanged(a, b) {\n return b.some(function (val, index) {\n return val !== a[index];\n });\n },\n toJS: function toJS(value) {\n return value;\n }\n};\nexport default structure;","import addMilliseconds from \"date-fns/addMilliseconds\";\nimport format from \"date-fns/format\";\nimport formatDistance from \"date-fns/formatDistance\";\nimport BigNumber from \"../vendor/bignumber.js/bignumber\";\nimport { plural } from \"./string\";\nexport const KILOBYTE = 1024;\nexport const MEGABYTE = 1024 * 1024; // mebibyte\nexport const GIGABYTE = 1024 * 1024 * 1024; // gibibyte\nexport const TERABYTE = 1024 * 1024 * 1024 * 1024; // tebibyte\nexport const SECOND = 1000;\nexport const MINUTE = SECOND * 60;\nexport const HOUR = MINUTE * 60;\nexport const DAY = HOUR * 24;\nconst TRILLION = 1000000000000;\nconst BILLION = 1000000000;\nconst MILLION = 1000000;\nconst THOUSAND = 1000;\n/*\n JavaScript dates aren't consistent and assume the local time zone. This method generates a new UTC date.\n https://github.com/date-fns/date-fns/issues/376#issuecomment-353871093\n*/\nexport const getInitialUTCDate = () => {\n const date = new Date(0);\n return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());\n};\nclass NumberFormatter {\n // Formats a number to the specified number of decimal places.\n static formatNumber(value, decimalPlaces = 2) {\n if (typeof value === \"number\") {\n value = new BigNumber(value);\n }\n const fmt = {\n decimalSeparator: \".\",\n groupSeparator: \",\",\n groupSize: 3,\n fractionGroupSize: 2,\n };\n return value.decimalPlaces(decimalPlaces).toFormat(fmt);\n }\n // Converts an integer into its most compact representation. Decimal precision is ignored for all integers, n, such that abs(n) < 1000.\n static compactInteger(input, signed, decimalPlaces) {\n if (typeof decimalPlaces === \"undefined\") {\n decimalPlaces = 2;\n }\n if (typeof input === \"number\") {\n input = new BigNumber(input);\n }\n let sign = \"\";\n if (signed || input.lt(0)) {\n if (input.gte(0)) {\n sign = \"+\";\n }\n else {\n // Since we are manually adding the negative sign for negative\n // numbers, we make the actual number positive.\n input = input.negated();\n sign = \"−\";\n }\n }\n let formatted;\n if (input.gte(TRILLION)) {\n formatted = `${input\n .dividedBy(TRILLION)\n .decimalPlaces(decimalPlaces)}T`;\n }\n else if (input.gte(BILLION)) {\n formatted = `${input\n .dividedBy(BILLION)\n .decimalPlaces(decimalPlaces)}B`;\n }\n else if (input.gte(MILLION)) {\n formatted = `${input\n .dividedBy(MILLION)\n .decimalPlaces(decimalPlaces)}M`;\n }\n else if (input.gte(THOUSAND)) {\n formatted = `${input\n .dividedBy(THOUSAND)\n .decimalPlaces(decimalPlaces)}K`;\n }\n else {\n formatted = `${input.decimalPlaces(decimalPlaces)}`;\n }\n return `${sign}${formatted}`;\n }\n /*\n Convert a given number of bytes into a string in an appropriate unit\n based on magnitude.\n\n This function returns units like KB and MB and GB - however the values\n are computed using a binary base (1024 rather than 1000).\n\n The most common cases are optimized.\n\n Example:\n\n NumberFormatter.formatBytes(1234567)\n Returns: \"1 MB\"\n */\n static formatBytes(bytes) {\n if (typeof bytes === \"number\") {\n bytes = new BigNumber(bytes);\n }\n if (bytes.isZero()) {\n return \"0 B\";\n }\n else if (bytes.lt(KILOBYTE)) {\n return `${NumberFormatter.formatNumber(bytes, 0)} B`;\n }\n else if (bytes.lt(MEGABYTE)) {\n return `${NumberFormatter.formatNumber(bytes.dividedBy(KILOBYTE), 0)} KB`;\n }\n else if (bytes.lt(GIGABYTE)) {\n return `${NumberFormatter.formatNumber(bytes.dividedBy(MEGABYTE), 0)} MB`;\n }\n else if (bytes.lt(TERABYTE)) {\n return `${NumberFormatter.formatNumber(bytes.dividedBy(GIGABYTE), 1)} GB`;\n }\n else {\n return `${NumberFormatter.formatNumber(bytes.dividedBy(TERABYTE), 2)} TB`;\n }\n }\n /*\n Formats a duration in milliseconds to a human readable string,\n maintaining a high degree of accuracy. Use in place of\n distanceInWords() if the value is often < 5 seconds.\n\n Returns `0 ms` if the number is negative or not a finite number.\n */\n static formatDuration(numMs) {\n if (typeof numMs === \"number\") {\n numMs = new BigNumber(numMs);\n }\n // Convert base date to UTC date, otherwise it will format as local date\n // JavaScript dates aren't consistent and assume the local time zone, so a UTC date must be used.\n // https://github.com/date-fns/date-fns/issues/376\n const helperDate = addMilliseconds(getInitialUTCDate(), numMs.toNumber());\n if (numMs.lte(0)) {\n return \"0 ms\";\n }\n else if (numMs.lt(SECOND)) {\n return `${NumberFormatter.formatNumber(numMs)} ms`;\n }\n else if (numMs.lt(SECOND * 5)) {\n return format(helperDate, \"s'.'SSS 's'\");\n }\n else if (numMs.lt(MINUTE)) {\n // less than a min - format as X s\n return format(helperDate, \"s 's'\");\n }\n else if (numMs.lt(HOUR)) {\n // less than a hour - format as XXm:XXs\n return format(helperDate, \"mm'm':ss's'\");\n }\n else if (numMs.lt(DAY)) {\n // less than a day - format as XXh:XXm:XXs\n return format(helperDate, \"HH'h':mm'm':ss's'\");\n }\n else {\n // a day or more - let date-fns handle it\n return formatDistance(addMilliseconds(new Date(), numMs.toNumber()), new Date());\n }\n }\n /*\n Formats a time distance in words between two dates.\n Similar to distanceInWords from date-fns but custom for our needs.\n */\n static formatTimeDistanceInWords(first, second) {\n const timeDelta = first.getTime() - second.getTime();\n const numMs = new BigNumber(timeDelta);\n if (numMs.lt(MINUTE)) {\n return \"0 mins ago\";\n }\n else if (numMs.lt(HOUR)) {\n const minutes = numMs.dividedBy(SECOND * 60).integerValue();\n return `${minutes} ${plural(\"min\", minutes)} ago`;\n }\n else if (numMs.lt(DAY)) {\n const hours = numMs.dividedBy(SECOND * 60 * 60).integerValue();\n return `${hours} ${plural(\"hour\", hours)} ago`;\n }\n else {\n const days = numMs.dividedBy(SECOND * 60 * 60 * 24).integerValue();\n return `${days} ${plural(\"day\", days)} ago`;\n }\n }\n static formatPercent(value) {\n if (typeof value === \"number\") {\n value = new BigNumber(value);\n }\n return `${NumberFormatter.formatNumber(value.multipliedBy(100))}%`;\n }\n static formatCurrency(value, currency = \"USD\") {\n // The first argument is the locale, we send it as `undefined` so it\n // uses the default locale according the user location.\n return Intl.NumberFormat(undefined, {\n style: \"currency\",\n currency,\n }).format(value);\n }\n}\nNumberFormatter.formatRateS = (metric) => {\n const formattedCompactMetric = NumberFormatter.compactInteger(metric, false, 0);\n return `${formattedCompactMetric} / sec`;\n};\nexport default NumberFormatter;\n","//\n// C Context type\n// I Type of handler's args\n// A Type of the actions being returned\n//\nconst assertHandlerNameIsUnique = (() => {\n const h = {};\n return (name) => {\n if (h[name]) {\n throw new Error(`Worker API handler name is not unique ${name}`);\n }\n h[name] = true;\n };\n})();\nexport const makeActionCreator = ({ name, handle, }) => {\n assertHandlerNameIsUnique(name);\n const actionType = `actionHandler.${name}`;\n const actionCreator = (args) => ({\n type: actionType,\n payload: args,\n error: false,\n });\n actionCreator.handler = { actionType, handle };\n return actionCreator;\n};\n","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","var _typeof = require(\"@babel/runtime/helpers/typeof\")[\"default\"];\n\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","/**\n * Ensure some object is a coerced to a string\n **/\nmodule.exports = function makeString(object) {\n if (object == null) return '';\n return '' + object;\n};\n","export const consoleQueryAction = (payload) => ({\n type: \"CONSOLE_QUERY\",\n error: false,\n payload,\n});\nexport const consoleEmptyQueryAction = () => ({\n type: \"CONSOLE_EMPTY_QUERY\",\n error: false,\n payload: {},\n});\nexport function queryExecutorMessageAction(payload) {\n return {\n type: \"QUERY_EXECUTOR_MESSAGE\",\n error: false,\n payload,\n };\n}\n","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","export function nullableToMaybe(t) {\n return t === null ? undefined : t;\n}\n","import * as React from \"react\";\nimport { LoadingBar } from \"../bars/loading-bar\";\nimport { Icon } from \"../icon/icon\";\nimport { Loading } from \"../loading/loading\";\nimport \"./render-loading-error.scss\";\nexport const ERROR_NODE = (React.createElement(\"div\", { className: \"loading-error-error\" },\n React.createElement(Icon, { icon: \"exclamation-triangle\", state: \"error\", rightMargin: true }),\n \"Unknown\"));\nexport const LOADING_NODE = ({ loadingMessage = \"\", size = \"small\", inlineMessage = true, } = {}) => (React.createElement(Loading, { size: size, message: loadingMessage, inlineMessage: inlineMessage }));\nexport const LOADING_CELL_NODE = (React.createElement(\"div\", { className: \"loading-bar-cell\" },\n React.createElement(LoadingBar, { width: 100 })));\nexport function renderLoadingError(data, renderPayload, { cell, loadingNode, loadingOptions, renderError, } = {}) {\n if (data.isError()) {\n if (renderError) {\n return renderError(data.errorValue);\n }\n else {\n return ERROR_NODE;\n }\n }\n else if (data.isLoading()) {\n if (cell) {\n return LOADING_CELL_NODE;\n }\n else if (loadingNode) {\n return loadingNode;\n }\n else {\n return LOADING_NODE(loadingOptions);\n }\n }\n else {\n return renderPayload(data.value);\n }\n}\n","//\n// C Context type\n// I Type of handler's args\n// A Type of the actions being returned\n//\nconst assertHandlerNameIsUnique = (() => {\n const h = {};\n return (name) => {\n if (h[name]) {\n throw new Error(`Worker API handler name is not unique ${name}`);\n }\n h[name] = true;\n };\n})();\nexport const makeActionCreator = ({ name, handle, }) => {\n assertHandlerNameIsUnique(name);\n const actionType = `actionHandler.${name}`;\n const actionCreator = (args) => ({\n type: actionType,\n payload: args,\n error: false,\n _worker: true,\n });\n actionCreator.handler = { actionType, handle };\n return actionCreator;\n};\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","import $$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 */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\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\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error('It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function.');\n }\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 * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\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\n\n function getState() {\n if (isDispatching) {\n throw new Error('You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\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\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected the listener to be a function.');\n }\n\n if (isDispatching) {\n throw new Error('You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error('You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\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\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\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\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\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; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\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\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' || observer === null) {\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 {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\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\n\n dispatch({\n 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 * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction 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\n\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 } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionDescription = actionType && \"action \\\"\" + String(actionType) + \"\\\"\" || 'an action';\n return \"Given \" + actionDescription + \", 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 unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\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, {\n type: ActionTypes.INIT\n });\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 if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === '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 * 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 */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\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\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\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\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\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\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\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 an action creator as the first argument,\n * and get a dispatch wrapped 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 */\n\n\nfunction 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 boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n keys.push.apply(keys, Object.getOwnPropertySymbols(object));\n }\n\n if (enumerableOnly) keys = keys.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\n/**\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 */\nfunction compose() {\n for (var _len = arguments.length, funcs = new 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(void 0, arguments));\n };\n });\n}\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 */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error('Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread2({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}\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 */\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 setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore };\n","export const HYPHEN = \"‐\";\nexport const LONG_EM_DASH = \"—\";\n","var arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function defaultEqualityCheck(a, b) {\n return a === b;\n}\n\nfunction areArgumentsShallowlyEqual(equalityCheck, prev, next) {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n }\n\n // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n var length = prev.length;\n for (var i = 0; i < length; i++) {\n if (!equalityCheck(prev[i], next[i])) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function defaultMemoize(func) {\n var equalityCheck = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultEqualityCheck;\n\n var lastArgs = null;\n var lastResult = null;\n // we reference arguments instead of spreading them for performance reasons\n return function () {\n if (!areArgumentsShallowlyEqual(equalityCheck, lastArgs, arguments)) {\n // apply arguments instead of spreading for performance.\n lastResult = func.apply(null, arguments);\n }\n\n lastArgs = arguments;\n return lastResult;\n };\n}\n\nfunction getDependencies(funcs) {\n var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n if (!dependencies.every(function (dep) {\n return typeof dep === 'function';\n })) {\n var dependencyTypes = dependencies.map(function (dep) {\n return typeof dep;\n }).join(', ');\n throw new Error('Selector creators expect all input-selectors to be functions, ' + ('instead received the following types: [' + dependencyTypes + ']'));\n }\n\n return dependencies;\n}\n\nexport function createSelectorCreator(memoize) {\n for (var _len = arguments.length, memoizeOptions = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n memoizeOptions[_key - 1] = arguments[_key];\n }\n\n return function () {\n for (var _len2 = arguments.length, funcs = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n funcs[_key2] = arguments[_key2];\n }\n\n var recomputations = 0;\n var resultFunc = funcs.pop();\n var dependencies = getDependencies(funcs);\n\n var memoizedResultFunc = memoize.apply(undefined, [function () {\n recomputations++;\n // apply arguments instead of spreading for performance.\n return resultFunc.apply(null, arguments);\n }].concat(memoizeOptions));\n\n // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\n var selector = memoize(function () {\n var params = [];\n var length = dependencies.length;\n\n for (var i = 0; i < length; i++) {\n // apply arguments instead of spreading and mutate a local list of params for performance.\n params.push(dependencies[i].apply(null, arguments));\n }\n\n // apply arguments instead of spreading for performance.\n return memoizedResultFunc.apply(null, params);\n });\n\n selector.resultFunc = resultFunc;\n selector.dependencies = dependencies;\n selector.recomputations = function () {\n return recomputations;\n };\n selector.resetRecomputations = function () {\n return recomputations = 0;\n };\n return selector;\n };\n}\n\nexport var createSelector = createSelectorCreator(defaultMemoize);\n\nexport function createStructuredSelector(selectors) {\n var selectorCreator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : createSelector;\n\n if (typeof selectors !== 'object') {\n throw new Error('createStructuredSelector expects first argument to be an object ' + ('where each property is a selector, instead received a ' + typeof selectors));\n }\n var objectKeys = Object.keys(selectors);\n return selectorCreator(objectKeys.map(function (key) {\n return selectors[key];\n }), function () {\n for (var _len3 = arguments.length, values = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n values[_key3] = arguments[_key3];\n }\n\n return values.reduce(function (composition, value, index) {\n composition[objectKeys[index]] = value;\n return composition;\n }, {});\n });\n}","import React from 'react';\nexport var ReactReduxContext = React.createContext(null);\nexport default ReactReduxContext;","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n callback();\n}\n\nvar batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport var setBatch = function setBatch(newBatch) {\n return batch = newBatch;\n}; // Supply a getter just to skip dealing with ESM bindings\n\nexport var getBatch = function getBatch() {\n return batch;\n};","import { getBatch } from './batch'; // 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 var batch = getBatch(); // the current/next pattern is copied from redux's createStore code.\n // TODO: refactor+expose that code to be reusable here?\n\n var current = [];\n var next = [];\n return {\n clear: function clear() {\n next = CLEARED;\n current = CLEARED;\n },\n notify: function notify() {\n var listeners = current = next;\n batch(function () {\n for (var i = 0; i < listeners.length; i++) {\n listeners[i]();\n }\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 return function unsubscribe() {\n if (!isSubscribed || current === CLEARED) return;\n isSubscribed = false;\n if (next === current) next = current.slice();\n next.splice(next.indexOf(listener), 1);\n };\n }\n };\n}\n\nvar Subscription =\n/*#__PURE__*/\nfunction () {\n function Subscription(store, parentSub) {\n this.store = store;\n this.parentSub = parentSub;\n this.unsubscribe = null;\n this.listeners = nullListeners;\n this.handleChangeWrapper = this.handleChangeWrapper.bind(this);\n }\n\n var _proto = Subscription.prototype;\n\n _proto.addNestedSub = function addNestedSub(listener) {\n this.trySubscribe();\n return this.listeners.subscribe(listener);\n };\n\n _proto.notifyNestedSubs = function notifyNestedSubs() {\n this.listeners.notify();\n };\n\n _proto.handleChangeWrapper = function handleChangeWrapper() {\n if (this.onStateChange) {\n this.onStateChange();\n }\n };\n\n _proto.isSubscribed = function isSubscribed() {\n return Boolean(this.unsubscribe);\n };\n\n _proto.trySubscribe = function trySubscribe() {\n if (!this.unsubscribe) {\n this.unsubscribe = this.parentSub ? this.parentSub.addNestedSub(this.handleChangeWrapper) : this.store.subscribe(this.handleChangeWrapper);\n this.listeners = createListenerCollection();\n }\n };\n\n _proto.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 };","import React, { useMemo, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactReduxContext } from './Context';\nimport Subscription from '../utils/Subscription';\n\nfunction Provider(_ref) {\n var store = _ref.store,\n context = _ref.context,\n children = _ref.children;\n var contextValue = useMemo(function () {\n var subscription = new Subscription(store);\n subscription.onStateChange = subscription.notifyNestedSubs;\n return {\n store: store,\n subscription: subscription\n };\n }, [store]);\n var previousState = useMemo(function () {\n return store.getState();\n }, [store]);\n useEffect(function () {\n var subscription = contextValue.subscription;\n subscription.trySubscribe();\n\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n\n return function () {\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n };\n }, [contextValue, previousState]);\n var Context = context || ReactReduxContext;\n return React.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n\nProvider.propTypes = {\n store: PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n }),\n context: PropTypes.object,\n children: PropTypes.any\n};\nexport default Provider;","import { useEffect, useLayoutEffect } from 'react'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\nvar isHopefullyDomEnvironment = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined';\nexport var useIsomorphicLayoutEffect = isHopefullyDomEnvironment ? useLayoutEffect : useEffect;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport hoistStatics from 'hoist-non-react-statics';\nimport invariant from 'invariant';\nimport React, { useContext, useMemo, useRef, useReducer } from 'react';\nimport { isValidElementType, isContextConsumer } from 'react-is';\nimport Subscription from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from './Context'; // Define some constant arrays just to avoid re-creating these\n\nvar EMPTY_ARRAY = [];\nvar NO_SUBSCRIPTION_ARRAY = [null, null];\n\nvar stringifyComponent = function stringifyComponent(Comp) {\n try {\n return JSON.stringify(Comp);\n } catch (err) {\n return String(Comp);\n }\n};\n\nfunction storeStateUpdatesReducer(state, action) {\n var updateCount = state[1];\n return [action.payload, updateCount + 1];\n}\n\nvar initStateUpdates = function initStateUpdates() {\n return [null, 0];\n};\n\nexport default function connectAdvanced(\n/*\r\n selectorFactory is a func that is responsible for returning the selector function used to\r\n compute new props from state, props, and dispatch. For example:\r\n export default connectAdvanced((dispatch, options) => (state, props) => ({\r\n thing: state.things[props.thingId],\r\n saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\r\n }))(YourComponent)\r\n Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\r\n outside of their selector as an optimization. Options passed to connectAdvanced are passed to\r\n the selectorFactory, along with displayName and WrappedComponent, as the second argument.\r\n Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\r\n props. Do not use connectAdvanced directly without memoizing results between calls to your\r\n selector, otherwise the Connect component will re-render on every state or props change.\r\n*/\nselectorFactory, // options object:\n_ref) {\n if (_ref === void 0) {\n _ref = {};\n }\n\n var _ref2 = _ref,\n _ref2$getDisplayName = _ref2.getDisplayName,\n getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n return \"ConnectAdvanced(\" + name + \")\";\n } : _ref2$getDisplayName,\n _ref2$methodName = _ref2.methodName,\n methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n _ref2$renderCountProp = _ref2.renderCountProp,\n renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n _ref2$storeKey = _ref2.storeKey,\n storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n _ref2$withRef = _ref2.withRef,\n withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n _ref2$forwardRef = _ref2.forwardRef,\n forwardRef = _ref2$forwardRef === void 0 ? false : _ref2$forwardRef,\n _ref2$context = _ref2.context,\n context = _ref2$context === void 0 ? ReactReduxContext : _ref2$context,\n connectOptions = _objectWithoutPropertiesLoose(_ref2, [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\", \"forwardRef\", \"context\"]);\n\n invariant(renderCountProp === undefined, \"renderCountProp is removed. render counting is built into the latest React Dev Tools profiling extension\");\n invariant(!withRef, 'withRef is removed. To access the wrapped instance, use a ref on the connected component');\n var customStoreWarningMessage = 'To use a custom Redux store for specific components, create a custom React context with ' + \"React.createContext(), and pass the context object to React Redux's Provider and specific components\" + ' like: . ' + 'You may also pass a {context : MyContext} option to connect';\n invariant(storeKey === 'store', 'storeKey has been removed and does not do anything. ' + customStoreWarningMessage);\n var Context = context;\n return function wrapWithConnect(WrappedComponent) {\n if (process.env.NODE_ENV !== 'production') {\n invariant(isValidElementType(WrappedComponent), \"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + stringifyComponent(WrappedComponent)));\n }\n\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\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 displayName: displayName,\n wrappedComponentName: wrappedComponentName,\n WrappedComponent: WrappedComponent\n });\n\n var pure = connectOptions.pure;\n\n function createChildSelector(store) {\n return selectorFactory(store.dispatch, selectorFactoryOptions);\n } // If we aren't running in \"pure\" mode, we don't want to memoize values.\n // To avoid conditionally calling hooks, we fall back to a tiny wrapper\n // that just executes the given callback immediately.\n\n\n var usePureOnlyMemo = pure ? useMemo : function (callback) {\n return callback();\n };\n\n function ConnectFunction(props) {\n var _useMemo = useMemo(function () {\n // Distinguish between actual \"data\" props that were passed to the wrapper component,\n // and values needed to control behavior (forwarded refs, alternate context instances).\n // To maintain the wrapperProps object reference, memoize this destructuring.\n var forwardedRef = props.forwardedRef,\n wrapperProps = _objectWithoutPropertiesLoose(props, [\"forwardedRef\"]);\n\n return [props.context, forwardedRef, wrapperProps];\n }, [props]),\n propsContext = _useMemo[0],\n forwardedRef = _useMemo[1],\n wrapperProps = _useMemo[2];\n\n var ContextToUse = useMemo(function () {\n // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\n // Memoize the check that determines which context instance we should use.\n return propsContext && propsContext.Consumer && isContextConsumer(React.createElement(propsContext.Consumer, null)) ? propsContext : Context;\n }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available\n\n var contextValue = useContext(ContextToUse); // The store _must_ exist as either a prop or in context.\n // We'll check to see if it _looks_ like a Redux store first.\n // This allows us to pass through a `store` prop that is just a plain value.\n\n var didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n var didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n invariant(didStoreComeFromProps || didStoreComeFromContext, \"Could not find \\\"store\\\" in the context of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a , \") + \"or pass a custom React context provider to and the corresponding \" + (\"React context consumer to \" + displayName + \" in connect options.\")); // Based on the previous check, one of these must be true\n\n var store = didStoreComeFromProps ? props.store : contextValue.store;\n var childPropsSelector = useMemo(function () {\n // The child props selector needs the store reference as an input.\n // Re-create this selector whenever the store changes.\n return createChildSelector(store);\n }, [store]);\n\n var _useMemo2 = useMemo(function () {\n if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription'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\n var subscription = new Subscription(store, didStoreComeFromProps ? null : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `subscription` will then be null. This can\n // probably be avoided if Subscription's listeners logic is changed to not call listeners\n // that have been unsubscribed in the middle of the notification loop.\n\n var notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);\n return [subscription, notifyNestedSubs];\n }, [store, didStoreComeFromProps, contextValue]),\n subscription = _useMemo2[0],\n notifyNestedSubs = _useMemo2[1]; // Determine what {store, subscription} value should be put into nested context, if necessary,\n // and memoize that value to avoid unnecessary context updates.\n\n\n var overriddenContextValue = useMemo(function () {\n if (didStoreComeFromProps) {\n // This component is directly subscribed to a store from props.\n // We don't want descendants reading from this store - pass down whatever\n // the existing context value is from the nearest connected ancestor.\n return contextValue;\n } // Otherwise, put this component's subscription instance into context, so that\n // connected descendants won't update until after this component is done\n\n\n return _extends({}, contextValue, {\n subscription: subscription\n });\n }, [didStoreComeFromProps, contextValue, subscription]); // We need to force this wrapper component to re-render whenever a Redux store update\n // causes a change to the calculated child component props (or we caught an error in mapState)\n\n var _useReducer = useReducer(storeStateUpdatesReducer, EMPTY_ARRAY, initStateUpdates),\n _useReducer$ = _useReducer[0],\n previousStateUpdateResult = _useReducer$[0],\n forceComponentUpdateDispatch = _useReducer[1]; // Propagate any mapState/mapDispatch errors upwards\n\n\n if (previousStateUpdateResult && previousStateUpdateResult.error) {\n throw previousStateUpdateResult.error;\n } // Set up refs to coordinate values between the subscription effect and the render logic\n\n\n var lastChildProps = useRef();\n var lastWrapperProps = useRef(wrapperProps);\n var childPropsFromStoreUpdate = useRef();\n var renderIsScheduled = useRef(false);\n var actualChildProps = usePureOnlyMemo(function () {\n // Tricky logic here:\n // - This render may have been triggered by a Redux store update that produced new child props\n // - However, we may have gotten new wrapper props after that\n // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\n // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\n // So, we'll use the child props from store update only if the wrapper props are the same as last time.\n if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n return childPropsFromStoreUpdate.current;\n } // TODO We're reading the store directly in render() here. Bad idea?\n // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\n // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\n // to determine what the child props should be.\n\n\n return childPropsSelector(store.getState(), wrapperProps);\n }, [store, previousStateUpdateResult, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns\n // about useLayoutEffect in SSR, so we try to detect environment and fall back to\n // just useEffect instead to avoid the warning, since neither will run anyway.\n\n useIsomorphicLayoutEffect(function () {\n // We want to capture the wrapper props and child props we used for later comparisons\n lastWrapperProps.current = wrapperProps;\n lastChildProps.current = actualChildProps;\n renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update\n\n if (childPropsFromStoreUpdate.current) {\n childPropsFromStoreUpdate.current = null;\n notifyNestedSubs();\n }\n }); // Our re-subscribe logic only runs when the store/subscription setup changes\n\n useIsomorphicLayoutEffect(function () {\n // If we're not subscribed to the store, nothing to do here\n if (!shouldHandleStateChanges) return; // Capture values for checking if and when this component unmounts\n\n var didUnsubscribe = false;\n var lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component\n\n var checkForUpdates = function checkForUpdates() {\n if (didUnsubscribe) {\n // Don't run stale listeners.\n // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n return;\n }\n\n var latestStoreState = store.getState();\n var newChildProps, error;\n\n try {\n // Actually run the selector with the most recent store state and wrapper props\n // to determine what the child props should be\n newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);\n } catch (e) {\n error = e;\n lastThrownError = e;\n }\n\n if (!error) {\n lastThrownError = null;\n } // If the child props haven't changed, nothing to do here - cascade the subscription update\n\n\n if (newChildProps === lastChildProps.current) {\n if (!renderIsScheduled.current) {\n notifyNestedSubs();\n }\n } else {\n // Save references to the new child props. Note that we track the \"child props from store update\"\n // as a ref instead of a useState/useReducer because we need a way to determine if that value has\n // been processed. If this went into useState/useReducer, we couldn't clear out the value without\n // forcing another re-render, which we don't want.\n lastChildProps.current = newChildProps;\n childPropsFromStoreUpdate.current = newChildProps;\n renderIsScheduled.current = true; // If the child props _did_ change (or we caught an error), this wrapper component needs to re-render\n\n forceComponentUpdateDispatch({\n type: 'STORE_UPDATED',\n payload: {\n error: error\n }\n });\n }\n }; // Actually subscribe to the nearest connected ancestor (or store)\n\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe(); // Pull data from the store after first render in case the store has\n // changed since we began.\n\n checkForUpdates();\n\n var unsubscribeWrapper = function unsubscribeWrapper() {\n didUnsubscribe = true;\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n\n if (lastThrownError) {\n // It's possible that we caught an error due to a bad mapState function, but the\n // parent re-rendered without this component and we're about to unmount.\n // This shouldn't happen as long as we do top-down subscriptions correctly, but\n // if we ever do those wrong, this throw will surface the error in our tests.\n // In that case, throw the error from here so it doesn't get lost.\n throw lastThrownError;\n }\n };\n\n return unsubscribeWrapper;\n }, [store, subscription, childPropsSelector]); // Now that all that's done, we can finally try to actually render the child component.\n // We memoize the elements for the rendered child component as an optimization.\n\n var renderedWrappedComponent = useMemo(function () {\n return React.createElement(WrappedComponent, _extends({}, actualChildProps, {\n ref: forwardedRef\n }));\n }, [forwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering\n // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\n\n var renderedChild = useMemo(function () {\n if (shouldHandleStateChanges) {\n // If this component is subscribed to store updates, we need to pass its own\n // subscription instance down to our descendants. That means rendering the same\n // Context instance, and putting a different value into the context.\n return React.createElement(ContextToUse.Provider, {\n value: overriddenContextValue\n }, renderedWrappedComponent);\n }\n\n return renderedWrappedComponent;\n }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n return renderedChild;\n } // If we're in \"pure\" mode, ensure our wrapper component only re-renders when incoming props have changed.\n\n\n var Connect = pure ? React.memo(ConnectFunction) : ConnectFunction;\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = displayName;\n\n if (forwardRef) {\n var forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n return React.createElement(Connect, _extends({}, props, {\n forwardedRef: ref\n }));\n });\n forwarded.displayName = displayName;\n forwarded.WrappedComponent = WrappedComponent;\n return hoistStatics(forwarded, WrappedComponent);\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n}","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 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}","import verifyPlainObject from '../utils/verifyPlainObject';\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\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\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..\n\nexport function getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\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//\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 }; // allow detectFactoryAndVerify to get ownProps\n\n\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 return props;\n };\n\n return proxy;\n };\n}","import { bindActionCreators } from 'redux';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n return {\n dispatch: dispatch\n };\n }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n return bindActionCreators(mapDispatchToProps, dispatch);\n }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(function () {\n return {};\n }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n return _extends({}, ownProps, {}, stateProps, {}, dispatchProps);\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 var hasRunOnce = false;\n var mergedProps;\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 if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n }\n\n return mergedProps;\n };\n };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n return !mergeProps ? function () {\n return defaultMergeProps;\n } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport verifySubselectors from './verifySubselectors';\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}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n var areStatesEqual = _ref.areStatesEqual,\n areOwnPropsEqual = _ref.areOwnPropsEqual,\n areStatePropsEqual = _ref.areStatePropsEqual;\n var hasRunAtLeastOnce = false;\n var state;\n var ownProps;\n var stateProps;\n var dispatchProps;\n var mergedProps;\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 if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\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 if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\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 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} // TODO: Add more comments\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 = _objectWithoutPropertiesLoose(_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 return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\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/*\r\n connect is a facade over connectAdvanced. It turns its args into a compatible\r\n selectorFactory, which has the signature:\r\n\r\n (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\r\n \r\n connect passes its args to connectAdvanced as options, which will in turn pass them to\r\n selectorFactory each time a Connect component instance is instantiated or hot reloaded.\r\n\r\n selectorFactory returns a final props selector from its mapStateToProps,\r\n mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\r\n mergePropsFactories, and pure args.\r\n\r\n The resulting final props selector is called by the Connect component instance whenever\r\n it receives new props or store state.\r\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} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$connectHOC = _ref.connectHOC,\n connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n _ref$mergePropsFactor = _ref.mergePropsFactories,\n mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n _ref$selectorFactory = _ref.selectorFactory,\n selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n if (_ref2 === void 0) {\n _ref2 = {};\n }\n\n var _ref3 = _ref2,\n _ref3$pure = _ref3.pure,\n pure = _ref3$pure === void 0 ? true : _ref3$pure,\n _ref3$areStatesEqual = _ref3.areStatesEqual,\n areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n extraOptions = _objectWithoutPropertiesLoose(_ref3, [\"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 return connectHOC(selectorFactory, _extends({\n // used in error messages\n methodName: 'connect',\n // used to compute Connect's displayName from the wrapped component's displayName.\n getDisplayName: function getDisplayName(name) {\n return \"Connect(\" + name + \")\";\n },\n // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n shouldHandleStateChanges: Boolean(mapStateToProps),\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 }, extraOptions));\n };\n}\nexport default createConnect();","import { useContext } from 'react';\nimport invariant from 'invariant';\nimport { ReactReduxContext } from '../components/Context';\n/**\r\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @returns {any} the value of the `ReactReduxContext`\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useReduxContext } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n * const { store } = useReduxContext()\r\n * return
{store.getState()}
\r\n * }\r\n */\n\nexport function useReduxContext() {\n var contextValue = useContext(ReactReduxContext);\n invariant(contextValue, 'could not find react-redux context value; please ensure the component is wrapped in a ');\n return contextValue;\n}","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\n/**\r\n * Hook factory, which creates a `useStore` hook bound to a given context.\r\n *\r\n * @param {Function} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useStore` hook bound to the specified context.\r\n */\n\nexport function createStoreHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useStore() {\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store;\n\n return store;\n };\n}\n/**\r\n * A hook to access the redux store.\r\n *\r\n * @returns {any} the redux store\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useStore } from 'react-redux'\r\n *\r\n * export const ExampleComponent = () => {\r\n * const store = useStore()\r\n * return
{store.getState()}
\r\n * }\r\n */\n\nexport var useStore = createStoreHook();","import { ReactReduxContext } from '../components/Context';\nimport { useStore as useDefaultStore, createStoreHook } from './useStore';\n/**\r\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\r\n *\r\n * @param {Function} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useDispatch` hook bound to the specified context.\r\n */\n\nexport function createDispatchHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useStore = context === ReactReduxContext ? useDefaultStore : createStoreHook(context);\n return function useDispatch() {\n var store = useStore();\n return store.dispatch;\n };\n}\n/**\r\n * A hook to access the redux `dispatch` function.\r\n *\r\n * @returns {any|function} redux store's `dispatch` function\r\n *\r\n * @example\r\n *\r\n * import React, { useCallback } from 'react'\r\n * import { useDispatch } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n * const dispatch = useDispatch()\r\n * const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\r\n * return (\r\n *
\r\n * {value}\r\n * \r\n *
\r\n * )\r\n * }\r\n */\n\nexport var useDispatch = createDispatchHook();","import { useReducer, useRef, useMemo, useContext } from 'react';\nimport invariant from 'invariant';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport Subscription from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from '../components/Context';\n\nvar refEquality = function refEquality(a, b) {\n return a === b;\n};\n\nfunction useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub) {\n var _useReducer = useReducer(function (s) {\n return s + 1;\n }, 0),\n forceRender = _useReducer[1];\n\n var subscription = useMemo(function () {\n return new Subscription(store, contextSub);\n }, [store, contextSub]);\n var latestSubscriptionCallbackError = useRef();\n var latestSelector = useRef();\n var latestSelectedState = useRef();\n var selectedState;\n\n try {\n if (selector !== latestSelector.current || latestSubscriptionCallbackError.current) {\n selectedState = selector(store.getState());\n } else {\n selectedState = latestSelectedState.current;\n }\n } catch (err) {\n var errorMessage = \"An error occurred while selecting the store state: \" + err.message + \".\";\n\n if (latestSubscriptionCallbackError.current) {\n errorMessage += \"\\nThe error may be correlated with this previous error:\\n\" + latestSubscriptionCallbackError.current.stack + \"\\n\\nOriginal stack trace:\";\n }\n\n throw new Error(errorMessage);\n }\n\n useIsomorphicLayoutEffect(function () {\n latestSelector.current = selector;\n latestSelectedState.current = selectedState;\n latestSubscriptionCallbackError.current = undefined;\n });\n useIsomorphicLayoutEffect(function () {\n function checkForUpdates() {\n try {\n var newSelectedState = latestSelector.current(store.getState());\n\n if (equalityFn(newSelectedState, latestSelectedState.current)) {\n return;\n }\n\n latestSelectedState.current = newSelectedState;\n } catch (err) {\n // we ignore all errors here, since when the component\n // is re-rendered, the selectors are called again, and\n // will throw again, if neither props nor store state\n // changed\n latestSubscriptionCallbackError.current = err;\n }\n\n forceRender({});\n }\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe();\n checkForUpdates();\n return function () {\n return subscription.tryUnsubscribe();\n };\n }, [store, subscription]);\n return selectedState;\n}\n/**\r\n * Hook factory, which creates a `useSelector` hook bound to a given context.\r\n *\r\n * @param {Function} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useSelector` hook bound to the specified context.\r\n */\n\n\nexport function createSelectorHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useSelector(selector, equalityFn) {\n if (equalityFn === void 0) {\n equalityFn = refEquality;\n }\n\n invariant(selector, \"You must pass a selector to useSelectors\");\n\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store,\n contextSub = _useReduxContext.subscription;\n\n return useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub);\n };\n}\n/**\r\n * A hook to access the redux store's state. This hook takes a selector function\r\n * as an argument. The selector is called with the store state.\r\n *\r\n * This hook takes an optional equality comparison function as the second parameter\r\n * that allows you to customize the way the selected state is compared to determine\r\n * whether the component needs to be re-rendered.\r\n *\r\n * @param {Function} selector the selector function\r\n * @param {Function=} equalityFn the function that will be used to determine equality\r\n *\r\n * @returns {any} the selected state\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useSelector } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n * const counter = useSelector(state => state.counter)\r\n * return
{counter}
\r\n * }\r\n */\n\nexport var useSelector = createSelectorHook();","import Provider from './components/Provider';\nimport connectAdvanced from './components/connectAdvanced';\nimport { ReactReduxContext } from './components/Context';\nimport connect from './connect/connect';\nimport { useDispatch, createDispatchHook } from './hooks/useDispatch';\nimport { useSelector, createSelectorHook } from './hooks/useSelector';\nimport { useStore, createStoreHook } from './hooks/useStore';\nimport { setBatch } from './utils/batch';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport shallowEqual from './utils/shallowEqual';\nsetBatch(batch);\nexport { Provider, connectAdvanced, ReactReduxContext, connect, batch, useDispatch, createDispatchHook, useSelector, createSelectorHook, useStore, createStoreHook, shallowEqual };","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function noop() { }\n//# sourceMappingURL=noop.js.map\n","/** PURE_IMPORTS_START _noop PURE_IMPORTS_END */\nimport { noop } from './noop';\nexport function pipe() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (!fns) {\n return noop;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n };\n}\n//# sourceMappingURL=pipe.js.map\n","/** PURE_IMPORTS_START _util_canReportError,_util_toSubscriber,_symbol_observable,_util_pipe,_config PURE_IMPORTS_END */\nimport { canReportError } from './util/canReportError';\nimport { toSubscriber } from './util/toSubscriber';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nvar Observable = /*@__PURE__*/ (function () {\n function Observable(subscribe) {\n this._isScalar = false;\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var operator = this.operator;\n var sink = toSubscriber(observerOrNext, error, complete);\n if (operator) {\n sink.add(operator.call(sink, this.source));\n }\n else {\n sink.add(this.source || (config.useDeprecatedSynchronousErrorHandling && !sink.syncErrorThrowable) ?\n this._subscribe(sink) :\n this._trySubscribe(sink));\n }\n if (config.useDeprecatedSynchronousErrorHandling) {\n if (sink.syncErrorThrowable) {\n sink.syncErrorThrowable = false;\n if (sink.syncErrorThrown) {\n throw sink.syncErrorValue;\n }\n }\n }\n return sink;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n sink.syncErrorThrown = true;\n sink.syncErrorValue = err;\n }\n if (canReportError(sink)) {\n sink.error(err);\n }\n else {\n console.warn(err);\n }\n }\n };\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscription;\n subscription = _this.subscribe(function (value) {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n if (subscription) {\n subscription.unsubscribe();\n }\n }\n }, reject, resolve);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n var source = this.source;\n return source && source.subscribe(subscriber);\n };\n Observable.prototype[Symbol_observable] = function () {\n return this;\n };\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n if (operations.length === 0) {\n return this;\n }\n return pipeFromArray(operations)(this);\n };\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return value = x; }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexport { Observable };\nfunction getPromiseCtor(promiseCtor) {\n if (!promiseCtor) {\n promiseCtor = config.Promise || Promise;\n }\n if (!promiseCtor) {\n throw new Error('no Promise impl found');\n }\n return promiseCtor;\n}\n//# sourceMappingURL=Observable.js.map\n","/** PURE_IMPORTS_START _Subscriber,_symbol_rxSubscriber,_Observer PURE_IMPORTS_END */\nimport { Subscriber } from '../Subscriber';\nimport { rxSubscriber as rxSubscriberSymbol } from '../symbol/rxSubscriber';\nimport { empty as emptyObserver } from '../Observer';\nexport function toSubscriber(nextOrObserver, error, complete) {\n if (nextOrObserver) {\n if (nextOrObserver instanceof Subscriber) {\n return nextOrObserver;\n }\n if (nextOrObserver[rxSubscriberSymbol]) {\n return nextOrObserver[rxSubscriberSymbol]();\n }\n }\n if (!nextOrObserver && !error && !complete) {\n return new Subscriber(emptyObserver);\n }\n return new Subscriber(nextOrObserver, error, complete);\n}\n//# sourceMappingURL=toSubscriber.js.map\n","/** PURE_IMPORTS_START _Subscriber PURE_IMPORTS_END */\nimport { Subscriber } from '../Subscriber';\nexport function canReportError(observer) {\n while (observer) {\n var _a = observer, closed_1 = _a.closed, destination = _a.destination, isStopped = _a.isStopped;\n if (closed_1 || isStopped) {\n return false;\n }\n else if (destination && destination instanceof Subscriber) {\n observer = destination;\n }\n else {\n observer = null;\n }\n }\n return true;\n}\n//# sourceMappingURL=canReportError.js.map\n","/** PURE_IMPORTS_START tslib,_util_isFunction,_Observer,_Subscription,_internal_symbol_rxSubscriber,_config,_util_hostReportError PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { empty as emptyObserver } from './Observer';\nimport { Subscription } from './Subscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\nvar Subscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(Subscriber, _super);\n function Subscriber(destinationOrNext, error, complete) {\n var _this = _super.call(this) || this;\n _this.syncErrorValue = null;\n _this.syncErrorThrown = false;\n _this.syncErrorThrowable = false;\n _this.isStopped = false;\n switch (arguments.length) {\n case 0:\n _this.destination = emptyObserver;\n break;\n case 1:\n if (!destinationOrNext) {\n _this.destination = emptyObserver;\n break;\n }\n if (typeof destinationOrNext === 'object') {\n if (destinationOrNext instanceof Subscriber) {\n _this.syncErrorThrowable = destinationOrNext.syncErrorThrowable;\n _this.destination = destinationOrNext;\n destinationOrNext.add(_this);\n }\n else {\n _this.syncErrorThrowable = true;\n _this.destination = new SafeSubscriber(_this, destinationOrNext);\n }\n break;\n }\n default:\n _this.syncErrorThrowable = true;\n _this.destination = new SafeSubscriber(_this, destinationOrNext, error, complete);\n break;\n }\n return _this;\n }\n Subscriber.prototype[rxSubscriberSymbol] = function () { return this; };\n Subscriber.create = function (next, error, complete) {\n var subscriber = new Subscriber(next, error, complete);\n subscriber.syncErrorThrowable = false;\n return subscriber;\n };\n Subscriber.prototype.next = function (value) {\n if (!this.isStopped) {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (!this.isStopped) {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (this.closed) {\n return;\n }\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n this.destination.error(err);\n this.unsubscribe();\n };\n Subscriber.prototype._complete = function () {\n this.destination.complete();\n this.unsubscribe();\n };\n Subscriber.prototype._unsubscribeAndRecycle = function () {\n var _parentOrParents = this._parentOrParents;\n this._parentOrParents = null;\n this.unsubscribe();\n this.closed = false;\n this.isStopped = false;\n this._parentOrParents = _parentOrParents;\n return this;\n };\n return Subscriber;\n}(Subscription));\nexport { Subscriber };\nvar SafeSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SafeSubscriber, _super);\n function SafeSubscriber(_parentSubscriber, observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n _this._parentSubscriber = _parentSubscriber;\n var next;\n var context = _this;\n if (isFunction(observerOrNext)) {\n next = observerOrNext;\n }\n else if (observerOrNext) {\n next = observerOrNext.next;\n error = observerOrNext.error;\n complete = observerOrNext.complete;\n if (observerOrNext !== emptyObserver) {\n context = Object.create(observerOrNext);\n if (isFunction(context.unsubscribe)) {\n _this.add(context.unsubscribe.bind(context));\n }\n context.unsubscribe = _this.unsubscribe.bind(_this);\n }\n }\n _this._context = context;\n _this._next = next;\n _this._error = error;\n _this._complete = complete;\n return _this;\n }\n SafeSubscriber.prototype.next = function (value) {\n if (!this.isStopped && this._next) {\n var _parentSubscriber = this._parentSubscriber;\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._next, value);\n }\n else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) {\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n var _parentSubscriber = this._parentSubscriber;\n var useDeprecatedSynchronousErrorHandling = config.useDeprecatedSynchronousErrorHandling;\n if (this._error) {\n if (!useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._error, err);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, this._error, err);\n this.unsubscribe();\n }\n }\n else if (!_parentSubscriber.syncErrorThrowable) {\n this.unsubscribe();\n if (useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n hostReportError(err);\n }\n else {\n if (useDeprecatedSynchronousErrorHandling) {\n _parentSubscriber.syncErrorValue = err;\n _parentSubscriber.syncErrorThrown = true;\n }\n else {\n hostReportError(err);\n }\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.complete = function () {\n var _this = this;\n if (!this.isStopped) {\n var _parentSubscriber = this._parentSubscriber;\n if (this._complete) {\n var wrappedComplete = function () { return _this._complete.call(_this._context); };\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(wrappedComplete);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, wrappedComplete);\n this.unsubscribe();\n }\n }\n else {\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.__tryOrUnsub = function (fn, value) {\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n this.unsubscribe();\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n else {\n hostReportError(err);\n }\n }\n };\n SafeSubscriber.prototype.__tryOrSetError = function (parent, fn, value) {\n if (!config.useDeprecatedSynchronousErrorHandling) {\n throw new Error('bad call');\n }\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n parent.syncErrorValue = err;\n parent.syncErrorThrown = true;\n return true;\n }\n else {\n hostReportError(err);\n return true;\n }\n }\n return false;\n };\n SafeSubscriber.prototype._unsubscribe = function () {\n var _parentSubscriber = this._parentSubscriber;\n this._context = null;\n this._parentSubscriber = null;\n _parentSubscriber.unsubscribe();\n };\n return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\n//# sourceMappingURL=Subscriber.js.map\n","export class NonLoggableError extends Error {\n constructor() {\n super(...arguments);\n this.disableLogging = true;\n }\n}\n","import SqlString from \"sqlstring\";\nimport { AbsoluteRange } from \"../util/range\";\nconst RE_SLASH_G = /\\\\G\\s*$/;\nconst RE_LEADING_WHITESPACE = /^\\s*/;\n// Regex for whitespace character or a zero-width space\nconst RE_WHITESPACE_CHAR = /^\\s|\\u200B$/;\n// For now we only handle delimiter statements of the form\n// delimiter\n// [whitespace+]\n// [non-space-separated string maxlen=6]\n// [whitespace|eof]\n//\n// Basically a delimiter has to\n// * be at the beginning of a line\n// * only receive a single argument\n// * be followed by either a whitespace character or EOF\nconst RE_DELIMITER = /^delimiter +([^\\s]{1,6})(\\s|$)/i;\nexport const SQLIdent = (value) => SqlString.raw(SqlString.escapeId(value));\nexport function isVerticalQuery(query) {\n return query.match(RE_SLASH_G) !== null;\n}\nexport function stripSlashG(query) {\n return query.replace(RE_SLASH_G, \"\");\n}\n/**\n * consumeUntil consumes characters in the buffer until it reaches a\n * substring matching `target` or the end of the buffer.\n * `target` can be one or two chars.\n *\n * Returns a new position located at the index immediately following `target`.\n *\n * ex:\n * buffer: this is an example\n * target: an\n * start: this is an example\n * ^ (5)\n * end: this is an example\n * ^ (10)\n * consumed: is an\n *\n * if ignoreEscaped is true consumeUntil will ignore escaped versions of the\n * provided target - but the target *must* be a single character.\n *\n * Exported for testing.\n */\nexport const consumeUntil = (buffer, pos, target, ignoreEscaped = false) => {\n const len = buffer.length;\n if (target.length === 2) {\n if (!!ignoreEscaped) {\n throw new Error(\"can't use multi-character target with ignoreEscaped\");\n }\n const c1 = target[0];\n const c2 = target[1];\n while (!(buffer[pos] === c1 && buffer[pos + 1] === c2) && pos < len) {\n pos++;\n }\n // we need to increment the pointer twice so we return the\n // cursor starting *after* the second character\n pos += 2;\n }\n else if (ignoreEscaped) {\n while (pos < len) {\n const char = buffer[pos];\n // If char is the expected target, we need to check if the previous char\n // is a backslash (\\\\) or not. If it is not a backslash, then char is the\n // target and we finish parsing. However, if the previous char is a backslash\n // we need to check if the previous one to that is also a backslash.\n // If we have two consecutive backslashes then char is the expected target.\n // If only the previous char is a backslash, then char is not the target, but\n // an escaped character.\n if (char === target &&\n (buffer[pos - 1] !== \"\\\\\" || buffer[pos - 2] === \"\\\\\")) {\n pos++;\n break;\n }\n pos++;\n }\n }\n else {\n while (buffer[pos++] !== target && pos < len) { }\n }\n return pos;\n};\n// Breaks a string into component SQL queries, and returns AbsoluteRanges with\n// the indices at which individual queries start and end.\nexport function parseQueries(buffer) {\n const out = [];\n const len = buffer.length;\n let pos = 0;\n let queryStart;\n let delimiter = \";\";\n const maybeConsumeDelimiter = () => {\n const match = buffer.slice(pos).match(RE_DELIMITER);\n if (match) {\n delimiter = match[1] || \";\";\n return pos + match[0].length;\n }\n return pos;\n };\n const maybeStartInfo = () => {\n if (queryStart === undefined) {\n queryStart = pos;\n }\n };\n const endInfo = () => {\n if (queryStart === undefined) {\n throw new Error(\"queryStart should be defined\");\n }\n out.push(new AbsoluteRange(queryStart, Math.min(pos, len)));\n queryStart = undefined;\n };\n const consumeQuote = (quote) => {\n maybeStartInfo();\n // pos + 1 to skip the quote char we are currently on\n return consumeUntil(buffer, pos + 1, quote, true);\n };\n while (pos < len) {\n // if we aren't in a query, skip forward over whitespace\n if (queryStart === undefined) {\n const match = buffer.slice(pos).match(RE_LEADING_WHITESPACE);\n if (match) {\n pos += match[0].length;\n }\n }\n const char = buffer[pos];\n // Comments\n //\n if (char === \"/\" && buffer[pos + 1] === \"*\") {\n // handle `/*...*/` style comment\n pos = consumeUntil(buffer, pos, \"*/\");\n continue;\n }\n if (char === `-` && buffer[pos + 1] === \"-\") {\n // handle `--` style comment\n pos = consumeUntil(buffer, pos, \"\\n\");\n continue;\n }\n // Quotes\n //\n if (char === `\"`) {\n pos = consumeQuote(`\"`);\n continue;\n }\n if (char === `'`) {\n pos = consumeQuote(`'`);\n continue;\n }\n if (char === `\\``) {\n pos = consumeQuote(`\\``);\n continue;\n }\n // Statements\n //\n // parse and handle a delimiter statement\n if ((char === \"d\" || char === \"D\") &&\n (pos === 0 || buffer[pos - 1] === \"\\n\")) {\n const nextPos = maybeConsumeDelimiter();\n if (pos !== nextPos) {\n // delimiter was consumed\n pos = nextPos;\n continue;\n }\n }\n // Check to see if we are at the end of a statement\n if (char === delimiter[0]) {\n // fast case for when the delimiter is a single character (default)\n if (delimiter.length === 1) {\n maybeStartInfo();\n endInfo();\n pos++;\n continue;\n }\n else if (buffer.indexOf(delimiter, pos) === pos) {\n maybeStartInfo();\n endInfo();\n pos += delimiter.length;\n continue;\n }\n }\n // only start tracking a potential statement if we don't see a\n // whitespace character\n if (char && !char.match(RE_WHITESPACE_CHAR)) {\n maybeStartInfo();\n }\n // nothing matched - consume this character and try again\n pos++;\n }\n if (queryStart !== undefined) {\n endInfo();\n }\n return out;\n}\n// Breaks a string into component SQL queries, and returns the text of each\n// individual query.\nexport function extractQueries(buffer) {\n return parseQueries(buffer)\n .map((range) => range.extract(buffer))\n .filter(Boolean);\n}\n","export const NewVector = (x, y) => ({ x, y });\nexport const add = (v1, v2) => ({\n x: v1.x + v2.x,\n y: v1.y + v2.y,\n});\nexport const subtract = (v1, v2) => ({\n x: v1.x - v2.x,\n y: v1.y - v2.y,\n});\nexport const magnitude = ({ x, y }) => Math.sqrt(x * x + y * y);\nexport const scale = (m, { x, y }) => ({\n x: m * x,\n y: m * y,\n});\nexport const negate = (v) => scale(-1, v);\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/**\n * This file was generated\n * Do not edit directly\n * See 'single-js/common/build-style-dictionary.js' for more info\n */\n\nexport const LIGHT_HEX_COLORS = {\n \"base-neutral-0\": \"#ffffff\",\n \"base-neutral-100\": \"#fafafa\",\n \"base-neutral-200\": \"#f3f3f5\",\n \"base-neutral-300\": \"#e6e5ea\",\n \"base-neutral-500\": \"#c2c1c7\",\n \"base-neutral-700\": \"#777582\",\n \"base-neutral-800\": \"#4c4a57\",\n \"base-neutral-900\": \"#1b1a21\",\n \"base-neutral-999\": \"#000000\",\n \"base-green-200\": \"#e6fcee\",\n \"base-green-400\": \"#a8ffce\",\n \"base-green-600\": \"#00e676\",\n \"base-green-800\": \"#00ca68\",\n \"base-green-900\": \"#00873f\",\n \"base-red-200\": \"#ffebf2\",\n \"base-red-400\": \"#ffc2d4\",\n \"base-red-600\": \"#f85b8a\",\n \"base-red-800\": \"#f4346f\",\n \"base-red-900\": \"#c41337\",\n \"base-yellow-200\": \"#fffade\",\n \"base-yellow-400\": \"#ffe694\",\n \"base-yellow-600\": \"#ffcf64\",\n \"base-yellow-800\": \"#ffb000\",\n \"base-yellow-900\": \"#9e6d00\",\n \"base-cyan-200\": \"#d9feff\",\n \"base-cyan-400\": \"#a6fcff\",\n \"base-cyan-600\": \"#00f5fe\",\n \"base-cyan-800\": \"#0081d7\",\n \"base-cyan-900\": \"#00408f\",\n \"base-indigo-100\": \"#f3f2fc\",\n \"base-indigo-200\": \"#e8e6f5\",\n \"base-indigo-400\": \"#c0b7eb\",\n \"base-indigo-600\": \"#4f34c7\",\n \"base-indigo-800\": \"#311b92\",\n \"base-indigo-900\": \"#1e0a78\",\n \"base-purple-200\": \"#f9edff\",\n \"base-purple-400\": \"#ecc7ff\",\n \"base-purple-600\": \"#c550ff\",\n \"base-purple-800\": \"#aa00ff\",\n \"base-purple-900\": \"#8800cc\",\n \"base-magenta-200\": \"#ffebff\",\n \"base-magenta-400\": \"#ffbfff\",\n \"base-magenta-600\": \"#ff7bff\",\n \"base-magenta-800\": \"#ff00ff\",\n \"base-magenta-900\": \"#b300b3\",\n \"text-neutral-1\": \"#777582\",\n \"text-neutral-2\": \"#4c4a57\",\n \"text-neutral-3\": \"#1b1a21\",\n \"text-neutral-inverse-1\": \"#ffffff\",\n \"text-purple-1\": \"#8800cc\",\n \"text-cyan-1\": \"#00408f\",\n \"text-red-1\": \"#c41337\",\n \"text-green-1\": \"#00873f\",\n \"text-indigo-1\": \"#4f34c7\",\n \"text-yellow-1\": \"#9e6d00\",\n \"background-neutral-1\": \"#ffffff\",\n \"background-neutral-2\": \"#fafafa\",\n \"background-neutral-3\": \"#f3f3f5\",\n \"background-neutral-4\": \"#e6e5ea\",\n \"background-neutral-inverse-1\": \"#777582\",\n \"background-neutral-inverse-2\": \"#4c4a57\",\n \"background-neutral-inverse-3\": \"#1b1a21\",\n \"background-purple-1\": \"#f9edff\",\n \"background-purple-2\": \"#ecc7ff\",\n \"background-purple-3\": \"#c550ff\",\n \"background-purple-inverse-1\": \"#aa00ff\",\n \"background-purple-inverse-2\": \"#8800cc\",\n \"background-cyan-1\": \"#d9feff\",\n \"background-red-1\": \"#ffebf2\",\n \"background-red-inverse-1\": \"#c41337\",\n \"background-indigo-1\": \"#f3f2fc\",\n \"background-indigo-2\": \"#e8e6f5\",\n \"background-indigo-inverse-1\": \"#4f34c7\",\n \"background-indigo-inverse-2\": \"#1e0a78\",\n \"background-magenta-inverse-1\": \"#ff00ff\",\n \"background-green-1\": \"#e6fcee\",\n \"background-green-inverse-1\": \"#00873f\",\n \"background-yellow-1\": \"#fffade\",\n \"border-neutral-1\": \"#e6e5ea\",\n \"border-neutral-2\": \"#c2c1c7\",\n \"border-neutral-3\": \"#777582\",\n \"border-neutral-4\": \"#4c4a57\",\n \"border-red-1\": \"#c41337\",\n \"border-green-1\": \"#00873f\",\n \"border-purple-1\": \"#c550ff\",\n \"border-purple-2\": \"#aa00ff\",\n \"border-purple-3\": \"#8800cc\",\n \"border-indigo-1\": \"#4f34c7\",\n};\n","/**\n * This file was generated\n * Do not edit directly\n * See 'single-js/common/build-style-dictionary.js' for more info\n */\n\nexport const COLORS = {\n \"base-neutral-0\": \"var(--sui-color-base-neutral-0)\",\n \"base-neutral-100\": \"var(--sui-color-base-neutral-100)\",\n \"base-neutral-200\": \"var(--sui-color-base-neutral-200)\",\n \"base-neutral-300\": \"var(--sui-color-base-neutral-300)\",\n \"base-neutral-500\": \"var(--sui-color-base-neutral-500)\",\n \"base-neutral-700\": \"var(--sui-color-base-neutral-700)\",\n \"base-neutral-800\": \"var(--sui-color-base-neutral-800)\",\n \"base-neutral-900\": \"var(--sui-color-base-neutral-900)\",\n \"base-neutral-999\": \"var(--sui-color-base-neutral-999)\",\n \"base-green-200\": \"var(--sui-color-base-green-200)\",\n \"base-green-400\": \"var(--sui-color-base-green-400)\",\n \"base-green-600\": \"var(--sui-color-base-green-600)\",\n \"base-green-800\": \"var(--sui-color-base-green-800)\",\n \"base-green-900\": \"var(--sui-color-base-green-900)\",\n \"base-red-200\": \"var(--sui-color-base-red-200)\",\n \"base-red-400\": \"var(--sui-color-base-red-400)\",\n \"base-red-600\": \"var(--sui-color-base-red-600)\",\n \"base-red-800\": \"var(--sui-color-base-red-800)\",\n \"base-red-900\": \"var(--sui-color-base-red-900)\",\n \"base-yellow-200\": \"var(--sui-color-base-yellow-200)\",\n \"base-yellow-400\": \"var(--sui-color-base-yellow-400)\",\n \"base-yellow-600\": \"var(--sui-color-base-yellow-600)\",\n \"base-yellow-800\": \"var(--sui-color-base-yellow-800)\",\n \"base-yellow-900\": \"var(--sui-color-base-yellow-900)\",\n \"base-cyan-200\": \"var(--sui-color-base-cyan-200)\",\n \"base-cyan-400\": \"var(--sui-color-base-cyan-400)\",\n \"base-cyan-600\": \"var(--sui-color-base-cyan-600)\",\n \"base-cyan-800\": \"var(--sui-color-base-cyan-800)\",\n \"base-cyan-900\": \"var(--sui-color-base-cyan-900)\",\n \"base-indigo-100\": \"var(--sui-color-base-indigo-100)\",\n \"base-indigo-200\": \"var(--sui-color-base-indigo-200)\",\n \"base-indigo-400\": \"var(--sui-color-base-indigo-400)\",\n \"base-indigo-600\": \"var(--sui-color-base-indigo-600)\",\n \"base-indigo-800\": \"var(--sui-color-base-indigo-800)\",\n \"base-indigo-900\": \"var(--sui-color-base-indigo-900)\",\n \"base-purple-200\": \"var(--sui-color-base-purple-200)\",\n \"base-purple-400\": \"var(--sui-color-base-purple-400)\",\n \"base-purple-600\": \"var(--sui-color-base-purple-600)\",\n \"base-purple-800\": \"var(--sui-color-base-purple-800)\",\n \"base-purple-900\": \"var(--sui-color-base-purple-900)\",\n \"base-magenta-200\": \"var(--sui-color-base-magenta-200)\",\n \"base-magenta-400\": \"var(--sui-color-base-magenta-400)\",\n \"base-magenta-600\": \"var(--sui-color-base-magenta-600)\",\n \"base-magenta-800\": \"var(--sui-color-base-magenta-800)\",\n \"base-magenta-900\": \"var(--sui-color-base-magenta-900)\",\n \"text-neutral-1\": \"var(--sui-color-text-neutral-1)\",\n \"text-neutral-2\": \"var(--sui-color-text-neutral-2)\",\n \"text-neutral-3\": \"var(--sui-color-text-neutral-3)\",\n \"text-neutral-inverse-1\": \"var(--sui-color-text-neutral-inverse-1)\",\n \"text-purple-1\": \"var(--sui-color-text-purple-1)\",\n \"text-cyan-1\": \"var(--sui-color-text-cyan-1)\",\n \"text-red-1\": \"var(--sui-color-text-red-1)\",\n \"text-green-1\": \"var(--sui-color-text-green-1)\",\n \"text-indigo-1\": \"var(--sui-color-text-indigo-1)\",\n \"text-yellow-1\": \"var(--sui-color-text-yellow-1)\",\n \"background-neutral-1\": \"var(--sui-color-background-neutral-1)\",\n \"background-neutral-2\": \"var(--sui-color-background-neutral-2)\",\n \"background-neutral-3\": \"var(--sui-color-background-neutral-3)\",\n \"background-neutral-4\": \"var(--sui-color-background-neutral-4)\",\n \"background-neutral-inverse-1\":\n \"var(--sui-color-background-neutral-inverse-1)\",\n \"background-neutral-inverse-2\":\n \"var(--sui-color-background-neutral-inverse-2)\",\n \"background-neutral-inverse-3\":\n \"var(--sui-color-background-neutral-inverse-3)\",\n \"background-purple-1\": \"var(--sui-color-background-purple-1)\",\n \"background-purple-2\": \"var(--sui-color-background-purple-2)\",\n \"background-purple-3\": \"var(--sui-color-background-purple-3)\",\n \"background-purple-inverse-1\":\n \"var(--sui-color-background-purple-inverse-1)\",\n \"background-purple-inverse-2\":\n \"var(--sui-color-background-purple-inverse-2)\",\n \"background-cyan-1\": \"var(--sui-color-background-cyan-1)\",\n \"background-red-1\": \"var(--sui-color-background-red-1)\",\n \"background-red-inverse-1\": \"var(--sui-color-background-red-inverse-1)\",\n \"background-indigo-1\": \"var(--sui-color-background-indigo-1)\",\n \"background-indigo-2\": \"var(--sui-color-background-indigo-2)\",\n \"background-indigo-inverse-1\":\n \"var(--sui-color-background-indigo-inverse-1)\",\n \"background-indigo-inverse-2\":\n \"var(--sui-color-background-indigo-inverse-2)\",\n \"background-magenta-inverse-1\":\n \"var(--sui-color-background-magenta-inverse-1)\",\n \"background-green-1\": \"var(--sui-color-background-green-1)\",\n \"background-green-inverse-1\": \"var(--sui-color-background-green-inverse-1)\",\n \"background-yellow-1\": \"var(--sui-color-background-yellow-1)\",\n \"border-neutral-1\": \"var(--sui-color-border-neutral-1)\",\n \"border-neutral-2\": \"var(--sui-color-border-neutral-2)\",\n \"border-neutral-3\": \"var(--sui-color-border-neutral-3)\",\n \"border-neutral-4\": \"var(--sui-color-border-neutral-4)\",\n \"border-red-1\": \"var(--sui-color-border-red-1)\",\n \"border-green-1\": \"var(--sui-color-border-green-1)\",\n \"border-purple-1\": \"var(--sui-color-border-purple-1)\",\n \"border-purple-2\": \"var(--sui-color-border-purple-2)\",\n \"border-purple-3\": \"var(--sui-color-border-purple-3)\",\n \"border-indigo-1\": \"var(--sui-color-border-indigo-1)\",\n};\n","import { logError } from \"util/logging\";\n// Here, we're telling TypeScript that s.router.route is NOT nullable\n// even though it is. This is okay because we know that `selectRoute` is\n// only called after the application has been loaded and there is a route in state.\nexport const selectRoute = (s) => {\n if (!s.router.route) {\n logError(new Error(\"selectRoute was called and there is no route in state\"));\n }\n return s.router.route;\n};\nexport const selectCurrentRouteClusterId = (s) => selectRoute(s).params.clusterId;\n","/**\n * Requires a module which is protected _against bundler minification.\n *\n * @param request The module path to resolve\n */\nexport function dynamicRequire(mod, request) {\n // tslint:disable-next-line: no-unsafe-any\n return mod.require(request);\n}\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nexport function isNodeEnv() {\n // tslint:disable:strict-type-predicates\n return Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';\n}\nvar fallbackGlobalObject = {};\n/**\n * Safely get global scope object\n *\n * @returns Global scope object\n */\nexport function getGlobalObject() {\n return (isNodeEnv()\n ? global\n : typeof window !== 'undefined'\n ? window\n : typeof self !== 'undefined'\n ? self\n : fallbackGlobalObject);\n}\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nexport function uuid4() {\n var global = getGlobalObject();\n var crypto = global.crypto || global.msCrypto;\n if (!(crypto === void 0) && crypto.getRandomValues) {\n // Use window.crypto API if available\n var arr = new Uint16Array(8);\n crypto.getRandomValues(arr);\n // set 4 in byte 7\n // tslint:disable-next-line:no-bitwise\n arr[3] = (arr[3] & 0xfff) | 0x4000;\n // set 2 most significant bits of byte 9 to '10'\n // tslint:disable-next-line:no-bitwise\n arr[4] = (arr[4] & 0x3fff) | 0x8000;\n var pad = function (num) {\n var v = num.toString(16);\n while (v.length < 4) {\n v = \"0\" + v;\n }\n return v;\n };\n return (pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]));\n }\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n // tslint:disable-next-line:no-bitwise\n var r = (Math.random() * 16) | 0;\n // tslint:disable-next-line:no-bitwise\n var v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n/**\n * Parses string form of URL into an object\n * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n * // intentionally using regex and not href parsing trick because React Native and other\n * // environments where DOM might not be available\n * @returns parsed URL object\n */\nexport function parseUrl(url) {\n if (!url) {\n return {};\n }\n var match = url.match(/^(([^:\\/?#]+):)?(\\/\\/([^\\/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n if (!match) {\n return {};\n }\n // coerce to undefined values to empty string so we don't get 'undefined'\n var query = match[6] || '';\n var fragment = match[8] || '';\n return {\n host: match[4],\n path: match[5],\n protocol: match[2],\n relative: match[5] + query + fragment,\n };\n}\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nexport function getEventDescription(event) {\n if (event.message) {\n return event.message;\n }\n if (event.exception && event.exception.values && event.exception.values[0]) {\n var exception = event.exception.values[0];\n if (exception.type && exception.value) {\n return exception.type + \": \" + exception.value;\n }\n return exception.type || exception.value || event.event_id || '';\n }\n return event.event_id || '';\n}\n/** JSDoc */\nexport function consoleSandbox(callback) {\n var global = getGlobalObject();\n var levels = ['debug', 'info', 'warn', 'error', 'log', 'assert'];\n if (!('console' in global)) {\n return callback();\n }\n var originalConsole = global.console;\n var wrappedLevels = {};\n // Restore all wrapped console methods\n levels.forEach(function (level) {\n if (level in global.console && originalConsole[level].__sentry__) {\n wrappedLevels[level] = originalConsole[level].__sentry_wrapped__;\n originalConsole[level] = originalConsole[level].__sentry_original__;\n }\n });\n // Perform callback manipulations\n var result = callback();\n // Revert restoration to wrapped state\n Object.keys(wrappedLevels).forEach(function (level) {\n originalConsole[level] = wrappedLevels[level];\n });\n return result;\n}\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @param mechanism Mechanism of the exception.\n * @hidden\n */\nexport function addExceptionTypeValue(event, value, type, mechanism) {\n if (mechanism === void 0) { mechanism = {\n handled: true,\n type: 'generic',\n }; }\n event.exception = event.exception || {};\n event.exception.values = event.exception.values || [];\n event.exception.values[0] = event.exception.values[0] || {};\n event.exception.values[0].value = event.exception.values[0].value || value || '';\n event.exception.values[0].type = event.exception.values[0].type || type || 'Error';\n event.exception.values[0].mechanism = event.exception.values[0].mechanism || mechanism;\n}\n//# sourceMappingURL=misc.js.map","import classnames from \"classnames\";\nimport * as React from \"react\";\nimport { CenteringWrapper } from \"../centering-wrapper/centering-wrapper\";\nimport \"./loading.scss\";\nfunction SvgSmall() {\n // must match up with the variables in loading.scss!\n const svgSize = 16;\n const strokeWidth = 2;\n return (React.createElement(\"svg\", { className: \"svg-small\", width: svgSize, height: svgSize, viewBox: `0 0 ${svgSize} ${svgSize}` },\n React.createElement(\"defs\", null,\n React.createElement(\"linearGradient\", { id: \"paint0_linear\", x1: \"4.769\", x2: \"4.769\", y1: \"-.056\", y2: \"24.008\", gradientUnits: \"userSpaceOnUse\" },\n React.createElement(\"stop\", { stopColor: \"#FF7BFF\" }),\n React.createElement(\"stop\", { offset: \".072\", stopColor: \"#F46BFF\" }),\n React.createElement(\"stop\", { offset: \".266\", stopColor: \"#D945FF\" }),\n React.createElement(\"stop\", { offset: \".458\", stopColor: \"#C527FF\" }),\n React.createElement(\"stop\", { offset: \".646\", stopColor: \"#B611FF\" }),\n React.createElement(\"stop\", { offset: \".829\", stopColor: \"#AD04FF\" }),\n React.createElement(\"stop\", { offset: \"1\", stopColor: \"#A0F\" })),\n React.createElement(\"linearGradient\", { id: \"paint1_linear\", x1: \"27.009\", x2: \"27.009\", y1: \"-.001\", y2: \"24.067\", gradientUnits: \"userSpaceOnUse\" },\n React.createElement(\"stop\", { stopColor: \"#FF7BFF\" }),\n React.createElement(\"stop\", { offset: \".072\", stopColor: \"#F46BFF\" }),\n React.createElement(\"stop\", { offset: \".266\", stopColor: \"#D945FF\" }),\n React.createElement(\"stop\", { offset: \".458\", stopColor: \"#C527FF\" }),\n React.createElement(\"stop\", { offset: \".646\", stopColor: \"#B611FF\" }),\n React.createElement(\"stop\", { offset: \".829\", stopColor: \"#AD04FF\" }),\n React.createElement(\"stop\", { offset: \"1\", stopColor: \"#A0F\" })),\n React.createElement(\"linearGradient\", { id: \"paint2_linear\", x1: \"20.839\", x2: \"20.839\", y1: \"23.896\", y2: \".001\", gradientUnits: \"userSpaceOnUse\" },\n React.createElement(\"stop\", { stopColor: \"#FF7BFF\" }),\n React.createElement(\"stop\", { offset: \".072\", stopColor: \"#F46BFF\" }),\n React.createElement(\"stop\", { offset: \".266\", stopColor: \"#D945FF\" }),\n React.createElement(\"stop\", { offset: \".458\", stopColor: \"#C527FF\" }),\n React.createElement(\"stop\", { offset: \".646\", stopColor: \"#B611FF\" }),\n React.createElement(\"stop\", { offset: \".829\", stopColor: \"#AD04FF\" }),\n React.createElement(\"stop\", { offset: \"1\", stopColor: \"#A0F\" })),\n React.createElement(\"linearGradient\", { id: \"paint3_linear\", x1: \"11.216\", x2: \"11.216\", y1: \"23.987\", y2: \"-.013\", gradientUnits: \"userSpaceOnUse\" },\n React.createElement(\"stop\", { stopColor: \"#FF7BFF\" }),\n React.createElement(\"stop\", { offset: \".072\", stopColor: \"#F46BFF\" }),\n React.createElement(\"stop\", { offset: \".266\", stopColor: \"#D945FF\" }),\n React.createElement(\"stop\", { offset: \".458\", stopColor: \"#C527FF\" }),\n React.createElement(\"stop\", { offset: \".646\", stopColor: \"#B611FF\" }),\n React.createElement(\"stop\", { offset: \".829\", stopColor: \"#AD04FF\" }),\n React.createElement(\"stop\", { offset: \"1\", stopColor: \"#A0F\" })),\n React.createElement(\"linearGradient\", { id: \"paint4_linear\", x1: \"15.319\", x2: \"15.319\", y1: \"23.995\", y2: \"-.023\", gradientUnits: \"userSpaceOnUse\" },\n React.createElement(\"stop\", { stopColor: \"#FF7BFF\" }),\n React.createElement(\"stop\", { offset: \".072\", stopColor: \"#F46BFF\" }),\n React.createElement(\"stop\", { offset: \".266\", stopColor: \"#D945FF\" }),\n React.createElement(\"stop\", { offset: \".458\", stopColor: \"#C527FF\" }),\n React.createElement(\"stop\", { offset: \".646\", stopColor: \"#B611FF\" }),\n React.createElement(\"stop\", { offset: \".829\", stopColor: \"#AD04FF\" }),\n React.createElement(\"stop\", { offset: \"1\", stopColor: \"#A0F\" })),\n React.createElement(\"linearGradient\", { id: \"linear\", x1: \"0%\", y1: \"0%\", x2: \"100%\", y2: \"100%\" },\n React.createElement(\"stop\", { offset: \"0%\", stopColor: \"#AA01FF\" }),\n React.createElement(\"stop\", { offset: \"75%\", stopColor: \"#8327F6\" }),\n React.createElement(\"stop\", { offset: \"100%\", stopColor: \"#AA01FF\" }))),\n React.createElement(\"circle\", { className: \"circle\", cx: svgSize / 2, cy: svgSize / 2, r: svgSize / 2 - strokeWidth / 2, stroke: \"var(--sui-color-background-neutral-3)\" }),\n React.createElement(\"circle\", { className: \"circle circle-stroke\", cx: svgSize / 2, cy: svgSize / 2, r: svgSize / 2 - strokeWidth / 2, stroke: \"url(#linear)\" })));\n}\nfunction SvgLarge() {\n const svgSize = 48;\n return (React.createElement(\"svg\", { className: \"svg-large\", width: svgSize, height: svgSize, viewBox: `0 0 ${svgSize} ${svgSize}` },\n React.createElement(\"defs\", null,\n React.createElement(\"radialGradient\", { id: \"paint0_radial\", cx: \"0\", cy: \"0\", r: \"1\", gradientUnits: \"userSpaceOnUse\", gradientTransform: \"rotate(-69.643 40.723 11.687) scale(47.1449 355.25)\" },\n React.createElement(\"stop\", { stopColor: \"#F129FF\", stopOpacity: \".55\" }),\n React.createElement(\"stop\", { offset: \".494\", stopColor: \"#DB47FF\", stopOpacity: \".35\" }),\n React.createElement(\"stop\", { offset: \"1\", stopColor: \"#FF7BFF\", stopOpacity: \".15\" })),\n React.createElement(\"radialGradient\", { id: \"paint1_radial\", cx: \"0\", cy: \"0\", r: \"1\", gradientUnits: \"userSpaceOnUse\", gradientTransform: \"matrix(50.40044 -39.20037 48.6011 62.48708 -12.2 35.6)\" },\n React.createElement(\"stop\", { stopColor: \"#EB54EB\", stopOpacity: \".5\" }),\n React.createElement(\"stop\", { offset: \".569\", stopColor: \"#A0F\", stopOpacity: \".75\" }),\n React.createElement(\"stop\", { offset: \"1\", stopColor: \"#4F34C7\", stopOpacity: \"1\" })),\n React.createElement(\"radialGradient\", { id: \"paint2_radial\", cx: \"0\", cy: \"0\", r: \"1\", gradientUnits: \"userSpaceOnUse\", gradientTransform: \"rotate(-103.016 31.285 14.299) scale(40.8498 81.749)\" },\n React.createElement(\"stop\", { stopColor: \"#D942FF\", stopOpacity: \"0.6\" }),\n React.createElement(\"stop\", { offset: \".469\", stopColor: \"#B41CEB\", stopOpacity: \".7\" }),\n React.createElement(\"stop\", { offset: \".999\", stopColor: \"#9F1BE0\", stopOpacity: \".85\" }))),\n React.createElement(\"path\", { className: \"path-logo-one\", d: \"M36.857 9.44C34.914 5.035 30.229 1.43 25.086 0c12.571.343 22.913 11.156 22.913 23.857.05 11.505-8.058 21.162-18.815 23.567C12 43.2 10.352 30.74 10.344 24.086c.057 7.552 6.17 13.559 13.714 13.616 4.857.057 9.085-2.288 11.828-6.694 3.257-5.377 3.942-14.417.971-21.568z\", fill: \"url(#paint0_radial)\" }),\n React.createElement(\"path\", { className: \"path-logo-two\", d: \"M34.058 10.125c-1.829-3.833-5.6-6.865-10.228-8.066-1.029-.287-2.115-.401-3.315-.458-1.77 0-3.485.229-5.257.686-4.4 1.316-7.485 3.89-9.313 5.893-2.343 2.689-3.886 5.492-4.8 8.296 0 .057-.057.114-.057.229-.058.228-.286.915-.286 1.087-.057.114-.057.286-.114.4l-.172.686c0 .058 0 .115-.057.172-1.486 7.38.982 14.003 2.468 16.463.372.616.677 1.13.983 1.6C.538 18.806 10.23 10.068 21.258 9.84c5.771-.114 11.543 2.231 14.342 6.923-.17-2.575-.342-4.005-1.542-6.637z\", fill: \"url(#paint1_radial)\" }),\n React.createElement(\"path\", { className: \"path-logo-three\", d: \"M3.91 37.113c-.189-.29.203.336 0 0C.538 18.806 10.23 10.068 21.258 9.84c2.603-.051 5.206.397 7.537 1.336a13.201 13.201 0 00-4.739-.877c-7.77 0-13.713 6.236-13.713 13.788.008 6.654 1.655 19.114 18.84 23.338-1.653.37-3.368.568-5.127.576-8.797.056-15.97-3.796-20.146-10.887z\", fill: \"url(#paint2_radial)\" })));\n}\nexport function Loading({ size, className, rightMargin, centered = true, message, inlineMessage, }) {\n const classes = classnames(\"single-common-components-loading\", className, {\n \"right-margin\": rightMargin,\n });\n let svg;\n if (size === \"small\") {\n svg = React.createElement(SvgSmall, null);\n }\n else {\n svg = React.createElement(SvgLarge, null);\n }\n const innerClasses = classnames(\"inner\", {\n \"inline-message\": inlineMessage,\n });\n let messageNode;\n if (message) {\n messageNode = React.createElement(\"span\", { className: \"message\" }, message);\n }\n const inner = (React.createElement(\"span\", { className: innerClasses },\n svg,\n messageNode));\n if (centered) {\n return React.createElement(CenteringWrapper, { className: classes }, inner);\n }\n return React.createElement(\"span\", { className: classes }, inner);\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n\n var number = Number(dirtyNumber);\n\n if (isNaN(number)) {\n return number;\n }\n\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import _ from \"lodash\";\nconst compareVals = (l, r) => (l < r ? -1 : l > r ? 1 : 0);\nexport const compareVersions = (left, right) => {\n return _.reduce(left.version, (memo, leftElement, i) => {\n const rightElement = right.version[i];\n // once memo is non-zero, we can never change it\n return memo === 0 ? compareVals(leftElement, rightElement) : memo;\n }, 0);\n};\n// exported for testing\nexport const INVALID_VERSION_STRING = \"Invalid version string, expected `major.minor.patch[-tag]`.\";\nconst stripTagFromVersionString = (version) => {\n const match = version.split(\"-\");\n return match[0];\n};\nexport class Version {\n constructor(versionTuple) {\n this.version = versionTuple;\n }\n gt(cmp) {\n return compareVersions(this, cmp) === 1;\n }\n ge(cmp) {\n return compareVersions(this, cmp) >= 0;\n }\n eq(cmp) {\n return compareVersions(this, cmp) === 0;\n }\n lt(cmp) {\n return compareVersions(this, cmp) === -1;\n }\n le(cmp) {\n return compareVersions(this, cmp) <= 0;\n }\n toString() {\n return this.version.join(\".\");\n }\n toJSON() {\n return {\n __type__: \"Version\",\n __val__: this.version,\n };\n }\n}\nVersion.fromString = (version, stripTag = true) => {\n if (stripTag) {\n version = stripTagFromVersionString(version);\n }\n const split = version.split(\".\");\n if (split.length !== 3) {\n throw new Error(INVALID_VERSION_STRING);\n }\n const parseVersionElement = (versionElement) => {\n const num = Number(versionElement);\n if (isNaN(num)) {\n throw new Error(INVALID_VERSION_STRING);\n }\n else {\n return num;\n }\n };\n return new Version([\n parseVersionElement(split[0]),\n parseVersionElement(split[1]),\n parseVersionElement(split[2]),\n ]);\n};\n","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;","import { log } from \"util/logging\";\nexport const track = (action, properties) => {\n if (!window.DISABLE_UI_TELEMETRY) {\n let actionPrefix = \"\";\n if (window.APP_NAME) {\n actionPrefix = `${window.APP_NAME}-`;\n }\n const actionName = `${actionPrefix}${action}`;\n window.analytics.ready(() => {\n window.analytics.track(actionName, properties);\n log(\"debug\", `Analytics: ${actionName} - ${JSON.stringify(properties)}`);\n });\n }\n};\nexport const trackBlurEvent = (formName) => (field, success) => {\n let action;\n if (success === undefined) {\n action = \"form-blur\";\n }\n else {\n action = success\n ? \"form-blur-validation-success\"\n : \"form-blur-validation-error\";\n }\n track(action, {\n \"form-id\": formName,\n \"field-name\": field,\n });\n};\nexport const trackFormSubmit = (formID, success, reason) => {\n track(\"form-submission\", {\n \"form-id\": formID,\n \"submission-status\": success,\n reason,\n });\n};\nexport const trackInternalLinkClick = (category, properties) => {\n track(\"link-click\", {\n category,\n ...properties,\n });\n};\nexport const trackExternalLinkClick = (category, properties) => {\n track(\"external-link-click\", {\n category,\n ...properties,\n });\n};\nexport const trackReload = (category) => {\n track(\"click-reload\", {\n category,\n });\n};\nexport const identify = (idOrTraits, traits = {}) => {\n if (!window.DISABLE_UI_TELEMETRY) {\n window.analytics.ready(() => {\n const segmentOptions = {\n integrations: {\n Intercom: {\n hideDefaultLauncher: true,\n },\n },\n };\n // Segment allows us to identify user traits before we get the user ID,\n // so the first argument can be a set of traits before we get the user\n // ID.\n if (typeof idOrTraits === \"string\") {\n window.analytics.identify(idOrTraits, traits, segmentOptions);\n }\n else {\n window.analytics.identify(traits, segmentOptions);\n }\n log(\"debug\", `Analytics: Identify - ${JSON.stringify(traits, null, 2)}`);\n });\n }\n};\nexport const page = (route) => {\n if (!window.DISABLE_UI_TELEMETRY) {\n window.analytics.ready(() => window.analytics.page(route));\n }\n};\n","import classnames from \"classnames\";\nimport * as React from \"react\";\nimport { servicesLocator } from \"../../services/services-locator\";\nimport \"./size-circle.scss\";\nexport class SizeCircle extends React.Component {\n render() {\n const { color, maxDiameter, rightMargin } = this.props;\n let { value } = this.props;\n if (value < 0 || value > 1) {\n value = 1;\n servicesLocator\n .getLogger()\n .logError(new Error(\"Value has to be between 0 and 1.\"));\n }\n // We scale the circle based on the area of the circle.\n // We want the maximum diameter to be `STATIC_MAX_DIAMETER`.\n // So, we use A=πr^2 but disregard the constant (A=r^2) to\n // get an appropriate diameter for the circle based on the 0-1\n // `value`.\n const diameter = maxDiameter * Math.sqrt(value);\n const classes = classnames(\"components-size-circle\", {\n \"margin-right\": rightMargin,\n });\n return (React.createElement(\"svg\", { className: classes, width: maxDiameter, height: maxDiameter, style: {\n minWidth: maxDiameter,\n minHeight: maxDiameter,\n } },\n React.createElement(\"circle\", { cx: maxDiameter / 2, cy: maxDiameter / 2, r: (maxDiameter / 2) * 0.95, fill: \"none\", stroke: color, strokeOpacity: 0.5, strokeWidth: 1, strokeDasharray: 3, strokeLinecap: \"round\" }),\n React.createElement(\"circle\", { cx: maxDiameter / 2, cy: maxDiameter / 2, r: diameter / 2, fill: color, strokeWidth: 0 })));\n }\n}\n","import { SizeCircle } from \"@single-js/common/components/size-circle/size-circle\";\nimport { COLORS } from \"@single-js/common/sui/color-map\";\nimport React from \"react\";\nimport \"./size-circle-cell.scss\";\nexport class SizeCircleCell extends React.Component {\n render() {\n const { text, value, color, spaceBetween } = this.props;\n let style;\n if (spaceBetween) {\n style = \"space-between\";\n }\n return (React.createElement(\"div\", { className: \"size-circle-cell\", style: { justifyContent: style } },\n React.createElement(\"div\", { className: \"circle-container\" },\n React.createElement(SizeCircle, { value: value, color: color, maxDiameter: 20 })),\n React.createElement(\"div\", { className: \"text-container\" }, text)));\n }\n}\nSizeCircleCell.defaultProps = {\n color: COLORS[\"base-indigo-600\"],\n spaceBetween: false,\n};\n","import { Icon } from \"@single-js/common/components/icon/icon\";\nimport { IconTip } from \"@single-js/common/components/icon/icon-tip\";\nimport { ERROR_NODE, LOADING_CELL_NODE, } from \"@single-js/common/components/render-loading-error/render-loading-error\";\nimport { renderMultipleLoadingError } from \"@single-js/common/components/render-loading-error/render-multiple-loading-error\";\nimport { FakeLinkCell } from \"@single-js/common/components/super-table/super-table\";\nimport { COLORS } from \"@single-js/common/sui/color-map\";\nimport { LEError, LELoading, LESuccess, } from \"@single-js/common/util/loading-error\";\nimport NumberFormatter from \"@single-js/common/util/number-formatter\";\nimport { LONG_EM_DASH } from \"@single-js/common/util/symbols\";\nimport BigNumber from \"@single-js/common/vendor/bignumber.js/bignumber\";\nimport { formatNodeAddress, getPartitionName, getPartitionType, } from \"data/models\";\nimport { getPartitionMasterInstance, getPartitionReplicaInstance, isPartitionImpacted, } from \"data/models/cluster-metadata\";\nimport qualifiedName from \"memsql/qualified-name\";\nimport * as React from \"react\";\nimport calculateCompressionRatio, { COMPRESSION_RATIO_TIP, } from \"util/compression-ratio\";\nimport * as logging from \"util/logging\";\nimport { buildRankDictionary } from \"util/rank-dictionary\";\nimport showDefinitionColumn from \"util/show-definition-column\";\nimport ConsoleQueryButton from \"view/common/console-query-button\";\nimport InternalLink from \"view/common/internal-link\";\nimport { displayPartitionStatus, formatPartitionInstanceRole, formatPartitionInstanceState, formatPartitionStatus, } from \"view/common/models/cluster-metadata\";\nimport { formatDatabaseStatus, getColumnIcon } from \"view/common/models/schema\";\nimport { SizeCircleCell } from \"view/common/size-circle-cell\";\nimport { ROW_COUNT_TIP } from \"view/schema/const\";\nimport \"./schema-column-info.scss\";\nexport const DATABASE_COLUMNS = [\n {\n id: \"databaseName\",\n title: \"Name\",\n formatter: ({ database }) => {\n let icon;\n if (database.databaseName === \"information_schema\") {\n icon = \"information-schema\";\n }\n else {\n icon = \"database\";\n }\n return (React.createElement(React.Fragment, null,\n React.createElement(Icon, { icon: icon, size: \"sm\", className: \"entity-name-icon\" }),\n React.createElement(FakeLinkCell, null, database.databaseName)));\n },\n getValue: ({ database }) => database.databaseName,\n },\n {\n id: \"databaseStatus\",\n title: \"Status\",\n formatter: formatDatabaseStatus,\n getValue: (database) => {\n return displayPartitionStatus(database.derived.status, database.derived.impacted);\n },\n },\n {\n id: \"tableCount\",\n title: \"Table Count\",\n formatter: ({ database }) => {\n if (database.databaseName === \"information_schema\") {\n return LONG_EM_DASH;\n }\n return database.tableCount;\n },\n getValue: ({ database }) => {\n if (database.databaseName === \"information_schema\") {\n return Number.NEGATIVE_INFINITY;\n }\n return database.tableCount;\n },\n },\n {\n id: \"partitionCount\",\n title: \"Partition Count\",\n formatter: ({ database }) => {\n if (database.databaseName === \"information_schema\") {\n return LONG_EM_DASH;\n }\n if (database.statistics &&\n database.statistics.partitionCount.isSuccess()) {\n return database.statistics.partitionCount.value.toString();\n }\n else if (database.statistics &&\n database.statistics.partitionCount.isError()) {\n return ERROR_NODE;\n }\n else {\n return LOADING_CELL_NODE;\n }\n },\n getValue: ({ database }) => {\n if (database.databaseName === \"information_schema\") {\n return Number.NEGATIVE_INFINITY;\n }\n // PLAT-3189\n let partitionCount = undefined;\n if (database.statistics &&\n database.statistics.partitionCount.isSuccess()) {\n partitionCount = database.statistics.partitionCount.value.toNumber();\n }\n return partitionCount;\n },\n },\n {\n id: \"memoryUsage\",\n title: \"Memory Usage\",\n formatter: ({ database, derived }) => {\n if (database.databaseName === \"information_schema\") {\n return LONG_EM_DASH;\n }\n if (derived.memoryUsagePercent &&\n derived.memoryUsagePercent.isSuccess()) {\n return (React.createElement(SizeCircleCell, { text: NumberFormatter.formatBytes(derived.memoryUsage), value: derived.memoryUsagePercent.value, color: COLORS[\"base-purple-600\"] }));\n }\n else if (derived.memoryUsagePercent.isError()) {\n return ERROR_NODE;\n }\n else {\n return LOADING_CELL_NODE;\n }\n },\n getValue: ({ database, derived }) => {\n if (database.databaseName === \"information_schema\") {\n return Number.NEGATIVE_INFINITY;\n }\n return derived.memoryUsage.toNumber();\n },\n },\n {\n id: \"diskUsage\",\n title: \"Disk Usage\",\n formatter: ({ database, derived }) => {\n if (database.databaseName === \"information_schema\") {\n return LONG_EM_DASH;\n }\n if (derived.diskUsage.isSuccess() &&\n derived.diskUsagePercent.isSuccess()) {\n return (React.createElement(SizeCircleCell, { text: NumberFormatter.formatBytes(derived.diskUsage.value), value: derived.diskUsagePercent.value, color: COLORS[\"base-indigo-600\"] }));\n }\n else if (derived.diskUsage.isError() ||\n derived.diskUsagePercent.isError()) {\n return ERROR_NODE;\n }\n else {\n return LOADING_CELL_NODE;\n }\n },\n getValue: ({ database, derived }) => {\n if (database.databaseName === \"information_schema\") {\n return Number.NEGATIVE_INFINITY;\n }\n if (!derived.diskUsage.isLoading() &&\n !derived.diskUsage.isError()) {\n // PLAT-3189\n return derived.diskUsage.value.toNumber();\n }\n // If loading, return undefined. If error, return null.\n return derived.diskUsage.isLoading() ? undefined : null;\n },\n },\n];\nconst getTableRowCount = (table) => {\n if (table.statistics) {\n return table.statistics.rowCount;\n }\n else {\n return undefined;\n }\n};\nconst getTableMemoryUse = (table) => {\n if (table.statistics) {\n return table.statistics.memoryUse;\n }\n else {\n // should never happen\n return new BigNumber(0);\n }\n};\nexport const formatTableStorage = (table) => {\n if (table.tableStorage === \"INMEMORY_ROWSTORE\") {\n if (table.isSharded) {\n return \"Rowstore\";\n }\n else {\n return \"Rowstore (reference)\";\n }\n }\n else if (table.tableStorage === \"COLUMNSTORE\") {\n if (table.isSharded) {\n return \"Columnstore\";\n }\n else {\n return \"Columnstore (reference)\";\n }\n }\n return \"Unknown\";\n};\nexport const getTableLikeIcon = (tableLike) => {\n const table = tableLike;\n if (table.tableStorage === \"INMEMORY_ROWSTORE\") {\n return table.isSharded ? \"row\" : \"row-reference\";\n }\n else if (table.tableStorage === \"COLUMNSTORE\") {\n return table.isSharded ? \"column\" : \"column-reference\";\n }\n // If the table type is neither rowstore nor columnstore, then it must be a\n // View for which we show the Font Awesome `table` icon.\n return \"table\";\n};\nexport const TABLE_COLUMNS = [\n {\n id: \"tableName\",\n title: \"Name\",\n formatter: ({ table }) => (React.createElement(React.Fragment, null,\n React.createElement(Icon, { icon: getTableLikeIcon(table), size: \"sm\", className: \"entity-name-icon\" }),\n React.createElement(FakeLinkCell, null, table.tableName))),\n getValue: ({ table }) => table.tableName,\n },\n {\n id: \"storage\",\n title: \"Storage\",\n formatter: ({ table }) => formatTableStorage(table),\n getValue: ({ table }) => table.tableStorage,\n },\n {\n id: \"rowCount\",\n title: \"Row Count\",\n description: ROW_COUNT_TIP,\n formatter: ({ table }) => {\n const rowCount = getTableRowCount(table);\n if (rowCount === undefined) {\n return \"—\";\n }\n return NumberFormatter.compactInteger(rowCount);\n },\n getValue: ({ table }) => {\n const rowCount = getTableRowCount(table);\n // We use `Number.NEGATIVE_INFINITY` here to separate `0`s from `unknown`\n // row counts when users sort the table by Row Count.\n if (rowCount === undefined) {\n return Number.NEGATIVE_INFINITY;\n }\n // PLAT-3189\n return rowCount.toNumber();\n },\n },\n {\n id: \"memoryUse\",\n title: \"Memory Use\",\n formatter: ({ table, derived }) => {\n if (derived.memoryUsagePercent.isSuccess()) {\n return (React.createElement(SizeCircleCell, { text: NumberFormatter.formatBytes(getTableMemoryUse(table)), value: derived.memoryUsagePercent.value, color: COLORS[\"base-purple-600\"] }));\n }\n else if (derived.memoryUsagePercent.isError()) {\n return ERROR_NODE;\n }\n else {\n return LOADING_CELL_NODE;\n }\n },\n // PLAT-3189\n getValue: ({ table }) => getTableMemoryUse(table).toNumber(),\n },\n {\n id: \"diskUsage\",\n title: \"Disk Usage\",\n formatter: ({ derived }) => {\n if (derived.diskUsage.isSuccess() &&\n derived.diskUsagePercent.isSuccess()) {\n return (React.createElement(SizeCircleCell, { text: NumberFormatter.formatBytes(derived.diskUsage.value), value: derived.diskUsagePercent.value, color: COLORS[\"base-indigo-600\"] }));\n }\n else if (derived.diskUsage.isError() ||\n derived.diskUsagePercent.isError()) {\n return ERROR_NODE;\n }\n else {\n return LOADING_CELL_NODE;\n }\n },\n getValue: ({ derived }) => {\n if (!derived.diskUsage.isLoading() &&\n !derived.diskUsage.isError()) {\n // PLAT-3189\n return derived.diskUsage.value.toNumber();\n }\n // If loading, return undefined. If error, return null.\n return derived.diskUsage.isLoading() ? undefined : null;\n },\n },\n {\n id: \"tableCompression\",\n title: \"Table Compression\",\n description: COMPRESSION_RATIO_TIP,\n formatter: ({ derived: { diskUsage, uncompressedSize }, }) => {\n return renderMultipleLoadingError([diskUsage, uncompressedSize], ([diskUsageVal, uncompressedSizeVal]) => {\n const compressionRatio = calculateCompressionRatio(diskUsageVal, uncompressedSizeVal);\n if (compressionRatio === \"invalid\") {\n return LONG_EM_DASH;\n }\n else {\n return NumberFormatter.formatPercent(compressionRatio);\n }\n });\n },\n getValue: ({ derived: { diskUsage, uncompressedSize }, }) => {\n if (diskUsage.isSuccess() && uncompressedSize.isSuccess()) {\n const compressionRate = calculateCompressionRatio(diskUsage.value, uncompressedSize.value);\n return compressionRate === \"invalid\" ? null : compressionRate;\n }\n // If loading, return undefined. If error, return null.\n return diskUsage.isLoading() ? undefined : null;\n },\n },\n];\nexport const VIEW_COLUMNS = [\n {\n id: \"viewName\",\n title: \"Name\",\n formatter: ({ view }) => (React.createElement(React.Fragment, null,\n React.createElement(Icon, { icon: getTableLikeIcon(view), size: \"sm\", className: \"entity-name-icon\" }),\n React.createElement(FakeLinkCell, null, view.tableName))),\n getValue: ({ view }) => view.tableName,\n },\n {\n id: \"numColumns\",\n title: \"Number of Columns\",\n formatter: ({ derived }) => derived.columnCount,\n getValue: ({ derived }) => derived.columnCount,\n },\n];\n// `getColumnCompressionRatio` returns:\n// * \"invalid\" if either the compressed size or the uncompressed size are 0 (empty CS table or RS table)\n// * `undefined` if either the compressed size or uncompressed size are in the loading (`undefined`) state\n// * \"error\" if either the compressed size or the uncompressed size are in the error (\"error\") state\n// * a `number` corresponding to the compression ratio, otherwise\nexport const getColumnCompressionRatio = (column) => {\n if (column.statistics) {\n if (column.statistics.compressedSize.isLoading() ||\n column.statistics.uncompressedSize.isLoading()) {\n return new LELoading();\n }\n else if (column.statistics.compressedSize.isError() ||\n column.statistics.uncompressedSize.isError()) {\n return new LEError();\n }\n else {\n const compressionRatio = calculateCompressionRatio(column.statistics.compressedSize.value, column.statistics.uncompressedSize.value);\n if (compressionRatio === \"invalid\") {\n return \"invalid\";\n }\n else {\n return new LESuccess(compressionRatio);\n }\n }\n }\n return new LELoading();\n};\nconst getColumnMemoryUse = (column) => column.statistics ? column.statistics.memoryUse : new LELoading();\nconst getColumnDiskUsage = (column) => column.statistics ? column.statistics.compressedSize : new LELoading();\nconst EXCEPTION_TYPES = [\n \"varchar\",\n \"varbinary\",\n \"json\",\n \"bson\",\n \"geo\",\n \"geography\",\n \"vector\",\n \"longtext\",\n \"mediumtext\",\n \"text\",\n \"tinytext\",\n];\nexport const COLUMN_COLUMNS = [\n {\n id: \"columnName\",\n title: \"Name\",\n formatter: ({ column }) => (React.createElement(React.Fragment, null,\n React.createElement(Icon, { icon: getColumnIcon(column), iconType: \"regular\", size: \"sm\", className: \"entity-name-icon\" }),\n column.columnName)),\n getValue: ({ column }) => column.columnName,\n },\n {\n id: \"dataType\",\n title: \"Data Type\",\n formatter: ({ column }) => column.subType,\n getValue: ({ column }) => column.subType,\n },\n {\n id: \"computed\",\n title: \"Computed\",\n formatter: ({ column }) => column.computed ? \"Yes\" : \"No\",\n getValue: ({ column }) => column.computed,\n },\n {\n id: \"memoryUsage\",\n title: \"Memory Usage\",\n formatter: ({ column, derived }) => {\n const memoryUse = getColumnMemoryUse(column);\n if (memoryUse.isLoading() ||\n derived.memoryUsagePercent.isLoading()) {\n return LOADING_CELL_NODE;\n }\n if (memoryUse.isError() || derived.memoryUsagePercent.isError()) {\n return ERROR_NODE;\n }\n if (EXCEPTION_TYPES.includes(column.dataType)) {\n return (React.createElement(React.Fragment, null,\n LONG_EM_DASH,\n React.createElement(IconTip, { tipProps: { direction: \"e\" }, iconProps: { leftMargin: true } }, \"Memory Usage calculation is not available for this data type.\")));\n }\n else {\n return (React.createElement(SizeCircleCell, { text: NumberFormatter.formatBytes(memoryUse.value), value: derived.memoryUsagePercent.value, color: COLORS[\"base-purple-600\"] }));\n }\n },\n getValue: ({ column }) => {\n const memoryUse = getColumnMemoryUse(column);\n if (memoryUse === undefined || !memoryUse.isSuccess()) {\n return Number.NEGATIVE_INFINITY;\n }\n else {\n // PLAT-3189\n return memoryUse.value.toNumber();\n }\n },\n },\n {\n id: \"diskUsage\",\n title: \"Disk Usage\",\n formatter: ({ column, derived }) => {\n const diskUsage = getColumnDiskUsage(column);\n if (diskUsage.isLoading() || derived.diskUsagePercent.isLoading()) {\n return LOADING_CELL_NODE;\n }\n if (diskUsage.isError() || derived.diskUsagePercent.isError()) {\n return ERROR_NODE;\n }\n return (React.createElement(SizeCircleCell, { text: NumberFormatter.formatBytes(diskUsage.value), value: derived.diskUsagePercent.value, color: COLORS[\"base-indigo-600\"] }));\n },\n getValue: ({ column }) => {\n const diskUsage = getColumnDiskUsage(column);\n if (!diskUsage.isLoading() && !diskUsage.isError()) {\n // PLAT-3189\n return diskUsage.value.toNumber();\n }\n // If loading, return undefined. If error, return null.\n return diskUsage.isLoading() ? undefined : null;\n },\n },\n {\n id: \"compressionRatio\",\n title: \"Compression Ratio\",\n description: COMPRESSION_RATIO_TIP,\n formatter: ({ column }) => {\n const compressionRatio = getColumnCompressionRatio(column);\n if (compressionRatio === \"invalid\") {\n return LONG_EM_DASH;\n }\n else if (compressionRatio.isSuccess()) {\n return NumberFormatter.formatPercent(compressionRatio.value);\n }\n else if (compressionRatio.isError()) {\n return ERROR_NODE;\n }\n else {\n return LOADING_CELL_NODE;\n }\n },\n getValue: ({ column }) => {\n const ratio = getColumnCompressionRatio(column);\n if (ratio === \"invalid\") {\n return \"invalid\";\n }\n else {\n // If loading, return undefined. If error, return null.\n if (ratio.isSuccess()) {\n return ratio.value;\n }\n else if (ratio.isLoading()) {\n return undefined;\n }\n else {\n return null;\n }\n }\n },\n },\n {\n id: \"default\",\n title: \"Default\",\n formatter: ({ column }) => {\n if (column.defaultValueSQL) {\n return (React.createElement(\"div\", { className: \"monospaced\" }, column.defaultValueSQL));\n }\n else {\n return \"—\";\n }\n },\n getValue: ({ column }) => column.defaultValueSQL,\n },\n];\nexport const VIEW_COLUMN_COLUMNS = [\n {\n id: \"columnName\",\n title: \"Name\",\n formatter: (column) => (React.createElement(React.Fragment, null,\n React.createElement(Icon, { icon: getColumnIcon(column), iconType: \"regular\", size: \"sm\", className: \"entity-name-icon\" }),\n column.columnName)),\n getValue: (column) => column.columnName,\n },\n {\n id: \"dataType\",\n title: \"Data Type\",\n formatter: (column) => column.subType,\n getValue: (column) => column.subType,\n },\n];\nconst humanizeIndexType = ({ indexName, indexType, unique }) => {\n const type = indexType;\n const name = indexName;\n if (type === \"CLUSTERED COLUMN\") {\n return \"Columnstore\";\n }\n else if (type === \"BTREE\" && name === \"PRIMARY\") {\n return \"Primary Key\";\n }\n else if (type === \"HASH\" && name === \"PRIMARY\") {\n return \"Primary Key (Hash)\";\n }\n else if (type === \"HASH\" && unique) {\n return \"Unique Key (Hash)\";\n }\n else if (unique) {\n return \"Unique Key\";\n }\n else if (type === \"BTREE\") {\n return \"Key\";\n }\n else if (type === \"SHARD\") {\n return \"Shard\";\n }\n else if (type === \"HASH\") {\n return \"Hash\";\n }\n else if (type === \"FULLTEXT\") {\n return \"Fulltext\";\n }\n else if (type === \"COLUMNSTORE HASH\") {\n return \"Columnstore Hash\";\n }\n return type;\n};\nexport const INDEX_COLUMNS = [\n {\n id: \"indexName\",\n title: \"Name\",\n formatter: (index) => (React.createElement(React.Fragment, null,\n React.createElement(Icon, { icon: \"index\", size: \"sm\", className: \"entity-name-icon\" }),\n index.indexName)),\n getValue: (index) => index.indexName,\n },\n {\n id: \"memoryUsage\",\n title: \"Memory Usage\",\n formatter: (index) => NumberFormatter.formatBytes(index.memoryUse),\n // PLAT-3189\n getValue: (index) => index.memoryUse.toNumber(),\n },\n {\n id: \"diskUse\",\n title: \"Disk Usage\",\n formatter: (index) => {\n if (index.diskUse === undefined) {\n return LONG_EM_DASH;\n }\n else {\n return NumberFormatter.formatBytes(index.diskUse);\n }\n },\n getValue: (index) => {\n if (index.diskUse === undefined) {\n return undefined;\n }\n else {\n return index.diskUse.toNumber();\n }\n },\n },\n {\n id: \"indexType\",\n title: \"Type\",\n formatter: (index) => humanizeIndexType(index),\n getValue: (index) => humanizeIndexType(index),\n },\n {\n id: \"indexColumns\",\n title: \"Columns\",\n formatter: (index) => index.columnNames.join(\", \"),\n getValue: (index) => index.columnNames.join(\", \"),\n },\n {\n id: \"indexUnique\",\n title: \"Unique\",\n formatter: (index) => (index.unique ? \"Yes\" : \"No\"),\n getValue: (index) => index.unique,\n },\n];\nexport const STORED_PROCEDURE_COLUMNS = [\n {\n id: \"name\",\n title: \"Name\",\n formatter: (sp) => (React.createElement(React.Fragment, null,\n React.createElement(Icon, { icon: \"stored-procedure\", size: \"sm\", className: \"entity-name-icon\" }),\n sp.name)),\n getValue: (sp) => sp.name,\n },\n {\n id: \"definer\",\n title: \"Definer\",\n formatter: (sp) => sp.definer,\n getValue: (sp) => sp.definer,\n },\n showDefinitionColumn({\n formatter: ({ databaseName, name }) => (React.createElement(ConsoleQueryButton, { tipProps: {\n direction: \"w\",\n tooltip: \"Get the SHOW CREATE PROCEDURE output for this procedure.\",\n }, query: `SHOW CREATE PROCEDURE ${qualifiedName({\n databaseName,\n name,\n })} \\\\G`, category: \"schema-explorer\", action: \"show-create-function\" })),\n }),\n];\nexport const UDF_COLUMNS = [\n {\n id: \"name\",\n title: \"Name\",\n formatter: (udf) => (React.createElement(React.Fragment, null,\n React.createElement(Icon, { icon: \"udf\", size: \"sm\", className: \"entity-name-icon\" }),\n udf.name)),\n getValue: (udf) => udf.name,\n },\n {\n id: \"type\",\n title: \"Type\",\n formatter: (udf) => {\n switch (udf.type) {\n case \"SCALAR_VALUED_FUNCTION\":\n return \"Scalar-Valued\";\n case \"TABLE_VALUED_FUNCTION\":\n return \"Table-Valued\";\n default:\n return \"Unknown\";\n }\n },\n getValue: (udf) => udf.type,\n },\n {\n id: \"definer\",\n title: \"Definer\",\n formatter: (udf) => udf.definer,\n getValue: (udf) => udf.definer,\n },\n showDefinitionColumn({\n formatter: ({ databaseName, name }) => (React.createElement(ConsoleQueryButton, { tipProps: {\n direction: \"sw\",\n tooltip: \"Get the SHOW CREATE FUNCTION output for this function.\",\n }, query: `SHOW CREATE FUNCTION ${qualifiedName({\n databaseName,\n name,\n })} \\\\G`, category: \"schema-explorer\", action: \"show-create-function\" })),\n }),\n];\nexport const UDA_COLUMNS = [\n {\n id: \"name\",\n title: \"Name\",\n formatter: (uda) => (React.createElement(React.Fragment, null,\n React.createElement(Icon, { icon: \"aggregate\", size: \"sm\", className: \"entity-name-icon\" }),\n uda.name)),\n getValue: (udf) => udf.name,\n },\n showDefinitionColumn({\n formatter: ({ databaseName, name }) => (React.createElement(ConsoleQueryButton, { tipProps: {\n direction: \"sw\",\n tooltip: \"Get the SHOW CREATE AGGREGATE output for this aggregate.\",\n }, query: `SHOW CREATE AGGREGATE ${qualifiedName({\n databaseName,\n name,\n })} \\\\G`, category: \"schema-explorer\", action: \"show-create-function\" })),\n }),\n];\nexport const PARTITION_COLUMNS = [\n {\n id: \"databaseName\",\n title: \"Partition\",\n formatter: (derivedPartition) => {\n const partitionName = getPartitionName(derivedPartition);\n return (React.createElement(React.Fragment, null,\n React.createElement(Icon, { icon: \"chart-pie\", size: \"sm\", className: \"entity-name-icon\" }),\n React.createElement(\"span\", null, partitionName)));\n },\n getValue: (derivedPartition) => getPartitionName(derivedPartition),\n },\n {\n id: \"partitionStatus\",\n title: \"Health Status\",\n formatter: formatPartitionStatus,\n getValue: (partition) => {\n return displayPartitionStatus(partition.status, isPartitionImpacted(partition));\n },\n },\n {\n id: \"numPartitionInstances\",\n title: \"Total Partition Instances\",\n formatter: (derivedPartition) => (React.createElement(InternalLink, { routeInfo: {\n name: \"cluster.databases.partition\",\n params: {\n databaseName: derivedPartition.databaseName,\n partitionName: getPartitionName(derivedPartition),\n },\n }, category: \"schema-explorer\", clusterLink: true, onClick: \n /* stop propagation to the cell click event */ (e) => e.stopPropagation() }, derivedPartition.partitionInstances.length)),\n getValue: ({ partitionInstances }) => partitionInstances.length,\n },\n {\n id: \"partitionType\",\n title: \"Partition Type\",\n formatter: (derivedPartition) => getPartitionType(derivedPartition),\n getValue: (derivedPartition) => getPartitionType(derivedPartition),\n },\n {\n id: \"masterPartition\",\n title: \"Master Partition Instance Node\",\n formatter: (derivedPartition) => {\n const masterPartitionInstance = getPartitionMasterInstance(derivedPartition);\n if (masterPartitionInstance) {\n return (React.createElement(InternalLink, { routeInfo: {\n name: \"cluster.nodes.node\",\n params: {\n nodeAddress: formatNodeAddress(masterPartitionInstance),\n },\n }, category: \"schema-explorer\", clusterLink: true, onClick: \n /* stop propagation to the cell click event */ (e) => e.stopPropagation() }, formatNodeAddress(masterPartitionInstance)));\n }\n else {\n logging.log(\"warn\", \"Master Partition Instance Node does not exist.\");\n return \"N/A\";\n }\n },\n getValue: (derivedPartition) => {\n const masterPartitionInstance = getPartitionMasterInstance(derivedPartition);\n if (masterPartitionInstance) {\n return formatNodeAddress(masterPartitionInstance);\n }\n },\n },\n {\n id: \"replicaPartition\",\n title: \"Replica Partition Instance Node\",\n formatter: (derivedPartition) => {\n const replicaPartitionInstance = getPartitionReplicaInstance(derivedPartition);\n if (replicaPartitionInstance === \"all-leaf-nodes\") {\n return \"All Leaf Nodes\";\n }\n else if (replicaPartitionInstance === undefined) {\n //This can happen if HA is not enabled\n return \"N/A\";\n }\n else {\n return (React.createElement(InternalLink, { routeInfo: {\n name: \"cluster.nodes.node\",\n params: {\n nodeAddress: formatNodeAddress(replicaPartitionInstance),\n },\n }, category: \"schema-explorer\", clusterLink: true, onClick: \n /* stop propagation to the cell click event */ (e) => e.stopPropagation() }, formatNodeAddress(replicaPartitionInstance)));\n }\n },\n getValue: (derivedPartition) => {\n const replicaPartitionInstance = getPartitionReplicaInstance(derivedPartition);\n if (replicaPartitionInstance === \"all-leaf-nodes\" ||\n !replicaPartitionInstance) {\n return replicaPartitionInstance;\n }\n else {\n return formatNodeAddress(replicaPartitionInstance);\n }\n },\n },\n];\nexport const PARTITION_INSTANCE_ROLE_COLUMN = {\n id: \"partitionInstanceRole\",\n title: \"Role\",\n formatter: (partitionInstance) => formatPartitionInstanceRole(partitionInstance.role),\n getValue: (partitionInstance) => {\n switch (partitionInstance.role) {\n case \"master\":\n return 3;\n case \"slave\":\n return 2;\n case \"detached master\":\n return 1;\n case \"detached slave\":\n return 0;\n default:\n return -1;\n }\n },\n};\n// In this object, we rank partition instance states so as to be able to compare\n// their states from \"best\" to \"worst\"\nexport const RANK_PARTITION_INSTANCE_STATE = buildRankDictionary([\n \"online\",\n \"replicating\",\n \"provisioning\",\n \"transition\",\n \"pending\",\n \"recovering\",\n \"unrecoverable\",\n \"offline\",\n]);\nconst getPartitionInstanceRank = (state) => RANK_PARTITION_INSTANCE_STATE[state];\nexport const PARTITION_INSTANCE_STATE_COLUMN = {\n id: \"partitionInstanceState\",\n title: \"State\",\n formatter: (partitionInstance) => formatPartitionInstanceState(partitionInstance.state),\n getValue: (partitionInstance) => getPartitionInstanceRank(partitionInstance.state),\n};\nexport const PARTITION_INSTANCE_LOG_COLUMN = {\n id: \"partitionInstancePosition\",\n title: \"Log Position\",\n formatter: (partitionInstance) => partitionInstance.position || LONG_EM_DASH,\n getValue: (partitionInstance) => partitionInstance.position,\n};\nexport const PARTITION_INSTANCE_COLUMNS = [\n PARTITION_INSTANCE_STATE_COLUMN,\n PARTITION_INSTANCE_ROLE_COLUMN,\n {\n id: \"partitionInstanceNodeAddress\",\n title: \"Node Address\",\n formatter: (partitionInstance) => (React.createElement(InternalLink, { routeInfo: {\n name: \"cluster.nodes.node\",\n params: {\n nodeAddress: formatNodeAddress(partitionInstance),\n },\n }, category: \"schema-explorer\", clusterLink: true, onClick: \n /* stop propagation to the cell click event */ (e) => e.stopPropagation() },\n partitionInstance.host,\n \":\",\n partitionInstance.port.toString())),\n getValue: (partitionInstance) => `${partitionInstance.host}:${partitionInstance.port}`,\n },\n PARTITION_INSTANCE_LOG_COLUMN,\n];\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\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","module.exports = {\n addDays: require('./add_days/index.js'),\n addHours: require('./add_hours/index.js'),\n addISOYears: require('./add_iso_years/index.js'),\n addMilliseconds: require('./add_milliseconds/index.js'),\n addMinutes: require('./add_minutes/index.js'),\n addMonths: require('./add_months/index.js'),\n addQuarters: require('./add_quarters/index.js'),\n addSeconds: require('./add_seconds/index.js'),\n addWeeks: require('./add_weeks/index.js'),\n addYears: require('./add_years/index.js'),\n areRangesOverlapping: require('./are_ranges_overlapping/index.js'),\n closestIndexTo: require('./closest_index_to/index.js'),\n closestTo: require('./closest_to/index.js'),\n compareAsc: require('./compare_asc/index.js'),\n compareDesc: require('./compare_desc/index.js'),\n differenceInCalendarDays: require('./difference_in_calendar_days/index.js'),\n differenceInCalendarISOWeeks: require('./difference_in_calendar_iso_weeks/index.js'),\n differenceInCalendarISOYears: require('./difference_in_calendar_iso_years/index.js'),\n differenceInCalendarMonths: require('./difference_in_calendar_months/index.js'),\n differenceInCalendarQuarters: require('./difference_in_calendar_quarters/index.js'),\n differenceInCalendarWeeks: require('./difference_in_calendar_weeks/index.js'),\n differenceInCalendarYears: require('./difference_in_calendar_years/index.js'),\n differenceInDays: require('./difference_in_days/index.js'),\n differenceInHours: require('./difference_in_hours/index.js'),\n differenceInISOYears: require('./difference_in_iso_years/index.js'),\n differenceInMilliseconds: require('./difference_in_milliseconds/index.js'),\n differenceInMinutes: require('./difference_in_minutes/index.js'),\n differenceInMonths: require('./difference_in_months/index.js'),\n differenceInQuarters: require('./difference_in_quarters/index.js'),\n differenceInSeconds: require('./difference_in_seconds/index.js'),\n differenceInWeeks: require('./difference_in_weeks/index.js'),\n differenceInYears: require('./difference_in_years/index.js'),\n distanceInWords: require('./distance_in_words/index.js'),\n distanceInWordsStrict: require('./distance_in_words_strict/index.js'),\n distanceInWordsToNow: require('./distance_in_words_to_now/index.js'),\n eachDay: require('./each_day/index.js'),\n endOfDay: require('./end_of_day/index.js'),\n endOfHour: require('./end_of_hour/index.js'),\n endOfISOWeek: require('./end_of_iso_week/index.js'),\n endOfISOYear: require('./end_of_iso_year/index.js'),\n endOfMinute: require('./end_of_minute/index.js'),\n endOfMonth: require('./end_of_month/index.js'),\n endOfQuarter: require('./end_of_quarter/index.js'),\n endOfSecond: require('./end_of_second/index.js'),\n endOfToday: require('./end_of_today/index.js'),\n endOfTomorrow: require('./end_of_tomorrow/index.js'),\n endOfWeek: require('./end_of_week/index.js'),\n endOfYear: require('./end_of_year/index.js'),\n endOfYesterday: require('./end_of_yesterday/index.js'),\n format: require('./format/index.js'),\n getDate: require('./get_date/index.js'),\n getDay: require('./get_day/index.js'),\n getDayOfYear: require('./get_day_of_year/index.js'),\n getDaysInMonth: require('./get_days_in_month/index.js'),\n getDaysInYear: require('./get_days_in_year/index.js'),\n getHours: require('./get_hours/index.js'),\n getISODay: require('./get_iso_day/index.js'),\n getISOWeek: require('./get_iso_week/index.js'),\n getISOWeeksInYear: require('./get_iso_weeks_in_year/index.js'),\n getISOYear: require('./get_iso_year/index.js'),\n getMilliseconds: require('./get_milliseconds/index.js'),\n getMinutes: require('./get_minutes/index.js'),\n getMonth: require('./get_month/index.js'),\n getOverlappingDaysInRanges: require('./get_overlapping_days_in_ranges/index.js'),\n getQuarter: require('./get_quarter/index.js'),\n getSeconds: require('./get_seconds/index.js'),\n getTime: require('./get_time/index.js'),\n getYear: require('./get_year/index.js'),\n isAfter: require('./is_after/index.js'),\n isBefore: require('./is_before/index.js'),\n isDate: require('./is_date/index.js'),\n isEqual: require('./is_equal/index.js'),\n isFirstDayOfMonth: require('./is_first_day_of_month/index.js'),\n isFriday: require('./is_friday/index.js'),\n isFuture: require('./is_future/index.js'),\n isLastDayOfMonth: require('./is_last_day_of_month/index.js'),\n isLeapYear: require('./is_leap_year/index.js'),\n isMonday: require('./is_monday/index.js'),\n isPast: require('./is_past/index.js'),\n isSameDay: require('./is_same_day/index.js'),\n isSameHour: require('./is_same_hour/index.js'),\n isSameISOWeek: require('./is_same_iso_week/index.js'),\n isSameISOYear: require('./is_same_iso_year/index.js'),\n isSameMinute: require('./is_same_minute/index.js'),\n isSameMonth: require('./is_same_month/index.js'),\n isSameQuarter: require('./is_same_quarter/index.js'),\n isSameSecond: require('./is_same_second/index.js'),\n isSameWeek: require('./is_same_week/index.js'),\n isSameYear: require('./is_same_year/index.js'),\n isSaturday: require('./is_saturday/index.js'),\n isSunday: require('./is_sunday/index.js'),\n isThisHour: require('./is_this_hour/index.js'),\n isThisISOWeek: require('./is_this_iso_week/index.js'),\n isThisISOYear: require('./is_this_iso_year/index.js'),\n isThisMinute: require('./is_this_minute/index.js'),\n isThisMonth: require('./is_this_month/index.js'),\n isThisQuarter: require('./is_this_quarter/index.js'),\n isThisSecond: require('./is_this_second/index.js'),\n isThisWeek: require('./is_this_week/index.js'),\n isThisYear: require('./is_this_year/index.js'),\n isThursday: require('./is_thursday/index.js'),\n isToday: require('./is_today/index.js'),\n isTomorrow: require('./is_tomorrow/index.js'),\n isTuesday: require('./is_tuesday/index.js'),\n isValid: require('./is_valid/index.js'),\n isWednesday: require('./is_wednesday/index.js'),\n isWeekend: require('./is_weekend/index.js'),\n isWithinRange: require('./is_within_range/index.js'),\n isYesterday: require('./is_yesterday/index.js'),\n lastDayOfISOWeek: require('./last_day_of_iso_week/index.js'),\n lastDayOfISOYear: require('./last_day_of_iso_year/index.js'),\n lastDayOfMonth: require('./last_day_of_month/index.js'),\n lastDayOfQuarter: require('./last_day_of_quarter/index.js'),\n lastDayOfWeek: require('./last_day_of_week/index.js'),\n lastDayOfYear: require('./last_day_of_year/index.js'),\n max: require('./max/index.js'),\n min: require('./min/index.js'),\n parse: require('./parse/index.js'),\n setDate: require('./set_date/index.js'),\n setDay: require('./set_day/index.js'),\n setDayOfYear: require('./set_day_of_year/index.js'),\n setHours: require('./set_hours/index.js'),\n setISODay: require('./set_iso_day/index.js'),\n setISOWeek: require('./set_iso_week/index.js'),\n setISOYear: require('./set_iso_year/index.js'),\n setMilliseconds: require('./set_milliseconds/index.js'),\n setMinutes: require('./set_minutes/index.js'),\n setMonth: require('./set_month/index.js'),\n setQuarter: require('./set_quarter/index.js'),\n setSeconds: require('./set_seconds/index.js'),\n setYear: require('./set_year/index.js'),\n startOfDay: require('./start_of_day/index.js'),\n startOfHour: require('./start_of_hour/index.js'),\n startOfISOWeek: require('./start_of_iso_week/index.js'),\n startOfISOYear: require('./start_of_iso_year/index.js'),\n startOfMinute: require('./start_of_minute/index.js'),\n startOfMonth: require('./start_of_month/index.js'),\n startOfQuarter: require('./start_of_quarter/index.js'),\n startOfSecond: require('./start_of_second/index.js'),\n startOfToday: require('./start_of_today/index.js'),\n startOfTomorrow: require('./start_of_tomorrow/index.js'),\n startOfWeek: require('./start_of_week/index.js'),\n startOfYear: require('./start_of_year/index.js'),\n startOfYesterday: require('./start_of_yesterday/index.js'),\n subDays: require('./sub_days/index.js'),\n subHours: require('./sub_hours/index.js'),\n subISOYears: require('./sub_iso_years/index.js'),\n subMilliseconds: require('./sub_milliseconds/index.js'),\n subMinutes: require('./sub_minutes/index.js'),\n subMonths: require('./sub_months/index.js'),\n subQuarters: require('./sub_quarters/index.js'),\n subSeconds: require('./sub_seconds/index.js'),\n subWeeks: require('./sub_weeks/index.js'),\n subYears: require('./sub_years/index.js')\n}\n","export function getMsgStateError(err) {\n const error = {\n message: err.message,\n };\n if (\"code\" in err) {\n error.code = err.code;\n }\n return error;\n}\nexport const isAccessDeniedError = (error) => {\n return error && error.code === \"ER_ACCESS_DENIED_ERROR\";\n};\n","export function calculateRateMs(previousValue, currentValue, previousDate, currentDate) {\n return currentValue\n .minus(previousValue)\n .dividedBy(currentDate.getTime() - previousDate.getTime());\n}\nexport function calculateRateS(previousValue, currentValue, previousDate, currentDate) {\n return calculateRateMs(previousValue, currentValue, previousDate, currentDate).multipliedBy(1000);\n}\n","import { LEError, LELoading, LESuccess, } from \"@single-js/common/util/loading-error\";\nimport { selectError, selectIsError, selectPayload, } from \"@single-js/common/util/loading-state-machine\";\nimport { getPartitionName, isPartitionImpacted, } from \"data/models\";\nimport { selectRoute } from \"data/selectors/routes\";\nimport _ from \"lodash\";\nimport { PARTITION_COLUMNS, PARTITION_INSTANCE_COLUMNS, } from \"memsql/schema-column-info\";\nimport { createSelector } from \"reselect\";\nimport { buildRankDictionary } from \"util/rank-dictionary\";\nimport { calculateRateS } from \"util/rate\";\nconst selectCurrentDatabaseName = (s) => selectRoute(s).params.databaseName;\nexport const selectHaEnabled = (s) => {\n const payload = selectPayload(s.clusterMetadata.clusterStatistics);\n if (payload) {\n return payload.haEnabled;\n }\n};\nexport const selectClusterStatisticsError = (s) => {\n return selectError(s.clusterMetadata.clusterStatistics);\n};\n// We duplicate this selector from selectors/topology to avoid circular\n// dependency issues.\nconst selectNodes = (s) => {\n const payload = selectPayload(s.topology.topology);\n if (payload) {\n return payload.nodes;\n }\n};\nexport const selectMemsqlVersion = (s) => {\n return selectPayload(s.clusterMetadata.memsqlVersion);\n};\nexport const selectPartitions = (s) => {\n const partitionsPayload = selectPayload(s.clusterMetadata.partitions);\n if (partitionsPayload) {\n return partitionsPayload.partitions;\n }\n};\nexport const selectPartitionInstances = (s) => {\n const partitionsPayload = selectPayload(s.clusterMetadata.partitions);\n if (partitionsPayload) {\n return partitionsPayload.partitionInstances;\n }\n};\nexport const selectPartitionsSort = (s) => s.clusterMetadata.partitionsSort;\nexport function getPartitionInstances(partition, allPartitionInstances) {\n return allPartitionInstances.filter((partitionInstance) => (partition.kind === \"data\" &&\n partitionInstance.databaseName === partition.databaseName &&\n partitionInstance.ordinal &&\n partitionInstance.ordinal.eq(partition.ordinal)) ||\n (partition.kind === \"reference\" &&\n partitionInstance.databaseName === partition.databaseName &&\n partitionInstance.ordinal === undefined));\n}\n// In this object, we rank slave partition instance states so as to be able to\n// compare their states from \"best\" to \"worst\".\nconst RANK_SLAVE_STATE = buildRankDictionary([\n \"replicating\",\n \"provisioning\",\n \"transition\",\n \"pending\",\n \"recovering\",\n \"online\",\n \"unrecoverable\",\n \"offline\",\n]);\n// `getWorstSlave` returns the \"worst\" slave for an array of slave partition\n// instances. The worst slave is defined as being the slave partition in the\n// \"worst\" state out of the N \"best\" slaves. The reason we only care about the N\n// \"best\" slaves is that extra slaves are only consuming extra resources and\n// aren't very helpful.\n//\n// N = expected number of slaves for the partition. For reference partitions, N\n// is the number of online nodes - 1. For data partitions, this is 1 if HA is\n// enabled and 0 if HA is disabled.\n//\n// Note that we sort by partition instance state and then retrieve the\n// [expectedNumSlaves - 1] element since we are converting to an index.\nexport function getWorstSlave(partitionInstances, expectedNumSlaves) {\n return _.orderBy(partitionInstances, [(pi) => RANK_SLAVE_STATE[pi.state]], \"asc\")[expectedNumSlaves - 1];\n}\nfunction getExpectedNumSlaves(partition, nodes, haEnabled) {\n if (partition.kind === \"reference\") {\n return _.filter(nodes, (node) => node.state === \"online\").length - 1;\n }\n else {\n return haEnabled ? 1 : 0;\n }\n}\n// This function derives the status of a partition based on the state of its\n// partition instances. This function basically owns 4 different tables that map\n// partition instance state to partition status and it chooses between the 4\n// different tables depending on some factors\n//\n// Case #1: DR is enabled for this partition and HA is enabled for the cluster\n// Case #2: DR is enabled for this partition and HA is disabled for the cluster\n// Case #3: DR is disabled for this partition and HA is enabled for the cluster\n// Case #4: DR is disabled for this partition and HA is disabled for the cluster\n//\n// The 4 tables are all here:\n// https://docs.google.com/spreadsheets/d/1v8Csw_7bbRx5EZ3XygrYvwJt-QxZ9D1RMJNfpbBUtx0/edit?pli=1#gid=0\n//\n// The HA enabled tables depend on the state of the master partition instance\n// and on the state of the \"worst\" slave partition. The HA disabled tables\n// depend only on the state of the master partition instance.\nexport function computePartitionStatus(masterState, worstSlaveState, drReplica, haEnabled) {\n if (drReplica && haEnabled) {\n switch (masterState) {\n case \"online\":\n return \"offline_recovering\";\n case \"replicating\":\n switch (worstSlaveState) {\n case \"online\":\n return \"degraded_recovering\";\n case \"replicating\":\n return \"online\";\n case \"provisioning\":\n case \"transition\":\n case \"pending\":\n case \"recovering\":\n return \"degraded_recovering\";\n case \"unrecoverable\":\n case \"offline\":\n case \"nonexistent\":\n return \"degraded_unrecoverable\";\n default:\n return \"unknown\";\n }\n case \"provisioning\":\n return \"offline_recovering\";\n case \"transition\":\n switch (worstSlaveState) {\n case \"online\":\n return \"degraded_recovering\";\n case \"replicating\":\n return \"online\";\n case \"provisioning\":\n case \"transition\":\n case \"pending\":\n case \"recovering\":\n return \"degraded_recovering\";\n case \"unrecoverable\":\n case \"offline\":\n case \"nonexistent\":\n return \"degraded_unrecoverable\";\n default:\n return \"unknown\";\n }\n case \"pending\":\n case \"recovering\":\n return \"offline_recovering\";\n case \"unrecoverable\":\n case \"offline\":\n case \"nonexistent\":\n return \"offline\";\n default:\n return \"unknown\";\n }\n }\n else if (drReplica && !haEnabled) {\n switch (masterState) {\n case \"online\":\n return \"offline_recovering\";\n case \"replicating\":\n return \"online\";\n case \"provisioning\":\n case \"transition\":\n case \"pending\":\n case \"recovering\":\n return \"offline_recovering\";\n case \"unrecoverable\":\n case \"offline\":\n case \"nonexistent\":\n return \"offline\";\n default:\n return \"unknown\";\n }\n }\n else if (haEnabled) {\n switch (masterState) {\n case \"online\":\n switch (worstSlaveState) {\n case \"online\":\n return \"degraded_recovering\";\n case \"replicating\":\n return \"online\";\n case \"provisioning\":\n case \"transition\":\n case \"pending\":\n case \"recovering\":\n return \"degraded_recovering\";\n case \"unrecoverable\":\n case \"offline\":\n case \"nonexistent\":\n return \"degraded_unrecoverable\";\n default:\n return \"unknown\";\n }\n case \"replicating\":\n return \"offline_recovering\";\n case \"provisioning\":\n return \"offline\";\n case \"transition\":\n switch (worstSlaveState) {\n case \"online\":\n return \"degraded_recovering\";\n case \"replicating\":\n return \"online\";\n case \"provisioning\":\n case \"transition\":\n case \"pending\":\n case \"recovering\":\n return \"degraded_recovering\";\n case \"unrecoverable\":\n case \"offline\":\n case \"nonexistent\":\n return \"degraded_unrecoverable\";\n default:\n return \"unknown\";\n }\n case \"pending\":\n case \"recovering\":\n return \"offline_recovering\";\n case \"unrecoverable\":\n case \"offline\":\n case \"nonexistent\":\n return \"offline\";\n default:\n return \"unknown\";\n }\n }\n else {\n switch (masterState) {\n case \"online\":\n return \"online\";\n case \"replicating\":\n return \"offline_recovering\";\n case \"provisioning\":\n return \"offline\";\n case \"transition\":\n case \"pending\":\n case \"recovering\":\n return \"offline_recovering\";\n case \"unrecoverable\":\n case \"offline\":\n case \"nonexistent\":\n return \"offline\";\n default:\n return \"unknown\";\n }\n }\n}\nfunction derivePartitionStatus(partition, partitionInstances, expectedNumSlaves, haEnabled) {\n const masterPartition = _.find(partitionInstances, (pi) => pi.role === \"master\");\n const slavePartitions = _.filter(partitionInstances, (pi) => pi.role === \"slave\");\n const worstSlave = getWorstSlave(slavePartitions, expectedNumSlaves);\n const worstSlaveState = worstSlave ? worstSlave.state : \"nonexistent\";\n const masterState = masterPartition ? masterPartition.state : \"nonexistent\";\n return computePartitionStatus(masterState, worstSlaveState, partition.drReplica, haEnabled);\n}\n// `getSyncState` returns the current sync state (synchronous or asynchronouse)\n// for a given partition, based on its partition instances states. If there is\n// at least one slave partition instance with its sync state set to \"sync\", the\n// partition's sync state is considered to be \"sync\". If there is at least one\n// slave partition instance with its sync state set to \"async\", the partition's\n// sync state is considered to be \"async\". Otherwise, we can't tell what the\n// current sync state is and return `undefined`.\nfunction getSyncState(partitionInstances) {\n const slavePartitions = _.filter(partitionInstances, (pi) => pi.role === \"slave\");\n if (_.some(slavePartitions, (pi) => pi.syncState === \"sync\")) {\n return \"sync\";\n }\n else if (_.some(slavePartitions, (pi) => pi.syncState === \"async\")) {\n return \"async\";\n }\n}\nexport const derivePartitions = createSelector(selectPartitions, selectPartitionInstances, selectHaEnabled, selectNodes, (partitions, allPartitionInstances, haEnabled, nodes) => {\n if (partitions &&\n allPartitionInstances &&\n haEnabled !== undefined &&\n nodes) {\n return _.map(partitions, (partition) => {\n const partitionInstances = getPartitionInstances(partition, allPartitionInstances);\n const expectedNumSlaves = getExpectedNumSlaves(partition, nodes, haEnabled);\n const syncState = getSyncState(partitionInstances);\n return {\n ...partition,\n partitionInstances,\n expectedNumSlaves,\n status: derivePartitionStatus(partition, partitionInstances, expectedNumSlaves, haEnabled),\n syncState,\n };\n });\n }\n});\nexport const selectSortedPartitions = createSelector(selectCurrentDatabaseName, derivePartitions, selectPartitionsSort, (currentDatabase, partitions, sort) => {\n if (partitions) {\n const selectedPartitions = _.filter(partitions, (partition) => partition.databaseName === currentDatabase);\n if (sort) {\n const { direction, columnId } = sort;\n const columnInfo = _.find(PARTITION_COLUMNS, (col) => col.id === columnId);\n if (!columnInfo) {\n throw new Error(\"Expected column to be defined when looking for partition sort information.\");\n }\n return _.orderBy(selectedPartitions, [columnInfo.getValue], direction);\n }\n else {\n return selectedPartitions;\n }\n }\n});\nexport const selectCurrentPartitionName = (s) => selectRoute(s).params.partitionName;\nexport const selectCurrentPartition = createSelector(derivePartitions, selectCurrentPartitionName, (partitions, partitionName) => {\n if (partitions && partitionName) {\n return _.find(partitions, (partition) => getPartitionName(partition) === partitionName);\n }\n});\nexport const selectPartitionInstancesSort = (s) => s.clusterMetadata.partitionInstancesSort;\nexport const selectSortedCurrentPartitionInstances = createSelector(selectPartitionInstances, selectCurrentPartition, selectPartitionInstancesSort, (partitionInstances, partition, sort) => {\n if (partitionInstances && partition) {\n const selectedPartitionInstances = partition.partitionInstances;\n if (sort) {\n const { direction, columnId } = sort;\n const columnInfo = _.find(PARTITION_INSTANCE_COLUMNS, (col) => col.id === columnId);\n if (!columnInfo) {\n throw new Error(\"Expected column to be defined when looking for partition instance sort information.\");\n }\n return _.orderBy(selectedPartitionInstances, [columnInfo.getValue], direction);\n }\n else {\n return selectedPartitionInstances;\n }\n }\n});\n// This object ranks the state of partitions from \"best\" to \"worst\".\nconst RANK_PARTITION_STATUS = buildRankDictionary([\n \"online\",\n \"degraded_recovering\",\n \"degraded_unrecoverable\",\n \"offline_recovering\",\n \"offline\",\n \"unknown\",\n]);\n// The status of a database is computed as the status of its \"worst\" partition.\nexport function deriveDatabaseStatus(databaseName, dbPartitions) {\n if (databaseName === \"information_schema\") {\n return \"online\";\n }\n if (dbPartitions.length === 0) {\n return \"unknown\";\n }\n else {\n const rankedPartitions = _.orderBy(dbPartitions, [(p) => RANK_PARTITION_STATUS[p.status]], \"desc\");\n return rankedPartitions[0].status;\n }\n}\nexport function deriveDatabaseImpacted(databaseName, dbPartitions) {\n if (databaseName === \"information_schema\") {\n return false;\n }\n return _.some(dbPartitions, isPartitionImpacted);\n}\nconst selectRowsThroughput = (state) => state.clusterMetadata.rowsThroughput;\nexport const derivedRowsThroughputPerSecond = createSelector(selectRowsThroughput, (rowsThroughput) => {\n const isPreviousError = selectIsError(rowsThroughput.previous);\n const isCurrentError = selectIsError(rowsThroughput.current);\n const previousRowsThroughput = selectPayload(rowsThroughput.previous);\n const currentRowsThroughput = selectPayload(rowsThroughput.current);\n if (previousRowsThroughput && currentRowsThroughput) {\n const derivedRowsReadPerSecond = calculateRateS(previousRowsThroughput.rowsReturnedByReads, currentRowsThroughput.rowsReturnedByReads, previousRowsThroughput.readTime, currentRowsThroughput.readTime);\n const derivedRowsWritePerSecond = calculateRateS(previousRowsThroughput.rowsAffectedByWrites, currentRowsThroughput.rowsAffectedByWrites, previousRowsThroughput.readTime, currentRowsThroughput.readTime);\n return new LESuccess({\n derivedRowsReadPerSecond,\n derivedRowsWritePerSecond,\n });\n }\n else if (isPreviousError || isCurrentError) {\n return new LEError();\n }\n else {\n return new LELoading();\n }\n});\nexport function selectIsRowsThroughputEnabled(s) {\n return s.clusterMetadata.rowsThroughputEnabled;\n}\n","export const requiredFieldValidator = (value) => value ? undefined : \"Field is required.\";\nexport const maxLengthFieldValidator = (maxLength) => (value) => value.length > maxLength\n ? `The maximum length is ${maxLength} characters.`\n : undefined;\nexport function regexFieldValidator(regex, message) {\n return function (value) {\n return !regex.test(value) ? message : undefined;\n };\n}\n// validating email is controversial; we will err towards accepting inputs. for\n// fun reading, see\n// https://stackoverflow.com/questions/46155/how-to-validate-an-email-address-in-javascript\nexport const optionalEmailValidator = (value) => {\n if (value && value.indexOf(\"@\") === -1) {\n return \"Please enter a valid email address.\";\n }\n};\nexport function combineValidators(...validators) {\n return (val) => {\n for (let i = 0; i < validators.length; i++) {\n const result = validators[i](val);\n if (result) {\n return result;\n }\n }\n // If no validators raised an error, then return undefined because that is what\n // Redux Form expects.\n };\n}\nexport function memoryPercentageValidator(memoryPercentage) {\n return regexFieldValidator(/^\\d+$/, \"memory percentage must be a number\")(memoryPercentage);\n}\n","import { shouldUpdateNode } from 'router5-transition-path';\nimport React, { Component, useContext, useEffect, useState } from 'react';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\n\nvar createContext = React.createContext;\r\nvar routeContext = createContext(null);\r\nvar routerContext = createContext(null);\n\nvar RouterProvider = /** @class */ (function (_super) {\r\n __extends(RouterProvider, _super);\r\n function RouterProvider(props) {\r\n var _this = _super.call(this, props) || this;\r\n _this.mounted = false;\r\n _this.routeState = {\r\n route: props.router.getState(),\r\n previousRoute: null\r\n };\r\n if (typeof window !== 'undefined') {\r\n var listener = function (_a) {\r\n var route = _a.route, previousRoute = _a.previousRoute;\r\n _this.routeState = {\r\n route: route,\r\n previousRoute: previousRoute\r\n };\r\n if (_this.mounted) {\r\n _this.forceUpdate();\r\n }\r\n };\r\n _this.unsubscribe = _this.props.router.subscribe(listener);\r\n }\r\n return _this;\r\n }\r\n RouterProvider.prototype.componentDidMount = function () {\r\n this.mounted = true;\r\n };\r\n RouterProvider.prototype.componentWillUnmount = function () {\r\n if (this.unsubscribe) {\r\n this.unsubscribe();\r\n }\r\n };\r\n RouterProvider.prototype.render = function () {\r\n return (React.createElement(routerContext.Provider, { value: this.props.router },\r\n React.createElement(routeContext.Provider, { value: __assign({ router: this.props.router }, this.routeState) }, this.props.children)));\r\n };\r\n return RouterProvider;\r\n}(React.PureComponent));\n\nvar BaseLink = /** @class */ (function (_super) {\r\n __extends(BaseLink, _super);\r\n function BaseLink(props, context) {\r\n var _this = _super.call(this, props, context) || this;\r\n _this.router = _this.props.router;\r\n _this.isActive = _this.isActive.bind(_this);\r\n _this.clickHandler = _this.clickHandler.bind(_this);\r\n _this.callback = _this.callback.bind(_this);\r\n _this.state = { active: _this.isActive() };\r\n return _this;\r\n }\r\n BaseLink.prototype.buildUrl = function (routeName, routeParams) {\r\n //@ts-ignore\r\n if (this.router.buildUrl) {\r\n //@ts-ignore\r\n return this.router.buildUrl(routeName, routeParams);\r\n }\r\n return this.router.buildPath(routeName, routeParams);\r\n };\r\n BaseLink.prototype.isActive = function () {\r\n var _a = this.props, routeName = _a.routeName, _b = _a.routeParams, routeParams = _b === void 0 ? {} : _b, _c = _a.activeStrict, activeStrict = _c === void 0 ? false : _c, _d = _a.ignoreQueryParams, ignoreQueryParams = _d === void 0 ? true : _d;\r\n return this.router.isActive(routeName, routeParams, activeStrict, ignoreQueryParams);\r\n };\r\n BaseLink.prototype.callback = function (err, state) {\r\n if (!err && this.props.successCallback) {\r\n this.props.successCallback(state);\r\n }\r\n if (err && this.props.errorCallback) {\r\n this.props.errorCallback(err);\r\n }\r\n };\r\n BaseLink.prototype.clickHandler = function (evt) {\r\n var _a = this.props, onClick = _a.onClick, target = _a.target;\r\n if (onClick) {\r\n onClick(evt);\r\n if (evt.defaultPrevented) {\r\n return;\r\n }\r\n }\r\n var comboKey = evt.metaKey || evt.altKey || evt.ctrlKey || evt.shiftKey;\r\n if (evt.button === 0 && !comboKey && target !== '_blank') {\r\n evt.preventDefault();\r\n this.router.navigate(this.props.routeName, this.props.routeParams || {}, this.props.routeOptions || {}, this.callback);\r\n }\r\n };\r\n BaseLink.prototype.render = function () {\r\n /* eslint-disable */\r\n var _a = this.props, routeName = _a.routeName, routeParams = _a.routeParams, routeOptions = _a.routeOptions, className = _a.className, _b = _a.activeClassName, activeClassName = _b === void 0 ? 'active' : _b, activeStrict = _a.activeStrict, ignoreQueryParams = _a.ignoreQueryParams, route = _a.route, previousRoute = _a.previousRoute, router = _a.router, children = _a.children, onClick = _a.onClick, successCallback = _a.successCallback, errorCallback = _a.errorCallback, linkProps = __rest(_a, [\"routeName\", \"routeParams\", \"routeOptions\", \"className\", \"activeClassName\", \"activeStrict\", \"ignoreQueryParams\", \"route\", \"previousRoute\", \"router\", \"children\", \"onClick\", \"successCallback\", \"errorCallback\"]);\r\n /* eslint-enable */\r\n var active = this.isActive();\r\n var href = this.buildUrl(routeName, routeParams);\r\n var linkclassName = (active ? [activeClassName] : [])\r\n .concat(className ? className.split(' ') : [])\r\n .join(' ');\r\n return React.createElement('a', __assign({}, linkProps, { href: href, className: linkclassName, onClick: this.clickHandler }), children);\r\n };\r\n return BaseLink;\r\n}(Component));\n\nfunction withRouter(BaseComponent) {\r\n return function WithRouter(props) {\r\n return (React.createElement(routerContext.Consumer, null, function (router) { return React.createElement(BaseComponent, __assign({}, props, { router: router })); }));\r\n };\r\n}\n\nfunction withRoute(BaseComponent) {\r\n return function withRoute(props) {\r\n return (React.createElement(routeContext.Consumer, null, function (routeContext$$1) { return React.createElement(BaseComponent, __assign({}, props, routeContext$$1)); }));\r\n };\r\n}\n\nvar RouteNodeRenderer = /** @class */ (function (_super) {\r\n __extends(RouteNodeRenderer, _super);\r\n function RouteNodeRenderer(props) {\r\n return _super.call(this, props) || this;\r\n }\r\n RouteNodeRenderer.prototype.shouldComponentUpdate = function (nextProps) {\r\n return shouldUpdateNode(this.props.nodeName)(nextProps.route, nextProps.previousRoute);\r\n };\r\n RouteNodeRenderer.prototype.render = function () {\r\n var _a = this.props, router = _a.router, route = _a.route, previousRoute = _a.previousRoute;\r\n return this.props.children({ router: router, route: route, previousRoute: previousRoute });\r\n };\r\n return RouteNodeRenderer;\r\n}(React.Component));\r\nvar RouteNode = function (props) {\r\n return (React.createElement(routeContext.Consumer, null, function (routeContext$$1) { return React.createElement(RouteNodeRenderer, __assign({}, props, routeContext$$1)); }));\r\n};\n\nfunction routeNode(nodeName) {\r\n return function (BaseComponent) {\r\n function RouteNodeWrapper(props) {\r\n return (React.createElement(RouteNode, { nodeName: nodeName }, function (routeContext) { return (React.createElement(BaseComponent, __assign({}, props, routeContext))); }));\r\n }\r\n return RouteNodeWrapper;\r\n };\r\n}\n\nfunction useRouter() {\r\n return useContext(routerContext);\r\n}\n\nfunction useRoute() {\r\n return useContext(routeContext);\r\n}\n\nfunction useRouter$1(nodeName) {\r\n var router = useContext(routerContext);\r\n var _a = useState(function () { return ({\r\n previousRoute: null,\r\n route: router.getState()\r\n }); }), state = _a[0], setState = _a[1];\r\n useEffect(function () {\r\n return router.subscribe(function (_a) {\r\n var route = _a.route, previousRoute = _a.previousRoute;\r\n var shouldUpdate = shouldUpdateNode(nodeName)(route, previousRoute);\r\n if (shouldUpdate) {\r\n setState({\r\n route: route,\r\n previousRoute: previousRoute\r\n });\r\n }\r\n });\r\n }, []);\r\n return __assign({ router: router }, state);\r\n}\n\nvar ConnectedLink = withRoute(BaseLink);\r\nvar Link = withRouter(BaseLink);\r\nvar Router = routerContext.Consumer;\r\nvar Route = routeContext.Consumer;\n\nexport { RouterProvider, BaseLink, ConnectedLink, Link, withRouter, withRoute, routeNode, Router, Route, RouteNode, useRouter, useRoute, useRouter$1 as useRouteNode, routerContext, routeContext };\n","/** PURE_IMPORTS_START tslib,_OuterSubscriber,_InnerSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function catchError(selector) {\n return function catchErrorOperatorFunction(source) {\n var operator = new CatchOperator(selector);\n var caught = source.lift(operator);\n return (operator.caught = caught);\n };\n}\nvar CatchOperator = /*@__PURE__*/ (function () {\n function CatchOperator(selector) {\n this.selector = selector;\n }\n CatchOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new CatchSubscriber(subscriber, this.selector, this.caught));\n };\n return CatchOperator;\n}());\nvar CatchSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(CatchSubscriber, _super);\n function CatchSubscriber(destination, selector, caught) {\n var _this = _super.call(this, destination) || this;\n _this.selector = selector;\n _this.caught = caught;\n return _this;\n }\n CatchSubscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n var result = void 0;\n try {\n result = this.selector(err, this.caught);\n }\n catch (err2) {\n _super.prototype.error.call(this, err2);\n return;\n }\n this._unsubscribeAndRecycle();\n var innerSubscriber = new InnerSubscriber(this, undefined, undefined);\n this.add(innerSubscriber);\n subscribeToResult(this, result, undefined, undefined, innerSubscriber);\n }\n };\n return CatchSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=catchError.js.map\n","import { getMsgStateError, } from \"@single-js/common/core/sql/connection/utils\";\nimport { multiSelectParallel, } from \"@single-js/common/util/query\";\nimport _ from \"lodash\";\nimport { EMPTY, from, merge, of } from \"rxjs\";\nimport { catchError, map, mergeAll } from \"rxjs/operators\";\nimport SqlString from \"sqlstring\";\nimport { servicesLocator } from \"../../..\";\nimport NumberFormatter from \"../../../util/number-formatter\";\nimport { mapFilter } from \"../../../util/observable\";\nimport { select } from \"../../../util/query\";\nimport { plural } from \"../../../util/string\";\nimport { makeActionCreator } from \"../../../worker/api/helpers\";\nimport { logFocusConnectionError, logFocusError, logInfo, logSilentError, queryExecutorMessageAction, } from \"../actions\";\nimport { messageToExplainLayoutAction } from \"../explain/worker-explain\";\nexport const initConnection = makeActionCreator({\n name: \"initConnection\",\n handle(ctx, config) {\n return ctx.manager\n .initialize(config)\n .then(() => {\n const state = ctx.manager.state();\n const primaryConnectionConfig = state.config;\n if (!primaryConnectionConfig) {\n throw new Error(\"An unexpected error ocurred while grabbing the config from the connection manager\");\n }\n if (config.monitoring) {\n let hostname;\n let port;\n if (config.monitoring.isLocal) {\n hostname = config.hostname;\n port = config.port;\n }\n else {\n hostname = config.monitoring.hostname;\n port = config.monitoring.port;\n }\n let user;\n let password;\n if (config.monitoring.reuseCredentials) {\n user = config.user;\n password = config.password;\n }\n else {\n user = config.monitoring.username;\n password = config.monitoring.password;\n }\n const monitoringConfig = {\n kind: \"CONNECT_CONFIG\",\n user,\n password,\n hostname,\n port,\n websocket: config.websocket,\n websocketSSL: config.websocketSSL,\n kerberosAutoLogin: false,\n };\n return ctx.monitoringManager\n .initialize(monitoringConfig)\n .then(() => {\n const monitoringState = ctx.monitoringManager.state();\n if (!monitoringState.config) {\n throw new Error(\"An unexpected error ocurred while grabbing the config from the monitoring connection manager\");\n }\n // Case 1 -> there _is_ a monitoring cluster\n // and both the connection to the primary\n // cluster and the connection to the monitoring\n // cluster succeed.\n return {\n type: \"CONNECT\",\n error: false,\n payload: {\n primaryConnection: {\n connected: true,\n config: {\n ...primaryConnectionConfig,\n clusterId: config.clusterId,\n },\n },\n monitoringConnection: {\n connected: true,\n config: monitoringState.config,\n },\n },\n };\n })\n .catch((err) => {\n servicesLocator.getLogger().log(\"error\", err);\n // Case 2 -> there _is_ a monitoring cluster and\n // the connection to the primary cluster\n // succeeds and the connection to the monitoring\n // cluster fails. We still return a non-error\n // action since Studio should work, but we send\n // the error so that pages that depend on\n // monitoring can fail.\n return {\n type: \"CONNECT\",\n error: false,\n payload: {\n primaryConnection: {\n connected: true,\n config: {\n ...primaryConnectionConfig,\n clusterId: config.clusterId,\n },\n },\n monitoringConnection: {\n connected: false,\n error: {\n message: err.message,\n },\n },\n },\n };\n });\n }\n else {\n // Case 3 -> there _is_ no monitoring cluster and\n // the connection to the primary cluster\n // succeeds.\n return {\n type: \"CONNECT\",\n error: false,\n payload: {\n primaryConnection: {\n connected: true,\n config: {\n ...primaryConnectionConfig,\n clusterId: config.clusterId,\n },\n },\n monitoringConnection: {\n connected: false,\n },\n },\n };\n }\n })\n .catch((err) => {\n servicesLocator.getLogger().log(\"error\", err);\n const error = getMsgStateError(err);\n // Case 4 -> there may or may not be a monitoring cluster, we\n // don't care, but the connection to the primary cluster\n // failed so we return an error action.\n return {\n type: \"CONNECT\",\n error: true,\n payload: error,\n };\n });\n },\n});\nconst MEMSQL_PING_SAGA_ID = \"memsql-ping\";\nconst MEMSQL_PING_INTERVAL_MS = 5000;\nexport const memsqlPing = makeActionCreator({\n name: \"memsqlPing\",\n handle(ctx) {\n return ctx.sagas.register(MEMSQL_PING_SAGA_ID, (observer) => {\n let running = true;\n let timeoutId;\n let lastError = false;\n const emit = (action) => running && observer.next(action);\n const type = \"MEMSQL_PING\";\n const ping = () => {\n return (ctx.manager\n .getPooledConnection()\n // collapse all cases into a resolved promise with either an\n // Error or undefined for success:\n .then((conn) => new Promise((resolve) => {\n conn.ping((err) => {\n conn.release();\n resolve(err);\n });\n }))\n .catch((err) => err)\n .then((err) => {\n if (err) {\n emit({\n type,\n error: true,\n payload: { message: err.toString() },\n });\n const msg = `SQL ping failed: ${err.toString()}`;\n // We want to focus the Connection tab on a ping\n // error to alert the user that something is\n // wrong, but only on the first error, if the\n // ping last succeeded (otherwise, once the ping\n // starts failing, we'd focus the tab every five\n // seconds and the user wouldn't be able to\n // close the bottom panel or check other tabs.)\n if (lastError) {\n emit(logSilentError(msg));\n }\n else {\n emit(logFocusConnectionError(msg));\n }\n lastError = true;\n }\n else {\n emit({\n type,\n error: false,\n payload: {},\n });\n lastError = false;\n }\n })\n .finally(() => {\n if (running) {\n timeoutId = setTimeout(ping, MEMSQL_PING_INTERVAL_MS);\n }\n }));\n };\n ping();\n return () => {\n running = false;\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n };\n });\n },\n});\nexport const memsqlPingStop = makeActionCreator({\n name: \"memsqlPingStop\",\n handle(ctx) {\n ctx.sagas.stop(MEMSQL_PING_SAGA_ID);\n return of({\n type: \"MEMSQL_PING_STOP\",\n error: false,\n payload: {},\n });\n },\n});\nconst QUERY_LOGGERS = {\n errorsOnly: (msg) => {\n if (msg.kind === \"queryMessage\") {\n if (msg.queryMsg.kind === \"queryEnd\") {\n const { status } = msg.queryMsg;\n if (status.state === \"error\") {\n return logSilentError(status.message);\n }\n }\n }\n },\n verbose: (msg) => {\n if (msg.kind === \"queryRun\") {\n return logInfo(`Running: ${SqlString.format(msg.query.text, msg.query.values)}`);\n }\n else if (msg.kind === \"queryMessage\") {\n if (msg.queryMsg.kind === \"queryEnd\") {\n const { status, metrics } = msg.queryMsg;\n if (status.state === \"error\") {\n return logSilentError(status.message);\n }\n else {\n if (!metrics.endTimeUnix) {\n throw new Error(\"Expected end time to be set\");\n }\n const duration = NumberFormatter.formatDuration(metrics.endTimeUnix - metrics.startTimeUnix);\n const count = metrics.affectedRows;\n if (count === undefined) {\n return logInfo(`Query OK (${duration})`);\n }\n else {\n return logInfo(`Query OK, ${count} ${plural(\"row\", count)} affected (${duration})`);\n }\n }\n }\n }\n },\n};\n/*\n Instantiates a query executor over a static connection to MemSQL.\n\n Calling the initQueryExecutor for the same query-executor will ignore the properties initialQueryRowLimit and\n initialDatabase. After creations those values are kept by the query-executor itself\n\n */\nexport const initQueryExecutor = makeActionCreator({\n name: \"initQueryExecutor\",\n handle(ctx, { id, connectionConfig, initialQueryRowLimit, loggerType, database, }) {\n const executor = ctx.manager.getQueryExecutor(id);\n if (executor) {\n // Since we are reusing the existing query executor, we don't need to return anything here. The\n // existing query executor is already emiting the events to the correct place\n ctx.manager.createQueryExecutor(id, {\n initialQueryRowLimit,\n database,\n connectionConfig,\n });\n return EMPTY;\n }\n const init = {\n type: \"INIT_QUERY_EXECUTOR\",\n error: false,\n payload: undefined,\n meta: { id },\n };\n return merge(of(init), from(ctx.manager\n .createQueryExecutor(id, {\n initialQueryRowLimit,\n database,\n connectionConfig,\n })\n .then((executor) => {\n const $emitter = executor.messageObservable();\n const $msgs = $emitter.pipe(map((msg) => queryExecutorMessageAction({ msg, id })));\n const $layoutMsgs = $emitter.pipe(mapFilter(messageToExplainLayoutAction));\n const $logs = $emitter.pipe(mapFilter(QUERY_LOGGERS[loggerType]));\n const $connectedMsg = of(logInfo(`Initialized the ${id} query executor.`));\n const $merged = merge($msgs, $layoutMsgs, $logs, $connectedMsg);\n return $merged.pipe(catchError((error) => {\n servicesLocator.getLogger().logError(error);\n return of(logFocusError(`Error in SQL connection: ${error.message}`));\n }));\n }, (error) => {\n const act = {\n type: \"INIT_QUERY_EXECUTOR\",\n error: true,\n payload: error,\n meta: { id },\n };\n return of(act);\n })).pipe(mergeAll()));\n },\n});\nexport const closeQueryExecutor = makeActionCreator({\n name: \"closeQueryExecutor\",\n handle(ctx, { id }) {\n const executor = ctx.manager.getQueryExecutor(id);\n if (executor) {\n executor.close();\n }\n return Promise.resolve({\n type: \"QUERY_EXECUTOR_CLOSE\",\n error: false,\n payload: {},\n });\n },\n});\nexport const cancelQuery = makeActionCreator({\n name: \"cancelQuery\",\n handle(ctx, { id, connectionConfig, }) {\n const executor = ctx.manager.getQueryExecutor(id);\n if (!executor) {\n throw new Error(`Must initialize query executor ${id} before usage`);\n }\n const $canceling = of({\n type: \"QUERY_EXECUTOR_CANCEL\",\n error: false,\n payload: { id },\n });\n const getCancelQueryError = (message) => {\n return logFocusError(`An error occurred while canceling the query: ${message}`);\n };\n const $errorLogs = from(ctx.manager\n .getPooledConnection(connectionConfig)\n .then((conn) => {\n return executor\n .cancelUsing(conn)\n .then(() => {\n conn.release();\n })\n .catch((err) => {\n servicesLocator.getLogger().logError(err);\n conn.release();\n return getCancelQueryError(err.message);\n });\n })\n .catch((err) => {\n return getCancelQueryError(err.message);\n })\n // Filter out \"undefined\" values from when the Promise above does *not* return.\n ).pipe(mapFilter((v) => (v ? v : undefined)));\n // We immediately return QUERY_EXECUTOR_CANCEL to the UI\n // so that the \"Canceling\" state is immediately activated, even\n // if the actual \"KILL QUERY\" command takes a little bit to\n // execute (or fails).\n return merge($canceling, $errorLogs);\n },\n});\nexport const staticQueryGroup = makeActionCreator({\n name: \"staticQueryGroup\",\n handle(ctx, { id, queryGroup, }) {\n const executor = ctx.manager.getQueryExecutor(id);\n if (!executor) {\n throw new Error(`Must initialize query group executor ${id} before usage`);\n }\n // We need to defer this function because we want to make sure\n // that the event \"QUERY_GROUP_START\" arrives before the first event\n // emitted by runQueryGroup (event \"queryRun\"), in order to\n // prepare the query editor context before running the group\n // of queries.\n _.defer(() => {\n executor.runQueryGroup(queryGroup);\n });\n return Promise.resolve({\n type: \"QUERY_GROUP_START\",\n error: false,\n payload: { id, queryGroup },\n });\n },\n});\nexport const stopQueryGroup = makeActionCreator({\n name: \"stopQueryGroup\",\n handle(ctx, { id }) {\n const executor = ctx.manager.getQueryExecutor(id);\n if (!executor) {\n throw new Error(`Must initialize query group executor ${id} before usage`);\n }\n executor.stopQueryGroup();\n return Promise.resolve({\n type: \"QUERY_GROUP_STOP\",\n error: false,\n payload: { id },\n });\n },\n});\nexport const continueQueryGroup = makeActionCreator({\n name: \"continueQueryGroup\",\n handle(ctx, { id, skip }) {\n const executor = ctx.manager.getQueryExecutor(id);\n if (!executor) {\n throw new Error(`Must initialize query group executor ${id} before usage`);\n }\n executor.continueQueryGroup(skip);\n return Promise.resolve({\n type: \"QUERY_GROUP_CONTINUE\",\n error: false,\n payload: { id, skip },\n });\n },\n});\n// This worker API method is typed as `unknown` which forces the caller\n// to specify the return type of the rows (`R`) in the promise\nexport const runNoCtxSingleQuery = makeActionCreator({\n name: \"runNoCtxSingleQuery\",\n handle(ctx, { query, context, connectionConfig, options, }) {\n return ctx.manager\n .getPooledConnection(connectionConfig)\n .then((conn) => {\n let contextInitPromise = Promise.resolve(undefined);\n if (context && context.database) {\n contextInitPromise = select(conn, `USE ?`, [\n context.database,\n ])\n .then(() => undefined)\n .catch((err) => {\n return getMsgStateError(err);\n });\n }\n return contextInitPromise.then((contextInitError) => {\n if (contextInitError) {\n let clusterID;\n if (connectionConfig) {\n clusterID = connectionConfig.clusterId;\n }\n return {\n type: \"RUN_NO_CTX_SINGLE_QUERY\",\n error: true,\n payload: contextInitError,\n meta: {\n clusterID,\n },\n };\n }\n else {\n return select(conn, query.sql, query.params, {\n ...options,\n withFields: true,\n })\n .then(({ rows, fields, }) => {\n let clusterID;\n if (connectionConfig) {\n clusterID = connectionConfig.clusterId;\n }\n return {\n type: \"RUN_NO_CTX_SINGLE_QUERY\",\n error: false,\n payload: {\n rows,\n fields,\n },\n meta: {\n clusterID,\n },\n };\n })\n .catch((err) => {\n servicesLocator\n .getLogger()\n .log(\"error\", err);\n const error = getMsgStateError(err);\n let clusterID;\n if (connectionConfig) {\n clusterID = connectionConfig.clusterId;\n }\n return {\n type: \"RUN_NO_CTX_SINGLE_QUERY\",\n error: true,\n payload: error,\n meta: {\n clusterID,\n },\n };\n })\n .finally(() => conn.release());\n }\n });\n })\n .catch((err) => {\n const error = getMsgStateError(err);\n let clusterID;\n if (connectionConfig) {\n clusterID = connectionConfig.clusterId;\n }\n return {\n type: \"RUN_NO_CTX_SINGLE_QUERY\",\n error: true,\n payload: error,\n meta: {\n clusterID,\n },\n };\n });\n },\n});\nexport const runNoCtxParallelQueries = makeActionCreator({\n name: \"runNoCtxParallelQueries\",\n handle(ctx, { queries, connectionConfig, }) {\n return multiSelectParallel({\n getConnection: () => ctx.manager.getPooledConnection(connectionConfig),\n queries,\n })\n .then((rows) => {\n return {\n type: \"RUN_NO_CTX_PARALLEL_QUERIES\",\n error: false,\n payload: {\n rows,\n },\n };\n })\n .catch((err) => {\n servicesLocator.getLogger().log(\"error\", err);\n return {\n type: \"RUN_NO_CTX_PARALLEL_QUERIES\",\n error: true,\n payload: err.message,\n };\n });\n },\n});\n","export function omit(object, keys) {\n const result = {};\n Object.keys(object).forEach((key) => {\n if (keys.includes(key))\n return;\n result[key] = object[key];\n });\n return result;\n}\nexport function pick(object, keys) {\n const result = {};\n keys.forEach((key) => {\n if (key in object) {\n result[key] = object[key];\n }\n });\n return result;\n}\nexport function split(object, keys) {\n const picked = {};\n const omitted = {};\n Object.keys(object).forEach((key) => {\n if (keys.includes(key)) {\n picked[key] = object[key];\n }\n else {\n omitted[key] = object[key];\n }\n });\n return [picked, omitted];\n}\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar _enable_super_gross_mode_that_will_cause_bad_things = false;\nexport var config = {\n Promise: undefined,\n set useDeprecatedSynchronousErrorHandling(value) {\n if (value) {\n var error = /*@__PURE__*/ new Error();\n /*@__PURE__*/ console.warn('DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \\n' + error.stack);\n }\n else if (_enable_super_gross_mode_that_will_cause_bad_things) {\n /*@__PURE__*/ console.log('RxJS: Back to a better error behavior. Thank you. <3');\n }\n _enable_super_gross_mode_that_will_cause_bad_things = value;\n },\n get useDeprecatedSynchronousErrorHandling() {\n return _enable_super_gross_mode_that_will_cause_bad_things;\n },\n};\n//# sourceMappingURL=config.js.map\n","// Manually extracted from mysql-5.7.9/include/mysql.h.pp\n// some more info here: http://dev.mysql.com/doc/refman/5.5/en/c-api-prepared-statement-type-codes.html\nexports.DECIMAL = 0x00; // aka DECIMAL (http://dev.mysql.com/doc/refman/5.0/en/precision-math-decimal-changes.html)\nexports.TINY = 0x01; // aka TINYINT, 1 byte\nexports.SHORT = 0x02; // aka SMALLINT, 2 bytes\nexports.LONG = 0x03; // aka INT, 4 bytes\nexports.FLOAT = 0x04; // aka FLOAT, 4-8 bytes\nexports.DOUBLE = 0x05; // aka DOUBLE, 8 bytes\nexports.NULL = 0x06; // NULL (used for prepared statements, I think)\nexports.TIMESTAMP = 0x07; // aka TIMESTAMP\nexports.LONGLONG = 0x08; // aka BIGINT, 8 bytes\nexports.INT24 = 0x09; // aka MEDIUMINT, 3 bytes\nexports.DATE = 0x0a; // aka DATE\nexports.TIME = 0x0b; // aka TIME\nexports.DATETIME = 0x0c; // aka DATETIME\nexports.YEAR = 0x0d; // aka YEAR, 1 byte (don't ask)\nexports.NEWDATE = 0x0e; // aka ?\nexports.VARCHAR = 0x0f; // aka VARCHAR (?)\nexports.BIT = 0x10; // aka BIT, 1-8 byte\nexports.TIMESTAMP2 = 0x11; // aka TIMESTAMP with fractional seconds\nexports.DATETIME2 = 0x12; // aka DATETIME with fractional seconds\nexports.TIME2 = 0x13; // aka TIME with fractional seconds\nexports.JSON = 0xf5; // aka JSON\nexports.NEWDECIMAL = 0xf6; // aka DECIMAL\nexports.ENUM = 0xf7; // aka ENUM\nexports.SET = 0xf8; // aka SET\nexports.TINY_BLOB = 0xf9; // aka TINYBLOB, TINYTEXT\nexports.MEDIUM_BLOB = 0xfa; // aka MEDIUMBLOB, MEDIUMTEXT\nexports.LONG_BLOB = 0xfb; // aka LONGBLOG, LONGTEXT\nexports.BLOB = 0xfc; // aka BLOB, TEXT\nexports.VAR_STRING = 0xfd; // aka VARCHAR, VARBINARY\nexports.STRING = 0xfe; // aka CHAR, BINARY\nexports.GEOMETRY = 0xff; // aka GEOMETRY\n","import BigNumber from \"../vendor/bignumber.js/bignumber\";\nexport const plural = (s, n, overridePlural) => {\n if (typeof n === \"number\") {\n n = new BigNumber(n);\n }\n if (n.eq(1)) {\n return s;\n }\n else {\n return overridePlural === undefined ? s + \"s\" : overridePlural;\n }\n};\nexport function removeDashes(str) {\n return str.replace(/-/g, \"\");\n}\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nmodule.exports = _inheritsLoose;","import classnames from \"classnames\";\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { Overlay } from \"../overlay/overlay\";\nimport \"./tip.scss\";\nexport class Tip extends React.Component {\n constructor(props) {\n super(props);\n this.getBounds = () => {\n const $el = ReactDOM.findDOMNode(this);\n if ($el && $el instanceof HTMLElement) {\n return $el.getBoundingClientRect();\n }\n };\n this.handleMove = (evt) => {\n const bounds = this.getBounds();\n if (bounds) {\n if (evt.clientX > bounds.left && evt.clientX < bounds.right) {\n if (evt.clientY > bounds.top && evt.clientY < bounds.bottom) {\n this.handleEnter();\n }\n }\n }\n };\n this.handleEnter = () => {\n this.setState({ visible: true });\n };\n this.handleLeave = () => {\n this.setState({ visible: false });\n };\n this.state = { visible: false };\n }\n render() {\n const { className, children, visible: forceVisible, disabled, tooltip, direction, spacing, minWidth, overlayClassName, ...otherProps } = this.props;\n const { visible } = this.state;\n const eventHandlers = {\n onMouseMove: this.handleMove,\n onMouseEnter: this.handleEnter,\n onMouseOut: this.handleLeave,\n };\n let overlayWrapperProps;\n if (\"wrapperProps\" in otherProps) {\n const { wrapperProps, ...restProps } = otherProps;\n overlayWrapperProps = {\n ...restProps,\n ...wrapperProps,\n };\n }\n else {\n overlayWrapperProps = otherProps;\n }\n return (React.createElement(Overlay, { className: classnames(\"single-common-components-tip\", className), overlayClassName: classnames(\"single-common-components-tip-overlay\", overlayClassName), visible: !disabled && (visible || forceVisible) && Boolean(tooltip), direction: direction, minWidth: minWidth, spacing: spacing, overlay: React.createElement(\"div\", { className: \"tooltip\" }, tooltip), layer: \"tooltip\", wrapperProps: {\n ...overlayWrapperProps,\n ...eventHandlers,\n } }, children));\n }\n}\nTip.defaultProps = {\n direction: \"s\",\n spacing: 10,\n};\n","import classnames from \"classnames\";\nimport { selectCurrentRouteClusterId, selectRoute, } from \"data/selectors/routes\";\nimport * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { Link, withRouter } from \"react-router5\";\nimport * as analytics from \"util/segment\";\nimport \"./internal-link.scss\";\nclass InternalLink extends React.Component {\n constructor() {\n super(...arguments);\n this.successCallback = () => {\n const { route, routeInfo: { name }, category, } = this.props;\n if (!route) {\n return;\n }\n if (category) {\n analytics.trackInternalLinkClick(category, { url: name });\n }\n };\n }\n render() {\n // We hold on to `dispatch` and `category` so as not to pass it to `...rest`.\n const { routeInfo: { name, params }, className, clusterLink, currentClusterId, children, underlineOnHover, \n // eslint-disable-next-line unused-imports/no-unused-vars\n dispatch, \n // eslint-disable-next-line unused-imports/no-unused-vars\n category, ...rest } = this.props;\n let routeParams = params;\n if (clusterLink && params) {\n routeParams = {\n ...params,\n clusterId: currentClusterId,\n };\n }\n const classes = classnames(\"components-internal-link\", className, {\n \"no-underline\": !underlineOnHover,\n });\n return (React.createElement(Link, { routeName: name, routeParams: routeParams, className: classes, successCallback: this.successCallback, ...rest }, children));\n }\n}\nInternalLink.defaultProps = {\n underlineOnHover: true,\n};\nexport default connect((s) => {\n return {\n currentClusterId: selectCurrentRouteClusterId(s),\n route: selectRoute(s),\n };\n})(withRouter(InternalLink));\n","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n","import { selectError, selectLastUpdate, selectLoadingOrInitial, selectPayload, } from \"@single-js/common/util/loading-state-machine\";\nimport { parseNodeAddress, } from \"data/models\";\nimport { selectPartitionInstances } from \"data/selectors/cluster-metadata\";\nimport { selectRoute } from \"data/selectors/routes\";\nimport _ from \"lodash\";\nimport { createSelector } from \"reselect\";\nimport { buildRankDictionary } from \"util/rank-dictionary\";\nimport { ALL_NODES_PAGE_COLUMNS, NODE_PARTITION_INSTANCE_COLUMNS, } from \"view/topology/columns-info\";\nexport const selectTopologyLoading = (s) => selectLoadingOrInitial(s.topology.topology);\nexport const selectTopologyLastUpdate = (s) => selectLastUpdate(s.topology.topology);\nexport const selectTopologyError = (s) => selectError(s.topology.topology);\nexport const selectDerivedNodesLoading = (s) => selectTopologyLoading(s) ||\n selectLoadingOrInitial(s.clusterMetadata.partitions);\nexport const selectDerivedNodesLastUpdate = (s) => _.max([\n selectTopologyLastUpdate(s),\n selectLastUpdate(s.clusterMetadata.partitions),\n]);\nexport const selectDerivedNodesError = (s) => selectTopologyError(s) || selectError(s.clusterMetadata.partitions);\nexport const selectNodes = (s) => {\n const payload = selectPayload(s.topology.topology);\n if (payload) {\n return payload.nodes;\n }\n};\nexport const selectNodesSort = (s) => s.topology.nodesSort;\nexport const selectNodePartitionInstancesSort = (s) => s.topology.nodePartitionInstancesSort;\nexport const selectNumAggregators = createSelector(selectNodes, (nodes) => {\n if (nodes) {\n return _.filter(nodes, (node) => node.role === \"AGGREGATOR\" ||\n node.role === \"MASTER_AGGREGATOR\").length;\n }\n});\nexport const selectNumLeaves = createSelector(selectNodes, (nodes) => {\n if (nodes) {\n return _.filter(nodes, (node) => node.role === \"LEAF\").length;\n }\n});\nexport const selectMasterAggregator = createSelector(selectNodes, (nodes) => {\n if (nodes) {\n return _.find(nodes, (node) => node.role === \"MASTER_AGGREGATOR\");\n }\n});\nexport const selectNumUniqueHosts = createSelector(selectNodes, (nodes) => {\n if (nodes) {\n return _.uniqBy(nodes, (node) => node.host).length;\n }\n});\nexport const deriveNodes = createSelector(selectNodes, selectPartitionInstances, (nodes, allPartitionInstances) => {\n if (nodes && allPartitionInstances) {\n return _.map(nodes, (node) => {\n const partitionInstances = _.filter(allPartitionInstances, (pi) => pi.host === node.host && pi.port.eq(node.port));\n return {\n ...node,\n partitionInstances,\n partitionInstanceStatus: getNodePartitionInstanceStatus(partitionInstances),\n };\n });\n }\n});\nexport const selectSortedDerivedNodes = createSelector(deriveNodes, selectNodesSort, (nodes, sort) => {\n if (nodes) {\n if (sort) {\n const { direction, columnId } = sort;\n const columnInfo = _.find(ALL_NODES_PAGE_COLUMNS, {\n id: columnId,\n });\n if (!columnInfo) {\n throw new Error(\"Expected column to be defined.\");\n }\n return _.orderBy(nodes, [columnInfo.getValue], direction);\n }\n else {\n return nodes;\n }\n }\n});\nexport const selectCurrentNodeAddress = (s) => selectRoute(s).params.nodeAddress;\nexport const selectCurrentNode = createSelector(deriveNodes, selectCurrentNodeAddress, (nodes, nodeAddress) => {\n if (nodes && nodeAddress) {\n const nodeHostPort = parseNodeAddress(nodeAddress);\n if (nodeHostPort) {\n return _.find(nodes, (node) => node.host === nodeHostPort.host &&\n node.port.eq(nodeHostPort.port));\n }\n }\n});\nexport const selectCurrentNodePartitionInstances = createSelector(selectCurrentNode, (node) => {\n if (node) {\n return node.partitionInstances;\n }\n});\nexport const selectSortedNodePartitionInstances = createSelector(selectCurrentNodePartitionInstances, selectNodePartitionInstancesSort, (partitionInstances, sort) => {\n if (partitionInstances) {\n if (sort) {\n const { direction, columnId } = sort;\n const columnInfo = _.find(NODE_PARTITION_INSTANCE_COLUMNS, (col) => col.id === columnId);\n if (!columnInfo) {\n throw new Error(`Expected column ${columnId} to be defined on Node Page.`);\n }\n return _.orderBy(partitionInstances, [columnInfo.getValue], direction);\n }\n else {\n return partitionInstances;\n }\n }\n});\nconst RANK_NODE_PI_STATUS = buildRankDictionary([\n \"PARTITIONS_ONLINE\",\n \"PARTITIONS_OFFLINE_RECOVERING\",\n \"PARTITIONS_OFFLINE\",\n]);\n// This function maps a partition instance to its equivalent node partition\n// instance status (which is either PARTITIONS_ONLINE,\n// PARTITIONS_OFFLINE_RECOVERING or PARTITIONS_OFFLINE). It takes into account\n// the PI's state, role and whether it is a DR replica or not. This function can\n// return undefined when it can't figure out the PI status for a given PI.\nexport function mapPIToNodePIStatus(partitionInstance) {\n switch (partitionInstance.state) {\n case \"online\":\n switch (partitionInstance.drReplica) {\n case true:\n return \"PARTITIONS_OFFLINE_RECOVERING\";\n case false:\n switch (partitionInstance.role) {\n case \"master\":\n return \"PARTITIONS_ONLINE\";\n case \"slave\":\n return \"PARTITIONS_OFFLINE_RECOVERING\";\n }\n }\n break;\n case \"replicating\":\n switch (partitionInstance.drReplica) {\n case true:\n return \"PARTITIONS_ONLINE\";\n case false:\n switch (partitionInstance.role) {\n case \"master\":\n return \"PARTITIONS_OFFLINE_RECOVERING\";\n case \"slave\":\n return \"PARTITIONS_ONLINE\";\n }\n }\n break;\n case \"provisioning\":\n return \"PARTITIONS_OFFLINE\";\n case \"transition\":\n case \"pending\":\n case \"recovering\":\n return \"PARTITIONS_OFFLINE_RECOVERING\";\n case \"unrecoverable\":\n case \"offline\":\n return \"PARTITIONS_OFFLINE\";\n }\n}\n// This function iterates through all the partition instances in a node and\n// calculates their equivalent PI statuses. It then figures out which one has\n// the worst PI status and returns state. There are 2 special cases:\n// * If the node has no attached partition instances, this function returns\n// PARTITIONS_MISSING.\n// * If no valid PI statuses are found, this returns PARTITIONS_UNKNOWN.\n// https://docs.google.com/spreadsheets/d/1v8Csw_7bbRx5EZ3XygrYvwJt-QxZ9D1RMJNfpbBUtx0/edit?pli=1#gid=0&range=B54\nexport function getNodePartitionInstanceStatus(partitionInstances) {\n const filteredPartitionInstances = _.filter(partitionInstances, (pi) => pi.role === \"master\" || pi.role === \"slave\");\n if (filteredPartitionInstances.length > 0) {\n const piStatuses = filteredPartitionInstances\n .map(mapPIToNodePIStatus)\n .filter((piStatus) => Boolean(piStatus));\n if (piStatuses.length === 0) {\n return \"PARTITIONS_UNKNOWN\";\n }\n return _.orderBy(piStatuses, [(piStatus) => RANK_NODE_PI_STATUS[piStatus]], \"desc\")[0];\n }\n return \"PARTITIONS_ONLINE\";\n}\n","import { initConnection, } from \"@single-js/common/core/sql/actions\";\nimport { logError } from \"util/logging\";\nimport { makeActionCreator } from \"worker/api/helpers\";\nimport { backend } from \"worker/net/backend\";\nexport const getClusters = makeActionCreator({\n name: \"getClusters\",\n handle() {\n return backend\n .getClusters()\n .then((data) => ({\n type: \"CLUSTERS\",\n error: false,\n payload: {\n loading: false,\n data,\n },\n }))\n .catch((err) => {\n logError(err);\n return {\n type: \"CLUSTERS\",\n error: true,\n payload: err.message,\n };\n });\n },\n});\nexport const addCluster = makeActionCreator({\n name: \"addCluster\",\n handle(ctx, clusterObj) {\n return ctx.manager\n .testConnect({\n kind: \"TEST_CONNECT_CONFIG\",\n hostname: clusterObj.hostname,\n port: clusterObj.port,\n user: clusterObj.username,\n password: clusterObj.password,\n websocket: clusterObj.websocket,\n websocketSSL: clusterObj.websocketSSL,\n kerberosAutoLogin: clusterObj.kerberosAutoLogin,\n monitoring: clusterObj.monitoring,\n })\n .then(() => backend.addCluster(clusterObj))\n .then((cluster) => initConnection.handler.handle(ctx, {\n kind: \"CONNECT_CONFIG\",\n clusterId: cluster.id,\n user: clusterObj.username,\n password: clusterObj.password,\n hostname: clusterObj.hostname,\n port: clusterObj.port,\n websocket: clusterObj.websocket,\n websocketSSL: clusterObj.websocketSSL,\n kerberosAutoLogin: clusterObj.kerberosAutoLogin,\n monitoring: clusterObj.monitoring,\n }))\n .catch((err) => {\n logError(err);\n let payload;\n if (\"code\" in err) {\n payload = {\n code: err.code,\n message: err.toString(),\n };\n }\n else {\n payload = {\n message: err.toString(),\n };\n }\n return {\n type: \"CLUSTERS_ADD_ERROR\",\n error: true,\n payload,\n };\n });\n },\n});\nexport const deleteCluster = makeActionCreator({\n name: \"deleteCluster\",\n handle(ctx, clusterId) {\n return backend\n .deleteCluster(clusterId)\n .then(() => ({\n type: \"CLUSTERS_DELETE\",\n error: false,\n payload: clusterId,\n }))\n .catch((err) => {\n logError(err);\n return {\n type: \"CLUSTERS_DELETE\",\n error: true,\n payload: err.message,\n };\n });\n },\n});\n","var nameToIDs = function (name) {\r\n return name\r\n .split('.')\r\n .reduce(function (ids, name) {\r\n return ids.concat(ids.length ? ids[ids.length - 1] + '.' + name : name);\r\n }, []);\r\n};\r\nvar exists = function (val) { return val !== undefined && val !== null; };\r\nvar hasMetaParams = function (state) { return state && state.meta && state.meta.params; };\r\nvar extractSegmentParams = function (name, state) {\r\n if (!hasMetaParams(state) || !exists(state.meta.params[name]))\r\n return {};\r\n return Object.keys(state.meta.params[name]).reduce(function (params, p) {\r\n params[p] = state.params[p];\r\n return params;\r\n }, {});\r\n};\r\nfunction transitionPath(toState, fromState) {\r\n var toStateOptions = (toState.meta && toState.meta && toState.meta.options) || {};\r\n var fromStateIds = fromState ? nameToIDs(fromState.name) : [];\r\n var toStateIds = nameToIDs(toState.name);\r\n var maxI = Math.min(fromStateIds.length, toStateIds.length);\r\n function pointOfDifference() {\r\n var i;\r\n var _loop_1 = function () {\r\n var left = fromStateIds[i];\r\n var right = toStateIds[i];\r\n if (left !== right)\r\n return { value: i };\r\n var leftParams = extractSegmentParams(left, toState);\r\n var rightParams = extractSegmentParams(right, fromState);\r\n if (Object.keys(leftParams).length !==\r\n Object.keys(rightParams).length)\r\n return { value: i };\r\n if (Object.keys(leftParams).length === 0)\r\n return \"continue\";\r\n var different = Object.keys(leftParams).some(function (p) { return rightParams[p] !== leftParams[p]; });\r\n if (different) {\r\n return { value: i };\r\n }\r\n };\r\n for (i = 0; i < maxI; i += 1) {\r\n var state_1 = _loop_1();\r\n if (typeof state_1 === \"object\")\r\n return state_1.value;\r\n }\r\n return i;\r\n }\r\n var i;\r\n if (!fromState || toStateOptions.reload) {\r\n i = 0;\r\n }\r\n else if (!hasMetaParams(fromState) && !hasMetaParams(toState)) {\r\n i = 0;\r\n }\r\n else {\r\n i = pointOfDifference();\r\n }\r\n var toDeactivate = fromStateIds.slice(i).reverse();\r\n var toActivate = toStateIds.slice(i);\r\n var intersection = fromState && i > 0 ? fromStateIds[i - 1] : '';\r\n return {\r\n intersection: intersection,\r\n toDeactivate: toDeactivate,\r\n toActivate: toActivate\r\n };\r\n}\n\nfunction shouldUpdateNode(nodeName) {\r\n return function (toState, fromSate) {\r\n var _a = transitionPath(toState, fromSate), intersection = _a.intersection, toActivate = _a.toActivate, toDeactivateReversed = _a.toDeactivate;\r\n var toDeactivate = toDeactivateReversed.slice().reverse();\r\n if (toState.meta.options && toState.meta.options.reload) {\r\n return true;\r\n }\r\n if (nodeName === intersection) {\r\n return true;\r\n }\r\n if (toActivate.indexOf(nodeName) === -1) {\r\n return false;\r\n }\r\n var matching = true;\r\n for (var i = 0; i < toActivate.length; i += 1) {\r\n var activatedSegment = toActivate[i];\r\n var sameLevelDeactivatedSegment = toDeactivate[i];\r\n matching = activatedSegment === sameLevelDeactivatedSegment;\r\n if (matching && activatedSegment === nodeName) {\r\n return true;\r\n }\r\n if (!matching) {\r\n return false;\r\n }\r\n }\r\n return false;\r\n };\r\n}\n\nexport default transitionPath;\nexport { shouldUpdateNode, nameToIDs };\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar UnsubscriptionErrorImpl = /*@__PURE__*/ (function () {\n function UnsubscriptionErrorImpl(errors) {\n Error.call(this);\n this.message = errors ?\n errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ') : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n return this;\n }\n UnsubscriptionErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);\n return UnsubscriptionErrorImpl;\n})();\nexport var UnsubscriptionError = UnsubscriptionErrorImpl;\n//# sourceMappingURL=UnsubscriptionError.js.map\n","/** PURE_IMPORTS_START _util_isArray,_util_isObject,_util_isFunction,_util_UnsubscriptionError PURE_IMPORTS_END */\nimport { isArray } from './util/isArray';\nimport { isObject } from './util/isObject';\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nvar Subscription = /*@__PURE__*/ (function () {\n function Subscription(unsubscribe) {\n this.closed = false;\n this._parentOrParents = null;\n this._subscriptions = null;\n if (unsubscribe) {\n this._unsubscribe = unsubscribe;\n }\n }\n Subscription.prototype.unsubscribe = function () {\n var errors;\n if (this.closed) {\n return;\n }\n var _a = this, _parentOrParents = _a._parentOrParents, _unsubscribe = _a._unsubscribe, _subscriptions = _a._subscriptions;\n this.closed = true;\n this._parentOrParents = null;\n this._subscriptions = null;\n if (_parentOrParents instanceof Subscription) {\n _parentOrParents.remove(this);\n }\n else if (_parentOrParents !== null) {\n for (var index = 0; index < _parentOrParents.length; ++index) {\n var parent_1 = _parentOrParents[index];\n parent_1.remove(this);\n }\n }\n if (isFunction(_unsubscribe)) {\n try {\n _unsubscribe.call(this);\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? flattenUnsubscriptionErrors(e.errors) : [e];\n }\n }\n if (isArray(_subscriptions)) {\n var index = -1;\n var len = _subscriptions.length;\n while (++index < len) {\n var sub = _subscriptions[index];\n if (isObject(sub)) {\n try {\n sub.unsubscribe();\n }\n catch (e) {\n errors = errors || [];\n if (e instanceof UnsubscriptionError) {\n errors = errors.concat(flattenUnsubscriptionErrors(e.errors));\n }\n else {\n errors.push(e);\n }\n }\n }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n };\n Subscription.prototype.add = function (teardown) {\n var subscription = teardown;\n if (!teardown) {\n return Subscription.EMPTY;\n }\n switch (typeof teardown) {\n case 'function':\n subscription = new Subscription(teardown);\n case 'object':\n if (subscription === this || subscription.closed || typeof subscription.unsubscribe !== 'function') {\n return subscription;\n }\n else if (this.closed) {\n subscription.unsubscribe();\n return subscription;\n }\n else if (!(subscription instanceof Subscription)) {\n var tmp = subscription;\n subscription = new Subscription();\n subscription._subscriptions = [tmp];\n }\n break;\n default: {\n throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');\n }\n }\n var _parentOrParents = subscription._parentOrParents;\n if (_parentOrParents === null) {\n subscription._parentOrParents = this;\n }\n else if (_parentOrParents instanceof Subscription) {\n if (_parentOrParents === this) {\n return subscription;\n }\n subscription._parentOrParents = [_parentOrParents, this];\n }\n else if (_parentOrParents.indexOf(this) === -1) {\n _parentOrParents.push(this);\n }\n else {\n return subscription;\n }\n var subscriptions = this._subscriptions;\n if (subscriptions === null) {\n this._subscriptions = [subscription];\n }\n else {\n subscriptions.push(subscription);\n }\n return subscription;\n };\n Subscription.prototype.remove = function (subscription) {\n var subscriptions = this._subscriptions;\n if (subscriptions) {\n var subscriptionIndex = subscriptions.indexOf(subscription);\n if (subscriptionIndex !== -1) {\n subscriptions.splice(subscriptionIndex, 1);\n }\n }\n };\n Subscription.EMPTY = (function (empty) {\n empty.closed = true;\n return empty;\n }(new Subscription()));\n return Subscription;\n}());\nexport { Subscription };\nfunction flattenUnsubscriptionErrors(errors) {\n return errors.reduce(function (errs, err) { return errs.concat((err instanceof UnsubscriptionError) ? err.errors : err); }, []);\n}\n//# sourceMappingURL=Subscription.js.map\n","import _ from \"lodash\";\nimport { PER_QUERY_ROW_LIMIT } from \"../core/sql/models\";\nimport { rootNodeId } from \"../features/help/content/toc-nodes\";\nexport const SINGLE_STORAGE_CONFIG = \"__single_js__\";\nconst DEFAULT_EDITOR_CONFIG = {\n buffer: \"\",\n selectedDatabase: undefined,\n rowLimit: PER_QUERY_ROW_LIMIT,\n editorPosition: { firstVisibleLine: 1, cursorInfo: { index: 0 } },\n};\nexport const getDefaultSingleStorageConfig = (hasError) => {\n let isHelpMenuOpen;\n if (hasError) {\n isHelpMenuOpen = false;\n }\n return {\n // Wraps editors in a Proxy object to make sure a EditorConfig is\n // always defined for a given editorId that may not be in editors\n editors: {},\n helpMenu: {\n menu: \"tutorials\",\n isOpen: isHelpMenuOpen,\n },\n tutorial: {\n location: [rootNodeId],\n step: undefined,\n fields: {},\n progress: {},\n },\n };\n};\nexport const readSingleStorageConfig = () => {\n try {\n if (typeof window !== \"undefined\") {\n const configString = window.localStorage.getItem(SINGLE_STORAGE_CONFIG);\n let data = getDefaultSingleStorageConfig(false);\n if (configString) {\n const config = JSON.parse(configString);\n // Build the StudioConfig object (we do a basic sanity check that\n // each key looks like what we expect)\n if (config) {\n if (_.isObject(config.editors)) {\n data = {\n ...data,\n editors: config.editors,\n };\n }\n if (_.isObject(config.helpMenu)) {\n data = {\n ...data,\n helpMenu: {\n ...data.helpMenu,\n ...config.helpMenu,\n },\n };\n }\n if (_.isObject(config.tutorial)) {\n data = {\n ...data,\n tutorial: {\n ...data.tutorial,\n ...config.tutorial,\n },\n };\n }\n }\n }\n return data;\n }\n else {\n return getDefaultSingleStorageConfig(false);\n }\n }\n catch (error) {\n // could be caused by JSON failing to parse, or user configuration to\n // deny localStorage access\n console.error(error);\n return getDefaultSingleStorageConfig(true);\n }\n};\n// Similar to the setState of React. Receives a function that returns a\n// new StudioConfig partial to update the local storage config\nexport const setSingleStorageConfig = (updater) => {\n const oldConfig = readSingleStorageConfig();\n const updatedConfig = {\n ...oldConfig,\n ...updater(oldConfig),\n };\n try {\n window.localStorage.setItem(SINGLE_STORAGE_CONFIG, JSON.stringify(updatedConfig));\n }\n catch (error) {\n // could be caused by user configuration to deny localStorage access\n console.error(error);\n // if the update of localstorage fails, let's return the current (old) configuration\n return oldConfig;\n }\n return updatedConfig;\n};\nexport function getEditorFromConfig(config, connectionId, defaultConnectedClusterId) {\n // In studio we index the editor local storage by the logged in cluster ID, so different clusters don't share the\n // same local storage. However in Portal we support having multiple clusters in the same editor, therefore we\n // want to keep the editor localstorage for the browser session no matter which user/cluster is selected .\n // defaultConnectedClusterId is the one initialized by initConnection which is only used in Studio. Eventually\n // we can move that logic to be only in Studio.\n let editorId = connectionId;\n if (defaultConnectedClusterId) {\n editorId += defaultConnectedClusterId;\n }\n const editor = _.cloneDeep(config.editors[editorId]);\n if (editor) {\n return { editorId, editor };\n }\n else {\n return { editorId, editor: _.cloneDeep(DEFAULT_EDITOR_CONFIG) };\n }\n}\n","export function genTableId(obj) {\n return `${obj.databaseName}.${obj.tableName}`;\n}\nexport function genFunctionId(obj) {\n return `${obj.databaseName}.${obj.functionName}`;\n}\n","exports.AuthSwitchRequestPacket = require(\"./AuthSwitchRequestPacket\");\nexports.AuthSwitchResponsePacket = require(\"./AuthSwitchResponsePacket\");\nexports.ClientAuthenticationPacket = require(\"./ClientAuthenticationPacket\");\nexports.ComChangeUserPacket = require(\"./ComChangeUserPacket\");\nexports.ComPingPacket = require(\"./ComPingPacket\");\nexports.ComQueryPacket = require(\"./ComQueryPacket\");\nexports.ComQuitPacket = require(\"./ComQuitPacket\");\nexports.ComStatisticsPacket = require(\"./ComStatisticsPacket\");\nexports.EmptyPacket = require(\"./EmptyPacket\");\nexports.EofPacket = require(\"./EofPacket\");\nexports.ErrorPacket = require(\"./ErrorPacket\");\nexports.Field = require(\"./Field\");\nexports.FieldPacket = require(\"./FieldPacket\");\nexports.HandshakeInitializationPacket = require(\"./HandshakeInitializationPacket\");\nexports.LocalDataFilePacket = require(\"./LocalDataFilePacket\");\nexports.OkPacket = require(\"./OkPacket\");\nexports.OldPasswordPacket = require(\"./OldPasswordPacket\");\nexports.ResultSetHeaderPacket = require(\"./ResultSetHeaderPacket\");\nexports.RowDataPacket = require(\"./RowDataPacket\");\nexports.SSLRequestPacket = require(\"./SSLRequestPacket\");\nexports.StatisticsPacket = require(\"./StatisticsPacket\");\nexports.UseOldPasswordPacket = require(\"./UseOldPasswordPacket\");\n","var originalFunctionToString;\n/** Patch toString calls to return proper name for wrapped functions */\nvar FunctionToString = /** @class */ (function () {\n function FunctionToString() {\n /**\n * @inheritDoc\n */\n this.name = FunctionToString.id;\n }\n /**\n * @inheritDoc\n */\n FunctionToString.prototype.setupOnce = function () {\n originalFunctionToString = Function.prototype.toString;\n Function.prototype.toString = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var context = this.__sentry__ ? this.__sentry_original__ : this;\n // tslint:disable-next-line:no-unsafe-any\n return originalFunctionToString.apply(context, args);\n };\n };\n /**\n * @inheritDoc\n */\n FunctionToString.id = 'FunctionToString';\n return FunctionToString;\n}());\nexport { FunctionToString };\n//# sourceMappingURL=functiontostring.js.map","import { isRegExp } from './is';\n/**\n * Truncates given string to the maximum characters count\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nexport function truncate(str, max) {\n if (max === void 0) { max = 0; }\n // tslint:disable-next-line:strict-type-predicates\n if (typeof str !== 'string' || max === 0) {\n return str;\n }\n return str.length <= max ? str : str.substr(0, max) + \"...\";\n}\n/**\n * This is basically just `trim_line` from\n * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nexport function snipLine(line, colno) {\n var newLine = line;\n var ll = newLine.length;\n if (ll <= 150) {\n return newLine;\n }\n if (colno > ll) {\n colno = ll; // tslint:disable-line:no-parameter-reassignment\n }\n var start = Math.max(colno - 60, 0);\n if (start < 5) {\n start = 0;\n }\n var end = Math.min(start + 140, ll);\n if (end > ll - 5) {\n end = ll;\n }\n if (end === ll) {\n start = Math.max(end - 140, 0);\n }\n newLine = newLine.slice(start, end);\n if (start > 0) {\n newLine = \"'{snip} \" + newLine;\n }\n if (end < ll) {\n newLine += ' {snip}';\n }\n return newLine;\n}\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns Joined values\n */\nexport function safeJoin(input, delimiter) {\n if (!Array.isArray(input)) {\n return '';\n }\n var output = [];\n // tslint:disable-next-line:prefer-for-of\n for (var i = 0; i < input.length; i++) {\n var value = input[i];\n try {\n output.push(String(value));\n }\n catch (e) {\n output.push('[value cannot be serialized]');\n }\n }\n return output.join(delimiter);\n}\n/** Merges provided array of keys into */\nexport function keysToEventMessage(keys, maxLength) {\n if (maxLength === void 0) { maxLength = 40; }\n if (!keys.length) {\n return '[object has no keys]';\n }\n if (keys[0].length >= maxLength) {\n return truncate(keys[0], maxLength);\n }\n for (var includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n var serialized = keys.slice(0, includedKeys).join(', ');\n if (serialized.length > maxLength) {\n continue;\n }\n if (includedKeys === keys.length) {\n return serialized;\n }\n return truncate(serialized, maxLength);\n }\n return '';\n}\n/**\n * Checks if the value matches a regex or includes the string\n * @param value The string value to be checked against\n * @param pattern Either a regex or a string that must be contained in value\n */\nexport function isMatchingPattern(value, pattern) {\n if (isRegExp(pattern)) {\n return pattern.test(value);\n }\n if (typeof pattern === 'string') {\n return value.includes(pattern);\n }\n return false;\n}\n//# sourceMappingURL=string.js.map","import * as tslib_1 from \"tslib\";\nimport { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub';\nimport { getEventDescription, isMatchingPattern, logger } from '@sentry/utils';\n// \"Script error.\" is hard coded into browsers for errors that it can't read.\n// this is the result of a script being pulled in from an external domain and CORS.\nvar DEFAULT_IGNORE_ERRORS = [/^Script error\\.?$/, /^Javascript error: Script error\\.? on line 0$/];\n/** Inbound filters configurable by the user */\nvar InboundFilters = /** @class */ (function () {\n function InboundFilters(_options) {\n if (_options === void 0) { _options = {}; }\n this._options = _options;\n /**\n * @inheritDoc\n */\n this.name = InboundFilters.id;\n }\n /**\n * @inheritDoc\n */\n InboundFilters.prototype.setupOnce = function () {\n addGlobalEventProcessor(function (event) {\n var hub = getCurrentHub();\n if (!hub) {\n return event;\n }\n var self = hub.getIntegration(InboundFilters);\n if (self) {\n var client = hub.getClient();\n var clientOptions = client ? client.getOptions() : {};\n var options = self._mergeOptions(clientOptions);\n if (self._shouldDropEvent(event, options)) {\n return null;\n }\n }\n return event;\n });\n };\n /** JSDoc */\n InboundFilters.prototype._shouldDropEvent = function (event, options) {\n if (this._isSentryError(event, options)) {\n logger.warn(\"Event dropped due to being internal Sentry Error.\\nEvent: \" + getEventDescription(event));\n return true;\n }\n if (this._isIgnoredError(event, options)) {\n logger.warn(\"Event dropped due to being matched by `ignoreErrors` option.\\nEvent: \" + getEventDescription(event));\n return true;\n }\n if (this._isBlacklistedUrl(event, options)) {\n logger.warn(\"Event dropped due to being matched by `blacklistUrls` option.\\nEvent: \" + getEventDescription(event) + \".\\nUrl: \" + this._getEventFilterUrl(event));\n return true;\n }\n if (!this._isWhitelistedUrl(event, options)) {\n logger.warn(\"Event dropped due to not being matched by `whitelistUrls` option.\\nEvent: \" + getEventDescription(event) + \".\\nUrl: \" + this._getEventFilterUrl(event));\n return true;\n }\n return false;\n };\n /** JSDoc */\n InboundFilters.prototype._isSentryError = function (event, options) {\n if (options === void 0) { options = {}; }\n if (!options.ignoreInternal) {\n return false;\n }\n try {\n // tslint:disable-next-line:no-unsafe-any\n return event.exception.values[0].type === 'SentryError';\n }\n catch (_oO) {\n return false;\n }\n };\n /** JSDoc */\n InboundFilters.prototype._isIgnoredError = function (event, options) {\n if (options === void 0) { options = {}; }\n if (!options.ignoreErrors || !options.ignoreErrors.length) {\n return false;\n }\n return this._getPossibleEventMessages(event).some(function (message) {\n // Not sure why TypeScript complains here...\n return options.ignoreErrors.some(function (pattern) { return isMatchingPattern(message, pattern); });\n });\n };\n /** JSDoc */\n InboundFilters.prototype._isBlacklistedUrl = function (event, options) {\n if (options === void 0) { options = {}; }\n // TODO: Use Glob instead?\n if (!options.blacklistUrls || !options.blacklistUrls.length) {\n return false;\n }\n var url = this._getEventFilterUrl(event);\n return !url ? false : options.blacklistUrls.some(function (pattern) { return isMatchingPattern(url, pattern); });\n };\n /** JSDoc */\n InboundFilters.prototype._isWhitelistedUrl = function (event, options) {\n if (options === void 0) { options = {}; }\n // TODO: Use Glob instead?\n if (!options.whitelistUrls || !options.whitelistUrls.length) {\n return true;\n }\n var url = this._getEventFilterUrl(event);\n return !url ? true : options.whitelistUrls.some(function (pattern) { return isMatchingPattern(url, pattern); });\n };\n /** JSDoc */\n InboundFilters.prototype._mergeOptions = function (clientOptions) {\n if (clientOptions === void 0) { clientOptions = {}; }\n return {\n blacklistUrls: tslib_1.__spread((this._options.blacklistUrls || []), (clientOptions.blacklistUrls || [])),\n ignoreErrors: tslib_1.__spread((this._options.ignoreErrors || []), (clientOptions.ignoreErrors || []), DEFAULT_IGNORE_ERRORS),\n ignoreInternal: typeof this._options.ignoreInternal !== 'undefined' ? this._options.ignoreInternal : true,\n whitelistUrls: tslib_1.__spread((this._options.whitelistUrls || []), (clientOptions.whitelistUrls || [])),\n };\n };\n /** JSDoc */\n InboundFilters.prototype._getPossibleEventMessages = function (event) {\n if (event.message) {\n return [event.message];\n }\n if (event.exception) {\n try {\n // tslint:disable-next-line:no-unsafe-any\n var _a = event.exception.values[0], type = _a.type, value = _a.value;\n return [\"\" + value, type + \": \" + value];\n }\n catch (oO) {\n logger.error(\"Cannot extract message for event \" + getEventDescription(event));\n return [];\n }\n }\n return [];\n };\n /** JSDoc */\n InboundFilters.prototype._getEventFilterUrl = function (event) {\n try {\n if (event.stacktrace) {\n // tslint:disable:no-unsafe-any\n var frames_1 = event.stacktrace.frames;\n return frames_1[frames_1.length - 1].filename;\n }\n if (event.exception) {\n // tslint:disable:no-unsafe-any\n var frames_2 = event.exception.values[0].stacktrace.frames;\n return frames_2[frames_2.length - 1].filename;\n }\n return null;\n }\n catch (oO) {\n logger.error(\"Cannot extract url for event \" + getEventDescription(event));\n return null;\n }\n };\n /**\n * @inheritDoc\n */\n InboundFilters.id = 'InboundFilters';\n return InboundFilters;\n}());\nexport { InboundFilters };\n//# sourceMappingURL=inboundfilters.js.map","export var setPrototypeOf = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array ? setProtoOf : mixinProperties); // tslint:disable-line:no-unbound-method\n/**\n * setPrototypeOf polyfill using __proto__\n */\nfunction setProtoOf(obj, proto) {\n // @ts-ignore\n obj.__proto__ = proto;\n return obj;\n}\n/**\n * setPrototypeOf polyfill using mixin\n */\nfunction mixinProperties(obj, proto) {\n for (var prop in proto) {\n if (!obj.hasOwnProperty(prop)) {\n // @ts-ignore\n obj[prop] = proto[prop];\n }\n }\n return obj;\n}\n//# sourceMappingURL=polyfill.js.map","import * as tslib_1 from \"tslib\";\nimport { setPrototypeOf } from './polyfill';\n/** An error emitted by Sentry SDKs and related utilities. */\nvar SentryError = /** @class */ (function (_super) {\n tslib_1.__extends(SentryError, _super);\n function SentryError(message) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, message) || this;\n _this.message = message;\n // tslint:disable:no-unsafe-any\n _this.name = _newTarget.prototype.constructor.name;\n setPrototypeOf(_this, _newTarget.prototype);\n return _this;\n }\n return SentryError;\n}(Error));\nexport { SentryError };\n//# sourceMappingURL=error.js.map","import * as tslib_1 from \"tslib\";\nimport { SentryError } from '@sentry/utils';\n/** Regular expression used to parse a Dsn. */\nvar DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+))?@)([\\w\\.-]+)(?::(\\d+))?\\/(.+)/;\n/** Error message */\nvar ERROR_MESSAGE = 'Invalid Dsn';\n/** The Sentry Dsn, identifying a Sentry instance and project. */\nvar Dsn = /** @class */ (function () {\n /** Creates a new Dsn component */\n function Dsn(from) {\n if (typeof from === 'string') {\n this._fromString(from);\n }\n else {\n this._fromComponents(from);\n }\n this._validate();\n }\n /**\n * Renders the string representation of this Dsn.\n *\n * By default, this will render the public representation without the password\n * component. To get the deprecated private _representation, set `withPassword`\n * to true.\n *\n * @param withPassword When set to true, the password will be included.\n */\n Dsn.prototype.toString = function (withPassword) {\n if (withPassword === void 0) { withPassword = false; }\n // tslint:disable-next-line:no-this-assignment\n var _a = this, host = _a.host, path = _a.path, pass = _a.pass, port = _a.port, projectId = _a.projectId, protocol = _a.protocol, user = _a.user;\n return (protocol + \"://\" + user + (withPassword && pass ? \":\" + pass : '') +\n (\"@\" + host + (port ? \":\" + port : '') + \"/\" + (path ? path + \"/\" : path) + projectId));\n };\n /** Parses a string into this Dsn. */\n Dsn.prototype._fromString = function (str) {\n var match = DSN_REGEX.exec(str);\n if (!match) {\n throw new SentryError(ERROR_MESSAGE);\n }\n var _a = tslib_1.__read(match.slice(1), 6), protocol = _a[0], user = _a[1], _b = _a[2], pass = _b === void 0 ? '' : _b, host = _a[3], _c = _a[4], port = _c === void 0 ? '' : _c, lastPath = _a[5];\n var path = '';\n var projectId = lastPath;\n var split = projectId.split('/');\n if (split.length > 1) {\n path = split.slice(0, -1).join('/');\n projectId = split.pop();\n }\n Object.assign(this, { host: host, pass: pass, path: path, projectId: projectId, port: port, protocol: protocol, user: user });\n };\n /** Maps Dsn components into this instance. */\n Dsn.prototype._fromComponents = function (components) {\n this.protocol = components.protocol;\n this.user = components.user;\n this.pass = components.pass || '';\n this.host = components.host;\n this.port = components.port || '';\n this.path = components.path || '';\n this.projectId = components.projectId;\n };\n /** Validates this Dsn and throws on error. */\n Dsn.prototype._validate = function () {\n var _this = this;\n ['protocol', 'user', 'host', 'projectId'].forEach(function (component) {\n if (!_this[component]) {\n throw new SentryError(ERROR_MESSAGE);\n }\n });\n if (this.protocol !== 'http' && this.protocol !== 'https') {\n throw new SentryError(ERROR_MESSAGE);\n }\n if (this.port && Number.isNaN(parseInt(this.port, 10))) {\n throw new SentryError(ERROR_MESSAGE);\n }\n };\n return Dsn;\n}());\nexport { Dsn };\n//# sourceMappingURL=dsn.js.map","import { urlEncode } from '@sentry/utils';\nimport { Dsn } from './dsn';\nvar SENTRY_API_VERSION = '7';\n/** Helper class to provide urls to different Sentry endpoints. */\nvar API = /** @class */ (function () {\n /** Create a new instance of API */\n function API(dsn) {\n this.dsn = dsn;\n this._dsnObject = new Dsn(dsn);\n }\n /** Returns the Dsn object. */\n API.prototype.getDsn = function () {\n return this._dsnObject;\n };\n /** Returns a string with auth headers in the url to the store endpoint. */\n API.prototype.getStoreEndpoint = function () {\n return \"\" + this._getBaseUrl() + this.getStoreEndpointPath();\n };\n /** Returns the store endpoint with auth added in url encoded. */\n API.prototype.getStoreEndpointWithUrlEncodedAuth = function () {\n var dsn = this._dsnObject;\n var auth = {\n sentry_key: dsn.user,\n sentry_version: SENTRY_API_VERSION,\n };\n // Auth is intentionally sent as part of query string (NOT as custom HTTP header)\n // to avoid preflight CORS requests\n return this.getStoreEndpoint() + \"?\" + urlEncode(auth);\n };\n /** Returns the base path of the url including the port. */\n API.prototype._getBaseUrl = function () {\n var dsn = this._dsnObject;\n var protocol = dsn.protocol ? dsn.protocol + \":\" : '';\n var port = dsn.port ? \":\" + dsn.port : '';\n return protocol + \"//\" + dsn.host + port;\n };\n /** Returns only the path component for the store endpoint. */\n API.prototype.getStoreEndpointPath = function () {\n var dsn = this._dsnObject;\n return (dsn.path ? \"/\" + dsn.path : '') + \"/api/\" + dsn.projectId + \"/store/\";\n };\n /** Returns an object that can be used in request headers. */\n API.prototype.getRequestHeaders = function (clientName, clientVersion) {\n var dsn = this._dsnObject;\n var header = [\"Sentry sentry_version=\" + SENTRY_API_VERSION];\n header.push(\"sentry_timestamp=\" + new Date().getTime());\n header.push(\"sentry_client=\" + clientName + \"/\" + clientVersion);\n header.push(\"sentry_key=\" + dsn.user);\n if (dsn.pass) {\n header.push(\"sentry_secret=\" + dsn.pass);\n }\n return {\n 'Content-Type': 'application/json',\n 'X-Sentry-Auth': header.join(', '),\n };\n };\n /** Returns the url to the report dialog endpoint. */\n API.prototype.getReportDialogEndpoint = function (dialogOptions) {\n if (dialogOptions === void 0) { dialogOptions = {}; }\n var dsn = this._dsnObject;\n var endpoint = \"\" + this._getBaseUrl() + (dsn.path ? \"/\" + dsn.path : '') + \"/api/embed/error-page/\";\n var encodedOptions = [];\n encodedOptions.push(\"dsn=\" + dsn.toString());\n for (var key in dialogOptions) {\n if (key === 'user') {\n if (!dialogOptions.user) {\n continue;\n }\n if (dialogOptions.user.name) {\n encodedOptions.push(\"name=\" + encodeURIComponent(dialogOptions.user.name));\n }\n if (dialogOptions.user.email) {\n encodedOptions.push(\"email=\" + encodeURIComponent(dialogOptions.user.email));\n }\n }\n else {\n encodedOptions.push(encodeURIComponent(key) + \"=\" + encodeURIComponent(dialogOptions[key]));\n }\n }\n if (encodedOptions.length) {\n return endpoint + \"?\" + encodedOptions.join('&');\n }\n return endpoint;\n };\n return API;\n}());\nexport { API };\n//# sourceMappingURL=api.js.map","import * as tslib_1 from \"tslib\";\nimport { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub';\nimport { logger } from '@sentry/utils';\nexport var installedIntegrations = [];\n/** Gets integration to install */\nexport function getIntegrationsToSetup(options) {\n var defaultIntegrations = (options.defaultIntegrations && tslib_1.__spread(options.defaultIntegrations)) || [];\n var userIntegrations = options.integrations;\n var integrations = [];\n if (Array.isArray(userIntegrations)) {\n var userIntegrationsNames_1 = userIntegrations.map(function (i) { return i.name; });\n var pickedIntegrationsNames_1 = [];\n // Leave only unique default integrations, that were not overridden with provided user integrations\n defaultIntegrations.forEach(function (defaultIntegration) {\n if (userIntegrationsNames_1.indexOf(defaultIntegration.name) === -1 &&\n pickedIntegrationsNames_1.indexOf(defaultIntegration.name) === -1) {\n integrations.push(defaultIntegration);\n pickedIntegrationsNames_1.push(defaultIntegration.name);\n }\n });\n // Don't add same user integration twice\n userIntegrations.forEach(function (userIntegration) {\n if (pickedIntegrationsNames_1.indexOf(userIntegration.name) === -1) {\n integrations.push(userIntegration);\n pickedIntegrationsNames_1.push(userIntegration.name);\n }\n });\n }\n else if (typeof userIntegrations === 'function') {\n integrations = userIntegrations(defaultIntegrations);\n integrations = Array.isArray(integrations) ? integrations : [integrations];\n }\n else {\n return tslib_1.__spread(defaultIntegrations);\n }\n return integrations;\n}\n/** Setup given integration */\nexport function setupIntegration(integration) {\n if (installedIntegrations.indexOf(integration.name) !== -1) {\n return;\n }\n integration.setupOnce(addGlobalEventProcessor, getCurrentHub);\n installedIntegrations.push(integration.name);\n logger.log(\"Integration installed: \" + integration.name);\n}\n/**\n * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default\n * integrations are added unless they were already provided before.\n * @param integrations array of integration instances\n * @param withDefault should enable default integrations\n */\nexport function setupIntegrations(options) {\n var integrations = {};\n getIntegrationsToSetup(options).forEach(function (integration) {\n integrations[integration.name] = integration;\n setupIntegration(integration);\n });\n return integrations;\n}\n//# sourceMappingURL=integration.js.map","import * as tslib_1 from \"tslib\";\nimport { isPrimitive, isThenable, logger, SyncPromise, truncate, uuid4 } from '@sentry/utils';\nimport { Dsn } from './dsn';\nimport { setupIntegrations } from './integration';\n/**\n * Base implementation for all JavaScript SDK clients.\n *\n * Call the constructor with the corresponding backend constructor and options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}. Also, the Backend instance is available via\n * {@link Client.getBackend}.\n *\n * If a Dsn is specified in the options, it will be parsed and stored. Use\n * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is\n * invalid, the constructor will throw a {@link SentryException}. Note that\n * without a valid Dsn, the SDK will not send any events to Sentry.\n *\n * Before sending an event via the backend, it is passed through\n * {@link BaseClient.prepareEvent} to add SDK information and scope data\n * (breadcrumbs and context). To add more custom information, override this\n * method and extend the resulting prepared event.\n *\n * To issue automatically created events (e.g. via instrumentation), use\n * {@link Client.captureEvent}. It will prepare the event and pass it through\n * the callback lifecycle. To issue auto-breadcrumbs, use\n * {@link Client.addBreadcrumb}.\n *\n * @example\n * class NodeClient extends BaseClient {\n * public constructor(options: NodeOptions) {\n * super(NodeBackend, options);\n * }\n *\n * // ...\n * }\n */\nvar BaseClient = /** @class */ (function () {\n /**\n * Initializes this client instance.\n *\n * @param backendClass A constructor function to create the backend.\n * @param options Options for the client.\n */\n function BaseClient(backendClass, options) {\n /** Array of used integrations. */\n this._integrations = {};\n /** Is the client still processing a call? */\n this._processing = false;\n this._backend = new backendClass(options);\n this._options = options;\n if (options.dsn) {\n this._dsn = new Dsn(options.dsn);\n }\n if (this._isEnabled()) {\n this._integrations = setupIntegrations(this._options);\n }\n }\n /**\n * @inheritDoc\n */\n BaseClient.prototype.captureException = function (exception, hint, scope) {\n var _this = this;\n var eventId = hint && hint.event_id;\n this._processing = true;\n this._getBackend()\n .eventFromException(exception, hint)\n .then(function (event) { return _this._processEvent(event, hint, scope); })\n .then(function (finalEvent) {\n // We need to check for finalEvent in case beforeSend returned null\n eventId = finalEvent && finalEvent.event_id;\n _this._processing = false;\n })\n .catch(function (reason) {\n logger.error(reason);\n _this._processing = false;\n });\n return eventId;\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.captureMessage = function (message, level, hint, scope) {\n var _this = this;\n var eventId = hint && hint.event_id;\n this._processing = true;\n var promisedEvent = isPrimitive(message)\n ? this._getBackend().eventFromMessage(\"\" + message, level, hint)\n : this._getBackend().eventFromException(message, hint);\n promisedEvent\n .then(function (event) { return _this._processEvent(event, hint, scope); })\n .then(function (finalEvent) {\n // We need to check for finalEvent in case beforeSend returned null\n eventId = finalEvent && finalEvent.event_id;\n _this._processing = false;\n })\n .catch(function (reason) {\n logger.error(reason);\n _this._processing = false;\n });\n return eventId;\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.captureEvent = function (event, hint, scope) {\n var _this = this;\n var eventId = hint && hint.event_id;\n this._processing = true;\n this._processEvent(event, hint, scope)\n .then(function (finalEvent) {\n // We need to check for finalEvent in case beforeSend returned null\n eventId = finalEvent && finalEvent.event_id;\n _this._processing = false;\n })\n .catch(function (reason) {\n logger.error(reason);\n _this._processing = false;\n });\n return eventId;\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.getDsn = function () {\n return this._dsn;\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.getOptions = function () {\n return this._options;\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.flush = function (timeout) {\n var _this = this;\n return this._isClientProcessing(timeout).then(function (status) {\n clearInterval(status.interval);\n return _this._getBackend()\n .getTransport()\n .close(timeout)\n .then(function (transportFlushed) { return status.ready && transportFlushed; });\n });\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.close = function (timeout) {\n var _this = this;\n return this.flush(timeout).then(function (result) {\n _this.getOptions().enabled = false;\n return result;\n });\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.getIntegrations = function () {\n return this._integrations || {};\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.getIntegration = function (integration) {\n try {\n return this._integrations[integration.id] || null;\n }\n catch (_oO) {\n logger.warn(\"Cannot retrieve integration \" + integration.id + \" from the current Client\");\n return null;\n }\n };\n /** Waits for the client to be done with processing. */\n BaseClient.prototype._isClientProcessing = function (timeout) {\n var _this = this;\n return new Promise(function (resolve) {\n var ticked = 0;\n var tick = 1;\n var interval = 0;\n clearInterval(interval);\n interval = setInterval(function () {\n if (!_this._processing) {\n resolve({\n interval: interval,\n ready: true,\n });\n }\n else {\n ticked += tick;\n if (timeout && ticked >= timeout) {\n resolve({\n interval: interval,\n ready: false,\n });\n }\n }\n }, tick);\n });\n };\n /** Returns the current backend. */\n BaseClient.prototype._getBackend = function () {\n return this._backend;\n };\n /** Determines whether this SDK is enabled and a valid Dsn is present. */\n BaseClient.prototype._isEnabled = function () {\n return this.getOptions().enabled !== false && this._dsn !== undefined;\n };\n /**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * @param event The original event.\n * @param hint May contain additional informartion about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n */\n BaseClient.prototype._prepareEvent = function (event, scope, hint) {\n var _a = this.getOptions(), environment = _a.environment, release = _a.release, dist = _a.dist, _b = _a.maxValueLength, maxValueLength = _b === void 0 ? 250 : _b;\n var prepared = tslib_1.__assign({}, event);\n if (prepared.environment === undefined && environment !== undefined) {\n prepared.environment = environment;\n }\n if (prepared.release === undefined && release !== undefined) {\n prepared.release = release;\n }\n if (prepared.dist === undefined && dist !== undefined) {\n prepared.dist = dist;\n }\n if (prepared.message) {\n prepared.message = truncate(prepared.message, maxValueLength);\n }\n var exception = prepared.exception && prepared.exception.values && prepared.exception.values[0];\n if (exception && exception.value) {\n exception.value = truncate(exception.value, maxValueLength);\n }\n var request = prepared.request;\n if (request && request.url) {\n request.url = truncate(request.url, maxValueLength);\n }\n if (prepared.event_id === undefined) {\n prepared.event_id = uuid4();\n }\n this._addIntegrations(prepared.sdk);\n // We prepare the result here with a resolved Event.\n var result = SyncPromise.resolve(prepared);\n // This should be the last thing called, since we want that\n // {@link Hub.addEventProcessor} gets the finished prepared event.\n if (scope) {\n // In case we have a hub we reassign it.\n result = scope.applyToEvent(prepared, hint);\n }\n return result;\n };\n /**\n * This function adds all used integrations to the SDK info in the event.\n * @param sdkInfo The sdkInfo of the event that will be filled with all integrations.\n */\n BaseClient.prototype._addIntegrations = function (sdkInfo) {\n var integrationsArray = Object.keys(this._integrations);\n if (sdkInfo && integrationsArray.length > 0) {\n sdkInfo.integrations = integrationsArray;\n }\n };\n /**\n * Processes an event (either error or message) and sends it to Sentry.\n *\n * This also adds breadcrumbs and context information to the event. However,\n * platform specific meta data (such as the User's IP address) must be added\n * by the SDK implementor.\n *\n *\n * @param event The event to send to Sentry.\n * @param hint May contain additional informartion about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n */\n BaseClient.prototype._processEvent = function (event, hint, scope) {\n var _this = this;\n var _a = this.getOptions(), beforeSend = _a.beforeSend, sampleRate = _a.sampleRate;\n if (!this._isEnabled()) {\n return SyncPromise.reject('SDK not enabled, will not send event.');\n }\n // 1.0 === 100% events are sent\n // 0.0 === 0% events are sent\n if (typeof sampleRate === 'number' && Math.random() > sampleRate) {\n return SyncPromise.reject('This event has been sampled, will not send event.');\n }\n return new SyncPromise(function (resolve, reject) {\n _this._prepareEvent(event, scope, hint).then(function (prepared) {\n if (prepared === null) {\n reject('An event processor returned null, will not send event.');\n return;\n }\n var finalEvent = prepared;\n try {\n var isInternalException = hint && hint.data && hint.data.__sentry__ === true;\n if (isInternalException || !beforeSend) {\n _this._getBackend().sendEvent(finalEvent);\n resolve(finalEvent);\n return;\n }\n var beforeSendResult = beforeSend(prepared, hint);\n if (typeof beforeSendResult === 'undefined') {\n logger.error('`beforeSend` method has to return `null` or a valid event.');\n }\n else if (isThenable(beforeSendResult)) {\n _this._handleAsyncBeforeSend(beforeSendResult, resolve, reject);\n }\n else {\n finalEvent = beforeSendResult;\n if (finalEvent === null) {\n logger.log('`beforeSend` returned `null`, will not send event.');\n resolve(null);\n return;\n }\n // From here on we are really async\n _this._getBackend().sendEvent(finalEvent);\n resolve(finalEvent);\n }\n }\n catch (exception) {\n _this.captureException(exception, {\n data: {\n __sentry__: true,\n },\n originalException: exception,\n });\n reject('`beforeSend` throw an error, will not send event.');\n }\n });\n });\n };\n /**\n * Resolves before send Promise and calls resolve/reject on parent SyncPromise.\n */\n BaseClient.prototype._handleAsyncBeforeSend = function (beforeSend, resolve, reject) {\n var _this = this;\n beforeSend\n .then(function (processedEvent) {\n if (processedEvent === null) {\n reject('`beforeSend` returned `null`, will not send event.');\n return;\n }\n // From here on we are really async\n _this._getBackend().sendEvent(processedEvent);\n resolve(processedEvent);\n })\n .catch(function (e) {\n reject(\"beforeSend rejected with \" + e);\n });\n };\n return BaseClient;\n}());\nexport { BaseClient };\n//# sourceMappingURL=baseclient.js.map","/** The status of an event. */\nexport var Status;\n(function (Status) {\n /** The status could not be determined. */\n Status[\"Unknown\"] = \"unknown\";\n /** The event was skipped due to configuration or callbacks. */\n Status[\"Skipped\"] = \"skipped\";\n /** The event was sent to Sentry successfully. */\n Status[\"Success\"] = \"success\";\n /** The client is currently rate limited and will try again later. */\n Status[\"RateLimit\"] = \"rate_limit\";\n /** The event could not be processed. */\n Status[\"Invalid\"] = \"invalid\";\n /** A server-side error ocurred during submission. */\n Status[\"Failed\"] = \"failed\";\n})(Status || (Status = {}));\n// tslint:disable:completed-docs\n// tslint:disable:no-unnecessary-qualifier no-namespace\n(function (Status) {\n /**\n * Converts a HTTP status code into a {@link Status}.\n *\n * @param code The HTTP response status code.\n * @returns The send status or {@link Status.Unknown}.\n */\n function fromHttpCode(code) {\n if (code >= 200 && code < 300) {\n return Status.Success;\n }\n if (code === 429) {\n return Status.RateLimit;\n }\n if (code >= 400 && code < 500) {\n return Status.Invalid;\n }\n if (code >= 500) {\n return Status.Failed;\n }\n return Status.Unknown;\n }\n Status.fromHttpCode = fromHttpCode;\n})(Status || (Status = {}));\n//# sourceMappingURL=status.js.map","import { Status } from '@sentry/types';\n/** Noop transport */\nvar NoopTransport = /** @class */ (function () {\n function NoopTransport() {\n }\n /**\n * @inheritDoc\n */\n NoopTransport.prototype.sendEvent = function (_) {\n return Promise.resolve({\n reason: \"NoopTransport: Event has been skipped because no Dsn is configured.\",\n status: Status.Skipped,\n });\n };\n /**\n * @inheritDoc\n */\n NoopTransport.prototype.close = function (_) {\n return Promise.resolve(true);\n };\n return NoopTransport;\n}());\nexport { NoopTransport };\n//# sourceMappingURL=noop.js.map","/** JSDoc */\nexport var Severity;\n(function (Severity) {\n /** JSDoc */\n Severity[\"Fatal\"] = \"fatal\";\n /** JSDoc */\n Severity[\"Error\"] = \"error\";\n /** JSDoc */\n Severity[\"Warning\"] = \"warning\";\n /** JSDoc */\n Severity[\"Log\"] = \"log\";\n /** JSDoc */\n Severity[\"Info\"] = \"info\";\n /** JSDoc */\n Severity[\"Debug\"] = \"debug\";\n /** JSDoc */\n Severity[\"Critical\"] = \"critical\";\n})(Severity || (Severity = {}));\n// tslint:disable:completed-docs\n// tslint:disable:no-unnecessary-qualifier no-namespace\n(function (Severity) {\n /**\n * Converts a string-based level into a {@link Severity}.\n *\n * @param level string representation of Severity\n * @returns Severity\n */\n function fromString(level) {\n switch (level) {\n case 'debug':\n return Severity.Debug;\n case 'info':\n return Severity.Info;\n case 'warn':\n case 'warning':\n return Severity.Warning;\n case 'error':\n return Severity.Error;\n case 'fatal':\n return Severity.Fatal;\n case 'critical':\n return Severity.Critical;\n case 'log':\n default:\n return Severity.Log;\n }\n }\n Severity.fromString = fromString;\n})(Severity || (Severity = {}));\n//# sourceMappingURL=severity.js.map","import { logger, SentryError } from '@sentry/utils';\nimport { NoopTransport } from './transports/noop';\n/**\n * This is the base implemention of a Backend.\n * @hidden\n */\nvar BaseBackend = /** @class */ (function () {\n /** Creates a new backend instance. */\n function BaseBackend(options) {\n this._options = options;\n if (!this._options.dsn) {\n logger.warn('No DSN provided, backend will not do anything.');\n }\n this._transport = this._setupTransport();\n }\n /**\n * Sets up the transport so it can be used later to send requests.\n */\n BaseBackend.prototype._setupTransport = function () {\n return new NoopTransport();\n };\n /**\n * @inheritDoc\n */\n BaseBackend.prototype.eventFromException = function (_exception, _hint) {\n throw new SentryError('Backend has to implement `eventFromException` method');\n };\n /**\n * @inheritDoc\n */\n BaseBackend.prototype.eventFromMessage = function (_message, _level, _hint) {\n throw new SentryError('Backend has to implement `eventFromMessage` method');\n };\n /**\n * @inheritDoc\n */\n BaseBackend.prototype.sendEvent = function (event) {\n this._transport.sendEvent(event).catch(function (reason) {\n logger.error(\"Error while sending event: \" + reason);\n });\n };\n /**\n * @inheritDoc\n */\n BaseBackend.prototype.getTransport = function () {\n return this._transport;\n };\n return BaseBackend;\n}());\nexport { BaseBackend };\n//# sourceMappingURL=basebackend.js.map","import { logger } from './logger';\nimport { getGlobalObject } from './misc';\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsErrorEvent() {\n try {\n // tslint:disable:no-unused-expression\n new ErrorEvent('');\n return true;\n }\n catch (e) {\n return false;\n }\n}\n/**\n * Tells whether current environment supports DOMError objects\n * {@link supportsDOMError}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMError() {\n try {\n // It really needs 1 argument, not 0.\n // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n // 1 argument required, but only 0 present.\n // @ts-ignore\n // tslint:disable:no-unused-expression\n new DOMError('');\n return true;\n }\n catch (e) {\n return false;\n }\n}\n/**\n * Tells whether current environment supports DOMException objects\n * {@link supportsDOMException}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMException() {\n try {\n // tslint:disable:no-unused-expression\n new DOMException('');\n return true;\n }\n catch (e) {\n return false;\n }\n}\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsFetch() {\n if (!('fetch' in getGlobalObject())) {\n return false;\n }\n try {\n // tslint:disable-next-line:no-unused-expression\n new Headers();\n // tslint:disable-next-line:no-unused-expression\n new Request('');\n // tslint:disable-next-line:no-unused-expression\n new Response();\n return true;\n }\n catch (e) {\n return false;\n }\n}\n/**\n * Tells whether current environment supports Fetch API natively\n * {@link supportsNativeFetch}.\n *\n * @returns true if `window.fetch` is natively implemented, false otherwise\n */\nexport function supportsNativeFetch() {\n if (!supportsFetch()) {\n return false;\n }\n var isNativeFunc = function (func) { return func.toString().indexOf('native') !== -1; };\n var global = getGlobalObject();\n var result = null;\n var doc = global.document;\n if (doc) {\n var sandbox = doc.createElement('iframe');\n sandbox.hidden = true;\n try {\n doc.head.appendChild(sandbox);\n if (sandbox.contentWindow && sandbox.contentWindow.fetch) {\n // tslint:disable-next-line no-unbound-method\n result = isNativeFunc(sandbox.contentWindow.fetch);\n }\n doc.head.removeChild(sandbox);\n }\n catch (err) {\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n }\n }\n if (result === null) {\n // tslint:disable-next-line no-unbound-method\n result = isNativeFunc(global.fetch);\n }\n return result;\n}\n/**\n * Tells whether current environment supports ReportingObserver API\n * {@link supportsReportingObserver}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReportingObserver() {\n // tslint:disable-next-line: no-unsafe-any\n return 'ReportingObserver' in getGlobalObject();\n}\n/**\n * Tells whether current environment supports Referrer Policy API\n * {@link supportsReferrerPolicy}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReferrerPolicy() {\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default\n // https://caniuse.com/#feat=referrer-policy\n // It doesn't. And it throw exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n if (!supportsFetch()) {\n return false;\n }\n try {\n // tslint:disable:no-unused-expression\n new Request('_', {\n referrerPolicy: 'origin',\n });\n return true;\n }\n catch (e) {\n return false;\n }\n}\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsHistory() {\n // NOTE: in Chrome App environment, touching history.pushState, *even inside\n // a try/catch block*, will cause Chrome to output an error to console.error\n // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n var global = getGlobalObject();\n var chrome = global.chrome;\n // tslint:disable-next-line:no-unsafe-any\n var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n var hasHistoryApi = 'history' in global && !!global.history.pushState && !!global.history.replaceState;\n return !isChromePackagedApp && hasHistoryApi;\n}\n//# sourceMappingURL=supports.js.map","// tslint:disable\nimport * as tslib_1 from \"tslib\";\nimport { getGlobalObject, isError, isErrorEvent } from '@sentry/utils';\n/**\n * TraceKit - Cross brower stack traces\n *\n * This was originally forked from github.com/occ/TraceKit, but has since been\n * largely modified and is now maintained as part of Sentry JS SDK.\n *\n * NOTE: Last merge with upstream repository\n * Jul 11,2018 - #f03357c\n *\n * https://github.com/csnover/TraceKit\n * @license MIT\n * @namespace TraceKit\n */\nvar window = getGlobalObject();\nvar TraceKit = {\n _report: false,\n _collectWindowErrors: false,\n _computeStackTrace: false,\n _linesOfContext: false,\n};\n// var TraceKit: TraceKitInterface = {};\n// var TraceKit = {};\n// global reference to slice\nvar UNKNOWN_FUNCTION = '?';\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types\nvar ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;\n/**\n * A better form of hasOwnProperty
\n * Example: `_has(MainHostObject, property) === true/false`\n *\n * @param {Object} object to check property\n * @param {string} key to check\n * @return {Boolean} true if the object has the key and it is not inherited\n */\nfunction _has(object, key) {\n return Object.prototype.hasOwnProperty.call(object, key);\n}\n/**\n * A safe form of location.href
\n *\n * @return {string} location.href\n */\nfunction getLocationHref() {\n if (typeof document === 'undefined' || document.location == null)\n return '';\n return document.location.href;\n}\n/**\n * Cross-browser processing of unhandled exceptions\n *\n * Syntax:\n * ```js\n * TraceKit.report.subscribe(function(stackInfo) { ... })\n * TraceKit.report(exception)\n * try { ...code... } catch(ex) { TraceKit.report(ex); }\n * ```\n *\n * Supports:\n * - Firefox: full stack trace with line numbers, plus column number\n * on top frame; column number is not guaranteed\n * - Opera: full stack trace with line and column numbers\n * - Chrome: full stack trace with line and column numbers\n * - Safari: line and column number for the top frame only; some frames\n * may be missing, and column number is not guaranteed\n * - IE: line and column number for the top frame only; some frames\n * may be missing, and column number is not guaranteed\n *\n * In theory, TraceKit should work on all of the following versions:\n * - IE5.5+ (only 8.0 tested)\n * - Firefox 0.9+ (only 3.5+ tested)\n * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require\n * Exceptions Have Stacktrace to be enabled in opera:config)\n * - Safari 3+ (only 4+ tested)\n * - Chrome 1+ (only 5+ tested)\n * - Konqueror 3.5+ (untested)\n *\n * Requires TraceKit._computeStackTrace.\n *\n * Tries to catch all unhandled exceptions and report them to the\n * subscribed handlers. Please note that TraceKit.report will rethrow the\n * exception. This is REQUIRED in order to get a useful stack trace in IE.\n * If the exception does not reach the top of the browser, you will only\n * get a stack trace from the point where TraceKit.report was called.\n *\n * Handlers receive a TraceKit.StackTrace object as described in the\n * TraceKit._computeStackTrace docs.\n *\n * @memberof TraceKit\n * @namespace\n */\nTraceKit._report = (function reportModuleWrapper() {\n var handlers = [], lastException = null, lastExceptionStack = null;\n /**\n * Add a crash handler.\n * @param {Function} handler\n * @memberof TraceKit.report\n */\n function _subscribe(handler) {\n // NOTE: We call both handlers manually in browser/integrations/globalhandler.ts\n // So user can choose which one he wants to attach\n // installGlobalHandler();\n // installGlobalUnhandledRejectionHandler();\n handlers.push(handler);\n }\n /**\n * Dispatch stack information to all handlers.\n * @param {TraceKit.StackTrace} stack\n * @param {boolean} isWindowError Is this a top-level window error?\n * @param {Error=} error The error that's being handled (if available, null otherwise)\n * @memberof TraceKit.report\n * @throws An exception if an error occurs while calling an handler.\n */\n function _notifyHandlers(stack, isWindowError, error) {\n var exception = null;\n if (isWindowError && !TraceKit._collectWindowErrors) {\n return;\n }\n for (var i in handlers) {\n if (_has(handlers, i)) {\n try {\n handlers[i](stack, isWindowError, error);\n }\n catch (inner) {\n exception = inner;\n }\n }\n }\n if (exception) {\n throw exception;\n }\n }\n var _oldOnerrorHandler, _onErrorHandlerInstalled;\n /**\n * Ensures all global unhandled exceptions are recorded.\n * Supported by Gecko and IE.\n * @param {string} message Error message.\n * @param {string} url URL of script that generated the exception.\n * @param {(number|string)} lineNo The line number at which the error occurred.\n * @param {(number|string)=} columnNo The column number at which the error occurred.\n * @param {Error=} errorObj The actual Error object.\n * @memberof TraceKit.report\n */\n function _traceKitWindowOnError(message, url, lineNo, columnNo, errorObj) {\n var stack = null;\n // If 'errorObj' is ErrorEvent, get real Error from inside\n errorObj = isErrorEvent(errorObj) ? errorObj.error : errorObj;\n // If 'message' is ErrorEvent, get real message from inside\n message = isErrorEvent(message) ? message.message : message;\n if (lastExceptionStack) {\n TraceKit._computeStackTrace._augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message);\n processLastException();\n }\n else if (errorObj && isError(errorObj)) {\n stack = TraceKit._computeStackTrace(errorObj);\n stack.mechanism = 'onerror';\n _notifyHandlers(stack, true, errorObj);\n }\n else {\n var location = {\n url: url,\n line: lineNo,\n column: columnNo,\n };\n var name;\n var msg = message; // must be new var or will modify original `arguments`\n if ({}.toString.call(message) === '[object String]') {\n var groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n msg = groups[2];\n }\n }\n location.func = UNKNOWN_FUNCTION;\n location.context = null;\n stack = {\n name: name,\n message: msg,\n mode: 'onerror',\n mechanism: 'onerror',\n stack: [\n tslib_1.__assign({}, location, { \n // Firefox sometimes doesn't return url correctly and this is an old behavior\n // that I prefer to port here as well.\n // It can be altered only here, as previously it's using `location.url` for other things — Kamil\n url: location.url || getLocationHref() }),\n ],\n };\n _notifyHandlers(stack, true, null);\n }\n if (_oldOnerrorHandler) {\n // @ts-ignore\n return _oldOnerrorHandler.apply(this, arguments);\n }\n return false;\n }\n /**\n * Ensures all unhandled rejections are recorded.\n * @param {PromiseRejectionEvent} e event.\n * @memberof TraceKit.report\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onunhandledrejection\n * @see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n */\n function _traceKitWindowOnUnhandledRejection(e) {\n var err = e;\n // You cannot itterate over non-objects, but we want to check\n // for the existence in any value, not for the value itself\n try {\n err = e && 'reason' in e ? e.reason : e;\n }\n catch (_oO) { }\n var stack = TraceKit._computeStackTrace(err);\n stack.mechanism = 'onunhandledrejection';\n _notifyHandlers(stack, true, err);\n }\n /**\n * Install a global onerror handler\n * @memberof TraceKit.report\n */\n function _installGlobalHandler() {\n if (_onErrorHandlerInstalled === true) {\n return;\n }\n _oldOnerrorHandler = window.onerror;\n window.onerror = _traceKitWindowOnError;\n _onErrorHandlerInstalled = true;\n }\n /**\n * Install a global onunhandledrejection handler\n * @memberof TraceKit.report\n */\n function _installGlobalUnhandledRejectionHandler() {\n window.onunhandledrejection = _traceKitWindowOnUnhandledRejection;\n }\n /**\n * Process the most recent exception\n * @memberof TraceKit.report\n */\n function processLastException() {\n var _lastExceptionStack = lastExceptionStack, _lastException = lastException;\n lastExceptionStack = null;\n lastException = null;\n _notifyHandlers(_lastExceptionStack, false, _lastException);\n }\n /**\n * Reports an unhandled Error to TraceKit.\n * @param {Error} ex\n * @memberof TraceKit.report\n * @throws An exception if an incomplete stack trace is detected (old IE browsers).\n */\n function _report(ex) {\n if (lastExceptionStack) {\n if (lastException === ex) {\n return; // already caught by an inner catch block, ignore\n }\n else {\n processLastException();\n }\n }\n var stack = TraceKit._computeStackTrace(ex);\n lastExceptionStack = stack;\n lastException = ex;\n // If the stack trace is incomplete, wait for 2 seconds for\n // slow slow IE to see if onerror occurs or not before reporting\n // this exception; otherwise, we will end up with an incomplete\n // stack trace\n setTimeout(function () {\n if (lastException === ex) {\n processLastException();\n }\n }, stack.incomplete ? 2000 : 0);\n throw ex; // re-throw to propagate to the top level (and cause window.onerror)\n }\n _report._subscribe = _subscribe;\n _report._installGlobalHandler = _installGlobalHandler;\n _report._installGlobalUnhandledRejectionHandler = _installGlobalUnhandledRejectionHandler;\n return _report;\n})();\n/**\n * An object representing a single stack frame.\n * @typedef {Object} StackFrame\n * @property {string} url The JavaScript or HTML file URL.\n * @property {string} func The function name, or empty for anonymous functions (if guessing did not work).\n * @property {string[]?} args The arguments passed to the function, if known.\n * @property {number=} line The line number, if known.\n * @property {number=} column The column number, if known.\n * @property {string[]} context An array of source code lines; the middle element corresponds to the correct line#.\n * @memberof TraceKit\n */\n/**\n * An object representing a JavaScript stack trace.\n * @typedef {Object} StackTrace\n * @property {string} name The name of the thrown exception.\n * @property {string} message The exception error message.\n * @property {TraceKit.StackFrame[]} stack An array of stack frames.\n * @property {string} mode 'stack', 'stacktrace', 'multiline', 'callers', 'onerror', or 'failed' -- method used to collect the stack trace.\n * @memberof TraceKit\n */\n/**\n * TraceKit._computeStackTrace: cross-browser stack traces in JavaScript\n *\n * Syntax:\n * ```js\n * s = TraceKit._computeStackTrace(exception) // consider using TraceKit.report instead (see below)\n * ```\n *\n * Supports:\n * - Firefox: full stack trace with line numbers and unreliable column\n * number on top frame\n * - Opera 10: full stack trace with line and column numbers\n * - Opera 9-: full stack trace with line numbers\n * - Chrome: full stack trace with line and column numbers\n * - Safari: line and column number for the topmost stacktrace element\n * only\n * - IE: no line numbers whatsoever\n *\n * Tries to guess names of anonymous functions by looking for assignments\n * in the source code. In IE and Safari, we have to guess source file names\n * by searching for function bodies inside all page scripts. This will not\n * work for scripts that are loaded cross-domain.\n * Here be dragons: some function names may be guessed incorrectly, and\n * duplicate functions may be mismatched.\n *\n * TraceKit._computeStackTrace should only be used for tracing purposes.\n * Logging of unhandled exceptions should be done with TraceKit.report,\n * which builds on top of TraceKit._computeStackTrace and provides better\n * IE support by utilizing the window.onerror event to retrieve information\n * about the top of the stack.\n *\n * Note: In IE and Safari, no stack trace is recorded on the Error object,\n * so computeStackTrace instead walks its *own* chain of callers.\n * This means that:\n * * in Safari, some methods may be missing from the stack trace;\n * * in IE, the topmost function in the stack trace will always be the\n * caller of computeStackTrace.\n *\n * This is okay for tracing (because you are likely to be calling\n * computeStackTrace from the function you want to be the topmost element\n * of the stack trace anyway), but not okay for logging unhandled\n * exceptions (because your catch block will likely be far away from the\n * inner function that actually caused the exception).\n *\n * @memberof TraceKit\n * @namespace\n */\nTraceKit._computeStackTrace = (function _computeStackTraceWrapper() {\n // Contents of Exception in various browsers.\n //\n // SAFARI:\n // ex.message = Can't find variable: qq\n // ex.line = 59\n // ex.sourceId = 580238192\n // ex.sourceURL = http://...\n // ex.expressionBeginOffset = 96\n // ex.expressionCaretOffset = 98\n // ex.expressionEndOffset = 98\n // ex.name = ReferenceError\n //\n // FIREFOX:\n // ex.message = qq is not defined\n // ex.fileName = http://...\n // ex.lineNumber = 59\n // ex.columnNumber = 69\n // ex.stack = ...stack trace... (see the example below)\n // ex.name = ReferenceError\n //\n // CHROME:\n // ex.message = qq is not defined\n // ex.name = ReferenceError\n // ex.type = not_defined\n // ex.arguments = ['aa']\n // ex.stack = ...stack trace...\n //\n // INTERNET EXPLORER:\n // ex.message = ...\n // ex.name = ReferenceError\n //\n // OPERA:\n // ex.message = ...message... (see the example below)\n // ex.name = ReferenceError\n // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message)\n // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace'\n /**\n * Computes stack trace information from the stack property.\n * Chrome and Gecko use this property.\n * @param {Error} ex\n * @return {?TraceKit.StackTrace} Stack trace information.\n * @memberof TraceKit._computeStackTrace\n */\n function _computeStackTraceFromStackProp(ex) {\n if (!ex || !ex.stack) {\n return null;\n }\n // Chromium based browsers: Chrome, Brave, new Opera, new Edge\n var chrome = /^\\s*at (?:(.*?) ?\\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[-a-z]+:|\\/).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i, \n // gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n // generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n // We need this specific case for now because we want no other regex to match.\n gecko = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js))(?::(\\d+))?(?::(\\d+))?\\s*$/i, winjs = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i, \n // Used to additionally parse URL/line/column from eval frames\n isEval, geckoEval = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i, chromeEval = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/, lines = ex.stack.split('\\n'), stack = [], submatch, parts, element, reference = /^(.*) is undefined$/.exec(ex.message);\n for (var i = 0, j = lines.length; i < j; ++i) {\n if ((parts = chrome.exec(lines[i]))) {\n var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n if (isEval && (submatch = chromeEval.exec(parts[2]))) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = submatch[1]; // url\n parts[3] = submatch[2]; // line\n parts[4] = submatch[3]; // column\n }\n element = {\n url: parts[2],\n func: parts[1] || UNKNOWN_FUNCTION,\n args: isNative ? [parts[2]] : [],\n line: parts[3] ? +parts[3] : null,\n column: parts[4] ? +parts[4] : null,\n };\n }\n else if ((parts = winjs.exec(lines[i]))) {\n element = {\n url: parts[2],\n func: parts[1] || UNKNOWN_FUNCTION,\n args: [],\n line: +parts[3],\n column: parts[4] ? +parts[4] : null,\n };\n }\n else if ((parts = gecko.exec(lines[i]))) {\n isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval && (submatch = geckoEval.exec(parts[3]))) {\n // throw out eval line/column and use top-most line number\n parts[1] = parts[1] || \"eval\";\n parts[3] = submatch[1];\n parts[4] = submatch[2];\n parts[5] = ''; // no column when eval\n }\n else if (i === 0 && !parts[5] && ex.columnNumber !== void 0) {\n // FireFox uses this awesome columnNumber property for its top frame\n // Also note, Firefox's column number is 0-based and everything else expects 1-based,\n // so adding 1\n // NOTE: this hack doesn't work if top-most frame is eval\n stack[0].column = ex.columnNumber + 1;\n }\n element = {\n url: parts[3],\n func: parts[1] || UNKNOWN_FUNCTION,\n args: parts[2] ? parts[2].split(',') : [],\n line: parts[4] ? +parts[4] : null,\n column: parts[5] ? +parts[5] : null,\n };\n }\n else {\n continue;\n }\n if (!element.func && element.line) {\n element.func = UNKNOWN_FUNCTION;\n }\n element.context = null;\n stack.push(element);\n }\n if (!stack.length) {\n return null;\n }\n if (stack[0] && stack[0].line && !stack[0].column && reference) {\n stack[0].column = null;\n }\n return {\n mode: 'stack',\n name: ex.name,\n message: ex.message,\n stack: stack,\n };\n }\n /**\n * Computes stack trace information from the stacktrace property.\n * Opera 10+ uses this property.\n * @param {Error} ex\n * @return {?TraceKit.StackTrace} Stack trace information.\n * @memberof TraceKit._computeStackTrace\n */\n function _computeStackTraceFromStacktraceProp(ex) {\n // Access and store the stacktrace property before doing ANYTHING\n // else to it because Opera is not very good at providing it\n // reliably in other circumstances.\n var stacktrace = ex.stacktrace;\n if (!stacktrace) {\n return;\n }\n var opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i, opera11Regex = / line (\\d+), column (\\d+)\\s*(?:in (?:]+)>|([^\\)]+))\\((.*)\\))? in (.*):\\s*$/i, lines = stacktrace.split('\\n'), stack = [], parts;\n for (var line = 0; line < lines.length; line += 2) {\n var element = null;\n if ((parts = opera10Regex.exec(lines[line]))) {\n element = {\n url: parts[2],\n line: +parts[1],\n column: null,\n func: parts[3],\n args: [],\n };\n }\n else if ((parts = opera11Regex.exec(lines[line]))) {\n element = {\n url: parts[6],\n line: +parts[1],\n column: +parts[2],\n func: parts[3] || parts[4],\n args: parts[5] ? parts[5].split(',') : [],\n };\n }\n if (element) {\n if (!element.func && element.line) {\n element.func = UNKNOWN_FUNCTION;\n }\n if (element.line) {\n element.context = null;\n }\n if (!element.context) {\n element.context = [lines[line + 1]];\n }\n stack.push(element);\n }\n }\n if (!stack.length) {\n return null;\n }\n return {\n mode: 'stacktrace',\n name: ex.name,\n message: ex.message,\n stack: stack,\n };\n }\n /**\n * NOT TESTED.\n * Computes stack trace information from an error message that includes\n * the stack trace.\n * Opera 9 and earlier use this method if the option to show stack\n * traces is turned on in opera:config.\n * @param {Error} ex\n * @return {?TraceKit.StackTrace} Stack information.\n * @memberof TraceKit._computeStackTrace\n */\n function _computeStackTraceFromOperaMultiLineMessage(ex) {\n // TODO: Clean this function up\n // Opera includes a stack trace into the exception message. An example is:\n //\n // Statement on line 3: Undefined variable: undefinedFunc\n // Backtrace:\n // Line 3 of linked script file://localhost/Users/andreyvit/Projects/TraceKit/javascript-client/sample.js: In function zzz\n // undefinedFunc(a);\n // Line 7 of inline#1 script in file://localhost/Users/andreyvit/Projects/TraceKit/javascript-client/sample.html: In function yyy\n // zzz(x, y, z);\n // Line 3 of inline#1 script in file://localhost/Users/andreyvit/Projects/TraceKit/javascript-client/sample.html: In function xxx\n // yyy(a, a, a);\n // Line 1 of function script\n // try { xxx('hi'); return false; } catch(ex) { TraceKit.report(ex); }\n // ...\n var lines = ex.message.split('\\n');\n if (lines.length < 4) {\n return null;\n }\n var lineRE1 = /^\\s*Line (\\d+) of linked script ((?:file|https?|blob)\\S+)(?:: in function (\\S+))?\\s*$/i, lineRE2 = /^\\s*Line (\\d+) of inline#(\\d+) script in ((?:file|https?|blob)\\S+)(?:: in function (\\S+))?\\s*$/i, lineRE3 = /^\\s*Line (\\d+) of function script\\s*$/i, stack = [], scripts = window && window.document && window.document.getElementsByTagName('script'), inlineScriptBlocks = [], parts;\n for (var s in scripts) {\n if (_has(scripts, s) && !scripts[s].src) {\n inlineScriptBlocks.push(scripts[s]);\n }\n }\n for (var line = 2; line < lines.length; line += 2) {\n var item = null;\n if ((parts = lineRE1.exec(lines[line]))) {\n item = {\n url: parts[2],\n func: parts[3],\n args: [],\n line: +parts[1],\n column: null,\n };\n }\n else if ((parts = lineRE2.exec(lines[line]))) {\n item = {\n url: parts[3],\n func: parts[4],\n args: [],\n line: +parts[1],\n column: null,\n };\n }\n else if ((parts = lineRE3.exec(lines[line]))) {\n var url = getLocationHref().replace(/#.*$/, '');\n item = {\n url: url,\n func: '',\n args: [],\n line: parts[1],\n column: null,\n };\n }\n if (item) {\n if (!item.func) {\n item.func = UNKNOWN_FUNCTION;\n }\n // if (context) alert(\"Context mismatch. Correct midline:\\n\" + lines[i+1] + \"\\n\\nMidline:\\n\" + midline + \"\\n\\nContext:\\n\" + context.join(\"\\n\") + \"\\n\\nURL:\\n\" + item.url);\n item.context = [lines[line + 1]];\n stack.push(item);\n }\n }\n if (!stack.length) {\n return null; // could not parse multiline exception message as Opera stack trace\n }\n return {\n mode: 'multiline',\n name: ex.name,\n message: lines[0],\n stack: stack,\n };\n }\n /**\n * Adds information about the first frame to incomplete stack traces.\n * Safari and IE require this to get complete data on the first frame.\n * @param {TraceKit.StackTrace} stackInfo Stack trace information from\n * one of the compute* methods.\n * @param {string} url The URL of the script that caused an error.\n * @param {(number|string)} lineNo The line number of the script that\n * caused an error.\n * @param {string=} message The error generated by the browser, which\n * hopefully contains the name of the object that caused the error.\n * @return {boolean} Whether or not the stack information was\n * augmented.\n * @memberof TraceKit._computeStackTrace\n */\n function _augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) {\n var initial = {\n url: url,\n line: lineNo,\n };\n if (initial.url && initial.line) {\n stackInfo.incomplete = false;\n if (!initial.func) {\n initial.func = UNKNOWN_FUNCTION;\n }\n if (!initial.context) {\n initial.context = null;\n }\n var reference = / '([^']+)' /.exec(message);\n if (reference) {\n initial.column = null;\n }\n if (stackInfo.stack.length > 0) {\n if (stackInfo.stack[0].url === initial.url) {\n if (stackInfo.stack[0].line === initial.line) {\n return false; // already in stack trace\n }\n else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) {\n stackInfo.stack[0].line = initial.line;\n stackInfo.stack[0].context = initial.context;\n return false;\n }\n }\n }\n stackInfo.stack.unshift(initial);\n stackInfo.partial = true;\n return true;\n }\n else {\n stackInfo.incomplete = true;\n }\n return false;\n }\n /**\n * Computes stack trace information by walking the arguments.caller\n * chain at the time the exception occurred. This will cause earlier\n * frames to be missed but is the only way to get any stack trace in\n * Safari and IE. The top frame is restored by\n * {@link augmentStackTraceWithInitialElement}.\n * @param {Error} ex\n * @return {TraceKit.StackTrace=} Stack trace information.\n * @memberof TraceKit._computeStackTrace\n */\n function _computeStackTraceByWalkingCallerChain(ex, depth) {\n var functionName = /function\\s+([_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*)?\\s*\\(/i, stack = [], funcs = {}, recursion = false, parts, item;\n for (var curr = _computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) {\n if (curr === _computeStackTrace || curr === TraceKit._report) {\n continue;\n }\n item = {\n url: null,\n func: UNKNOWN_FUNCTION,\n args: [],\n line: null,\n column: null,\n };\n if (curr.name) {\n item.func = curr.name;\n }\n else if ((parts = functionName.exec(curr.toString()))) {\n item.func = parts[1];\n }\n if (typeof item.func === 'undefined') {\n try {\n item.func = parts.input.substring(0, parts.input.indexOf('{'));\n }\n catch (e) { }\n }\n if (funcs['' + curr]) {\n recursion = true;\n }\n else {\n funcs['' + curr] = true;\n }\n stack.push(item);\n }\n if (depth) {\n stack.splice(0, depth);\n }\n var result = {\n mode: 'callers',\n name: ex.name,\n message: ex.message,\n stack: stack,\n };\n _augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description);\n return result;\n }\n /**\n * Computes a stack trace for an exception.\n * @param {Error} ex\n * @param {(string|number)=} depth\n * @memberof TraceKit._computeStackTrace\n */\n function computeStackTrace(ex, depth) {\n var stack = null;\n var popSize = ex && ex.framesToPop;\n depth = depth == null ? 0 : +depth;\n try {\n // This must be tried first because Opera 10 *destroys*\n // its stacktrace property if you try to access the stack\n // property first!!\n stack = _computeStackTraceFromStacktraceProp(ex);\n if (stack) {\n return popFrames(stack, popSize);\n }\n }\n catch (e) { }\n try {\n stack = _computeStackTraceFromStackProp(ex);\n if (stack) {\n return popFrames(stack, popSize);\n }\n }\n catch (e) { }\n try {\n stack = _computeStackTraceFromOperaMultiLineMessage(ex);\n if (stack) {\n return popFrames(stack, popSize);\n }\n }\n catch (e) { }\n try {\n stack = _computeStackTraceByWalkingCallerChain(ex, depth + 1);\n if (stack) {\n return popFrames(stack, popSize);\n }\n }\n catch (e) { }\n return {\n original: ex,\n name: ex && ex.name,\n message: ex && ex.message,\n mode: 'failed',\n };\n }\n function popFrames(stacktrace, popSize) {\n if (Number.isNaN(popSize)) {\n return stacktrace;\n }\n try {\n return tslib_1.__assign({}, stacktrace, { stack: stacktrace.stack.slice(popSize) });\n }\n catch (e) {\n return stacktrace;\n }\n }\n computeStackTrace._augmentStackTraceWithInitialElement = _augmentStackTraceWithInitialElement;\n computeStackTrace._computeStackTraceFromStackProp = _computeStackTraceFromStackProp;\n return computeStackTrace;\n})();\nTraceKit._collectWindowErrors = true;\nTraceKit._linesOfContext = 11;\nvar _subscribe = TraceKit._report._subscribe;\nvar _installGlobalHandler = TraceKit._report._installGlobalHandler;\nvar _installGlobalUnhandledRejectionHandler = TraceKit._report._installGlobalUnhandledRejectionHandler;\nvar _computeStackTrace = TraceKit._computeStackTrace;\nexport { _subscribe, _installGlobalHandler, _installGlobalUnhandledRejectionHandler, _computeStackTrace };\n//# sourceMappingURL=tracekit.js.map","import { keysToEventMessage, normalizeToSize } from '@sentry/utils';\nimport { _computeStackTrace } from './tracekit';\nvar STACKTRACE_LIMIT = 50;\n/**\n * This function creates an exception from an TraceKitStackTrace\n * @param stacktrace TraceKitStackTrace that will be converted to an exception\n * @hidden\n */\nexport function exceptionFromStacktrace(stacktrace) {\n var frames = prepareFramesForEvent(stacktrace.stack);\n var exception = {\n type: stacktrace.name,\n value: stacktrace.message,\n };\n if (frames && frames.length) {\n exception.stacktrace = { frames: frames };\n }\n // tslint:disable-next-line:strict-type-predicates\n if (exception.type === undefined && exception.value === '') {\n exception.value = 'Unrecoverable error caught';\n }\n return exception;\n}\n/**\n * @hidden\n */\nexport function eventFromPlainObject(exception, syntheticException) {\n var exceptionKeys = Object.keys(exception).sort();\n var event = {\n extra: {\n __serialized__: normalizeToSize(exception),\n },\n message: \"Non-Error exception captured with keys: \" + keysToEventMessage(exceptionKeys),\n };\n if (syntheticException) {\n var stacktrace = _computeStackTrace(syntheticException);\n var frames_1 = prepareFramesForEvent(stacktrace.stack);\n event.stacktrace = {\n frames: frames_1,\n };\n }\n return event;\n}\n/**\n * @hidden\n */\nexport function eventFromStacktrace(stacktrace) {\n var exception = exceptionFromStacktrace(stacktrace);\n return {\n exception: {\n values: [exception],\n },\n };\n}\n/**\n * @hidden\n */\nexport function prepareFramesForEvent(stack) {\n if (!stack || !stack.length) {\n return [];\n }\n var localStack = stack;\n var firstFrameFunction = localStack[0].func || '';\n var lastFrameFunction = localStack[localStack.length - 1].func || '';\n // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n if (firstFrameFunction.includes('captureMessage') || firstFrameFunction.includes('captureException')) {\n localStack = localStack.slice(1);\n }\n // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n if (lastFrameFunction.includes('sentryWrapped')) {\n localStack = localStack.slice(0, -1);\n }\n // The frame where the crash happened, should be the last entry in the array\n return localStack\n .map(function (frame) { return ({\n colno: frame.column,\n filename: frame.url || localStack[0].url,\n function: frame.func || '?',\n in_app: true,\n lineno: frame.line,\n }); })\n .slice(0, STACKTRACE_LIMIT)\n .reverse();\n}\n//# sourceMappingURL=parsers.js.map","import { SentryError } from './error';\n/** A simple queue that holds promises. */\nvar PromiseBuffer = /** @class */ (function () {\n function PromiseBuffer(_limit) {\n this._limit = _limit;\n /** Internal set of queued Promises */\n this._buffer = [];\n }\n /**\n * Says if the buffer is ready to take more requests\n */\n PromiseBuffer.prototype.isReady = function () {\n return this._limit === undefined || this.length() < this._limit;\n };\n /**\n * Add a promise to the queue.\n *\n * @param task Can be any Promise\n * @returns The original promise.\n */\n PromiseBuffer.prototype.add = function (task) {\n var _this = this;\n if (!this.isReady()) {\n return Promise.reject(new SentryError('Not adding Promise due to buffer limit reached.'));\n }\n if (this._buffer.indexOf(task) === -1) {\n this._buffer.push(task);\n }\n task\n .then(function () { return _this.remove(task); })\n .catch(function () {\n return _this.remove(task).catch(function () {\n // We have to add this catch here otherwise we have an unhandledPromiseRejection\n // because it's a new Promise chain.\n });\n });\n return task;\n };\n /**\n * Remove a promise to the queue.\n *\n * @param task Can be any Promise\n * @returns Removed promise.\n */\n PromiseBuffer.prototype.remove = function (task) {\n var removedTask = this._buffer.splice(this._buffer.indexOf(task), 1)[0];\n return removedTask;\n };\n /**\n * This function returns the number of unresolved promises in the queue.\n */\n PromiseBuffer.prototype.length = function () {\n return this._buffer.length;\n };\n /**\n * This will drain the whole queue, returns true if queue is empty or drained.\n * If timeout is provided and the queue takes longer to drain, the promise still resolves but with false.\n *\n * @param timeout Number in ms to wait until it resolves with false.\n */\n PromiseBuffer.prototype.drain = function (timeout) {\n var _this = this;\n return new Promise(function (resolve) {\n var capturedSetTimeout = setTimeout(function () {\n if (timeout && timeout > 0) {\n resolve(false);\n }\n }, timeout);\n Promise.all(_this._buffer)\n .then(function () {\n clearTimeout(capturedSetTimeout);\n resolve(true);\n })\n .catch(function () {\n resolve(true);\n });\n });\n };\n return PromiseBuffer;\n}());\nexport { PromiseBuffer };\n//# sourceMappingURL=promisebuffer.js.map","import { API } from '@sentry/core';\nimport { PromiseBuffer, SentryError } from '@sentry/utils';\n/** Base Transport class implementation */\nvar BaseTransport = /** @class */ (function () {\n function BaseTransport(options) {\n this.options = options;\n /** A simple buffer holding all requests. */\n this._buffer = new PromiseBuffer(30);\n this.url = new API(this.options.dsn).getStoreEndpointWithUrlEncodedAuth();\n }\n /**\n * @inheritDoc\n */\n BaseTransport.prototype.sendEvent = function (_) {\n throw new SentryError('Transport Class has to implement `sendEvent` method');\n };\n /**\n * @inheritDoc\n */\n BaseTransport.prototype.close = function (timeout) {\n return this._buffer.drain(timeout);\n };\n return BaseTransport;\n}());\nexport { BaseTransport };\n//# sourceMappingURL=base.js.map","import * as tslib_1 from \"tslib\";\nimport { Status } from '@sentry/types';\nimport { getGlobalObject, supportsReferrerPolicy } from '@sentry/utils';\nimport { BaseTransport } from './base';\nvar global = getGlobalObject();\n/** `fetch` based transport */\nvar FetchTransport = /** @class */ (function (_super) {\n tslib_1.__extends(FetchTransport, _super);\n function FetchTransport() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @inheritDoc\n */\n FetchTransport.prototype.sendEvent = function (event) {\n var defaultOptions = {\n body: JSON.stringify(event),\n method: 'POST',\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default\n // https://caniuse.com/#feat=referrer-policy\n // It doesn't. And it throw exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n referrerPolicy: (supportsReferrerPolicy() ? 'origin' : ''),\n };\n return this._buffer.add(global.fetch(this.url, defaultOptions).then(function (response) { return ({\n status: Status.fromHttpCode(response.status),\n }); }));\n };\n return FetchTransport;\n}(BaseTransport));\nexport { FetchTransport };\n//# sourceMappingURL=fetch.js.map","import * as tslib_1 from \"tslib\";\nimport { Status } from '@sentry/types';\nimport { BaseTransport } from './base';\n/** `XHR` based transport */\nvar XHRTransport = /** @class */ (function (_super) {\n tslib_1.__extends(XHRTransport, _super);\n function XHRTransport() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @inheritDoc\n */\n XHRTransport.prototype.sendEvent = function (event) {\n var _this = this;\n return this._buffer.add(new Promise(function (resolve, reject) {\n var request = new XMLHttpRequest();\n request.onreadystatechange = function () {\n if (request.readyState !== 4) {\n return;\n }\n if (request.status === 200) {\n resolve({\n status: Status.fromHttpCode(request.status),\n });\n }\n reject(request);\n };\n request.open('POST', _this.url);\n request.send(JSON.stringify(event));\n }));\n };\n return XHRTransport;\n}(BaseTransport));\nexport { XHRTransport };\n//# sourceMappingURL=xhr.js.map","import * as tslib_1 from \"tslib\";\nimport { BaseBackend } from '@sentry/core';\nimport { Severity } from '@sentry/types';\nimport { addExceptionTypeValue, isDOMError, isDOMException, isError, isErrorEvent, isPlainObject, supportsFetch, SyncPromise, } from '@sentry/utils';\nimport { eventFromPlainObject, eventFromStacktrace, prepareFramesForEvent } from './parsers';\nimport { _computeStackTrace } from './tracekit';\nimport { FetchTransport, XHRTransport } from './transports';\n/**\n * The Sentry Browser SDK Backend.\n * @hidden\n */\nvar BrowserBackend = /** @class */ (function (_super) {\n tslib_1.__extends(BrowserBackend, _super);\n function BrowserBackend() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @inheritDoc\n */\n BrowserBackend.prototype._setupTransport = function () {\n if (!this._options.dsn) {\n // We return the noop transport here in case there is no Dsn.\n return _super.prototype._setupTransport.call(this);\n }\n var transportOptions = tslib_1.__assign({}, this._options.transportOptions, { dsn: this._options.dsn });\n if (this._options.transport) {\n return new this._options.transport(transportOptions);\n }\n if (supportsFetch()) {\n return new FetchTransport(transportOptions);\n }\n return new XHRTransport(transportOptions);\n };\n /**\n * @inheritDoc\n */\n BrowserBackend.prototype.eventFromException = function (exception, hint) {\n var _this = this;\n var event;\n if (isErrorEvent(exception) && exception.error) {\n // If it is an ErrorEvent with `error` property, extract it to get actual Error\n var errorEvent = exception;\n exception = errorEvent.error; // tslint:disable-line:no-parameter-reassignment\n event = eventFromStacktrace(_computeStackTrace(exception));\n return SyncPromise.resolve(this._buildEvent(event, hint));\n }\n if (isDOMError(exception) || isDOMException(exception)) {\n // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers)\n // then we just extract the name and message, as they don't provide anything else\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n var domException = exception;\n var name_1 = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n var message_1 = domException.message ? name_1 + \": \" + domException.message : name_1;\n return this.eventFromMessage(message_1, Severity.Error, hint).then(function (messageEvent) {\n addExceptionTypeValue(messageEvent, message_1);\n return SyncPromise.resolve(_this._buildEvent(messageEvent, hint));\n });\n }\n if (isError(exception)) {\n // we have a real Error object, do nothing\n event = eventFromStacktrace(_computeStackTrace(exception));\n return SyncPromise.resolve(this._buildEvent(event, hint));\n }\n if (isPlainObject(exception) && hint && hint.syntheticException) {\n // If it is plain Object, serialize it manually and extract options\n // This will allow us to group events based on top-level keys\n // which is much better than creating new group when any key/value change\n var objectException = exception;\n event = eventFromPlainObject(objectException, hint.syntheticException);\n addExceptionTypeValue(event, 'Custom Object', undefined, {\n handled: true,\n synthetic: true,\n type: 'generic',\n });\n event.level = Severity.Error;\n return SyncPromise.resolve(this._buildEvent(event, hint));\n }\n // If none of previous checks were valid, then it means that\n // it's not a DOMError/DOMException\n // it's not a plain Object\n // it's not a valid ErrorEvent (one with an error property)\n // it's not an Error\n // So bail out and capture it as a simple message:\n var stringException = exception;\n return this.eventFromMessage(stringException, undefined, hint).then(function (messageEvent) {\n addExceptionTypeValue(messageEvent, \"\" + stringException, undefined, {\n handled: true,\n synthetic: true,\n type: 'generic',\n });\n messageEvent.level = Severity.Error;\n return SyncPromise.resolve(_this._buildEvent(messageEvent, hint));\n });\n };\n /**\n * This is an internal helper function that creates an event.\n */\n BrowserBackend.prototype._buildEvent = function (event, hint) {\n return tslib_1.__assign({}, event, { event_id: hint && hint.event_id });\n };\n /**\n * @inheritDoc\n */\n BrowserBackend.prototype.eventFromMessage = function (message, level, hint) {\n if (level === void 0) { level = Severity.Info; }\n var event = {\n event_id: hint && hint.event_id,\n level: level,\n message: message,\n };\n if (this._options.attachStacktrace && hint && hint.syntheticException) {\n var stacktrace = _computeStackTrace(hint.syntheticException);\n var frames_1 = prepareFramesForEvent(stacktrace.stack);\n event.stacktrace = {\n frames: frames_1,\n };\n }\n return SyncPromise.resolve(event);\n };\n return BrowserBackend;\n}(BaseBackend));\nexport { BrowserBackend };\n//# sourceMappingURL=backend.js.map","export var SDK_NAME = 'sentry.javascript.browser';\nexport var SDK_VERSION = '5.6.2';\n//# sourceMappingURL=version.js.map","import * as tslib_1 from \"tslib\";\nimport { API, BaseClient } from '@sentry/core';\nimport { getGlobalObject, logger } from '@sentry/utils';\nimport { BrowserBackend } from './backend';\nimport { SDK_NAME, SDK_VERSION } from './version';\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nvar BrowserClient = /** @class */ (function (_super) {\n tslib_1.__extends(BrowserClient, _super);\n /**\n * Creates a new Browser SDK instance.\n *\n * @param options Configuration options for this SDK.\n */\n function BrowserClient(options) {\n if (options === void 0) { options = {}; }\n return _super.call(this, BrowserBackend, options) || this;\n }\n /**\n * @inheritDoc\n */\n BrowserClient.prototype._prepareEvent = function (event, scope, hint) {\n event.platform = event.platform || 'javascript';\n event.sdk = tslib_1.__assign({}, event.sdk, { name: SDK_NAME, packages: tslib_1.__spread(((event.sdk && event.sdk.packages) || []), [\n {\n name: 'npm:@sentry/browser',\n version: SDK_VERSION,\n },\n ]), version: SDK_VERSION });\n return _super.prototype._prepareEvent.call(this, event, scope, hint);\n };\n /**\n * Show a report dialog to the user to send feedback to a specific event.\n *\n * @param options Set individual options for the dialog\n */\n BrowserClient.prototype.showReportDialog = function (options) {\n if (options === void 0) { options = {}; }\n // doesn't work without a document (React Native)\n var document = getGlobalObject().document;\n if (!document) {\n return;\n }\n if (!this._isEnabled()) {\n logger.error('Trying to call showReportDialog with Sentry Client is disabled');\n return;\n }\n var dsn = options.dsn || this.getDsn();\n if (!options.eventId) {\n logger.error('Missing `eventId` option in showReportDialog call');\n return;\n }\n if (!dsn) {\n logger.error('Missing `Dsn` option in showReportDialog call');\n return;\n }\n var script = document.createElement('script');\n script.async = true;\n script.src = new API(dsn).getReportDialogEndpoint(options);\n if (options.onLoad) {\n script.onload = options.onLoad;\n }\n (document.head || document.body).appendChild(script);\n };\n return BrowserClient;\n}(BaseClient));\nexport { BrowserClient };\n//# sourceMappingURL=client.js.map","import * as tslib_1 from \"tslib\";\nimport { getCurrentHub } from '@sentry/hub';\n/**\n * This calls a function on the current hub.\n * @param method function to call on hub.\n * @param args to pass to function.\n */\nfunction callOnHub(method) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var hub = getCurrentHub();\n if (hub && hub[method]) {\n // tslint:disable-next-line:no-unsafe-any\n return hub[method].apply(hub, tslib_1.__spread(args));\n }\n throw new Error(\"No hub defined or \" + method + \" was not found on the hub, please open a bug report.\");\n}\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception An exception-like object.\n * @returns The generated eventId.\n */\nexport function captureException(exception) {\n var syntheticException;\n try {\n throw new Error('Sentry syntheticException');\n }\n catch (exception) {\n syntheticException = exception;\n }\n return callOnHub('captureException', exception, {\n originalException: exception,\n syntheticException: syntheticException,\n });\n}\n/**\n * Captures a message event and sends it to Sentry.\n *\n * @param message The message to send to Sentry.\n * @param level Define the level of the message.\n * @returns The generated eventId.\n */\nexport function captureMessage(message, level) {\n var syntheticException;\n try {\n throw new Error(message);\n }\n catch (exception) {\n syntheticException = exception;\n }\n return callOnHub('captureMessage', message, level, {\n originalException: message,\n syntheticException: syntheticException,\n });\n}\n/**\n * Captures a manually created event and sends it to Sentry.\n *\n * @param event The event to send to Sentry.\n * @returns The generated eventId.\n */\nexport function captureEvent(event) {\n return callOnHub('captureEvent', event);\n}\n/**\n * Callback to set context information onto the scope.\n * @param callback Callback function that receives Scope.\n */\nexport function configureScope(callback) {\n callOnHub('configureScope', callback);\n}\n/**\n * Records a new breadcrumb which will be attached to future events.\n *\n * Breadcrumbs will be added to subsequent events to provide more context on\n * user's actions prior to an error or crash.\n *\n * @param breadcrumb The breadcrumb to record.\n */\nexport function addBreadcrumb(breadcrumb) {\n callOnHub('addBreadcrumb', breadcrumb);\n}\n/**\n * Sets context data with the given name.\n * @param name of the context\n * @param context Any kind of data. This data will be normailzed.\n */\nexport function setContext(name, context) {\n callOnHub('setContext', name, context);\n}\n/**\n * Set an object that will be merged sent as extra data with the event.\n * @param extras Extras object to merge into current context.\n */\nexport function setExtras(extras) {\n callOnHub('setExtras', extras);\n}\n/**\n * Set an object that will be merged sent as tags data with the event.\n * @param tags Tags context object to merge into current context.\n */\nexport function setTags(tags) {\n callOnHub('setTags', tags);\n}\n/**\n * Set key:value that will be sent as extra data with the event.\n * @param key String of extra\n * @param extra Any kind of data. This data will be normailzed.\n */\nexport function setExtra(key, extra) {\n callOnHub('setExtra', key, extra);\n}\n/**\n * Set key:value that will be sent as tags data with the event.\n * @param key String key of tag\n * @param value String value of tag\n */\nexport function setTag(key, value) {\n callOnHub('setTag', key, value);\n}\n/**\n * Updates user context information for future events.\n *\n * @param user User context object to be set in the current context. Pass `null` to unset the user.\n */\nexport function setUser(user) {\n callOnHub('setUser', user);\n}\n/**\n * Creates a new scope with and executes the given operation within.\n * The scope is automatically removed once the operation\n * finishes or throws.\n *\n * This is essentially a convenience function for:\n *\n * pushScope();\n * callback();\n * popScope();\n *\n * @param callback that will be enclosed into push/popScope.\n */\nexport function withScope(callback) {\n callOnHub('withScope', callback);\n}\n/**\n * Calls a function on the latest client. Use this with caution, it's meant as\n * in \"internal\" helper so we don't need to expose every possible function in\n * the shim. It is not guaranteed that the client actually implements the\n * function.\n *\n * @param method The method to call on the client/client.\n * @param args Arguments to pass to the client/fontend.\n */\nexport function _callOnClient(method) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n callOnHub.apply(void 0, tslib_1.__spread(['_invokeClient', method], args));\n}\n//# sourceMappingURL=index.js.map","import * as tslib_1 from \"tslib\";\nimport { captureException, getCurrentHub, withScope } from '@sentry/core';\nimport { addExceptionTypeValue, isString, normalize } from '@sentry/utils';\nvar debounceDuration = 1000;\nvar keypressTimeout;\nvar lastCapturedEvent;\nvar ignoreOnError = 0;\n/**\n * @hidden\n */\nexport function shouldIgnoreOnError() {\n return ignoreOnError > 0;\n}\n/**\n * @hidden\n */\nexport function ignoreNextOnError() {\n // onerror should trigger before setTimeout\n ignoreOnError += 1;\n setTimeout(function () {\n ignoreOnError -= 1;\n });\n}\n/**\n * Instruments the given function and sends an event to Sentry every time the\n * function throws an exception.\n *\n * @param fn A function to wrap.\n * @returns The wrapped function.\n * @hidden\n */\nexport function wrap(fn, options, before) {\n if (options === void 0) { options = {}; }\n // tslint:disable-next-line:strict-type-predicates\n if (typeof fn !== 'function') {\n return fn;\n }\n try {\n // We don't wanna wrap it twice\n if (fn.__sentry__) {\n return fn;\n }\n // If this has already been wrapped in the past, return that wrapped function\n if (fn.__sentry_wrapped__) {\n return fn.__sentry_wrapped__;\n }\n }\n catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n // Bail on wrapping and return the function as-is (defers to window.onerror).\n return fn;\n }\n var sentryWrapped = function () {\n // tslint:disable-next-line:strict-type-predicates\n if (before && typeof before === 'function') {\n before.apply(this, arguments);\n }\n var args = Array.prototype.slice.call(arguments);\n // tslint:disable:no-unsafe-any\n try {\n var wrappedArguments = args.map(function (arg) { return wrap(arg, options); });\n if (fn.handleEvent) {\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means the sentry.javascript SDK caught an error invoking your application code. This\n // is expected behavior and NOT indicative of a bug with sentry.javascript.\n return fn.handleEvent.apply(this, wrappedArguments);\n }\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means the sentry.javascript SDK caught an error invoking your application code. This\n // is expected behavior and NOT indicative of a bug with sentry.javascript.\n return fn.apply(this, wrappedArguments);\n // tslint:enable:no-unsafe-any\n }\n catch (ex) {\n ignoreNextOnError();\n withScope(function (scope) {\n scope.addEventProcessor(function (event) {\n var processedEvent = tslib_1.__assign({}, event);\n if (options.mechanism) {\n addExceptionTypeValue(processedEvent, undefined, undefined, options.mechanism);\n }\n processedEvent.extra = tslib_1.__assign({}, processedEvent.extra, { arguments: normalize(args, 3) });\n return processedEvent;\n });\n captureException(ex);\n });\n throw ex;\n }\n };\n // Accessing some objects may throw\n // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n try {\n for (var property in fn) {\n if (Object.prototype.hasOwnProperty.call(fn, property)) {\n sentryWrapped[property] = fn[property];\n }\n }\n }\n catch (_oO) { } // tslint:disable-line:no-empty\n fn.prototype = fn.prototype || {};\n sentryWrapped.prototype = fn.prototype;\n Object.defineProperty(fn, '__sentry_wrapped__', {\n enumerable: false,\n value: sentryWrapped,\n });\n // Signal that this function has been wrapped/filled already\n // for both debugging and to prevent it to being wrapped/filled twice\n Object.defineProperties(sentryWrapped, {\n __sentry__: {\n enumerable: false,\n value: true,\n },\n __sentry_original__: {\n enumerable: false,\n value: fn,\n },\n });\n // Restore original function name (not all browsers allow that)\n try {\n var descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name');\n if (descriptor.configurable) {\n Object.defineProperty(sentryWrapped, 'name', {\n get: function () {\n return fn.name;\n },\n });\n }\n }\n catch (_oO) {\n /*no-empty*/\n }\n return sentryWrapped;\n}\nvar debounceTimer = 0;\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n * @param eventName the event name (e.g. \"click\")\n * @returns wrapped breadcrumb events handler\n * @hidden\n */\nexport function breadcrumbEventHandler(eventName, debounce) {\n if (debounce === void 0) { debounce = false; }\n return function (event) {\n // reset keypress timeout; e.g. triggering a 'click' after\n // a 'keypress' will reset the keypress debounce so that a new\n // set of keypresses can be recorded\n keypressTimeout = undefined;\n // It's possible this handler might trigger multiple times for the same\n // event (e.g. event propagation through node ancestors). Ignore if we've\n // already captured the event.\n if (!event || lastCapturedEvent === event) {\n return;\n }\n lastCapturedEvent = event;\n var captureBreadcrumb = function () {\n // try/catch both:\n // - accessing event.target (see getsentry/raven-js#838, #768)\n // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n // can throw an exception in some circumstances.\n var target;\n try {\n target = event.target ? _htmlTreeAsString(event.target) : _htmlTreeAsString(event);\n }\n catch (e) {\n target = '';\n }\n if (target.length === 0) {\n return;\n }\n getCurrentHub().addBreadcrumb({\n category: \"ui.\" + eventName,\n message: target,\n }, {\n event: event,\n name: eventName,\n });\n };\n if (debounceTimer) {\n clearTimeout(debounceTimer);\n }\n if (debounce) {\n debounceTimer = setTimeout(captureBreadcrumb);\n }\n else {\n captureBreadcrumb();\n }\n };\n}\n/**\n * Wraps addEventListener to capture keypress UI events\n * @returns wrapped keypress events handler\n * @hidden\n */\nexport function keypressEventHandler() {\n // TODO: if somehow user switches keypress target before\n // debounce timeout is triggered, we will only capture\n // a single breadcrumb from the FIRST target (acceptable?)\n return function (event) {\n var target;\n try {\n target = event.target;\n }\n catch (e) {\n // just accessing event properties can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/raven-js/issues/838\n return;\n }\n var tagName = target && target.tagName;\n // only consider keypress events on actual input elements\n // this will disregard keypresses targeting body (e.g. tabbing\n // through elements, hotkeys, etc)\n if (!tagName || (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable)) {\n return;\n }\n // record first keypress in a series, but ignore subsequent\n // keypresses until debounce clears\n if (!keypressTimeout) {\n breadcrumbEventHandler('input')(event);\n }\n clearTimeout(keypressTimeout);\n keypressTimeout = setTimeout(function () {\n keypressTimeout = undefined;\n }, debounceDuration);\n };\n}\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction _htmlTreeAsString(elem) {\n var currentElem = elem;\n var MAX_TRAVERSE_HEIGHT = 5;\n var MAX_OUTPUT_LEN = 80;\n var out = [];\n var height = 0;\n var len = 0;\n var separator = ' > ';\n var sepLength = separator.length;\n var nextStr;\n while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n nextStr = _htmlElementAsString(currentElem);\n // bail out if\n // - nextStr is the 'html' element\n // - the length of the string that would be created exceeds MAX_OUTPUT_LEN\n // (ignore this limit if we are on the first iteration)\n if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN)) {\n break;\n }\n out.push(nextStr);\n len += nextStr.length;\n currentElem = currentElem.parentNode;\n }\n return out.reverse().join(separator);\n}\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction _htmlElementAsString(elem) {\n var out = [];\n var className;\n var classes;\n var key;\n var attr;\n var i;\n if (!elem || !elem.tagName) {\n return '';\n }\n out.push(elem.tagName.toLowerCase());\n if (elem.id) {\n out.push(\"#\" + elem.id);\n }\n className = elem.className;\n if (className && isString(className)) {\n classes = className.split(/\\s+/);\n for (i = 0; i < classes.length; i++) {\n out.push(\".\" + classes[i]);\n }\n }\n var attrWhitelist = ['type', 'name', 'title', 'alt'];\n for (i = 0; i < attrWhitelist.length; i++) {\n key = attrWhitelist[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.push(\"[\" + key + \"=\\\"\" + attr + \"\\\"]\");\n }\n }\n return out.join('');\n}\n//# sourceMappingURL=helpers.js.map","import { fill, getGlobalObject } from '@sentry/utils';\nimport { wrap } from '../helpers';\n/** Wrap timer functions and event targets to catch errors and provide better meta data */\nvar TryCatch = /** @class */ (function () {\n function TryCatch() {\n /** JSDoc */\n this._ignoreOnError = 0;\n /**\n * @inheritDoc\n */\n this.name = TryCatch.id;\n }\n /** JSDoc */\n TryCatch.prototype._wrapTimeFunction = function (original) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var originalCallback = args[0];\n args[0] = wrap(originalCallback, {\n mechanism: {\n data: { function: getFunctionName(original) },\n handled: true,\n type: 'instrument',\n },\n });\n return original.apply(this, args);\n };\n };\n /** JSDoc */\n TryCatch.prototype._wrapRAF = function (original) {\n return function (callback) {\n return original(wrap(callback, {\n mechanism: {\n data: {\n function: 'requestAnimationFrame',\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n }));\n };\n };\n /** JSDoc */\n TryCatch.prototype._wrapEventTarget = function (target) {\n var global = getGlobalObject();\n var proto = global[target] && global[target].prototype;\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n fill(proto, 'addEventListener', function (original) {\n return function (eventName, fn, options) {\n try {\n // tslint:disable-next-line:no-unbound-method strict-type-predicates\n if (typeof fn.handleEvent === 'function') {\n fn.handleEvent = wrap(fn.handleEvent.bind(fn), {\n mechanism: {\n data: {\n function: 'handleEvent',\n handler: getFunctionName(fn),\n target: target,\n },\n handled: true,\n type: 'instrument',\n },\n });\n }\n }\n catch (err) {\n // can sometimes get 'Permission denied to access property \"handle Event'\n }\n return original.call(this, eventName, wrap(fn, {\n mechanism: {\n data: {\n function: 'addEventListener',\n handler: getFunctionName(fn),\n target: target,\n },\n handled: true,\n type: 'instrument',\n },\n }), options);\n };\n });\n fill(proto, 'removeEventListener', function (original) {\n return function (eventName, fn, options) {\n var callback = fn;\n try {\n callback = callback && (callback.__sentry_wrapped__ || callback);\n }\n catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return original.call(this, eventName, callback, options);\n };\n });\n };\n /**\n * Wrap timer functions and event targets to catch errors\n * and provide better metadata.\n */\n TryCatch.prototype.setupOnce = function () {\n this._ignoreOnError = this._ignoreOnError;\n var global = getGlobalObject();\n fill(global, 'setTimeout', this._wrapTimeFunction.bind(this));\n fill(global, 'setInterval', this._wrapTimeFunction.bind(this));\n fill(global, 'requestAnimationFrame', this._wrapRAF.bind(this));\n [\n 'EventTarget',\n 'Window',\n 'Node',\n 'ApplicationCache',\n 'AudioTrackList',\n 'ChannelMergerNode',\n 'CryptoOperation',\n 'EventSource',\n 'FileReader',\n 'HTMLUnknownElement',\n 'IDBDatabase',\n 'IDBRequest',\n 'IDBTransaction',\n 'KeyOperation',\n 'MediaController',\n 'MessagePort',\n 'ModalWindow',\n 'Notification',\n 'SVGElementInstance',\n 'Screen',\n 'TextTrack',\n 'TextTrackCue',\n 'TextTrackList',\n 'WebSocket',\n 'WebSocketWorker',\n 'Worker',\n 'XMLHttpRequest',\n 'XMLHttpRequestEventTarget',\n 'XMLHttpRequestUpload',\n ].forEach(this._wrapEventTarget.bind(this));\n };\n /**\n * @inheritDoc\n */\n TryCatch.id = 'TryCatch';\n return TryCatch;\n}());\nexport { TryCatch };\n/**\n * Safely extract function name from itself\n */\nfunction getFunctionName(fn) {\n try {\n return (fn && fn.name) || '';\n }\n catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n return '';\n }\n}\n//# sourceMappingURL=trycatch.js.map","import * as tslib_1 from \"tslib\";\nimport { API, getCurrentHub } from '@sentry/core';\nimport { Severity } from '@sentry/types';\nimport { fill, getEventDescription, getGlobalObject, isString, logger, normalize, parseUrl, safeJoin, supportsHistory, supportsNativeFetch, } from '@sentry/utils';\nimport { breadcrumbEventHandler, keypressEventHandler, wrap } from '../helpers';\nvar global = getGlobalObject();\nvar lastHref;\n/** Default Breadcrumbs instrumentations */\nvar Breadcrumbs = /** @class */ (function () {\n /**\n * @inheritDoc\n */\n function Breadcrumbs(options) {\n /**\n * @inheritDoc\n */\n this.name = Breadcrumbs.id;\n this._options = tslib_1.__assign({ console: true, dom: true, fetch: true, history: true, sentry: true, xhr: true }, options);\n }\n /** JSDoc */\n Breadcrumbs.prototype._instrumentConsole = function () {\n if (!('console' in global)) {\n return;\n }\n ['debug', 'info', 'warn', 'error', 'log', 'assert'].forEach(function (level) {\n if (!(level in global.console)) {\n return;\n }\n fill(global.console, level, function (originalConsoleLevel) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var breadcrumbData = {\n category: 'console',\n data: {\n extra: {\n arguments: normalize(args, 3),\n },\n logger: 'console',\n },\n level: Severity.fromString(level),\n message: safeJoin(args, ' '),\n };\n if (level === 'assert') {\n if (args[0] === false) {\n breadcrumbData.message = \"Assertion failed: \" + (safeJoin(args.slice(1), ' ') || 'console.assert');\n breadcrumbData.data.extra.arguments = normalize(args.slice(1), 3);\n }\n }\n Breadcrumbs.addBreadcrumb(breadcrumbData, {\n input: args,\n level: level,\n });\n // this fails for some browsers. :(\n if (originalConsoleLevel) {\n Function.prototype.apply.call(originalConsoleLevel, global.console, args);\n }\n };\n });\n });\n };\n /** JSDoc */\n Breadcrumbs.prototype._instrumentDOM = function () {\n if (!('document' in global)) {\n return;\n }\n // Capture breadcrumbs from any click that is unhandled / bubbled up all the way\n // to the document. Do this before we instrument addEventListener.\n global.document.addEventListener('click', breadcrumbEventHandler('click'), false);\n global.document.addEventListener('keypress', keypressEventHandler(), false);\n // After hooking into document bubbled up click and keypresses events, we also hook into user handled click & keypresses.\n ['EventTarget', 'Node'].forEach(function (target) {\n var proto = global[target] && global[target].prototype;\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n fill(proto, 'addEventListener', function (original) {\n return function (eventName, fn, options) {\n if (fn && fn.handleEvent) {\n if (eventName === 'click') {\n fill(fn, 'handleEvent', function (innerOriginal) {\n return function (event) {\n breadcrumbEventHandler('click')(event);\n return innerOriginal.call(this, event);\n };\n });\n }\n if (eventName === 'keypress') {\n fill(fn, 'handleEvent', function (innerOriginal) {\n return function (event) {\n keypressEventHandler()(event);\n return innerOriginal.call(this, event);\n };\n });\n }\n }\n else {\n if (eventName === 'click') {\n breadcrumbEventHandler('click', true)(this);\n }\n if (eventName === 'keypress') {\n keypressEventHandler()(this);\n }\n }\n return original.call(this, eventName, fn, options);\n };\n });\n fill(proto, 'removeEventListener', function (original) {\n return function (eventName, fn, options) {\n var callback = fn;\n try {\n callback = callback && (callback.__sentry_wrapped__ || callback);\n }\n catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return original.call(this, eventName, callback, options);\n };\n });\n });\n };\n /** JSDoc */\n Breadcrumbs.prototype._instrumentFetch = function () {\n if (!supportsNativeFetch()) {\n return;\n }\n fill(global, 'fetch', function (originalFetch) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var fetchInput = args[0];\n var method = 'GET';\n var url;\n if (typeof fetchInput === 'string') {\n url = fetchInput;\n }\n else if ('Request' in global && fetchInput instanceof Request) {\n url = fetchInput.url;\n if (fetchInput.method) {\n method = fetchInput.method;\n }\n }\n else {\n url = String(fetchInput);\n }\n if (args[1] && args[1].method) {\n method = args[1].method;\n }\n var client = getCurrentHub().getClient();\n var dsn = client && client.getDsn();\n if (dsn) {\n var filterUrl = new API(dsn).getStoreEndpoint();\n // if Sentry key appears in URL, don't capture it as a request\n // but rather as our own 'sentry' type breadcrumb\n if (filterUrl && url.includes(filterUrl)) {\n if (method === 'POST' && args[1] && args[1].body) {\n addSentryBreadcrumb(args[1].body);\n }\n return originalFetch.apply(global, args);\n }\n }\n var fetchData = {\n method: isString(method) ? method.toUpperCase() : method,\n url: url,\n };\n return originalFetch\n .apply(global, args)\n .then(function (response) {\n fetchData.status_code = response.status;\n Breadcrumbs.addBreadcrumb({\n category: 'fetch',\n data: fetchData,\n type: 'http',\n }, {\n input: args,\n response: response,\n });\n return response;\n })\n .catch(function (error) {\n Breadcrumbs.addBreadcrumb({\n category: 'fetch',\n data: fetchData,\n level: Severity.Error,\n type: 'http',\n }, {\n error: error,\n input: args,\n });\n throw error;\n });\n };\n });\n };\n /** JSDoc */\n Breadcrumbs.prototype._instrumentHistory = function () {\n var _this = this;\n if (!supportsHistory()) {\n return;\n }\n var captureUrlChange = function (from, to) {\n var parsedLoc = parseUrl(global.location.href);\n var parsedTo = parseUrl(to);\n var parsedFrom = parseUrl(from);\n // Initial pushState doesn't provide `from` information\n if (!parsedFrom.path) {\n parsedFrom = parsedLoc;\n }\n // because onpopstate only tells you the \"new\" (to) value of location.href, and\n // not the previous (from) value, we need to track the value of the current URL\n // state ourselves\n lastHref = to;\n // Use only the path component of the URL if the URL matches the current\n // document (almost all the time when using pushState)\n if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) {\n // tslint:disable-next-line:no-parameter-reassignment\n to = parsedTo.relative;\n }\n if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) {\n // tslint:disable-next-line:no-parameter-reassignment\n from = parsedFrom.relative;\n }\n Breadcrumbs.addBreadcrumb({\n category: 'navigation',\n data: {\n from: from,\n to: to,\n },\n });\n };\n // record navigation (URL) changes\n var oldOnPopState = global.onpopstate;\n global.onpopstate = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var currentHref = global.location.href;\n captureUrlChange(lastHref, currentHref);\n if (oldOnPopState) {\n return oldOnPopState.apply(_this, args);\n }\n };\n /**\n * @hidden\n */\n function historyReplacementFunction(originalHistoryFunction) {\n // note history.pushState.length is 0; intentionally not declaring\n // params to preserve 0 arity\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var url = args.length > 2 ? args[2] : undefined;\n // url argument is optional\n if (url) {\n // coerce to string (this is what pushState does)\n captureUrlChange(lastHref, String(url));\n }\n return originalHistoryFunction.apply(this, args);\n };\n }\n fill(global.history, 'pushState', historyReplacementFunction);\n fill(global.history, 'replaceState', historyReplacementFunction);\n };\n /** JSDoc */\n Breadcrumbs.prototype._instrumentXHR = function () {\n if (!('XMLHttpRequest' in global)) {\n return;\n }\n /**\n * @hidden\n */\n function wrapProp(prop, xhr) {\n // TODO: Fix XHR types\n if (prop in xhr && typeof xhr[prop] === 'function') {\n fill(xhr, prop, function (original) {\n return wrap(original, {\n mechanism: {\n data: {\n function: prop,\n handler: (original && original.name) || '',\n },\n handled: true,\n type: 'instrument',\n },\n });\n });\n }\n }\n var xhrproto = XMLHttpRequest.prototype;\n fill(xhrproto, 'open', function (originalOpen) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var url = args[1];\n this.__sentry_xhr__ = {\n method: isString(args[0]) ? args[0].toUpperCase() : args[0],\n url: args[1],\n };\n var client = getCurrentHub().getClient();\n var dsn = client && client.getDsn();\n if (dsn) {\n var filterUrl = new API(dsn).getStoreEndpoint();\n // if Sentry key appears in URL, don't capture it as a request\n // but rather as our own 'sentry' type breadcrumb\n if (isString(url) && (filterUrl && url.includes(filterUrl))) {\n this.__sentry_own_request__ = true;\n }\n }\n return originalOpen.apply(this, args);\n };\n });\n fill(xhrproto, 'send', function (originalSend) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var xhr = this; // tslint:disable-line:no-this-assignment\n if (xhr.__sentry_own_request__) {\n addSentryBreadcrumb(args[0]);\n }\n /**\n * @hidden\n */\n function onreadystatechangeHandler() {\n if (xhr.readyState === 4) {\n if (xhr.__sentry_own_request__) {\n return;\n }\n try {\n // touching statusCode in some platforms throws\n // an exception\n if (xhr.__sentry_xhr__) {\n xhr.__sentry_xhr__.status_code = xhr.status;\n }\n }\n catch (e) {\n /* do nothing */\n }\n Breadcrumbs.addBreadcrumb({\n category: 'xhr',\n data: xhr.__sentry_xhr__,\n type: 'http',\n }, {\n xhr: xhr,\n });\n }\n }\n ['onload', 'onerror', 'onprogress'].forEach(function (prop) {\n wrapProp(prop, xhr);\n });\n if ('onreadystatechange' in xhr && typeof xhr.onreadystatechange === 'function') {\n fill(xhr, 'onreadystatechange', function (original) {\n return wrap(original, {\n mechanism: {\n data: {\n function: 'onreadystatechange',\n handler: (original && original.name) || '',\n },\n handled: true,\n type: 'instrument',\n },\n }, onreadystatechangeHandler);\n });\n }\n else {\n // if onreadystatechange wasn't actually set by the page on this xhr, we\n // are free to set our own and capture the breadcrumb\n xhr.onreadystatechange = onreadystatechangeHandler;\n }\n return originalSend.apply(this, args);\n };\n });\n };\n /**\n * Helper that checks if integration is enabled on the client.\n * @param breadcrumb Breadcrumb\n * @param hint BreadcrumbHint\n */\n Breadcrumbs.addBreadcrumb = function (breadcrumb, hint) {\n if (getCurrentHub().getIntegration(Breadcrumbs)) {\n getCurrentHub().addBreadcrumb(breadcrumb, hint);\n }\n };\n /**\n * Instrument browser built-ins w/ breadcrumb capturing\n * - Console API\n * - DOM API (click/typing)\n * - XMLHttpRequest API\n * - Fetch API\n * - History API\n */\n Breadcrumbs.prototype.setupOnce = function () {\n if (this._options.console) {\n this._instrumentConsole();\n }\n if (this._options.dom) {\n this._instrumentDOM();\n }\n if (this._options.xhr) {\n this._instrumentXHR();\n }\n if (this._options.fetch) {\n this._instrumentFetch();\n }\n if (this._options.history) {\n this._instrumentHistory();\n }\n };\n /**\n * @inheritDoc\n */\n Breadcrumbs.id = 'Breadcrumbs';\n return Breadcrumbs;\n}());\nexport { Breadcrumbs };\n/** JSDoc */\nfunction addSentryBreadcrumb(serializedData) {\n // There's always something that can go wrong with deserialization...\n try {\n var event_1 = JSON.parse(serializedData);\n Breadcrumbs.addBreadcrumb({\n category: 'sentry',\n event_id: event_1.event_id,\n level: event_1.level || Severity.fromString('error'),\n message: getEventDescription(event_1),\n }, {\n event: event_1,\n });\n }\n catch (_oO) {\n logger.error('Error while adding sentry type breadcrumb');\n }\n}\n//# sourceMappingURL=breadcrumbs.js.map","import * as tslib_1 from \"tslib\";\nimport { getCurrentHub } from '@sentry/core';\nimport { Severity } from '@sentry/types';\nimport { addExceptionTypeValue, isPrimitive, isString, keysToEventMessage, logger, normalize, normalizeToSize, truncate, } from '@sentry/utils';\nimport { shouldIgnoreOnError } from '../helpers';\nimport { eventFromStacktrace } from '../parsers';\nimport { _installGlobalHandler, _installGlobalUnhandledRejectionHandler, _subscribe, } from '../tracekit';\n/** Global handlers */\nvar GlobalHandlers = /** @class */ (function () {\n /** JSDoc */\n function GlobalHandlers(options) {\n /**\n * @inheritDoc\n */\n this.name = GlobalHandlers.id;\n this._options = tslib_1.__assign({ onerror: true, onunhandledrejection: true }, options);\n }\n /**\n * @inheritDoc\n */\n GlobalHandlers.prototype.setupOnce = function () {\n Error.stackTraceLimit = 50;\n _subscribe(function (stack, _, error) {\n if (shouldIgnoreOnError()) {\n return;\n }\n var self = getCurrentHub().getIntegration(GlobalHandlers);\n if (self) {\n getCurrentHub().captureEvent(self._eventFromGlobalHandler(stack, error), {\n data: { stack: stack },\n originalException: error,\n });\n }\n });\n if (this._options.onerror) {\n logger.log('Global Handler attached: onerror');\n _installGlobalHandler();\n }\n if (this._options.onunhandledrejection) {\n logger.log('Global Handler attached: onunhandledrejection');\n _installGlobalUnhandledRejectionHandler();\n }\n };\n /**\n * This function creates an Event from an TraceKitStackTrace.\n *\n * @param stacktrace TraceKitStackTrace to be converted to an Event.\n */\n GlobalHandlers.prototype._eventFromGlobalHandler = function (stacktrace, error) {\n if (!isString(stacktrace.message) && stacktrace.mechanism !== 'onunhandledrejection') {\n // There are cases where stacktrace.message is an Event object\n // https://github.com/getsentry/sentry-javascript/issues/1949\n // In this specific case we try to extract stacktrace.message.error.message\n var message = stacktrace.message;\n stacktrace.message =\n message.error && isString(message.error.message) ? message.error.message : 'No error message';\n }\n if (stacktrace.mechanism === 'onunhandledrejection' && (stacktrace.incomplete || stacktrace.mode === 'failed')) {\n return this._eventFromIncompleteRejection(stacktrace, error);\n }\n var event = eventFromStacktrace(stacktrace);\n var data = {\n mode: stacktrace.mode,\n };\n if (stacktrace.message) {\n data.message = stacktrace.message;\n }\n if (stacktrace.name) {\n data.name = stacktrace.name;\n }\n var client = getCurrentHub().getClient();\n var maxValueLength = (client && client.getOptions().maxValueLength) || 250;\n var fallbackValue = stacktrace.original\n ? truncate(JSON.stringify(normalize(stacktrace.original)), maxValueLength)\n : '';\n var fallbackType = stacktrace.mechanism === 'onunhandledrejection' ? 'UnhandledRejection' : 'Error';\n // This makes sure we have type/value in every exception\n addExceptionTypeValue(event, fallbackValue, fallbackType, {\n data: data,\n handled: false,\n type: stacktrace.mechanism,\n });\n return event;\n };\n /**\n * This function creates an Event from an TraceKitStackTrace that has part of it missing.\n *\n * @param stacktrace TraceKitStackTrace to be converted to an Event.\n */\n GlobalHandlers.prototype._eventFromIncompleteRejection = function (stacktrace, error) {\n var event = {\n level: Severity.Error,\n };\n if (isPrimitive(error)) {\n event.exception = {\n values: [\n {\n type: 'UnhandledRejection',\n value: \"Non-Error promise rejection captured with value: \" + error,\n },\n ],\n };\n }\n else {\n event.exception = {\n values: [\n {\n type: 'UnhandledRejection',\n value: \"Non-Error promise rejection captured with keys: \" + keysToEventMessage(Object.keys(error).sort()),\n },\n ],\n };\n event.extra = {\n __serialized__: normalizeToSize(error),\n };\n }\n if (event.exception.values && event.exception.values[0]) {\n event.exception.values[0].mechanism = {\n data: tslib_1.__assign({ mode: stacktrace.mode }, (stacktrace.incomplete && { incomplete: stacktrace.incomplete }), (stacktrace.message && { message: stacktrace.message }), (stacktrace.name && { name: stacktrace.name })),\n handled: false,\n type: stacktrace.mechanism,\n };\n }\n return event;\n };\n /**\n * @inheritDoc\n */\n GlobalHandlers.id = 'GlobalHandlers';\n return GlobalHandlers;\n}());\nexport { GlobalHandlers };\n//# sourceMappingURL=globalhandlers.js.map","import * as tslib_1 from \"tslib\";\nimport { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { exceptionFromStacktrace } from '../parsers';\nimport { _computeStackTrace } from '../tracekit';\nvar DEFAULT_KEY = 'cause';\nvar DEFAULT_LIMIT = 5;\n/** Adds SDK info to an event. */\nvar LinkedErrors = /** @class */ (function () {\n /**\n * @inheritDoc\n */\n function LinkedErrors(options) {\n if (options === void 0) { options = {}; }\n /**\n * @inheritDoc\n */\n this.name = LinkedErrors.id;\n this._key = options.key || DEFAULT_KEY;\n this._limit = options.limit || DEFAULT_LIMIT;\n }\n /**\n * @inheritDoc\n */\n LinkedErrors.prototype.setupOnce = function () {\n addGlobalEventProcessor(function (event, hint) {\n var self = getCurrentHub().getIntegration(LinkedErrors);\n if (self) {\n return self._handler(event, hint);\n }\n return event;\n });\n };\n /**\n * @inheritDoc\n */\n LinkedErrors.prototype._handler = function (event, hint) {\n if (!event.exception || !event.exception.values || !hint || !(hint.originalException instanceof Error)) {\n return event;\n }\n var linkedErrors = this._walkErrorTree(hint.originalException, this._key);\n event.exception.values = tslib_1.__spread(linkedErrors, event.exception.values);\n return event;\n };\n /**\n * @inheritDoc\n */\n LinkedErrors.prototype._walkErrorTree = function (error, key, stack) {\n if (stack === void 0) { stack = []; }\n if (!(error[key] instanceof Error) || stack.length + 1 >= this._limit) {\n return stack;\n }\n var stacktrace = _computeStackTrace(error[key]);\n var exception = exceptionFromStacktrace(stacktrace);\n return this._walkErrorTree(error[key], key, tslib_1.__spread([exception], stack));\n };\n /**\n * @inheritDoc\n */\n LinkedErrors.id = 'LinkedErrors';\n return LinkedErrors;\n}());\nexport { LinkedErrors };\n//# sourceMappingURL=linkederrors.js.map","import * as tslib_1 from \"tslib\";\nimport { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { getGlobalObject } from '@sentry/utils';\nvar global = getGlobalObject();\n/** UserAgent */\nvar UserAgent = /** @class */ (function () {\n function UserAgent() {\n /**\n * @inheritDoc\n */\n this.name = UserAgent.id;\n }\n /**\n * @inheritDoc\n */\n UserAgent.prototype.setupOnce = function () {\n addGlobalEventProcessor(function (event) {\n if (getCurrentHub().getIntegration(UserAgent)) {\n if (!global.navigator || !global.location) {\n return event;\n }\n // HTTP Interface: https://docs.sentry.io/clientdev/interfaces/http/?platform=javascript\n var request = event.request || {};\n request.url = request.url || global.location.href;\n request.headers = request.headers || {};\n request.headers['User-Agent'] = global.navigator.userAgent;\n return tslib_1.__assign({}, event, { request: request });\n }\n return event;\n });\n };\n /**\n * @inheritDoc\n */\n UserAgent.id = 'UserAgent';\n return UserAgent;\n}());\nexport { UserAgent };\n//# sourceMappingURL=useragent.js.map","import { getCurrentHub, initAndBind, Integrations as CoreIntegrations } from '@sentry/core';\nimport { getGlobalObject } from '@sentry/utils';\nimport { BrowserClient } from './client';\nimport { wrap as internalWrap } from './helpers';\nimport { Breadcrumbs, GlobalHandlers, LinkedErrors, TryCatch, UserAgent } from './integrations';\nexport var defaultIntegrations = [\n new CoreIntegrations.InboundFilters(),\n new CoreIntegrations.FunctionToString(),\n new TryCatch(),\n new Breadcrumbs(),\n new GlobalHandlers(),\n new LinkedErrors(),\n new UserAgent(),\n];\n/**\n * The Sentry Browser SDK Client.\n *\n * To use this SDK, call the {@link init} function as early as possible when\n * loading the web page. To set context information or send manual events, use\n * the provided methods.\n *\n * @example\n *\n * ```\n *\n * import { init } from '@sentry/browser';\n *\n * init({\n * dsn: '__DSN__',\n * // ...\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { configureScope } from '@sentry/browser';\n * configureScope((scope: Scope) => {\n * scope.setExtra({ battery: 0.7 });\n * scope.setTag({ user_mode: 'admin' });\n * scope.setUser({ id: '4711' });\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { addBreadcrumb } from '@sentry/browser';\n * addBreadcrumb({\n * message: 'My Breadcrumb',\n * // ...\n * });\n * ```\n *\n * @example\n *\n * ```\n *\n * import * as Sentry from '@sentry/browser';\n * Sentry.captureMessage('Hello, world!');\n * Sentry.captureException(new Error('Good bye'));\n * Sentry.captureEvent({\n * message: 'Manual',\n * stacktrace: [\n * // ...\n * ],\n * });\n * ```\n *\n * @see {@link BrowserOptions} for documentation on configuration options.\n */\nexport function init(options) {\n if (options === void 0) { options = {}; }\n if (options.defaultIntegrations === undefined) {\n options.defaultIntegrations = defaultIntegrations;\n }\n if (options.release === undefined) {\n var window_1 = getGlobalObject();\n // This supports the variable that sentry-webpack-plugin injects\n if (window_1.SENTRY_RELEASE && window_1.SENTRY_RELEASE.id) {\n options.release = window_1.SENTRY_RELEASE.id;\n }\n }\n initAndBind(BrowserClient, options);\n}\n/**\n * Present the user with a report dialog.\n *\n * @param options Everything is optional, we try to fetch all info need from the global scope.\n */\nexport function showReportDialog(options) {\n if (options === void 0) { options = {}; }\n if (!options.eventId) {\n options.eventId = getCurrentHub().lastEventId();\n }\n var client = getCurrentHub().getClient();\n if (client) {\n client.showReportDialog(options);\n }\n}\n/**\n * This is the getter for lastEventId.\n *\n * @returns The last event id of a captured event.\n */\nexport function lastEventId() {\n return getCurrentHub().lastEventId();\n}\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function forceLoad() {\n // Noop\n}\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function onLoad(callback) {\n callback();\n}\n/**\n * A promise that resolves when all current events have been sent.\n * If you provide a timeout and the queue takes longer to drain the promise returns false.\n *\n * @param timeout Maximum time in ms the client should wait.\n */\nexport function flush(timeout) {\n var client = getCurrentHub().getClient();\n if (client) {\n return client.flush(timeout);\n }\n return Promise.reject(false);\n}\n/**\n * A promise that resolves when all current events have been sent.\n * If you provide a timeout and the queue takes longer to drain the promise returns false.\n *\n * @param timeout Maximum time in ms the client should wait.\n */\nexport function close(timeout) {\n var client = getCurrentHub().getClient();\n if (client) {\n return client.close(timeout);\n }\n return Promise.reject(false);\n}\n/**\n * Wrap code within a try/catch block so the SDK is able to capture errors.\n *\n * @param fn A function to wrap.\n *\n * @returns The result of wrapped function call.\n */\nexport function wrap(fn) {\n // tslint:disable-next-line: no-unsafe-any\n return internalWrap(fn)();\n}\n//# sourceMappingURL=sdk.js.map","import { getCurrentHub } from '@sentry/hub';\nimport { logger } from '@sentry/utils';\n/**\n * Internal function to create a new SDK client instance. The client is\n * installed and then bound to the current scope.\n *\n * @param clientClass The client class to instanciate.\n * @param options Options to pass to the client.\n */\nexport function initAndBind(clientClass, options) {\n if (options.debug === true) {\n logger.enable();\n }\n getCurrentHub().bindClient(new clientClass(options));\n}\n//# sourceMappingURL=sdk.js.map","import * as SentryBrowser from \"@sentry/browser\";\nimport * as logging from \"util/logging\";\n// This method returns whether an error is coming from the search method of\n// monaco editor or not.\n// We want to filter this specific error since the stacktrace might contain\n// user data.\n// More details in: PLAT-3117\nconst isMonacoSearchRegexError = (event) => {\n if (event.exception && event.exception.values) {\n // Get the first exception value.\n const exceptionValue = event.exception.values[0];\n if (exceptionValue && exceptionValue.stacktrace) {\n const { frames } = exceptionValue.stacktrace;\n if (frames && frames.length > 1) {\n // Get the last and the second last frame of the exception\n // stacktrace.\n const lastFrame = frames[frames.length - 1];\n const secondLastFrame = frames[frames.length - 2];\n // Return true if the lastFrame function name is `RegExp.exec`\n // and if the secondLastFrame function is the Monaco one.\n return (lastFrame.function === \"RegExp.exec\" &&\n secondLastFrame.function &&\n secondLastFrame.function.includes(\"Searcher.next\"));\n }\n }\n }\n return false;\n};\n// We limit the maximum number of Sentry events per session to avoid going over\n// our Sentry event limit.\nconst MAX_SENTRY_EVENTS_SESSION = 10;\nlet sentryEventsReported = 0;\nconst STUDIO_SENTRY_DSN = \"https://9590d00c340748f197bca2ab1a3d9194@sentry.io/288378\";\nconst DEPLOY_SENTRY_DSN = \"https://b18e49b0a4264dd2a865fd59e3690814@o35539.ingest.sentry.io/5256664\";\nexport default class Sentry {\n static setup(project) {\n let dsn;\n if (project === \"studio\") {\n dsn = STUDIO_SENTRY_DSN;\n }\n else if (project === \"deploy\") {\n dsn = DEPLOY_SENTRY_DSN;\n }\n // We set the Sentry release as the current commit hash.\n // This allows us to have issues tagged to a specific release\n // in Sentry.\n SentryBrowser.init({\n dsn,\n release: STUDIO_COMMIT_HASH,\n environment: process.env.NODE_ENV,\n beforeSend: (event, hint) => {\n if (hint &&\n hint.originalException &&\n hint.originalException instanceof Error) {\n // It means the exception is of the NonLoggableError type.\n // meaning: we don't want to log it to avoid polluting\n // sentry\n if (\"disableLogging\" in hint.originalException) {\n return null;\n }\n }\n if (isMonacoSearchRegexError(event)) {\n return null;\n }\n if (sentryEventsReported >= MAX_SENTRY_EVENTS_SESSION) {\n logging.log(\"warn\", \"Sentry event detected, but Sentry event limit for this session has been reached.\", event);\n return null;\n }\n sentryEventsReported++;\n if (process.env.NODE_ENV === \"production\") {\n logging.log(\"info\", \"[Production] Sending Sentry issue\", event);\n return event;\n }\n else {\n logging.log(\"info\", \"[Development] Sending Sentry issue\", event);\n }\n return null;\n },\n });\n this.setStudioVersion(STUDIO_VERSION);\n }\n static setLicenseKey(licenseKey) {\n SentryBrowser.configureScope((scope) => {\n scope.setTag(\"license_key\", licenseKey);\n });\n }\n static setMemsqlVersion(memsqlVersion) {\n SentryBrowser.configureScope((scope) => {\n scope.setTag(\"memsql_version\", memsqlVersion);\n });\n }\n static setStudioVersion(studioVersion) {\n SentryBrowser.configureScope((scope) => {\n scope.setTag(\"studio_version\", studioVersion);\n });\n }\n static setClusterHostname(hostname) {\n SentryBrowser.configureScope((scope) => {\n scope.setTag(\"cluster_hostname\", hostname);\n });\n }\n static setClusterPort(port) {\n SentryBrowser.configureScope((scope) => {\n scope.setTag(\"cluster_port\", String(port));\n });\n }\n static captureBreadcrumb(crumb) {\n SentryBrowser.addBreadcrumb(crumb);\n }\n static captureException(err) {\n SentryBrowser.captureException(err);\n }\n}\n","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","import { selectCurrentClusterId } from \"@single-js/common/core/sql/selectors\";\nimport { selectError, selectLoadingOrInitial, selectPayload, } from \"@single-js/common/util/loading-state-machine\";\nimport { decodeClusterJwt } from \"data/models\";\nimport _ from \"lodash\";\nimport { createSelector } from \"reselect\";\nexport const selectClusters = (s) => selectPayload(s.clusters.clusters);\nexport const selectClustersError = (s) => selectError(s.clusters.clusters);\nexport const selectClustersLoadingOrInitial = (s) => selectLoadingOrInitial(s.clusters.clusters);\nexport const selectCurrentCluster = createSelector(selectCurrentClusterId, selectClusters, (clusterId, clusters) => {\n if (clusterId) {\n // Try to parse the Cluster ID as a JWT. If it works, we're dealing\n // with a JWT connection. Otherwise, try to find the regular cluster\n // ID in the list of clusters from the API.\n const jwtCluster = decodeClusterJwt(clusterId);\n if (jwtCluster) {\n return jwtCluster;\n }\n if (clusters) {\n return _.find(clusters, (c) => c.id === clusterId);\n }\n }\n return undefined;\n});\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var observable = /*@__PURE__*/ (function () { return typeof Symbol === 'function' && Symbol.observable || '@@observable'; })();\n//# sourceMappingURL=observable.js.map\n","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now `isValid` doesn't throw an exception\n * if the first argument is not an instance of Date.\n * Instead, argument is converted beforehand using `toDate`.\n *\n * Examples:\n *\n * | `isValid` argument | Before v2.0.0 | v2.0.0 onward |\n * |---------------------------|---------------|---------------|\n * | `new Date()` | `true` | `true` |\n * | `new Date('2016-01-01')` | `true` | `true` |\n * | `new Date('')` | `false` | `false` |\n * | `new Date(1488370835081)` | `true` | `true` |\n * | `new Date(NaN)` | `false` | `false` |\n * | `'2016-01-01'` | `TypeError` | `false` |\n * | `''` | `TypeError` | `false` |\n * | `1488370835081` | `TypeError` | `true` |\n * | `NaN` | `TypeError` | `false` |\n *\n * We introduce this change to make *date-fns* consistent with ECMAScript behavior\n * that try to coerce arguments to the expected type\n * (which is also the case with other *date-fns* functions).\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * var result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * var result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * var result = isValid(new Date(''))\n * //=> false\n */\n\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n return !isNaN(date);\n}","import toInteger from '../_lib/toInteger/index.js';\nimport addMilliseconds from '../addMilliseconds/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * var result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\n\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n\n while (output.length < targetLength) {\n output = '0' + output;\n }\n\n return sign + output;\n}","import addLeadingZeros from '../../addLeadingZeros/index.js';\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nvar formatters = {\n // Year\n y: function (date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function (date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function (date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function (date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return dayPeriodEnumValue.toUpperCase();\n\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function (date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function (date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function (date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function (date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function (date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import toDate from '../../toDate/index.js';\nimport requiredArgs from '../requiredArgs/index.js';\nvar MILLISECONDS_IN_DAY = 86400000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","import toDate from '../../toDate/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from '../../toDate/index.js';\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getUTCISOWeekYear from '../getUTCISOWeekYear/index.js';\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from '../../toDate/index.js';\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js';\nimport startOfUTCISOWeekYear from '../startOfUTCISOWeekYear/index.js';\nimport requiredArgs from '../requiredArgs/index.js';\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toInteger from '../toInteger/index.js';\nimport toDate from '../../toDate/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeek(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toInteger from '../toInteger/index.js';\nimport toDate from '../../toDate/index.js';\nimport startOfUTCWeek from '../startOfUTCWeek/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeekYear(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate, dirtyOptions);\n var year = date.getUTCFullYear();\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, dirtyOptions);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import toInteger from '../toInteger/index.js';\nimport getUTCWeekYear from '../getUTCWeekYear/index.js';\nimport startOfUTCWeek from '../startOfUTCWeek/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeekYear(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);\n var year = getUTCWeekYear(dirtyDate, dirtyOptions);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, dirtyOptions);\n return date;\n}","import toDate from '../../toDate/index.js';\nimport startOfUTCWeek from '../startOfUTCWeek/index.js';\nimport startOfUTCWeekYear from '../startOfUTCWeekYear/index.js';\nimport requiredArgs from '../requiredArgs/index.js';\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import lightFormatters from '../lightFormatters/index.js';\nimport getUTCDayOfYear from '../../../_lib/getUTCDayOfYear/index.js';\nimport getUTCISOWeek from '../../../_lib/getUTCISOWeek/index.js';\nimport getUTCISOWeekYear from '../../../_lib/getUTCISOWeekYear/index.js';\nimport getUTCWeek from '../../../_lib/getUTCWeek/index.js';\nimport getUTCWeekYear from '../../../_lib/getUTCWeekYear/index.js';\nimport addLeadingZeros from '../../addLeadingZeros/index.js';\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n /*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\n};\nvar formatters = {\n // Era\n G: function (date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; // Two digit year\n\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n } // Ordinal number\n\n\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n } // Padding\n\n\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function (date, token) {\n var isoWeekYear = getUTCISOWeekYear(date); // Padding\n\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function (date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function (date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function (date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function (date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function (date, token, localize, options) {\n var week = getUTCWeek(date, options);\n\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function (date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function (date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function (date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function (date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function (date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function (date, token, localize) {\n var hours = date.getUTCHours() % 12;\n\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function (date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function (date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n\n return lightFormatters.m(date, token);\n },\n // Second\n s: function (date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return 'Z';\n }\n\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\n\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n\n if (minutes === 0) {\n return sign + String(hours);\n }\n\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n\n return formatTimezone(offset, dirtyDelimiter);\n}\n\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n\nexport default formatters;","function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n}\n\nfunction timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n}\n\nfunction dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/);\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n var dateTimeFormat;\n\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n}\n\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n }\n}","import isValid from '../isValid/index.js';\nimport defaultLocale from '../locale/en-US/index.js';\nimport subMilliseconds from '../subMilliseconds/index.js';\nimport toDate from '../toDate/index.js';\nimport formatters from '../_lib/format/formatters/index.js';\nimport longFormatters from '../_lib/format/longFormatters/index.js';\nimport getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js';\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from '../_lib/protectedTokens/index.js';\nimport toInteger from '../_lib/toInteger/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js'; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | a..aaa | AM, PM | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bbb | AM, PM, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 0001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 05/29/1453 | 7 |\n * | | PP | May 29, 1453 | 7 |\n * | | PPP | May 29th, 1453 | 7 |\n * | | PPPP | Sunday, May 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 05/29/1453, 12:00 AM | 7 |\n * | | PPpp | May 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | May 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Sunday, May 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 9. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The second argument is now required for the sake of explicitness.\n *\n * ```javascript\n * // Before v2.0.0\n * format(new Date(2016, 0, 1))\n *\n * // v2.0.0 onward\n * format(new Date(2016, 0, 1), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\n * ```\n *\n * - New format string API for `format` function\n * which is based on [Unicode Technical Standard #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table).\n * See [this post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.\n *\n * - Characters are now escaped using single quote symbols (`'`) instead of square brackets.\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://git.io/fxCyr\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var options = dirtyOptions || {};\n var locale = options.locale || defaultLocale;\n var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n\n\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong, formatterOptions);\n }\n\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n\n var firstCharacter = substring[0];\n\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n\n var formatter = formatters[firstCharacter];\n\n if (formatter) {\n if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, dirtyDate);\n }\n\n if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, dirtyDate);\n }\n\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n\n return substring;\n }).join('');\n return result;\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import { servicesLocator } from \"@single-js/common/services/services-locator\";\nimport _ from \"lodash\";\nimport { getEditorFromConfig, readSingleStorageConfig, } from \"../../../services/single-storage-config\";\nimport assign from \"../../../util/assign\";\nimport { AbsoluteRange } from \"../../../util/range\";\nimport { updateFromSet } from \"../../../util/set\";\nimport { PER_QUERY_ROW_LIMIT } from \"./models-query-editor\";\nconst EDITOR_MAX_TABS = 20;\nexport const CONNECTION_ID = \"QUERY_EDITOR\";\nexport const DEFAULT_EDITOR_HEIGHT_FRACTION = 0.5;\nconst getStateFromLocalStorage = (connectionId, defaultConnectedClusterId) => {\n const { editor } = getEditorFromConfig(readSingleStorageConfig(), connectionId, defaultConnectedClusterId);\n let stateFromLocalStorage = {\n buffer: editor.buffer || \"\",\n perQueryRowLimit: editor.rowLimit || PER_QUERY_ROW_LIMIT,\n };\n const { editorPosition } = editor;\n if (editorPosition) {\n const cursorInfo = editorPosition.cursorInfo || { index: 0 };\n const { selectedRange } = cursorInfo;\n if (selectedRange) {\n cursorInfo.selectedRange = new AbsoluteRange(selectedRange.start, selectedRange.end);\n }\n stateFromLocalStorage = {\n ...stateFromLocalStorage,\n cursorInfo,\n firstVisibleLine: editorPosition.firstVisibleLine || 1,\n };\n }\n return stateFromLocalStorage;\n};\nconst initialLocalStorage = getStateFromLocalStorage(CONNECTION_ID, undefined);\nconst initialState = {\n connectionId: CONNECTION_ID,\n initQueryExecutorError: undefined,\n connectionState: undefined,\n connectionError: undefined,\n connectionClusterId: undefined,\n buffer: initialLocalStorage.buffer,\n cursorInfo: initialLocalStorage.cursorInfo || { index: 0 },\n firstVisibleLine: initialLocalStorage.firstVisibleLine || 1,\n focus: 0,\n canceling: false,\n sessionQueries: [],\n expectedQuery: { groupId: 0, position: 0 },\n logsTab: { queryContexts: [] },\n tabs: [],\n // Tabs start with id = 1\n nextTabId: 1,\n focusResultTab: true,\n activeTabId: \"LOGS\",\n runningQueryTabId: undefined,\n selectedDatabase: undefined,\n perQueryRowLimit: initialLocalStorage.perQueryRowLimit,\n dimensions: {\n editorWidthFraction: undefined,\n editorHeightFraction: DEFAULT_EDITOR_HEIGHT_FRACTION,\n },\n};\n// Modify the TabState with the given tabId. Doesn't do anything if the tabId\n// doesn't match any tab. This could happen if the tabId is undefined because\n// it's a modification caused by a query not directed at any tab (e.g.\n// selecting a database from the header dropdown).\nconst modifyTabState = (state, tabId, modifier) => {\n state = {\n ...state,\n tabs: state.tabs.map((tab) => {\n if (tab.id === tabId) {\n return modifier(tab);\n }\n else {\n return tab;\n }\n }),\n };\n return state;\n};\n// Create a new tab with the nextTabId and query context, with a loading result.\n// If the max editor tabs opened is exceeded, remove the oldest tab.\nconst createNewTab = (state, queryContext) => {\n // We need to remove the oldest tab if the new one surpasses the\n // max number of tabs.\n if (state.tabs.length + 1 > EDITOR_MAX_TABS) {\n state = {\n ...state,\n tabs: state.tabs.slice(0, -1),\n };\n }\n let tabId = state.activeTabId;\n if (state.activeTabId !== \"LOGS\" || state.focusResultTab) {\n tabId = state.nextTabId;\n }\n state = {\n ...state,\n runningQueryTabId: state.nextTabId,\n activeTabId: tabId,\n nextTabId: state.nextTabId + 1,\n focusResultTab: false,\n tabs: [\n {\n id: state.nextTabId,\n results: { loading: true, type: \"unknown\" },\n sort: undefined,\n queryContext,\n rowLimit: state.perQueryRowLimit,\n },\n ...state.tabs,\n ],\n };\n return state;\n};\n// Return number of queries that belong to the same group (according to group id)\nconst getQueryGroupSize = (state, groupId) => {\n const queryGroup = _.filter(state.sessionQueries, (queryLog) => queryLog.context.groupId === groupId);\n return queryGroup.length;\n};\nfunction skipRemainingGroupQueries(state) {\n const runningQueryTab = _.find(state.tabs, (tabState) => tabState.id === state.runningQueryTabId);\n if (runningQueryTab) {\n const status = { status: \"skipped\" };\n const groupId = runningQueryTab.queryContext.groupId;\n const newSessionQueries = _.map(state.sessionQueries, (queryLog) => {\n if (queryLog.context.groupId === groupId &&\n queryLog.status.status === \"pending\") {\n return { ...queryLog, status };\n }\n else {\n return queryLog;\n }\n });\n return {\n ...state,\n sessionQueries: newSessionQueries,\n };\n }\n return state;\n}\nexport function queryEditorReducer(state = initialState, action) {\n switch (action.type) {\n case \"CONNECT\": {\n if (action.error) {\n return state;\n }\n const config = action.payload.primaryConnection.config;\n let defaultConnectedClusterId;\n if (config) {\n defaultConnectedClusterId = config.clusterId;\n }\n state = assign(state, getStateFromLocalStorage(state.connectionId, defaultConnectedClusterId));\n break;\n }\n case \"QUERY_EDITOR_APPEND_AND_FOCUS\": {\n state = {\n ...state,\n ...action.payload,\n };\n break;\n }\n case \"QUERY_EDITOR_RESET_FOCUS_COUNT\": {\n state = {\n ...state,\n focus: 0,\n };\n break;\n }\n case \"QUERY_EDITOR_EDIT_BUFFER\": {\n state = assign(state, {\n buffer: action.payload.buffer,\n });\n break;\n }\n case \"QUERY_EDITOR_CURSOR_INFO\": {\n state = assign(state, { cursorInfo: action.payload });\n break;\n }\n case \"QUERY_EDITOR_FIRST_VISIBLE_LINE\": {\n state = assign(state, { firstVisibleLine: action.payload.line });\n break;\n }\n case \"QUERY_EDITOR_SORT\": {\n if (state.activeTabId !== \"LOGS\") {\n state = modifyTabState(state, state.activeTabId, (tabState) => {\n if (tabState.results.type !== \"rows\") {\n throw new Error(\"Expected active tabState.results to be of type rows.\");\n }\n return {\n ...tabState,\n sort: action.payload,\n };\n });\n }\n break;\n }\n case \"INIT_QUERY_EXECUTOR\": {\n if (action.meta.id !== state.connectionId) {\n break;\n }\n state = {\n ...state,\n initQueryExecutorError: action.error\n ? action.payload\n : undefined,\n };\n break;\n }\n case \"QUERY_GROUP_START\": {\n if (action.payload.id !== state.connectionId) {\n break;\n }\n const { meta } = action.payload.queryGroup;\n if (meta &&\n (meta.kind === \"SHOW_PLAN\" ||\n meta.kind === \"SELECT_DATABASE\" ||\n meta.kind === \"SELECT_ROW_LIMIT\")) {\n // This query group is caused by a menu interaction in the SQL\n // Editor page instead of a query entered into the Editor\n // itself, so we don't display it in the output. We also set\n // runningQueryTabId to undefined so that clients observing the\n // connectionState being ACTIVE don't think the activity is\n // related to a tab.\n break;\n }\n const { queryGroup } = action.payload;\n const groupId = state.expectedQuery.groupId + 1;\n // Create contexts for each query (same groupId, position equals to\n // index in the array)\n const queryContexts = _.map(queryGroup.queries, (_query, index) => ({ groupId, position: index }));\n // Each query of query group starts with a \"pending\" status\n const status = { status: \"pending\" };\n // Zip each query with its query context to create a query log.\n // In the end, reverse the order so that the first query to run is\n // the last one in the array.\n const queryLogs = _.zipWith(queryGroup.queries, queryContexts, (query, context) => ({ context, query, status })).reverse();\n state = {\n ...state,\n sessionQueries: [...queryLogs, ...state.sessionQueries],\n logsTab: {\n ...state.logsTab,\n queryContexts: [\n ...queryContexts,\n ...state.logsTab.queryContexts,\n ],\n },\n expectedQuery: {\n groupId,\n position: 0,\n },\n };\n break;\n }\n case \"QUERY_EXECUTOR_CANCEL\": {\n if (action.payload.id !== state.connectionId) {\n break;\n }\n // We set canceling in the state to `true` and we always unset it\n // whenever we get back sequenceEnd or error.\n state = { ...state, canceling: true };\n break;\n }\n case \"QUERY_EXECUTOR_MESSAGE\": {\n if (action.payload.id !== state.connectionId) {\n break;\n }\n state = handleQueryExecutorMessage(state, action.payload.msg);\n break;\n }\n case \"QUERY_GROUP_STOP\": {\n // make sure we're not loading any more\n if (action.payload.id !== state.connectionId) {\n break;\n }\n // When a query group is stopped, we mark all queries in the group\n // as skipped.\n state = skipRemainingGroupQueries(state);\n state = modifyTabState(state, state.runningQueryTabId, (tabState) => {\n const queryContext = tabState.queryContext;\n const currentIndex = queryContext.position + 1;\n const totalQueries = getQueryGroupSize(state, queryContext.groupId);\n return {\n ...tabState,\n results: {\n type: \"error\",\n loading: false,\n summary: `Stopped by user at query ${currentIndex} of ${totalQueries}`,\n },\n };\n });\n break;\n }\n case \"QUERY_EDITOR_CHANGE_EDITOR_HEIGHT\": {\n state = {\n ...state,\n dimensions: {\n ...state.dimensions,\n editorHeightFraction: action.payload.height,\n },\n };\n break;\n }\n case \"QUERY_EDITOR_CHANGE_EDITOR_WIDTH\": {\n state = {\n ...state,\n dimensions: {\n ...state.dimensions,\n editorWidthFraction: action.payload.width,\n },\n };\n break;\n }\n case \"QUERY_EDITOR_CLOSE_TAB\": {\n // update list of tabs to remove the closed one\n const closingTabId = action.payload.tabId;\n const oldTabs = state.tabs;\n const newTabs = oldTabs.filter((tab) => tab.id !== closingTabId);\n let { activeTabId } = state;\n if (newTabs.length === 0) {\n // we closed all the tabs\n // make message logs the active tab\n activeTabId = \"LOGS\";\n }\n else if (activeTabId === closingTabId) {\n // we closed the tab that was active; we need to figure out a\n // new tab to be active\n const activeTabIndex = _.findIndex(oldTabs, {\n id: closingTabId,\n });\n if (activeTabIndex < newTabs.length) {\n // make the tab in the same position active\n activeTabId = newTabs[activeTabIndex].id;\n }\n else {\n // we closed the last tab; make the new last tab active\n activeTabId = newTabs[newTabs.length - 1].id;\n }\n }\n state = {\n ...state,\n tabs: newTabs,\n activeTabId,\n };\n break;\n }\n case \"QUERY_EDITOR_CLOSE_ALL_TABS\": {\n let tabs = [];\n let activeTabId = \"LOGS\";\n // If a query is running, we can't close that tab\n if (state.connectionState !== \"IDLE\") {\n if (state.runningQueryTabId && state.activeTabId !== \"LOGS\") {\n activeTabId = state.runningQueryTabId;\n }\n const runningQueryTab = _.find(state.tabs, (tabState) => tabState.id === state.runningQueryTabId);\n if (runningQueryTab) {\n tabs = [runningQueryTab];\n }\n }\n state = {\n ...state,\n tabs,\n activeTabId,\n };\n break;\n }\n case \"QUERY_EDITOR_CHANGE_ACTIVE_RESULTS_TAB\": {\n state = {\n ...state,\n activeTabId: action.payload.activeTabId,\n };\n break;\n }\n case \"QUERY_EDITOR_CHANGE_LOGS_TAB\": {\n state = {\n ...state,\n activeTabId: \"LOGS\",\n };\n break;\n }\n }\n return state;\n}\nconst handleQueryExecutorMessage = (state, msg) => {\n switch (msg.kind) {\n case \"queryExecutorState\": {\n state = assign(state, {\n connectionState: msg.state,\n connectionError: msg.error,\n });\n break;\n }\n case \"queryMessage\": {\n if (msg.meta &&\n (msg.meta.kind === \"SHOW_PLAN\" ||\n msg.meta.kind === \"SELECT_DATABASE\" ||\n msg.meta.kind === \"SELECT_ROW_LIMIT\" ||\n msg.meta.kind === \"INIT_CONTEXT\")) {\n // This query group is caused by a menu interaction in the SQL\n // Editor page instead of a query entered into the Editor\n // itself, so we don't display it in the output.\n break;\n }\n switch (msg.queryMsg.kind) {\n case \"resultSet\": {\n const { fields } = msg.queryMsg;\n // The query that just ended is the query associated\n // with the current running query tab.\n const runningQueryTab = _.find(state.tabs, (tabState) => tabState.id === state.runningQueryTabId);\n // This query had already returned a table, but it is returning another\n // so we open a new tab for the new table\n if (runningQueryTab &&\n runningQueryTab.results.type === \"rows\") {\n // This new tab also represents the running query, so it has\n // the same context.\n const queryContext = runningQueryTab.queryContext;\n state = createNewTab(state, queryContext);\n }\n state = modifyTabState(state, state.runningQueryTabId, (tabState) => {\n return {\n ...tabState,\n results: {\n fields,\n rows: [],\n type: \"rows\",\n loading: true,\n },\n };\n });\n break;\n }\n case \"rows\":\n const { rows } = msg.queryMsg;\n state = modifyTabState(state, state.runningQueryTabId, (tabState) => {\n if (tabState.results.type !== \"rows\") {\n throw new Error(\"Expected connecton tabState.results to be of type rows.\");\n }\n return {\n ...tabState,\n results: {\n ...tabState.results,\n rows: [...tabState.results.rows, ...rows],\n },\n };\n });\n break;\n case \"queryEnd\": {\n const { status, metrics } = msg.queryMsg;\n state = { ...state, canceling: false };\n let newStatus;\n if (status.state === \"error\") {\n // If a query errors due to cancelation, then we mark\n // all remaining queries in the same query group as\n // Skipped. This logic is very similar to the logic that\n // we run when a user stops a query group in the middle\n // of its execution after a query errors. We do it\n // differently for canceled queries because the\n // QueryExecutor will stop the query group for\n // cancelations.\n if (status.code === \"ER_QUERY_INTERRUPTED\") {\n state = skipRemainingGroupQueries(state);\n }\n newStatus = {\n status: \"error\",\n metrics,\n errorMessage: status.message,\n };\n }\n else {\n newStatus = {\n status: \"success\",\n metrics,\n };\n }\n // If the error returned on a query that still didn't have\n // a tab, open a new one. We will want to add a new tab\n // when index is greater than 0\n if (status.state === \"error\" && status.index > 0) {\n state = createNewTab(state, state.expectedQuery);\n }\n const sameQueryTabs = _.filter(state.tabs, (tabState) => _.isEqual(tabState.queryContext, state.expectedQuery)).sort((a, b) => a.id - b.id);\n // The query that just ended is the query associated\n // with the current running query tab.\n const runningQueryTab = _.find(state.tabs, (tabState) => tabState.id === state.runningQueryTabId);\n // Using the query context of the query associated with\n // the running query tab, we can determine which query\n // ended and its position in sessionQueries to update\n // with its new status.\n if (runningQueryTab) {\n const queryContext = runningQueryTab.queryContext;\n // Find index of query that has the same context\n // (context serves as a unique identifier)\n const queryLogIndex = _.findIndex(state.sessionQueries, (queryLog) => _.isEqual(queryLog.context, queryContext));\n // Update the current status of the query\n // that ended with the new status.\n state = {\n ...state,\n sessionQueries: updateFromSet(state.sessionQueries, state.sessionQueries[queryLogIndex], {\n ...state.sessionQueries[queryLogIndex],\n status: newStatus,\n }),\n expectedQuery: {\n ...state.expectedQuery,\n position: state.expectedQuery.position + 1,\n },\n };\n }\n if (sameQueryTabs.length > 1) {\n for (let i = 0; i < sameQueryTabs.length; i++) {\n state = modifyTabState(state, sameQueryTabs[i].id, (tabState) => {\n const { results } = tabState;\n if (status.state === \"error\" &&\n status.index === i) {\n if (results.type === \"unknown\") {\n tabState = {\n ...tabState,\n results: {\n type: \"error\",\n loading: false,\n summary: status.message,\n },\n sort: undefined,\n };\n }\n else if (results.type === \"rows\") {\n tabState = {\n ...tabState,\n results: {\n type: \"rows\",\n fields: results.fields,\n rows: results.rows,\n error: true,\n loading: false,\n },\n };\n }\n else {\n servicesLocator\n .getLogger()\n .logError(new Error(\"Unexpected results type (expected only unknown or rows)\"));\n }\n }\n else {\n if (results.type === \"rows\") {\n tabState = {\n ...tabState,\n results: {\n type: \"rows\",\n fields: results.fields,\n rows: results.rows,\n loading: false,\n },\n sort: undefined,\n };\n }\n else {\n servicesLocator\n .getLogger()\n .logError(new Error(\"Unexpected results type. If it didn't throw an error, only type 'rows' was expected\"));\n }\n }\n return tabState;\n });\n }\n }\n else {\n state = modifyTabState(state, state.runningQueryTabId, (tabState) => {\n if (status.state === \"error\") {\n if (tabState.results.type === \"unknown\") {\n tabState = {\n ...tabState,\n results: {\n type: \"error\",\n loading: false,\n summary: status.message,\n },\n sort: undefined,\n };\n }\n else {\n if (!(tabState.results.type === \"rows\")) {\n throw new Error(`Only expected mid-execution errors in \"unknown\" or \"rows\" queries. \"Exec\" queries would be in the \"unknown\" category at this point.`);\n }\n tabState = {\n ...tabState,\n results: {\n type: \"rows\",\n fields: tabState.results.fields,\n rows: tabState.results.rows,\n error: true,\n loading: false,\n },\n sort: undefined,\n };\n }\n }\n else {\n const { results } = tabState;\n if (results.type === \"unknown\") {\n // finished exec query\n tabState = {\n ...tabState,\n results: {\n type: \"exec\",\n loading: false,\n metrics,\n },\n sort: undefined,\n };\n }\n else {\n // finished rows query\n if (results.type !== \"rows\") {\n throw new Error(\"Expected results.type to be rows\");\n }\n tabState = {\n ...tabState,\n results: {\n type: \"rows\",\n loading: false,\n rows: results.rows,\n metrics,\n fields: results.fields,\n },\n sort: undefined,\n };\n }\n }\n return tabState;\n });\n }\n break;\n }\n }\n break;\n }\n // This event is called right before the query runs. At this\n // time we want to create a new tab for this query with a\n // \"loading\" result\n case \"queryRun\": {\n if (msg.meta &&\n (msg.meta.kind === \"SHOW_PLAN\" ||\n msg.meta.kind === \"SELECT_DATABASE\" ||\n msg.meta.kind === \"SELECT_ROW_LIMIT\" ||\n msg.meta.kind === \"INIT_CONTEXT\")) {\n // This query group is caused by a menu interaction in the SQL\n // Editor page instead of a query entered into the Editor\n // itself, so we don't display it in the output.\n break;\n }\n const queryContext = state.expectedQuery;\n state = createNewTab(state, queryContext);\n break;\n }\n case \"selectedDatabaseChanged\": {\n state = {\n ...state,\n selectedDatabase: msg.database,\n };\n break;\n }\n case \"perQueryRowLimitChanged\": {\n state = {\n ...state,\n perQueryRowLimit: msg.rowLimit,\n };\n break;\n }\n case \"connectionClusterIdChanged\": {\n state = {\n ...state,\n connectionClusterId: msg.clusterId,\n };\n break;\n }\n }\n return state;\n};\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isError(wat) {\n switch (Object.prototype.toString.call(wat)) {\n case '[object Error]':\n return true;\n case '[object Exception]':\n return true;\n case '[object DOMException]':\n return true;\n default:\n return wat instanceof Error;\n }\n}\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isErrorEvent(wat) {\n return Object.prototype.toString.call(wat) === '[object ErrorEvent]';\n}\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMError(wat) {\n return Object.prototype.toString.call(wat) === '[object DOMError]';\n}\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMException(wat) {\n return Object.prototype.toString.call(wat) === '[object DOMException]';\n}\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isString(wat) {\n return Object.prototype.toString.call(wat) === '[object String]';\n}\n/**\n * Checks whether given value's is a primitive (undefined, null, number, boolean, string)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPrimitive(wat) {\n return wat === null || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n/**\n * Checks whether given value's type is an object literal\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPlainObject(wat) {\n return Object.prototype.toString.call(wat) === '[object Object]';\n}\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isRegExp(wat) {\n return Object.prototype.toString.call(wat) === '[object RegExp]';\n}\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nexport function isThenable(wat) {\n // tslint:disable:no-unsafe-any\n return Boolean(wat && wat.then && typeof wat.then === 'function');\n // tslint:enable:no-unsafe-any\n}\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isSyntheticEvent(wat) {\n // tslint:disable-next-line:no-unsafe-any\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n//# sourceMappingURL=is.js.map","/** PURE_IMPORTS_START _scheduleObservable,_schedulePromise,_scheduleArray,_scheduleIterable,_util_isInteropObservable,_util_isPromise,_util_isArrayLike,_util_isIterable PURE_IMPORTS_END */\nimport { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nexport function scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n else if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n }\n else if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n else if (isIterable(input) || typeof input === 'string') {\n return scheduleIterable(input, scheduler);\n }\n }\n throw new TypeError((input !== null && typeof input || input) + ' is not observable');\n}\n//# sourceMappingURL=scheduled.js.map\n","/** PURE_IMPORTS_START _symbol_observable PURE_IMPORTS_END */\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function isInteropObservable(input) {\n return input && typeof input[Symbol_observable] === 'function';\n}\n//# sourceMappingURL=isInteropObservable.js.map\n","/** PURE_IMPORTS_START _Observable,_Subscription,_symbol_observable PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function scheduleObservable(input, scheduler) {\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n sub.add(scheduler.schedule(function () {\n var observable = input[Symbol_observable]();\n sub.add(observable.subscribe({\n next: function (value) { sub.add(scheduler.schedule(function () { return subscriber.next(value); })); },\n error: function (err) { sub.add(scheduler.schedule(function () { return subscriber.error(err); })); },\n complete: function () { sub.add(scheduler.schedule(function () { return subscriber.complete(); })); },\n }));\n }));\n return sub;\n });\n}\n//# sourceMappingURL=scheduleObservable.js.map\n","/** PURE_IMPORTS_START _Observable,_Subscription PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nexport function schedulePromise(input, scheduler) {\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n sub.add(scheduler.schedule(function () {\n return input.then(function (value) {\n sub.add(scheduler.schedule(function () {\n subscriber.next(value);\n sub.add(scheduler.schedule(function () { return subscriber.complete(); }));\n }));\n }, function (err) {\n sub.add(scheduler.schedule(function () { return subscriber.error(err); }));\n });\n }));\n return sub;\n });\n}\n//# sourceMappingURL=schedulePromise.js.map\n","/** PURE_IMPORTS_START _symbol_iterator PURE_IMPORTS_END */\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nexport function isIterable(input) {\n return input && typeof input[Symbol_iterator] === 'function';\n}\n//# sourceMappingURL=isIterable.js.map\n","/** PURE_IMPORTS_START _Observable,_Subscription,_symbol_iterator PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nexport function scheduleIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n var iterator;\n sub.add(function () {\n if (iterator && typeof iterator.return === 'function') {\n iterator.return();\n }\n });\n sub.add(scheduler.schedule(function () {\n iterator = input[Symbol_iterator]();\n sub.add(scheduler.schedule(function () {\n if (subscriber.closed) {\n return;\n }\n var value;\n var done;\n try {\n var result = iterator.next();\n value = result.value;\n done = result.done;\n }\n catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n }\n else {\n subscriber.next(value);\n this.schedule();\n }\n }));\n }));\n return sub;\n });\n}\n//# sourceMappingURL=scheduleIterable.js.map\n","/** PURE_IMPORTS_START _Observable,_util_subscribeTo,_scheduled_scheduled PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { subscribeTo } from '../util/subscribeTo';\nimport { scheduled } from '../scheduled/scheduled';\nexport function from(input, scheduler) {\n if (!scheduler) {\n if (input instanceof Observable) {\n return input;\n }\n return new Observable(subscribeTo(input));\n }\n else {\n return scheduled(input, scheduler);\n }\n}\n//# sourceMappingURL=from.js.map\n","import { isError, isPrimitive, isSyntheticEvent } from './is';\nimport { Memo } from './memo';\n/**\n * Wrap a given object method with a higher-order function\n *\n * @param source An object that contains a method to be wrapped.\n * @param name A name of method to be wrapped.\n * @param replacement A function that should be used to wrap a given method.\n * @returns void\n */\nexport function fill(source, name, replacement) {\n if (!(name in source)) {\n return;\n }\n var original = source[name];\n var wrapped = replacement(original);\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n // tslint:disable-next-line:strict-type-predicates\n if (typeof wrapped === 'function') {\n try {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __sentry__: {\n enumerable: false,\n value: true,\n },\n __sentry_original__: {\n enumerable: false,\n value: original,\n },\n __sentry_wrapped__: {\n enumerable: false,\n value: wrapped,\n },\n });\n }\n catch (_Oo) {\n // This can throw if multiple fill happens on a global object like XMLHttpRequest\n // Fixes https://github.com/getsentry/sentry-javascript/issues/2043\n }\n }\n source[name] = wrapped;\n}\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n */\nexport function urlEncode(object) {\n return Object.keys(object)\n .map(\n // tslint:disable-next-line:no-unsafe-any\n function (key) { return encodeURIComponent(key) + \"=\" + encodeURIComponent(object[key]); })\n .join('&');\n}\n/**\n * Transforms Error object into an object literal with all it's attributes\n * attached to it.\n *\n * Based on: https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106\n *\n * @param error An Error containing all relevant information\n * @returns An object with all error properties\n */\nfunction objectifyError(error) {\n // These properties are implemented as magical getters and don't show up in `for-in` loop\n var err = {\n message: error.message,\n name: error.name,\n stack: error.stack,\n };\n for (var i in error) {\n if (Object.prototype.hasOwnProperty.call(error, i)) {\n err[i] = error[i];\n }\n }\n return err;\n}\n/** Calculates bytes size of input string */\nfunction utf8Length(value) {\n // tslint:disable-next-line:no-bitwise\n return ~-encodeURI(value).split(/%..|./).length;\n}\n/** Calculates bytes size of input object */\nfunction jsonSize(value) {\n return utf8Length(JSON.stringify(value));\n}\n/** JSDoc */\nexport function normalizeToSize(object, \n// Default Node.js REPL depth\ndepth, \n// 100kB, as 200kB is max payload size, so half sounds reasonable\nmaxSize) {\n if (depth === void 0) { depth = 3; }\n if (maxSize === void 0) { maxSize = 100 * 1024; }\n var serialized = normalize(object, depth);\n if (jsonSize(serialized) > maxSize) {\n return normalizeToSize(object, depth - 1, maxSize);\n }\n return serialized;\n}\n/** Transforms any input value into a string form, either primitive value or a type of the input */\nfunction serializeValue(value) {\n var type = Object.prototype.toString.call(value);\n // Node.js REPL notation\n if (typeof value === 'string') {\n return value;\n }\n if (type === '[object Object]') {\n return '[Object]';\n }\n if (type === '[object Array]') {\n return '[Array]';\n }\n var normalized = normalizeValue(value);\n return isPrimitive(normalized) ? normalized : type;\n}\n/**\n * normalizeValue()\n *\n * Takes unserializable input and make it serializable friendly\n *\n * - translates undefined/NaN values to \"[undefined]\"/\"[NaN]\" respectively,\n * - serializes Error objects\n * - filter global objects\n */\nfunction normalizeValue(value, key) {\n if (key === 'domain' && typeof value === 'object' && value._events) {\n return '[Domain]';\n }\n if (key === 'domainEmitter') {\n return '[DomainEmitter]';\n }\n if (typeof global !== 'undefined' && value === global) {\n return '[Global]';\n }\n if (typeof window !== 'undefined' && value === window) {\n return '[Window]';\n }\n if (typeof document !== 'undefined' && value === document) {\n return '[Document]';\n }\n // tslint:disable-next-line:strict-type-predicates\n if (typeof Event !== 'undefined' && value instanceof Event) {\n return Object.getPrototypeOf(value) ? value.constructor.name : 'Event';\n }\n // React's SyntheticEvent thingy\n if (isSyntheticEvent(value)) {\n return '[SyntheticEvent]';\n }\n if (Number.isNaN(value)) {\n return '[NaN]';\n }\n if (value === void 0) {\n return '[undefined]';\n }\n if (typeof value === 'function') {\n return \"[Function: \" + (value.name || '') + \"]\";\n }\n return value;\n}\n/**\n * Walks an object to perform a normalization on it\n *\n * @param key of object that's walked in current iteration\n * @param value object to be walked\n * @param depth Optional number indicating how deep should walking be performed\n * @param memo Optional Memo class handling decycling\n */\nexport function walk(key, value, depth, memo) {\n if (depth === void 0) { depth = +Infinity; }\n if (memo === void 0) { memo = new Memo(); }\n // If we reach the maximum depth, serialize whatever has left\n if (depth === 0) {\n return serializeValue(value);\n }\n // If value implements `toJSON` method, call it and return early\n // tslint:disable:no-unsafe-any\n if (value !== null && value !== undefined && typeof value.toJSON === 'function') {\n return value.toJSON();\n }\n // tslint:enable:no-unsafe-any\n // If normalized value is a primitive, there are no branches left to walk, so we can just bail out, as theres no point in going down that branch any further\n var normalized = normalizeValue(value, key);\n if (isPrimitive(normalized)) {\n return normalized;\n }\n // Create source that we will use for next itterations, either objectified error object (Error type with extracted keys:value pairs) or the input itself\n var source = (isError(value) ? objectifyError(value) : value);\n // Create an accumulator that will act as a parent for all future itterations of that branch\n var acc = Array.isArray(value) ? [] : {};\n // If we already walked that branch, bail out, as it's circular reference\n if (memo.memoize(value)) {\n return '[Circular ~]';\n }\n // Walk all keys of the source\n for (var innerKey in source) {\n // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n if (!Object.prototype.hasOwnProperty.call(source, innerKey)) {\n continue;\n }\n // Recursively walk through all the child nodes\n acc[innerKey] = walk(innerKey, source[innerKey], depth - 1, memo);\n }\n // Once walked through all the branches, remove the parent from memo storage\n memo.unmemoize(value);\n // Return accumulated values\n return acc;\n}\n/**\n * normalize()\n *\n * - Creates a copy to prevent original input mutation\n * - Skip non-enumerablers\n * - Calls `toJSON` if implemented\n * - Removes circular references\n * - Translates non-serializeable values (undefined/NaN/Functions) to serializable format\n * - Translates known global objects/Classes to a string representations\n * - Takes care of Error objects serialization\n * - Optionally limit depth of final output\n */\nexport function normalize(input, depth) {\n try {\n // tslint:disable-next-line:no-unsafe-any\n return JSON.parse(JSON.stringify(input, function (key, value) { return walk(key, value, depth); }));\n }\n catch (_oO) {\n return '**non-serializable**';\n }\n}\n//# sourceMappingURL=object.js.map","var makeString = require('./helper/makeString');\nvar defaultToWhiteSpace = require('./helper/defaultToWhiteSpace');\nvar nativeTrim = String.prototype.trim;\n\nmodule.exports = function trim(str, characters) {\n str = makeString(str);\n if (!characters && nativeTrim) return nativeTrim.call(str);\n characters = defaultToWhiteSpace(characters);\n return str.replace(new RegExp('^' + characters + '+|' + characters + '+$', 'g'), '');\n};\n","import { add, NewVector, scale, subtract } from \"./vector\";\nexport const center = ({ position, dimensions }) => add(position, scale(0.5, dimensions));\nexport const centerTop = ({ position, dimensions: { x: width }, }) => add(position, { x: width / 2, y: 0 });\nexport const centerBottom = ({ position, dimensions: { x: width, y: height }, }) => add(position, { x: width / 2, y: height });\n// Construct the rectangle between the given top-left corner and bottom-right\n// corner.\nexport const rectangleBetweenCorners = ({ x: x1, y: y1 }, { x: x2, y: y2 }) => ({\n position: { x: x1, y: y1 },\n dimensions: { x: x2 - x1, y: y2 - y1 },\n});\n// Convert the vector to a relative coordinate space defined by the rectangle,\n// where the rectangle's top-left corner is (0, 0) and its bottom-right corner\n// is (1, 1). This vector is in a very different coordinate space, so it\n// shouldn't be used like other vectors! That's why we're trying not to export\n// it.\nconst toRelative = ({ position, dimensions }, vec) => {\n const { x, y } = subtract(vec, position);\n const { x: width, y: height } = dimensions;\n return NewVector(x / width, y / height);\n};\n// Invert the above operation.\nconst fromRelative = ({ position, dimensions }, { x, y }) => {\n const { x: width, y: height } = dimensions;\n return add(position, NewVector(x * width, y * height));\n};\n// Given a source rectangle, a target rectangle, and a vector V, find the vector\n// that would be in the same relative position in the target rectangle as V is\n// in the source rectangle.\nexport const changeRelativeBasis = (sourceRectangle, targetRectangle, v) => {\n return fromRelative(targetRectangle, toRelative(sourceRectangle, v));\n};\n// Test if two rectangles intersect, including intersecting only at an edge or a\n// corner. (Assumes that the rectangles have nonnegative widths and heights.)\nexport const intersect = (r1, r2) => {\n const { position: { x: x1, y: y1 }, dimensions: { x: w1, y: h1 }, } = r1;\n const { position: { x: x2, y: y2 }, dimensions: { x: w2, y: h2 }, } = r2;\n return x1 + w1 >= x2 && x2 + w2 >= x1 && y1 + h1 >= y2 && y2 + h2 >= y1;\n};\n","import _ from \"lodash\";\nimport { center } from \"../../../util/rectangle\";\nimport { add, negate, NewVector } from \"../../../util/vector\";\nconst shiftRectangle = ({ position, dimensions }, displacement) => ({\n position: add(position, displacement),\n dimensions,\n});\nconst shiftBoundary = ({ vertices, endY }, displacement) => ({\n vertices: vertices.map((v) => add(v, displacement)),\n endY: endY + displacement.y,\n});\n// Given two boundaries, compute the minimum horizontal distance from the first\n// rightwards to the second. The result can be negative. If the second boundary\n// is shifted left by the result, it should be to the right of the first\n// boundary and just touch it along some edge (by having the same X coordinate).\nexport const minDistance = (b1, b2) => {\n let i1 = 0;\n let i2 = 0;\n let minDistance = Infinity;\n while (i1 < b1.vertices.length && i2 < b2.vertices.length) {\n const v1 = b1.vertices[i1];\n const v2 = b2.vertices[i2];\n const endY1 = i1 < b1.vertices.length - 1 ? b1.vertices[i1 + 1].y : b1.endY;\n const endY2 = i2 < b2.vertices.length - 1 ? b2.vertices[i2 + 1].y : b2.endY;\n if (endY1 > v2.y && endY2 > v1.y) {\n minDistance = Math.min(minDistance, v2.x - v1.x);\n }\n if (endY1 < endY2) {\n i1++;\n }\n else {\n i2++;\n }\n }\n return minDistance;\n};\n// Construct the boundary that is the same as the first boundary until its\n// bottom Y, at which point it becomes the second boundary if that reaches below\n// the first boundary's bottom Y.\nexport const fallback = (b1, b2) => {\n if (!b1) {\n if (!b2) {\n throw new Error(\"Expected at least one of two boundaries in fallback to be defined\");\n }\n return b2;\n }\n if (!b2) {\n return b1;\n }\n for (let i = 0; i < b2.vertices.length; i++) {\n if (b2.vertices[i].y > b1.endY) {\n if (i <= 0) {\n throw new Error(\"Expected fallback boundaries to overlap in Y coordinates\");\n }\n // joinPoint is the point on b2 with the same Y-coordinate as that\n // of the bottom point of b1, and is the top point of the part of b2\n // that we want to include.\n const joinPoint = NewVector(b2.vertices[i - 1].x, b1.endY);\n return {\n vertices: [...b1.vertices, joinPoint, ...b2.vertices.slice(i)],\n endY: b2.endY,\n };\n }\n }\n if (b2.endY > b1.endY) {\n const joinPoint = NewVector(b2.vertices[b2.vertices.length - 1].x, b1.endY);\n return {\n vertices: [...b1.vertices, joinPoint],\n endY: b2.endY,\n };\n }\n return b1;\n};\n// Prepend a segment exactly to a boundary. Assumes the segment doesn't go past\n// the boundary's second vertex. The boundary's first segment is extended or\n// truncated to match the bottom Y coordinate of the segment.\nconst preExtend = (start, startEndY, boundary) => {\n if (boundary) {\n const [bStart, ...bRest] = boundary.vertices;\n return {\n vertices: [start, NewVector(bStart.x, startEndY), ...bRest],\n endY: boundary.endY,\n };\n }\n else {\n return {\n vertices: [start],\n endY: startEndY,\n };\n }\n};\n// This is O(n) so calling this repeatedly will make our algorithm O(n^2). It is\n// possible to optimize it to be constant with standard range query tricks but\n// let's not do so prematurely.\nfunction shiftLayout({ nodes, bounds, rootBounds, leftBoundary, rightBoundary, leafCount, }, displacement) {\n return {\n nodes: nodes.map(({ id, bounds, data, children, parent }) => ({\n id,\n bounds: shiftRectangle(bounds, displacement),\n data,\n parent,\n children,\n })),\n bounds: shiftRectangle(bounds, displacement),\n rootBounds: shiftRectangle(rootBounds, displacement),\n leftBoundary: shiftBoundary(leftBoundary, displacement),\n rightBoundary: shiftBoundary(rightBoundary, displacement),\n leafCount,\n };\n}\nexport function generateLayout(tree, dataToDimensions, getSpacing) {\n const { singleEdgeHeight, bracketHeight, horizontalGap } = getSpacing();\n const layoutSubtree = (id, parent) => {\n const { children, data } = tree.nodes[id];\n const nodeDimensions = dataToDimensions(data);\n const nodeHeight = nodeDimensions.y;\n // Y offset at which all children should be laid out.\n const childYOffset = nodeHeight +\n (children.length > 1 ? bracketHeight : singleEdgeHeight);\n let childLayouts = [];\n children.forEach((child) => {\n let preLayout = shiftLayout(layoutSubtree(child, id), NewVector(0, childYOffset));\n if (childLayouts.length) {\n // Roughly Walker's algorithm: For each subtree T in\n // reverse order, shift the current subtree right until\n // the two don't overlap and there is a satisfactory\n // gap between them. If this shift occurs, shift all\n // subtrees after T right by increasing fractions so\n // they are spread out. For example, if T is the\n // third-to-last subtree before this one, shift the\n // second-to-last subtree by 1/3 of this tree's shift\n // and the last subtree by 2/3 of this tree's shift.\n for (let i = childLayouts.length - 1; i >= 0; i--) {\n const layout = childLayouts[i];\n const gap = minDistance(layout.rightBoundary, preLayout.leftBoundary);\n // Heuristic to keep large, complex subtrees further\n // away from each other than closely related\n // siblings. We have a gap multiplier that defaults\n // to 1, and is increased by 1 for each of the left\n // and right subtrees that has more than one leaf\n // (i.e., is not just a single chain of nodes all\n // the way down).\n let gapMultiplier = 1;\n if (preLayout.leafCount > 1) {\n gapMultiplier++;\n }\n if (layout.leafCount > 1) {\n gapMultiplier++;\n }\n // We then require that the gap between the two\n // subtrees be at least the multiplier times the\n // horizontal gap specified for this zoom level.\n const targetGap = horizontalGap * gapMultiplier;\n // Note that this gap is a minimum requirement. It\n // will often be the case that subtrees between the\n // two subtrees we're considering already forced\n // them to be further apart than this minimum gap.\n // In those cases we don't do anything.\n if (gap < targetGap) {\n const expansion = targetGap - gap;\n preLayout = shiftLayout(preLayout, NewVector(expansion, 0));\n childLayouts = [\n ...childLayouts.slice(0, i),\n ...childLayouts\n .slice(i)\n .map((layout, j) => shiftLayout(layout, NewVector((expansion * j) /\n (childLayouts.length - i), 0))),\n ];\n }\n }\n }\n childLayouts.push(preLayout);\n });\n const childNodes = _.flatten(childLayouts.map((layout) => layout.nodes));\n const childMaxHeight = _.max(childLayouts.map((layout) => layout.bounds.dimensions.y));\n // Width of the subtree rooted at this node laid out, including\n // both it and its descendants; it's equal to the maximum of the\n // width of this node and of the width of all its descendants.\n let width = nodeDimensions.x;\n let leafCount = 1;\n if (childLayouts.length) {\n width = Math.max(width, _.max(childLayouts.map(({ bounds }) => bounds.position.x + bounds.dimensions.x)));\n leafCount = _.sum(childLayouts.map((layout) => layout.leafCount));\n }\n // this node's upper-left x coordinate\n const nodeX = width / 2 - nodeDimensions.x / 2;\n // this node's bounds: centered at the width calculated above\n const nodeBounds = {\n position: { x: nodeX, y: 0 },\n dimensions: nodeDimensions,\n };\n // height of the subtree rooted at this node laid out; if this\n // node is a leaf, it's only the leaf's own height\n let height = nodeDimensions.y;\n if (children.length) {\n // if this node has children, the height reaches until the\n // bottom of the tallest subtree\n height = childYOffset + childMaxHeight;\n }\n // Compute this node's left and right boundaries.\n const childrenLeftBoundary = _.reduce(childLayouts.map((layout) => layout.leftBoundary), fallback);\n const childrenRightBoundary = _.reduceRight(childLayouts.map((layout) => layout.rightBoundary), fallback);\n const topLeftCorner = NewVector(nodeX, 0);\n const topRightCorner = NewVector(nodeX + nodeDimensions.x, 0);\n let leftBoundary, rightBoundary;\n if (childrenLeftBoundary) {\n leftBoundary = preExtend(topLeftCorner, nodeHeight, childrenLeftBoundary);\n }\n else {\n leftBoundary = {\n vertices: [topLeftCorner],\n // Heuristic: we pretend leaf nodes are taller than they\n // actually are, so that we keep some space below them\n // and don't push unrelated nodes directly under them in\n // the layout.\n endY: nodeHeight + bracketHeight,\n };\n }\n if (childrenRightBoundary) {\n rightBoundary = preExtend(topRightCorner, nodeHeight, childrenRightBoundary);\n }\n else {\n rightBoundary = {\n vertices: [topRightCorner],\n // Same heuristic as above.\n endY: nodeHeight + bracketHeight,\n };\n }\n let parentString;\n if (parent) {\n parentString = parent.toString();\n }\n return {\n nodes: [\n {\n id: String(id),\n bounds: nodeBounds,\n data: tree.nodes[id].data,\n parent: parentString,\n children: children.map((child) => String(child)),\n },\n ...childNodes,\n ],\n bounds: {\n position: { x: 0, y: 0 },\n dimensions: {\n x: width,\n y: height,\n },\n },\n rootBounds: nodeBounds,\n leftBoundary,\n rightBoundary,\n leafCount,\n };\n };\n const sublayout = layoutSubtree(tree.root);\n // Shift so the root node is centered at (0, 0)\n const { rootBounds } = sublayout;\n const { nodes, bounds } = shiftLayout(sublayout, negate(center(rootBounds)));\n return {\n nodes,\n bounds,\n };\n}\n","export function NewTree(rootId, nodes) {\n return {\n root: rootId,\n nodes,\n };\n}\n// Clients of `visit` should not rely on the visit order.\n// It is implemented as a DFS right now but it may change.\nexport function visit(tree, cb) {\n // This is a stack (LIFO) where we keep the IDs\n // of the nodes that we have yet to visit.\n const toVisit = [];\n toVisit.push(tree.root);\n while (toVisit.length > 0) {\n // We know nextNodeId exists because we only pop if the queue has any elements.\n const nextNodeId = toVisit.pop();\n const nextNode = tree.nodes[nextNodeId];\n cb(nextNodeId, nextNode);\n for (let i = 0; i < nextNode.children.length; i++) {\n toVisit.push(nextNode.children[i]);\n }\n }\n}\n// Clients of `mapTree` cannot modify the structure of the tree.\n// This function's purpose is to create a new tree with the same\n// structure as the input tree.\nexport function mapTree(tree, mapper) {\n const newTree = NewTree(tree.root, tree.nodes);\n visit(newTree, (nodeId, node) => {\n newTree.nodes[nodeId] = mapper(nodeId, node);\n });\n return newTree;\n}\n","import _ from \"lodash\";\nimport { mapTree, NewTree } from \"../../../util/tree\";\n// Starting in MemSQL 6.7, query plans generated by EXPLAIN and PROFILE have an\n// associated version number. This is used to identify a formatting change to\n// the JSON or any other changes that will effectively break Studio's Visual\n// Explain. For that reason, each version of MemSQL Studio supports a certain\n// set of plan versions.\n//\n// Note that we assume version=0 for query plans generated before 6.7.\nconst MAX_SUPPORTED_PLAN_VERSION = 4;\nexport const parseRawExplain = (rawPlan) => {\n const throwParseError = (msg) => {\n throw new Error(`Error while parsing the provided JSON as an EXPLAIN or PROFILE output file: ${msg}`);\n };\n // See DB-33499.\n let version = 0;\n if (!Array.isArray(rawPlan) && rawPlan.version) {\n // If we find a plan version (>= 1), then we save it and parse the\n // standard versioned plan format. If it is not a supported version,\n // then we throw an error that is shown to users.\n version = Number(rawPlan.version);\n if (version > MAX_SUPPORTED_PLAN_VERSION) {\n throwParseError(\"This query plan cannot be loaded by this version of SingleStore Studio. Please upgrade to a newer version of Studio.\");\n }\n if (rawPlan.explain) {\n rawPlan = rawPlan.explain[0];\n }\n else if (rawPlan.profile) {\n rawPlan = rawPlan.profile[0];\n }\n else {\n throwParseError(\"Invalid plan: missing 'explain' or 'profile' key. Try to upgrade to a newer version of Studio.\");\n }\n }\n else {\n // If we don't find a plan version, then we are dealing\n // with a MemSQL <= 6.5 generated plan (unversioned).\n if (Array.isArray(rawPlan)) {\n rawPlan = rawPlan[0].Plan;\n }\n }\n let nodeId = 0;\n const getNextNodeId = () => {\n return nodeId++;\n };\n let tree = NewTree(-1, {}); // temporary\n let planType = \"EXPLAIN\"; // temporary\n const parseNode = (node) => {\n // TODO: Come up with better criteria for how to tell if some JSON is an\n // EXPLAIN or a PROFILE, possibly when the engine gives us a better\n // signal. This is currently not written in a more generic way, e.g.\n // using visit from util/tree, because there's a good chance that the\n // better criteria won't involve any kind of tree traversal.\n if (node.actual_row_count || node.actual_total_time) {\n planType = \"PROFILE\";\n }\n let children = [];\n if (!Array.isArray(node.inputs)) {\n throwParseError(\"Expected the inputs property to be an array.\");\n }\n // We always parse children in input files in a right-to-left order.\n for (let i = node.inputs.length - 1; i >= 0; i--) {\n children.push(parseNode(node.inputs[i]));\n }\n // In plan files with version 4 or higher, input children are ordered\n // right to left. In plan files with version 3 or lower, the children of\n // UnionAll are ordered left-to-right which means that we have to\n // reverse them.\n if (version <= 3 && node.executor === \"UnionAll\") {\n children.reverse();\n }\n if (node.subselects) {\n // Subselect children have an `input` node as well as some subselect\n // metadata. We pass the subselect metadata to the `input` node\n // and treat it as one thing in our tree.\n children = children.concat(_.map(node.subselects, (subselect) => parseNode({\n ...subselect.input,\n ...subselect,\n })));\n }\n const executorInstance = {\n executor: node.executor,\n metrics: {},\n meta: {\n // This will be updated in the next pass through the tree\n isTerminal: false,\n },\n raw: _.omit(node, [\"inputs\", \"subselects\", \"executor\"]),\n };\n const id = getNextNodeId();\n const treeNode = {\n data: executorInstance,\n children,\n };\n tree.nodes[id] = treeNode;\n return id;\n };\n // Step 1: We parse and build the overall structure of the tree.\n tree.root = parseNode(rawPlan);\n // Step 2: We go through the tree and calculate some accumulate\n // metrics (to be used in Step 3) and parse the `metrics` and the\n // `meta` object in each executor instance.\n let totalTimeMs = 0;\n let maxRowCount = -Infinity;\n let maxTotalTimeMs = -Infinity;\n let maxEstimatedRowCount = -Infinity;\n let maxAbsDeltaRowCount = -Infinity;\n tree = mapTree(tree, (nodeId, node) => {\n const { data: { raw }, } = node;\n const meta = {};\n if (node.children.length === 0) {\n meta.isTerminal = true;\n }\n if (raw.table) {\n meta.tableName = raw.table;\n }\n if (raw.db) {\n meta.databaseName = raw.db;\n }\n const metrics = node.data.metrics;\n // The `isMax` and `percent` metrics will be set in\n // the next pass through the tree of the parser.\n if (raw.actual_row_count) {\n metrics.actualRowCount = {\n value: raw.actual_row_count.value,\n percent: 0,\n isMax: false,\n };\n maxRowCount = Math.max(maxRowCount, metrics.actualRowCount.value);\n }\n if (raw.est_table_rows !== undefined || raw.est_rows !== undefined) {\n metrics.estimatedRowCount = {\n value: Number(raw.est_table_rows || raw.est_rows),\n percent: 0,\n isMax: false,\n };\n maxEstimatedRowCount = Math.max(maxEstimatedRowCount, metrics.estimatedRowCount.value);\n }\n if (metrics.actualRowCount && metrics.estimatedRowCount) {\n metrics.deltaRowCount = {\n value: metrics.actualRowCount.value -\n metrics.estimatedRowCount.value,\n percent: 0,\n isMax: false,\n };\n maxAbsDeltaRowCount = Math.max(maxAbsDeltaRowCount, Math.abs(metrics.deltaRowCount.value));\n }\n if (raw.actual_total_time) {\n // The engine doesn't include `network_time` in `actual_total_time` so we\n // manually add network_time to actual_total_time if we have it. Moreover,\n // we always extract `actual_total_time` into `actual_cpu_time` (a new fake\n // metric that Studio creates) since that's what it actually means.\n raw.actual_cpu_time = _.clone(raw.actual_total_time);\n if (raw.network_time) {\n raw.actual_total_time.value += raw.network_time.value;\n }\n metrics.totalTimeMs = {\n value: raw.actual_total_time.value,\n percent: 0,\n isMax: false,\n };\n totalTimeMs += metrics.totalTimeMs.value;\n maxTotalTimeMs = Math.max(maxTotalTimeMs, metrics.totalTimeMs.value);\n }\n if (raw.memory_usage) {\n metrics.memoryUsage = {\n value: raw.memory_usage.value,\n percent: 0,\n isMax: false,\n };\n }\n return {\n data: {\n ...node.data,\n meta,\n raw: _.omit(node.data.raw, [\"table\", \"db\"]),\n },\n children: node.children,\n };\n });\n // Step 3: We go through the tree and set some metrics\n // such as percents and maximums.\n tree = mapTree(tree, (nodeId, node) => {\n const metrics = node.data.metrics;\n if (metrics.actualRowCount) {\n metrics.actualRowCount = {\n ...metrics.actualRowCount,\n percent: metrics.actualRowCount.value / maxRowCount,\n isMax: metrics.actualRowCount.value === maxRowCount,\n };\n }\n if (metrics.estimatedRowCount) {\n metrics.estimatedRowCount = {\n ...metrics.estimatedRowCount,\n percent: metrics.estimatedRowCount.value / maxEstimatedRowCount,\n isMax: metrics.estimatedRowCount.value === maxEstimatedRowCount,\n };\n }\n if (metrics.deltaRowCount) {\n const absDifference = Math.abs(metrics.deltaRowCount.value);\n metrics.deltaRowCount = {\n ...metrics.deltaRowCount,\n percent: absDifference / maxAbsDeltaRowCount,\n isMax: absDifference === maxAbsDeltaRowCount,\n };\n }\n if (metrics.totalTimeMs) {\n metrics.totalTimeMs = {\n ...metrics.totalTimeMs,\n percent: totalTimeMs === 0\n ? 0\n : metrics.totalTimeMs.value / totalTimeMs,\n isMax: metrics.totalTimeMs.value === maxTotalTimeMs,\n };\n }\n return {\n data: {\n ...node.data,\n metrics,\n },\n children: node.children,\n };\n });\n return {\n tree,\n planType,\n version,\n };\n};\nexport const parseClusterInfo = (rawPlan) => {\n let clusterInfo;\n // If plan is an array it doesn't contain cluster info. See DB-33499 for\n // more details.\n if (!Array.isArray(rawPlan) && rawPlan.info) {\n const { memsql_version, num_online_aggs, num_online_leaves, context_database, memsql_version_hash, } = rawPlan.info;\n clusterInfo = {\n memsqlVersion: memsql_version,\n numOnlineAggs: num_online_aggs,\n numOnlineLeaves: num_online_leaves,\n contextDatabase: context_database,\n memsqlVersionHash: memsql_version_hash,\n };\n }\n return clusterInfo;\n};\nexport const parseQueryInfo = (rawPlan) => {\n let queryInfo;\n // If plan is an array it doesn't contain query info. See DB-33499 for\n // more details.\n if (!Array.isArray(rawPlan) && rawPlan.query_info) {\n const { query_text, total_runtime_ms } = rawPlan.query_info;\n queryInfo = {\n queryText: query_text,\n totalRuntime: total_runtime_ms,\n };\n }\n return queryInfo;\n};\nconst generateStatsWarning = (dbName, tableName, columns) => ({\n description: `WARNING: Statistics have not been collected on the following tables and columns. Consider running the following commands to collect them: ANALYZE TABLE ${dbName}.${tableName} COLUMNS ${columns} ENABLE;`,\n linkName: \"explain-stats-warning\",\n});\n// The keys in this object need to match with the keys in plan_warnings\nconst KNOWN_WARNINGS_DOCS_LINKS = {\n type_mismatched_comparisons: \"explain-mismatched-types-warning\",\n};\n// The keys in this object need to match with the keys in plan_warnings\nconst KNOWN_WARNINGS_DESCRIPTIONS = {\n has_empty_tables: \"WARNING: Using rule-based optimization due to empty tables.\",\n has_large_join_singlebox_optimizer: \"WARNING: Join of more than singlebox_optimizer_cost_based_threshold tables will \" +\n \"not be optimized by the singlebox optimizer. \" +\n \"To allow the cost-based singlebox optimizer to run, raise \" +\n \"singlebox_optimizer_cost_based_threshold. This can produce a better plan but also \" +\n \"make the optimization take longer.\",\n has_large_predicate_count: \"WARNING: Where condition on more than quadratic_rewrite_size_limit predicates \" +\n \"cannot be fully optimized, falling back to limited optimization. \" +\n \"To allow full optimization, raise quadratic_rewrite_size_limit. This can produce \" +\n \"a better plan but also make the optimization take longer.\",\n};\nexport const parseExplainWarnings = (rawPlan) => {\n const warnings = [];\n // Missing stats is the only warning not in plan_warnings\n if (\"missing_stats\" in rawPlan) {\n const missingStats = rawPlan[\"missing_stats\"];\n const dbName = Object.keys(missingStats)[0];\n const tableName = Object.keys(missingStats[dbName])[0];\n const columns = missingStats[dbName][tableName].join(\",\");\n warnings.push(generateStatsWarning(dbName, tableName, columns));\n }\n // Every other warning is nested in an object under plan_warnings. The\n // object's key is the category and the value is an array of warning objects\n if (\"plan_warnings\" in rawPlan) {\n const planWarnings = rawPlan[\"plan_warnings\"];\n for (const warningCategory in planWarnings) {\n const plan = planWarnings[warningCategory];\n const descriptions = [];\n if (typeof plan === \"string\") {\n descriptions.push(KNOWN_WARNINGS_DESCRIPTIONS[warningCategory]);\n }\n else {\n for (let i = 0; i < plan.length; i++) {\n descriptions.push(plan[i].description);\n }\n }\n descriptions.forEach((description) => {\n if (description) {\n const warning = {\n description,\n linkName: KNOWN_WARNINGS_DOCS_LINKS[warningCategory],\n };\n warnings.push(warning);\n }\n });\n }\n }\n // This is a separated warning that is present when it's the first run of\n // the profile of the query and its compile time is included. The profile\n // of a query is compiled separately from the query itself.\n if (\"warning\" in rawPlan && rawPlan[\"warning\"] === \"requires compile\") {\n const DESCRIPTION = \"WARNING: This is the first run of the profile of the query, its compile time is included.\";\n const warning = {\n description: DESCRIPTION,\n linkName: undefined,\n showReprofileButton: true,\n };\n warnings.push(warning);\n }\n return warnings;\n};\n","import { from, merge, Observable, of } from \"rxjs\";\nimport { servicesLocator } from \"../../../services/services-locator\";\nimport { select } from \"../../../util/query\";\nimport { makeActionCreator } from \"../../../worker/api/helpers\";\nimport { SQL_SELECT_LIMIT } from \"../../../worker/net/connection-manager\";\nimport { executorInstanceToDimensions, getSpacing } from \"./dimensions\";\nimport { generateLayout } from \"./layout\";\nimport { parseClusterInfo, parseExplainWarnings, parseQueryInfo, parseRawExplain, } from \"./parse\";\nexport const parseExplainString = makeActionCreator({\n name: \"parseExplainString\",\n handle: (ctx, { rawExplain, source, sourceType, }) => {\n const loading$ = of(createExplainLayoutAction({}));\n const compute$ = Observable.create((observer) => {\n try {\n const { layout, clusterInfo, queryInfo, warnings } = generateExplainLayout(rawExplain);\n observer.next(createExplainLayoutAction({\n payload: {\n layout,\n rawJSON: rawExplain,\n source,\n clusterInfo,\n queryInfo,\n sourceType,\n warnings,\n },\n }));\n }\n catch (error) {\n observer.next(createExplainLayoutAction({ error }));\n }\n });\n return merge(loading$, compute$);\n },\n});\n// This creates a EXPLAIN_LAYOUT action. If the layout is not passed in,\n// then it creates a loading EXPLAIN_LAYOUT action.\nexport const createExplainLayoutAction = ({ payload, error, }) => {\n if (error) {\n return {\n type: \"EXPLAIN_LAYOUT\",\n error: true,\n payload: {\n message: error.message,\n },\n };\n }\n else {\n if (payload) {\n return {\n type: \"EXPLAIN_LAYOUT\",\n error: false,\n payload: { loading: false, data: payload },\n };\n }\n else {\n return {\n type: \"EXPLAIN_LAYOUT\",\n error: false,\n payload: { loading: true },\n };\n }\n }\n};\n// This function generates a layout from a given raw EXPLAIN/PROFILE string.\n// Note that it can throw many types of errors. The errors thrown here have\n// messages which are user-friendly and can be show in a UI.\n//\n// If the type of the layout is known, the caller can pass it in, and it will be\n// used as the type of the returned ExplainLayout. If not, this function will\n// make a guess itself.\nexport const generateExplainLayout = (rawExplain, planType) => {\n let plan;\n try {\n plan = JSON.parse(rawExplain);\n }\n catch (err) {\n throw new Error(\"Failed to parse the provided JSON.\");\n }\n const clusterInfo = parseClusterInfo(plan);\n const queryInfo = parseQueryInfo(plan);\n const warnings = parseExplainWarnings(plan);\n const { tree, planType: guessedType } = parseRawExplain(plan);\n return {\n layout: {\n layout: generateLayout(tree, executorInstanceToDimensions, getSpacing),\n planType: planType || guessedType,\n },\n clusterInfo,\n queryInfo,\n warnings,\n };\n};\nexport const generateExplainActionForQuery = ({ rawJSON, planType, source, }) => {\n try {\n const { layout, clusterInfo, queryInfo, warnings } = generateExplainLayout(rawJSON, planType);\n return createExplainLayoutAction({\n payload: {\n layout,\n rawJSON,\n clusterInfo,\n queryInfo,\n warnings,\n source,\n sourceType: \"QUERY\",\n },\n });\n }\n catch (error) {\n return createExplainLayoutAction({\n error,\n });\n }\n};\nexport const messageToExplainLayoutAction = (msg) => {\n if (msg.kind === \"queryMessage\" &&\n msg.meta &&\n msg.meta.kind === \"SHOW_PLAN\") {\n const { planType, source } = msg.meta;\n if (msg.lastInGroup &&\n msg.queryMsg.kind === \"rows\" &&\n msg.queryMsg.rows.length) {\n const rawJSON = msg.queryMsg.rows[0][0];\n return generateExplainActionForQuery({ rawJSON, planType, source });\n }\n else if (msg.queryMsg.kind === \"queryEnd\" &&\n msg.queryMsg.status.state === \"error\") {\n return createExplainLayoutAction({\n error: new Error(msg.queryMsg.status.message),\n });\n }\n }\n};\nexport const createExplainQueryGroupRepr = ({ query, }) => ({\n queries: [\n {\n text: `EXPLAIN JSON ${query}`,\n values: [],\n },\n ],\n onError: \"STOP\",\n context: {\n perRowLimit: SQL_SELECT_LIMIT,\n },\n meta: {\n kind: \"SHOW_PLAN\",\n planType: \"EXPLAIN\",\n source: query,\n },\n});\nexport const createProfileQueryGroupRepr = ({ query, }) => ({\n queries: [\n {\n text: `PROFILE ${query}`,\n values: [],\n },\n {\n text: `SHOW PROFILE JSON`,\n values: [],\n },\n ],\n onError: \"STOP\",\n context: {\n perRowLimit: SQL_SELECT_LIMIT,\n },\n meta: {\n kind: \"SHOW_PLAN\",\n planType: \"PROFILE\",\n source: query,\n },\n});\nexport const dynamicExplainQuery = makeActionCreator({\n name: \"dynamicExplainQuery\",\n handle: (ctx, { query, databaseName, connectionConfig, }) => {\n const $loading = of({\n type: \"EXPLAIN_LAYOUT\",\n error: false,\n payload: {\n loading: true,\n },\n });\n const $compute = from(ctx.manager\n .getPooledConnection(connectionConfig)\n .then((conn) => {\n // databaseName is not always defined, so sometimes we want to\n // run the explain on the connection immediately, and sometimes\n // we want to do it after explicitly selecting a database.\n let doneSelecting = Promise.resolve();\n if (databaseName) {\n doneSelecting = select(conn, \"USE ?\", [databaseName]);\n }\n return doneSelecting\n .then(() => select(conn, `EXPLAIN JSON ${query}`))\n .then((rows) => {\n return generateExplainActionForQuery({\n rawJSON: rows[0].EXPLAIN,\n planType: \"EXPLAIN\",\n source: query,\n });\n })\n .catch((error) => {\n servicesLocator.getLogger().logError(error);\n return createExplainLayoutAction({ error });\n })\n .finally(() => conn.release());\n })\n .catch((error) => {\n return createExplainLayoutAction({ error });\n }));\n return merge($loading, $compute);\n },\n});\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function hostReportError(err) {\n setTimeout(function () { throw err; }, 0);\n}\n//# sourceMappingURL=hostReportError.js.map\n","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport * as React from 'react';\nexport var ReduxFormContext = React.createContext(null);\nexport var withReduxForm = function withReduxForm(Component) {\n var Hoc =\n /*#__PURE__*/\n function (_React$Component) {\n _inheritsLoose(Hoc, _React$Component);\n\n function Hoc() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = Hoc.prototype;\n\n _proto.render = function render() {\n var _this$props = this.props,\n forwardedRef = _this$props.forwardedRef,\n rest = _objectWithoutPropertiesLoose(_this$props, [\"forwardedRef\"]);\n\n return React.createElement(ReduxFormContext.Consumer, {\n children: function children(_reduxForm) {\n return React.createElement(Component, _extends({\n _reduxForm: _reduxForm,\n ref: forwardedRef\n }, rest));\n }\n });\n };\n\n return Hoc;\n }(React.Component);\n\n var ref = React.forwardRef(function (props, ref) {\n return React.createElement(Hoc, _extends({}, props, {\n forwardedRef: ref\n }));\n });\n ref.displayName = Component.displayName || Component.name || 'Component';\n return ref;\n};","import { servicesLocator } from \"@single-js/common/services/services-locator\";\nimport classnames from \"classnames\";\nimport _ from \"lodash\";\nimport * as React from \"react\";\nimport { globalDeselect } from \"../../util/global-deselect\";\nimport { CustomScrollbar } from \"../custom-scrollbar/custom-scrollbar\";\nimport { GeneralError } from \"../general-error/general-error\";\nimport { Icon } from \"../icon/icon\";\nimport { ResizeDetector } from \"../resize/resize-detector\";\nimport { Tip } from \"../tip/tip\";\nimport \"./super-table.scss\";\nconst COLUMN_HEIGHT = 50;\nconst COMPACT_COLUMN_HEIGHT = 40;\nconst MAX_NUMBER_ROWS_TO_MEASURE = 100;\nconst bounded = (n, min = 0, max = Infinity) => Math.max(min, Math.min(max, n));\nfunction propColumnsToStateColumns(columns) {\n return _.map(columns, (c) => {\n const { defaultMaxWidth, defaultMinWidth } = c;\n return {\n ..._.omit(c, [\"defaultMinWidth\", \"defaultMaxWidth\"]),\n minWidth: defaultMinWidth,\n maxWidth: defaultMaxWidth,\n };\n });\n}\n// This represents the minimum width a column can take from a resize.\nexport const MIN_RESIZE_COLUMN_WIDTH = 50;\nconst fillColumnsToWidth = (columns, tableWidth, contentMinWidth, preferredWidths) => {\n const fillDelta = tableWidth - contentMinWidth;\n // What we are doing here is distribute the `fillDelta` space that we\n // have to occupy with a little bit from each column that has the\n // \"potential\" to grow (i.e. columns that either have a larger\n // preferredWidth than minWidth OR columns that have an EQUAL\n // preferredWidth as minWidth BUT their maxWidth is not the same as\n // minWidth).\n const ratios = _.map(columns, (c, i) => preferredWidths[i] - (c.minWidth || 0) ||\n (c.minWidth === c.maxWidth ? 0 : 1));\n const ratiosSum = _.sum(ratios);\n // We then take each ratio and set the width of each column to be their\n // minimum width plus their \"ratio\" of `fillDelta`.\n const deltas = _.map(ratios, (r) => {\n if (ratiosSum === 0) {\n return 0;\n }\n else {\n return fillDelta * (r / ratiosSum);\n }\n });\n return _.map(columns, (c, i) => (c.minWidth || 0) + deltas[i]);\n};\nconst computeColumnPositions = (columns, tableWidth) => {\n if (!columns.length) {\n return [];\n }\n const contentMinWidth = _.sumBy(columns, (c) => c.minWidth || 0);\n const defaultColumnWidth = tableWidth / columns.length;\n const preferredWidths = _.map(columns, (c) => bounded(defaultColumnWidth, c.minWidth, c.maxWidth));\n let widths;\n if (contentMinWidth >= tableWidth) {\n // In this case, we can't go any smaller so we will need to use all of the\n // columns minWidths. This will cause the table to scroll.\n widths = _.map(columns, (c, i) => c.minWidth || preferredWidths[i]);\n }\n else {\n // In this case, we need to make some of the columns larger to fill the\n // tableWidth\n widths = fillColumnsToWidth(columns, tableWidth, contentMinWidth, preferredWidths);\n }\n let left = 0;\n return _.map(widths, (width) => {\n const out = { width, left };\n left += width;\n return out;\n });\n};\nconst computeColumnPositionsAutoFit = (columns, columnDataWidths, tableWidth) => {\n if (!columns.length) {\n return [];\n }\n const preferredWidths = _.map(columns, (c, i) => bounded(columnDataWidths[i], c.minWidth, c.maxWidth));\n const contentPreferredWidth = _.sumBy(preferredWidths);\n let widths = [];\n if (contentPreferredWidth <= tableWidth) {\n // In this case, each column can use its preferred width, and it won't fill\n // all the available table width.\n widths = preferredWidths;\n }\n else if (columns.length <= 4) {\n // In this case, we don't have many columns so each one won't occupy\n // more than totalAvailableWidth / numOfColumns. We keep track each\n // column that gets less width that it'd like, and then in the end\n // distribute the remaining space (if any) throughout those columns.\n const maxWidth = tableWidth / columns.length;\n let sumWidths = 0;\n const cappedColumns = []; // list of column indexes which could use more width\n for (let i = 0; i < columns.length; i++) {\n // We need to save `overrideWidth` into a variable to help TypeScript.\n const manualOverrideWidth = columns[i].manualOverrideWidth;\n if (manualOverrideWidth !== undefined) {\n widths[i] = manualOverrideWidth;\n }\n else if (preferredWidths[i] < maxWidth) {\n widths[i] = preferredWidths[i];\n }\n else {\n widths[i] = maxWidth;\n cappedColumns.push(i);\n }\n sumWidths += widths[i];\n }\n // If we have more width, spread it evenly amongst all columns which could use more\n if (sumWidths < tableWidth) {\n for (let i = 0; i < cappedColumns.length; i++) {\n widths[cappedColumns[i]] =\n widths[cappedColumns[i]] +\n (tableWidth - sumWidths) / cappedColumns.length;\n }\n }\n }\n else {\n // In this case, each column won't occupy more than 1/4 of the available table width\n const maxWidth = tableWidth / 4;\n widths = _.map(columns, (c, i) => {\n if (c.manualOverrideWidth !== undefined) {\n return c.manualOverrideWidth;\n }\n else {\n return Math.min(preferredWidths[i], maxWidth);\n }\n });\n }\n let left = 0;\n return _.map(widths, (width) => {\n const out = { width, left };\n left += width;\n return out;\n });\n};\n// This component ensures that we have the same DOM structure between the real\n// table and the table we use to render columns offscreen for measuring.\nconst TableInner = (props) => {\n const { columnsStyle, renderedColumns, rowsStyle, renderedRows, className, innerRef, compact, emptyState, ...rest } = props;\n const classes = classnames(\"table-inner\", className);\n const columnsClasses = classnames(\"columns\", { compact });\n const rowsClasses = classnames(\"rows\", { compact });\n let rowsContent = renderedRows;\n if (_.isEmpty(renderedRows) && emptyState) {\n rowsContent = emptyState;\n }\n return (React.createElement(\"div\", { className: classes, ref: innerRef, ...rest },\n React.createElement(\"div\", { className: columnsClasses, style: columnsStyle }, renderedColumns),\n React.createElement(\"div\", { className: rowsClasses, style: rowsStyle }, rowsContent)));\n};\nexport class SuperTable extends React.Component {\n constructor(props) {\n super(props);\n this.handleResizeColumnMouseDown = (index) => (evt) => {\n const { columnPositions } = this.state;\n const position = columnPositions[index];\n globalDeselect();\n this.setState({\n columnResize: {\n index,\n startX: evt.clientX - position.width,\n width: position.width,\n },\n });\n };\n this.handleMouseMove = (e) => {\n const { columnResize } = this.state;\n if (columnResize) {\n globalDeselect();\n const width = Math.max(MIN_RESIZE_COLUMN_WIDTH, e.clientX - columnResize.startX);\n this.setState({\n columnResize: {\n ...columnResize,\n width,\n },\n });\n }\n };\n this.handleMouseUp = () => {\n const { columnResize } = this.state;\n if (columnResize) {\n this.updateColumnWidth(columnResize.index, columnResize.width);\n this.setState({\n columnResize: undefined,\n });\n }\n };\n this.handleResizeColumnDoubleClick = (index) => () => {\n if (this.state.columnIndexToMeasure === undefined) {\n this.setState({\n columnIndexToMeasure: index,\n });\n }\n else {\n servicesLocator\n .getLogger()\n .logError(new Error(\"Received double click while already trying to measure column.\"));\n }\n };\n // This function takes the `index` of a column and a `width` and updates its\n // size to that `width`. It may or may not update the width of the column\n // immediately afterwards.\n this.updateColumnWidth = (index, width) => {\n const { autofit } = this.props;\n const { columns, columnPositions, columnDataWidths } = this.state;\n // Loop through the columns and mutate each column's minWidth and\n // maxWidth. After these changes, we call `computeColumnPositions` to\n // recalculate the position of each column taking into account the new\n // minWidth/maxWidth constraints.\n const newColumns = [];\n for (let i = 0; i < columns.length; i++) {\n if (i === index) {\n newColumns.push({\n ...columns[i],\n minWidth: width,\n maxWidth: width,\n manualOverrideWidth: width,\n });\n }\n else {\n // Fix the `minWidth` and `maxWidth` of every column that isn't\n // the resized column or the one immediately afterwards.\n newColumns.push({\n ...columns[i],\n minWidth: columnPositions[i].width,\n maxWidth: columnPositions[i].width,\n });\n }\n }\n let newColumnPositions;\n if (autofit) {\n newColumnPositions = computeColumnPositionsAutoFit(newColumns, columnDataWidths, this.state.width);\n }\n else {\n newColumnPositions = computeColumnPositions(newColumns, this.state.width);\n }\n this.setState({\n columns: newColumns,\n columnPositions: newColumnPositions,\n });\n };\n // This will be called immediately when ResizeDetector mounts\n this.handleTableResize = _.debounce((width, height) => {\n let newPositions;\n if (this.props.autofit && this.state.hasMeasured) {\n newPositions = computeColumnPositionsAutoFit(this.state.columns, this.state.columnDataWidths, width);\n }\n else {\n newPositions = computeColumnPositions(this.state.columns, width);\n }\n if (width !== this.state.width ||\n height !== this.state.height ||\n !_.isEqual(newPositions, this.state.columnPositions)) {\n this.setState({\n width,\n height,\n columnPositions: newPositions,\n });\n }\n }, 50);\n this.handleScroll = ({ scrollTop }) => {\n this.setState({ scrollTop });\n };\n this.doneMeasuringColumn = (div) => {\n const { columnIndexToMeasure, width } = this.state;\n if (columnIndexToMeasure !== undefined && div) {\n const measuredWidth = div.getBoundingClientRect().width;\n this.updateColumnWidth(columnIndexToMeasure, Math.max(Math.min(Math.ceil(measuredWidth), width * 0.9), MIN_RESIZE_COLUMN_WIDTH));\n this.setState({\n columnIndexToMeasure: undefined,\n });\n }\n };\n this.doneMeasuringTable = (div) => {\n const { columns, width, measuring, columnDataWidths } = this.state;\n if (measuring && div) {\n const dataWidths = [];\n // This div is the parent of all the columns divs. We iterate over all the children\n // to get the width of each column.\n for (let i = 0; i < div.childElementCount; i++) {\n // Each children[i] is a TableInner that was created with a single column\n const measuredWidth = div.children[i].getBoundingClientRect().width;\n dataWidths.push(measuredWidth);\n }\n if (!_.isEqual(columnDataWidths, dataWidths)) {\n const columnPositions = computeColumnPositionsAutoFit(columns, dataWidths, width);\n this.setState({\n columnDataWidths: dataWidths,\n columnPositions,\n });\n }\n this.setState({\n measuring: false,\n hasMeasured: true,\n });\n }\n };\n this.getColumnHeight = () => {\n const { compact } = this.props;\n if (compact) {\n return COMPACT_COLUMN_HEIGHT;\n }\n else {\n return COLUMN_HEIGHT;\n }\n };\n const stateColumns = propColumnsToStateColumns(props.columns);\n this.state = {\n width: 0,\n height: 0,\n columns: stateColumns,\n columnPositions: computeColumnPositions(stateColumns, 0),\n scrollTop: 0,\n columnIndexToMeasure: undefined,\n measuring: false,\n hasMeasured: false,\n columnDataWidths: [],\n };\n }\n componentDidMount() {\n document.addEventListener(\"mousemove\", this.handleMouseMove);\n document.addEventListener(\"mouseup\", this.handleMouseUp);\n }\n componentDidUpdate() {\n const { autofit } = this.props;\n const { measuring, columnDataWidths, hasMeasured } = this.state;\n if (autofit && !hasMeasured) {\n const willMeasure = columnDataWidths.length === 0;\n if (willMeasure) {\n if (!measuring) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({ measuring: true });\n }\n }\n else {\n if (measuring) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({ measuring: false });\n }\n }\n }\n }\n // Since `handleTableResize` is debounced, if the SuperTable is unmounted at\n // the right time, the handleTableResize call might happen *after* the\n // component is unmounted. This results in wasted cycles but also in a React\n // warning as the `setState` call in `handleTableResize` will fail due to\n // the component being unmounted.\n //\n // To avoid this problem, we *cancel* the debounce when the SuperTable is\n // unmounted.\n componentWillUnmount() {\n this.handleTableResize.cancel();\n document.removeEventListener(\"mousemove\", this.handleMouseMove);\n document.removeEventListener(\"mouseup\", this.handleMouseUp);\n }\n static getDerivedStateFromProps(props, state) {\n // We update the columns cache if they changed deeply. We recalculate\n // the positions of the columns if the parent changed the `id` of any\n // of the columns or the length of the columns. We ignore changes to the\n // `minWidth` or `maxWidth` of any column otherwise because the SuperTable\n // owns those from the first render onwards.\n const removeColumnsWidths = (columns) => {\n return _.map(columns, (column) => _.omit(column, [\"minWidth\", \"maxWidth\"]));\n };\n const getColumnsIds = (columns) => {\n return _.map(columns, ({ id }) => ({ id }));\n };\n // If the parent changed the minWidth or maxWidth of the columns, we\n // ignore it since the SuperTable owns the minWidth and maxWidth of\n // every column from the first render onwards.\n const previousColumns = removeColumnsWidths(state.columns);\n const nextColumns = removeColumnsWidths(props.columns);\n const previousColumnsIds = getColumnsIds(state.columns);\n const nextColumnsIds = getColumnsIds(props.columns);\n if (!_.isEqual(previousColumns, nextColumns)) {\n if (!_.isEqual(previousColumnsIds, nextColumnsIds) ||\n previousColumns.length !== nextColumns.length) {\n const columns = propColumnsToStateColumns(props.columns);\n const columnPositions = computeColumnPositions(columns, state.width);\n return {\n columns,\n columnPositions,\n measuring: false,\n hasMeasured: false,\n columnDataWidths: [],\n };\n }\n else {\n // At this point, we know that the length of the columns is the same, so we just\n // update all the properties about columns that changed with the exception of\n // `minWidth`, `maxWidth` and `manualOverrideWidth`.\n return {\n columns: _.map(props.columns, (c, i) => ({\n ...c,\n minWidth: state.columns[i].minWidth,\n maxWidth: state.columns[i].maxWidth,\n manualOverrideWidth: state.columns[i].manualOverrideWidth,\n })),\n };\n }\n }\n return null;\n }\n // Utility functions to get rows with their heights when it doesn't matter\n // if it's fixed-height or variable-height.\n getRowsWithHeights() {\n if (\"rowHeight\" in this.props) {\n const { rowHeight } = this.props;\n return this.props.rows.map((row) => ({ ...row, rowHeight }));\n }\n else {\n return this.props.rows;\n }\n }\n getRowWithHeight(i) {\n if (\"rowHeight\" in this.props) {\n const { rowHeight } = this.props;\n return { ...this.props.rows[i], rowHeight };\n }\n else {\n return this.props.rows[i];\n }\n }\n renderMeasuringTable() {\n const { autofit, columns, compact } = this.props;\n const { measuring } = this.state;\n if (!autofit) {\n return null;\n }\n if (!measuring) {\n return null;\n }\n const renderedColumns = columns.map((column) => (React.createElement(SuperColumn, { ...column, key: column.id, onSort: undefined, position: undefined, className: \"measuring\" })));\n const renderedRows = columns.map((column, columnIndex) => {\n return this.getRowsWithHeights().flatMap((row, rowIndex) => {\n // For performance reasons, we won't render more than this\n // max number of rows.\n if (rowIndex >= MAX_NUMBER_ROWS_TO_MEASURE) {\n return [];\n }\n const cells = row.cells;\n if (!Array.isArray(cells)) {\n throw new Error(\"cells must be Array\");\n }\n const cell = cells[columnIndex];\n const classes = classnames(\"super-row\", row.className);\n return (React.createElement(\"div\", { className: classes, style: { height: row.rowHeight }, key: rowIndex },\n React.createElement(Cell, { rowId: undefined, column: column, position: undefined, title: undefined, className: \"measuring\" }, cell)));\n });\n });\n const tables = _.zipWith(renderedColumns, renderedRows, [...Array(columns.length).keys()], (renderedColumn, renderedRowForColumn, index) => (React.createElement(TableInner, { className: \"offscreen\", columnsStyle: {\n height: this.getColumnHeight(),\n }, renderedColumns: [renderedColumn], rowsStyle: {}, renderedRows: renderedRowForColumn, compact: compact, key: index, emptyState: this.props.emptyState })));\n return React.createElement(\"div\", { ref: this.doneMeasuringTable }, tables);\n }\n renderMeasuringColumn() {\n // Render an offscreen table with only cells in the particular column\n // we're trying to measure (if any). The offscreen table should have\n // the same DOM structure and class names as the real table as much as\n // possible, because we need the same CSS rules to apply to the cells\n // in order for the width measurements to be accurate.\n const { columnIndexToMeasure } = this.state;\n if (columnIndexToMeasure === undefined) {\n return null;\n }\n const { columns, compact } = this.props;\n const column = columns[columnIndexToMeasure];\n // This is the only column in its array, but we need to pass a key\n // anyway or React will complain.\n const renderedColumn = (React.createElement(SuperColumn, { ...column, key: column.id, onSort: undefined, position: undefined, className: \"measuring\" }));\n const renderedRows = this.getRowsWithHeights().map((row, rowIndex) => {\n const cells = row.cells;\n if (!Array.isArray(cells)) {\n throw new Error(\"cells must be Array\");\n }\n const cell = cells[columnIndexToMeasure];\n const classes = classnames(\"super-row\", row.className);\n return (React.createElement(\"div\", { className: classes, style: { height: row.rowHeight }, key: rowIndex },\n React.createElement(Cell, { rowId: undefined, column: column, position: undefined, title: undefined, className: \"measuring\" }, cell)));\n });\n return (React.createElement(TableInner, { className: \"offscreen\", innerRef: this.doneMeasuringColumn, columnsStyle: {\n height: this.getColumnHeight(),\n }, renderedColumns: [renderedColumn], rowsStyle: {}, renderedRows: renderedRows, compact: compact, emptyState: this.props.emptyState }));\n }\n computeVirtualizationInfo() {\n // Figure out the range of rows to render, based on the overscan.\n // (The range includes firstRowIndex and excludes lastRowIndex.)\n // Also figure out the table's full height and the offset that should\n // be above the first rendered row.\n // Note: we have to extract rows from this.props inside the if\n // statement instead of here to get its type refined by the if\n // statement.\n const { overscanCount } = this.props;\n const { scrollTop, height } = this.state;\n const scrollBottom = scrollTop + height;\n if (\"rowHeight\" in this.props) {\n // Constant row height; O(1)\n const { rows, rowHeight } = this.props;\n const firstRowIndex = Math.max(0, Math.floor(scrollTop / rowHeight) - overscanCount);\n const lastRowIndex = Math.min(rows.length, Math.ceil(scrollBottom / rowHeight) + overscanCount);\n return {\n firstRowIndex,\n lastRowIndex,\n totalHeight: rows.length * rowHeight,\n topOffset: firstRowIndex * rowHeight,\n };\n }\n else {\n // Variable row height; O(n)\n const { rows } = this.props;\n let cumulativeHeight = 0;\n let firstRowIndex;\n let lastRowIndex;\n let topOffset;\n // To virtualize, we need to find the first and last visible rows\n // in the viewport, so we sum up row heights until we reach\n // scrollTop and scrollBottom. Then we subtract/add overscanCount\n // to figure out which range of rows to render. We also need to sum\n // up all the row heights along the way, as well as the row heights\n // before the first rendered row.\n rows.forEach(({ rowHeight }, i) => {\n cumulativeHeight += rowHeight;\n if (firstRowIndex === undefined &&\n cumulativeHeight > scrollTop) {\n // Row i is the first row that will be visible. Start\n // rendering from the row that's `overscanCount` rows\n // before it.\n firstRowIndex = Math.max(0, i - overscanCount);\n // Figure out how much vertical space is above the first\n // row we just picked out. Assuming overscanCount is\n // relatively small, it will typically be faster to compute\n // this by subtracting the last few row heights from the\n // total height so far.\n topOffset = cumulativeHeight;\n for (let j = firstRowIndex; j <= i; j++) {\n topOffset -= rows[j].rowHeight;\n }\n }\n if (lastRowIndex === undefined &&\n cumulativeHeight >= scrollBottom) {\n // Row i is the last row that will be visible. Render up to\n // the row that's `overscanCount` rows after it. (+1\n // because lastRowIndex is exclusive.)\n lastRowIndex = Math.min(rows.length, i + 1 + overscanCount);\n }\n });\n // Shouldn't happen if everything were mathematically perfect, but\n // might happen due to rounding errors?\n if (firstRowIndex === undefined) {\n firstRowIndex = 0;\n }\n if (topOffset === undefined) {\n topOffset = 0;\n }\n // Might happen if the rows are just really short relative to the\n // table height\n if (lastRowIndex === undefined) {\n lastRowIndex = rows.length;\n }\n return {\n firstRowIndex,\n lastRowIndex,\n totalHeight: cumulativeHeight,\n topOffset,\n };\n }\n }\n render() {\n const { className, rows, onSort, clickable, addNativeTooltipToStrings, fixedNumRowsDisplayed, verticallyAlignCells, minRowsDisplayed, compact, renderWrapperRowComponent, itemDataTestId, extendLastColumn, wrapText, } = this.props;\n const { width, height, columnPositions, columns, columnResize } = this.state;\n const classes = classnames(\"single-common-components-super-table\", className, {\n hidden: width === 0,\n });\n const renderedColumns = columns.map((c, i) => {\n const position = columnPositions[i];\n // The ResizeHandle is enabled if:\n // * The column is resizable\n // * There is more than 1 column in this table\n const enabled = !columns[i].nonResizable && columns.length > 1;\n const resizing = columnResize && columnResize.index === i;\n return (React.createElement(React.Fragment, { key: c.id },\n React.createElement(SuperColumn, { ...c, key: c.id, onSort: onSort, position: position }),\n React.createElement(ResizeHandle, { onMouseDown: this.handleResizeColumnMouseDown(i), onMouseUp: this.handleMouseUp, onDoubleClick: this.handleResizeColumnDoubleClick(i), resizing: !!resizing, enabled: enabled, fullHeight: height, left: position.left +\n (columnResize && resizing\n ? columnResize.width\n : position.width), last: i === columns.length - 1 })));\n });\n const { firstRowIndex, lastRowIndex, totalHeight, topOffset } = this.computeVirtualizationInfo();\n const renderedRows = [];\n let minRowsHeight = 0;\n let maxRowsHeight = 0;\n for (let i = firstRowIndex; i < lastRowIndex; i++) {\n const row = this.getRowWithHeight(i);\n if (minRowsDisplayed && i - firstRowIndex < minRowsDisplayed) {\n minRowsHeight += row.rowHeight;\n }\n if (fixedNumRowsDisplayed &&\n fixedNumRowsDisplayed !== \"all\" &&\n i - firstRowIndex < fixedNumRowsDisplayed) {\n maxRowsHeight += row.rowHeight;\n }\n if (!(Array.isArray(row.cells) &&\n columns.length === row.cells.length)) {\n const error = \"Row has different number of cells from the number of columns.\";\n servicesLocator.getLogger().logError(new Error(error));\n return (React.createElement(\"div\", { className: classes },\n React.createElement(CustomScrollbar, { className: \"error-scrollbars\", renderView: (props) => (React.createElement(\"div\", { ...props, className: \"error-view\" })) },\n React.createElement(GeneralError, { error: error }))));\n }\n renderedRows.push(React.createElement(SuperRow, { ...row, key: row.id || i, columns: columns, columnPositions: columnPositions, height: row.rowHeight, clickable: clickable, addNativeTooltipToStrings: addNativeTooltipToStrings, striped: (rows.length - i) % 2 === 1, itemDataTestId: itemDataTestId, verticallyAlignCells: verticallyAlignCells, renderWrapperRowComponent: renderWrapperRowComponent, wrapText: wrapText }));\n }\n let totalColumnWidth = _.sumBy(columnPositions, (position) => position.width);\n // if the columns don't occupy the whole width and we want to add a\n // last column formatting so that the remaining space doesn't stay blank,\n // the css width of the table will be the total width\n if (extendLastColumn && totalColumnWidth < width) {\n totalColumnWidth = width;\n }\n let tableStyle;\n if (fixedNumRowsDisplayed) {\n if (fixedNumRowsDisplayed === \"all\") {\n tableStyle = { height: totalHeight + COLUMN_HEIGHT };\n }\n else {\n tableStyle = { height: maxRowsHeight + COLUMN_HEIGHT };\n }\n }\n else if (minRowsDisplayed) {\n tableStyle = { minHeight: minRowsHeight + COLUMN_HEIGHT };\n }\n // NOTE: the anon div wrapping columns and rows in the below JSX block\n // is *needed* for firefox and chrome to have the same scrolling\n // behavior. It wraps the two \"child\" elements and causes them to be\n // scrolled together rather than separately.\n return (React.createElement(\"div\", { className: classes, style: tableStyle },\n React.createElement(CustomScrollbar, { renderTrackVertical: ({ style }) => (React.createElement(\"div\", { style: {\n ...style,\n top: this.getColumnHeight() + 2,\n bottom: 2,\n right: 2,\n borderRadius: 3,\n } })), onScrollFrame: this.handleScroll },\n React.createElement(TableInner, { style: { height: totalHeight }, tabIndex: 0, columnsStyle: {\n width: totalColumnWidth,\n height: this.getColumnHeight(),\n }, renderedColumns: renderedColumns, rowsStyle: {\n width: totalColumnWidth,\n top: topOffset,\n }, renderedRows: renderedRows, compact: compact, emptyState: this.props.emptyState }),\n this.renderMeasuringColumn(),\n this.renderMeasuringTable()),\n React.createElement(ResizeDetector, { onResize: this.handleTableResize })));\n }\n}\nSuperTable.defaultProps = {\n clickable: false,\n // We default overscanCount to 5, but in testing environments we want it to be infinity\n // because our tests don't actually render any rows, so only the overscan is \"visible\",\n // and we want all the options accessible for tests.\n overscanCount: NODE_ENV === \"test\" ? Number.POSITIVE_INFINITY : 5,\n autofit: false,\n};\nconst RESIZE_HANDLE_WIDTH = 16;\nfunction ResizeHandle({ resizing, enabled, fullHeight, left, last, ...rest }) {\n const classes = classnames(\"resize-handle\", { resizing, last });\n let computedLeft;\n let computedBarMarginLeft;\n // We render regular resize handles with half of its width\n // to the left of the column separator and the other half\n // to the right. The resize handle of the last column on a\n // table has to be fully rendered to the left of the separator.\n if (last) {\n computedLeft = left - RESIZE_HANDLE_WIDTH;\n computedBarMarginLeft = RESIZE_HANDLE_WIDTH;\n }\n else {\n computedLeft = left - RESIZE_HANDLE_WIDTH / 2;\n computedBarMarginLeft = RESIZE_HANDLE_WIDTH / 2;\n }\n if (!enabled) {\n return null;\n }\n return (React.createElement(\"div\", { ...rest, className: classes, style: {\n left: computedLeft,\n width: RESIZE_HANDLE_WIDTH,\n height: resizing ? fullHeight : undefined,\n } },\n React.createElement(\"div\", { className: \"bar\", style: { marginLeft: computedBarMarginLeft } })));\n}\nclass SuperColumn extends React.PureComponent {\n render() {\n const { onSort, sort, id, description, title, position, subTitle, textAlign, className, disableDescriptionIcon, } = this.props;\n let handleSort;\n let sortIcon;\n // If there is a sorting handler, handle it\n if (onSort && sort !== \"DISABLED\") {\n handleSort = () => onSort(id, sort);\n }\n // If there is a current sort state, show it in this column.\n switch (sort) {\n case \"asc\":\n sortIcon = \"caret-up\";\n break;\n case \"desc\":\n sortIcon = \"caret-down\";\n break;\n }\n const classes = classnames(\"column\", className, {\n sortable: !!handleSort,\n });\n const style = {\n textAlign: textAlign || \"left\",\n ...position,\n };\n let descriptionIcon;\n if (description && !disableDescriptionIcon) {\n descriptionIcon = React.createElement(Icon, { leftMargin: true, icon: \"info-circle\" });\n }\n return (React.createElement(Tip, { className: classes, wrapperProps: {\n style,\n onClick: handleSort,\n }, tooltip: description || null, disabled: !description, direction: \"s\" },\n React.createElement(\"div\", { className: \"titles-container\" },\n React.createElement(\"div\", { className: \"title\" },\n title,\n descriptionIcon),\n React.createElement(\"div\", { className: \"subtitle\" }, subTitle)),\n sortIcon && (React.createElement(Icon, { className: \"icon-sort\", fixedWidth: true, icon: sortIcon }))));\n }\n}\nclass SuperRow extends React.PureComponent {\n render() {\n const { id: rowId, className, cells, cellsProperties, columns, columnPositions, onClickCell, height, clickable, addNativeTooltipToStrings, striped, itemDataTestId, selected, verticallyAlignCells, renderWrapperRowComponent, wrapText, disabled, disabledTipProps, } = this.props;\n if (!(columns &&\n Array.isArray(cells) &&\n columns.length === cells.length)) {\n throw new Error(\"Must provide as many cells as there are columns.\");\n }\n const children = React.Children.map(cells, (c, i) => {\n let nativeTooltip;\n if (addNativeTooltipToStrings && typeof c === \"string\") {\n nativeTooltip = c;\n }\n let cellClassName = \"\";\n if (cellsProperties) {\n // index of cell class name in cellsProperties array\n const cellIndex = cellsProperties.findIndex((cellElement) => cellElement.index === i);\n if (cellIndex !== -1) {\n cellClassName =\n cellsProperties[cellIndex].wrapperClassName;\n }\n }\n return (React.createElement(Cell, { key: i, rowId: rowId, column: columns[i], position: columnPositions[i], onClick: onClickCell, title: nativeTooltip, verticallyAlignCells: verticallyAlignCells, wrapText: wrapText, className: cellClassName }, c));\n });\n const classes = classnames(\"super-row\", className, {\n clickable,\n striped,\n selected,\n });\n let inner;\n if (renderWrapperRowComponent && rowId) {\n inner = renderWrapperRowComponent({\n rowId,\n children,\n className: classes,\n style: { height },\n striped,\n disabled,\n disabledTipProps,\n });\n }\n else {\n inner = (React.createElement(\"div\", { className: classes, style: { height }, \"data-testid\": itemDataTestId }, children));\n }\n return inner;\n }\n}\nclass Cell extends React.PureComponent {\n isTextNode(node) {\n return [\"string\", \"number\"].includes(typeof node);\n }\n render() {\n const { rowId, children, column, position, onClick, title, verticallyAlignCells, wrapText, className, } = this.props;\n const style = {\n textAlign: column.textAlign || \"left\",\n ...position,\n };\n let verticallyAlignText = false;\n if (verticallyAlignCells) {\n // Use a different approach to vertically align the contents if\n // it's text. This is because the text-overflow property doesn't\n // work properly when the element is a flexbox.\n verticallyAlignText = this.isTextNode(children);\n }\n const classes = classnames(\"cell\", column.id, className, {\n \"reveal-on-hover\": column.revealOnHover,\n \"vertical-align\": verticallyAlignCells,\n \"vertical-align-text\": verticallyAlignText,\n \"wrap-text\": wrapText,\n });\n // We append a single space after every cell's content to\n // prevent a problem where adjacent cells would all be copied\n // when the user double clicked one of them. This happens when\n // there is no whitespace between 2 absolutely positioned DOM\n // elements.\n //\n // By adding a non-selectable space after cells, we make sure\n // that browsers don't select multiple cells on double click. At\n // the same time, we are not messing with what the user is\n // selecting because the space cannot be selected.\n //\n // Read more about this issue here:\n // * https://stackoverflow.com/questions/2876424/html-double-click-selection-oddity\n // * https://stackoverflow.com/questions/15809239/user-text-selection-in-floating-element-in-chrome-webkit-selects-more-text\n return (React.createElement(\"div\", { \"data-testid\": `${column.id}-cell`, className: classes, style: style, onClick: onClick && (() => onClick(rowId, column)), title: title },\n children,\n React.createElement(\"div\", { className: \"non-selectable-whitespace\" })));\n }\n}\nexport const addSort = (sort) => (column) => {\n // avoid sorting non-sortable columns\n if (column.sort === \"DISABLED\") {\n return column;\n }\n return {\n ...column,\n sort: sort && sort.columnId === column.id\n ? sort.direction\n : undefined,\n };\n};\nexport function FakeLinkCell(props) {\n const { children } = props;\n return (React.createElement(\"span\", { className: \"single-common-components-fake-link-cell\" }, children));\n}\n","var Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar StringDecoder = require('string_decoder').StringDecoder\nvar inherits = require('inherits')\n\nfunction CipherBase (hashMode) {\n Transform.call(this)\n this.hashMode = typeof hashMode === 'string'\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest\n } else {\n this.final = this._finalOrDigest\n }\n if (this._final) {\n this.__final = this._final\n this._final = null\n }\n this._decoder = null\n this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = Buffer.from(data, inputEnc)\n }\n\n var outData = this._update(data)\n if (this.hashMode) return this\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc)\n }\n\n return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n var err\n try {\n if (this.hashMode) {\n this._update(data)\n } else {\n this.push(this._update(data))\n }\n } catch (e) {\n err = e\n } finally {\n next(err)\n }\n}\nCipherBase.prototype._flush = function (done) {\n var err\n try {\n this.push(this.__final())\n } catch (e) {\n err = e\n }\n\n done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0)\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true)\n }\n return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc)\n this._encoding = enc\n }\n\n if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n var out = this._decoder.write(value)\n if (fin) {\n out += this._decoder.end()\n }\n\n return out\n}\n\nmodule.exports = CipherBase\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","import { selectError, selectLastUpdate, selectLoadingOrInitial, selectPayload, } from \"@single-js/common/util/loading-state-machine\";\nimport _ from \"lodash\";\nimport { createSelector } from \"reselect\";\nimport PIPELINES_COLUMNS from \"view/pipelines/columns-info\";\nexport const selectPipelines = (s) => {\n const payload = selectPayload(s.pipelines.pipelines);\n if (payload) {\n return payload.pipelines;\n }\n};\nexport const selectPipelinesLoading = (s) => selectLoadingOrInitial(s.pipelines.pipelines);\nexport const selectPipelinesError = (s) => {\n const error = selectError(s.pipelines.pipelines);\n if (error) {\n return error.message;\n }\n};\nexport const selectPipelinesLastUpdate = (s) => selectLastUpdate(s.pipelines.pipelines);\nexport const selectPipelinesSort = (s) => s.pipelines.sort;\nexport const selectSortedPipelines = createSelector(selectPipelines, selectPipelinesSort, (pipelines, sort) => {\n if (sort && pipelines) {\n const { direction, columnId } = sort;\n const columnInfo = _.find(PIPELINES_COLUMNS, (col) => col.id === columnId);\n if (!columnInfo) {\n throw new Error(\"Expected column to be defined.\");\n }\n return _.orderBy(pipelines, [columnInfo.getValue], direction);\n }\n else {\n return pipelines;\n }\n});\n","import actions from './actions';\nimport * as _actionTypes from './actionTypes';\nexport { default as defaultShouldAsyncValidate } from './defaultShouldAsyncValidate';\nexport { default as defaultShouldValidate } from './defaultShouldValidate';\nexport { default as defaultShouldError } from './defaultShouldError';\nexport { default as defaultShouldWarn } from './defaultShouldWarn';\nexport { default as Form } from './Form';\nexport { default as FormName } from './FormName';\nexport { default as FormSection } from './FormSection';\nexport { default as SubmissionError } from './SubmissionError'; // alias for propTypes\n\nexport { default as propTypes, fieldInputPropTypes, fieldMetaPropTypes, fieldPropTypes, fieldArrayFieldsPropTypes, fieldArrayMetaPropTypes, fieldArrayPropTypes, formPropTypes } from './propTypes';\nexport { default as Field } from './Field';\nexport { default as Fields } from './Fields';\nexport { default as FieldArray } from './FieldArray';\nexport { default as formValueSelector } from './formValueSelector';\nexport { default as formValues } from './formValues';\nexport { default as getFormError } from './getFormError';\nexport { default as getFormNames } from './getFormNames';\nexport { default as getFormValues } from './getFormValues';\nexport { default as getFormInitialValues } from './getFormInitialValues';\nexport { default as getFormSyncErrors } from './getFormSyncErrors';\nexport { default as getFormMeta } from './getFormMeta';\nexport { default as getFormAsyncErrors } from './getFormAsyncErrors';\nexport { default as getFormSyncWarnings } from './getFormSyncWarnings';\nexport { default as getFormSubmitErrors } from './getFormSubmitErrors';\nexport { default as isAsyncValidating } from './isAsyncValidating';\nexport { default as isDirty } from './isDirty';\nexport { default as isInvalid } from './isInvalid';\nexport { default as isPristine } from './isPristine';\nexport { default as isValid } from './isValid';\nexport { default as isSubmitting } from './isSubmitting';\nexport { default as hasSubmitSucceeded } from './hasSubmitSucceeded';\nexport { default as hasSubmitFailed } from './hasSubmitFailed';\nexport { default as reduxForm } from './reduxForm';\nexport { default as reducer } from './reducer';\nexport { default as values } from './values';\nexport var actionTypes = _actionTypes;\nexport var arrayInsert = actions.arrayInsert;\nexport var arrayMove = actions.arrayMove;\nexport var arrayPop = actions.arrayPop;\nexport var arrayPush = actions.arrayPush;\nexport var arrayRemove = actions.arrayRemove;\nexport var arrayRemoveAll = actions.arrayRemoveAll;\nexport var arrayShift = actions.arrayShift;\nexport var arraySplice = actions.arraySplice;\nexport var arraySwap = actions.arraySwap;\nexport var arrayUnshift = actions.arrayUnshift;\nexport var autofill = actions.autofill;\nexport var blur = actions.blur;\nexport var change = actions.change;\nexport var clearAsyncError = actions.clearAsyncError;\nexport var clearFields = actions.clearFields;\nexport var clearSubmitErrors = actions.clearSubmitErrors;\nexport var destroy = actions.destroy;\nexport var focus = actions.focus;\nexport var initialize = actions.initialize;\nexport var registerField = actions.registerField;\nexport var reset = actions.reset;\nexport var resetSection = actions.resetSection;\nexport var setSubmitFailed = actions.setSubmitFailed;\nexport var setSubmitSucceeded = actions.setSubmitSucceeded;\nexport var startAsyncValidation = actions.startAsyncValidation;\nexport var startSubmit = actions.startSubmit;\nexport var stopAsyncValidation = actions.stopAsyncValidation;\nexport var stopSubmit = actions.stopSubmit;\nexport var submit = actions.submit;\nexport var touch = actions.touch;\nexport var unregisterField = actions.unregisterField;\nexport var untouch = actions.untouch;\nexport var updateSyncWarnings = actions.updateSyncWarnings;\nexport var updateSyncErrors = actions.updateSyncErrors;","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexport var iterator = /*@__PURE__*/ getSymbolIterator();\nexport var $$iterator = iterator;\n//# sourceMappingURL=iterator.js.map\n","import { Icon } from \"@single-js/common/components/icon/icon\";\nimport { HYPHEN } from \"@single-js/common/util/symbols\";\nimport classnames from \"classnames\";\nimport { isPartitionImpacted, } from \"data/models\";\nimport * as React from \"react\";\nimport { logError } from \"util/logging\";\nimport \"./cluster-metadata.scss\";\nconst PARTITION_INSTANCE_STATUS_ICON = {\n online: \"check-circle\",\n replicating: \"clone\",\n provisioning: \"cog\",\n unrecoverable: \"exclamation-circle\",\n recovering: \"sync-alt\",\n transition: \"exchange-alt\",\n pending: \"clock\",\n offline: \"exclamation-triangle\",\n unknown: \"question-circle\",\n};\nconst getPartitionInstanceStatusIconClass = (status) => {\n switch (status) {\n case \"online\":\n return \"success\";\n case \"recovering\":\n case \"offline\":\n case \"unknown\":\n return \"warn\";\n case \"unrecoverable\":\n case \"offline\":\n return \"error\";\n }\n};\nexport const getPartitionInstanceStatusIcon = (status) => {\n const iconColor = getPartitionInstanceStatusIconClass(status);\n let styleProps;\n if (iconColor) {\n styleProps = {\n [iconColor]: true,\n };\n }\n let icon = PARTITION_INSTANCE_STATUS_ICON[status];\n if (icon === undefined) {\n icon = \"question-circle\";\n logError(new Error(`Partition instance status ${status} does not have an associated icon.`));\n }\n return React.createElement(Icon, { rightMargin: true, iconType: \"regular\", icon: icon, ...styleProps });\n};\nconst displayPartitionInstanceState = (state) => {\n switch (state) {\n case \"online\":\n return \"Online\";\n case \"replicating\":\n return \"Replicating\";\n case \"provisioning\":\n return \"Provisioning\";\n case \"unrecoverable\":\n return \"Unrecoverable\";\n case \"recovering\":\n return \"Recovering\";\n case \"transition\":\n return \"Transition\";\n case \"pending\":\n return \"Pending\";\n case \"unknown\":\n return \"Unknown\";\n case \"offline\":\n return \"Offline\";\n default:\n return state;\n }\n};\nexport const getPartitionInstanceStatusClass = (status) => {\n switch (status) {\n case \"unrecoverable\":\n case \"offline\":\n return \"error\";\n }\n};\nexport const formatPartitionInstanceState = (status) => {\n const icon = getPartitionInstanceStatusIcon(status);\n const text = displayPartitionInstanceState(status);\n const classes = classnames(\"status-cell\", getPartitionInstanceStatusClass(status));\n return (React.createElement(\"div\", { className: classes },\n icon,\n \" \",\n text));\n};\nexport const formatPartitionInstanceRole = (role) => {\n switch (role) {\n case \"master\":\n return \"Master\";\n case \"slave\":\n return \"Slave\";\n case \"detached master\":\n return \"Detached Master\";\n case \"detached slave\":\n return \"Detached Slave\";\n default:\n return role;\n }\n};\nconst PARTITION_STATUS_ICON = {\n online: \"check-circle\",\n degraded_recovering: \"sync-alt\",\n offline_recovering: \"sync-alt\",\n degraded_unrecoverable: \"exclamation-circle\",\n offline: \"exclamation-triangle\",\n};\nconst _getPartitionStatusIcon = (status, impacted) => {\n if (status === \"online\" && impacted) {\n return \"exclamation-circle\";\n }\n else {\n return PARTITION_STATUS_ICON[status];\n }\n};\nconst getPartitionStatusIconClass = (status, impacted) => {\n if (status === \"online\" && !impacted) {\n return \"success\";\n }\n else if ((status === \"online\" && impacted) ||\n status === \"degraded_unrecoverable\" ||\n status === \"degraded_recovering\") {\n return \"warn\";\n }\n else if (status === \"offline_recovering\" || status === \"offline\") {\n return \"error\";\n }\n};\nexport const getPartitionStatusIcon = (status, impacted) => {\n const icon = _getPartitionStatusIcon(status, impacted);\n const iconState = getPartitionStatusIconClass(status, impacted);\n if (icon) {\n return (React.createElement(Icon, { rightMargin: true, iconType: \"regular\", icon: icon, state: iconState }));\n }\n};\n// This function can also be used to format database statuses.\nexport const displayPartitionStatus = (status, impacted) => {\n let text;\n switch (status) {\n case \"online\":\n text = \"Online\";\n break;\n case \"degraded_recovering\":\n text = \"Degraded Recovering\";\n break;\n case \"degraded_unrecoverable\":\n text = \"Degraded Unrecoverable\";\n break;\n case \"offline_recovering\":\n text = \"Offline Recovering\";\n break;\n case \"offline\":\n text = \"Offline\";\n break;\n default:\n text = \"Unknown\";\n }\n if (impacted) {\n text = `${text} ${HYPHEN} Impacted`;\n }\n return text;\n};\nexport const getPartitionStatusClass = (status) => {\n switch (status) {\n case \"offline_recovering\":\n case \"offline\":\n return \"error\";\n }\n};\nexport function formatPartitionStatus(partition) {\n return _formatPartitionStatus(partition.status, isPartitionImpacted(partition));\n}\nexport const _formatPartitionStatus = (status, impacted) => {\n const text = displayPartitionStatus(status, impacted);\n const icon = getPartitionStatusIcon(status, impacted);\n const classes = classnames(\"status-cell\", getPartitionStatusClass(status));\n return (React.createElement(\"div\", { className: classes },\n icon,\n \" \",\n text));\n};\nexport const formatPartitionSyncState = (partition) => {\n if (partition.syncState === \"async\") {\n return \"Asynchronous\";\n }\n else if (partition.syncState === \"sync\") {\n return \"Synchronous\";\n }\n else if (typeof partition.syncState === \"string\") {\n return partition.syncState;\n }\n};\n","import { LabeledInlineBar, } from \"@single-js/common/components/bars/labeled-inline-bar\";\nimport { COLORS } from \"@single-js/common/sui/color-map\";\nimport NumberFormatter from \"@single-js/common/util/number-formatter\";\nimport classnames from \"classnames\";\nimport _ from \"lodash\";\nimport * as React from \"react\";\nimport \"./ratio-metric-cell.scss\";\nconst getMetricStatus = (value) => {\n if (value >= 0.9) {\n return \"critical\";\n }\n};\nconst BAR_COLOR = {\n critical: COLORS[\"base-red-900\"],\n};\nconst DEFAULT_BAR_COLOR = COLORS[\"base-indigo-600\"];\n// This component should be used in the host(s)/node(s) page.\n// In order to make the code easier to write/understand we make two assumptions:\n// * If the label position relative to the inline bar is north (used in tables),\n// we make the label bold and colored, and we add a margin top of 4px to the\n// bottom label.\n// * If the label position relative to the inline bar is east (used in each page\n// top content) the label has no extra styling and there is no need for a margin\n// in the bottom label.\nexport const RatioMetricCell = ({ value, labelPosition, bottomLabel, barClassName, }) => {\n const status = getMetricStatus(value);\n const color = status ? BAR_COLOR[status] : DEFAULT_BAR_COLOR;\n value = _.clamp(value, 0, 1);\n const entries = [\n { value, fill: color },\n { value: 1 - value, fill: COLORS[\"base-neutral-200\"] },\n ];\n const classes = classnames(\"components-common-ratio-metric-cell\", labelPosition, status);\n return (React.createElement(\"div\", { className: classes },\n React.createElement(LabeledInlineBar, { barClassName: barClassName, label: React.createElement(\"div\", { className: \"cell-label\" }, NumberFormatter.formatPercent(value)), entries: entries, labelPosition: labelPosition }),\n React.createElement(\"div\", { className: \"cell-bottom-label\" },\n bottomLabel,\n \" \\u00A0\")));\n};\n","var arrayMap = require('./_arrayMap'),\n copyArray = require('./_copyArray'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol'),\n stringToPath = require('./_stringToPath'),\n toKey = require('./_toKey'),\n toString = require('./toString');\n\n/**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\nfunction toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n}\n\nmodule.exports = toPath;\n","import { plural } from \"@single-js/common/util/string\";\nimport _ from \"lodash\";\nimport { count } from \"util/count\";\n// Returns the number of detached partition instances for a given partition.\nexport function _countPartitionDetachedSlaves(partition) {\n return count(partition.partitionInstances, (pi) => pi.role === \"detached slave\" || pi.role === \"detached master\");\n}\n// Returns a boolean stating whether this partition's number of slaves is\n// different from its expected number of slaves.\nexport function _getPartitionHasSlaveMismatch(partition) {\n const slaveCount = count(partition.partitionInstances, (pi) => pi.role === \"slave\");\n return slaveCount !== partition.expectedNumSlaves;\n}\n// Returns a boolean stating whether this partition is currently being\n// asynchronously replicated but should be synchronously replicated.\nexport function _getPartitionIsIncorrectlyAsync(partition) {\n // DR Replicas' replication will always be async even if sync\n // replication is desired\n if (partition.drReplica) {\n return false;\n }\n if (partition.syncReplicated) {\n return partition.syncState === \"async\";\n }\n else {\n return false;\n }\n}\nexport function isPartitionImpacted(partition) {\n return _.some(getPartitionErrors(partition));\n}\n// We define the impacted state of a partition as one of the following things\n// being true about this partition:\n// * The partition has a different number of slaves from its expected number of\n// slaves\n// * The partition has 1 or more detached partition instances\n// * The partition's sync state is async but should be sync (7.0 only)\nexport function getPartitionErrors(partition) {\n const errors = [];\n if (_getPartitionHasSlaveMismatch(partition)) {\n const slaveCount = count(partition.partitionInstances, (pi) => pi.role === \"slave\");\n errors.push(`This partition currently has ${slaveCount} ${plural(\"replica\", slaveCount)}, but is expected to have ${partition.expectedNumSlaves} ${plural(\"replica\", partition.expectedNumSlaves)}.`);\n }\n const numDetachedInstances = _countPartitionDetachedSlaves(partition);\n if (numDetachedInstances > 0) {\n errors.push(`This partition currently has ${numDetachedInstances} detached ${plural(\"replica\", numDetachedInstances)}. Healthy partitions typically do not have detached replicas.`);\n }\n if (_getPartitionIsIncorrectlyAsync(partition)) {\n errors.push(\"This partition's replication state is currently asynchronous but partitions in this database are expected to be synchronously replicated.\");\n }\n return errors;\n}\nexport function getPartitionStatusMessage(partitionStatus) {\n switch (partitionStatus) {\n case \"degraded_recovering\":\n return \"This partition is degraded, but is attempting to recover.\";\n case \"degraded_unrecoverable\":\n return \"This partition is degraded, manual action must be taken to recover.\";\n case \"offline_recovering\":\n return \"This partition is offline, but is attempting to transition back online.\";\n case \"offline\":\n return \"This partition is offline.\";\n case \"unknown\":\n return \"This partition's current health status is unknown.\";\n case \"online\":\n return \"This partition is healthy.\";\n }\n}\nexport function getDatabaseStatusMessage(databaseStatus) {\n switch (databaseStatus) {\n case \"degraded_recovering\":\n return \"This database is currently in a Degraded Recovering state because at least one of its partitions is Degraded and is attempting to recover.\";\n case \"degraded_unrecoverable\":\n return \"This database is currently in a Degraded Unrecoverable state because at least one of its partitions is Degraded and is unable to recover.\";\n case \"offline_recovering\":\n return \"This database is currently in an Offline Recovering state because at least one of its partitions is Offline and is attempting to recover.\";\n case \"offline\":\n return \"This database is currently in an Offline state because at least one of its partitions is Offline. If all your partitions are Offline, please check with the cluster admin to make sure you have been granted access to this database.\";\n case \"unknown\":\n return \"This database's current health status is unknown.\";\n case \"online\":\n return \"This database is currently Online and its member partitions are Healthy.\";\n }\n}\nexport function getPartitionName(partition) {\n if (partition.kind === \"data\") {\n return `${partition.databaseName}:${partition.ordinal}`;\n }\n else {\n return partition.databaseName;\n }\n}\nexport function getPartitionType(partition) {\n if (partition.kind === \"data\") {\n return \"Data Partition\";\n }\n else {\n return \"Reference Partition\";\n }\n}\nexport function getPartitionInstanceName(partitionInstance) {\n if (partitionInstance.ordinal !== undefined) {\n return `${partitionInstance.databaseName}:${partitionInstance.ordinal}`;\n }\n else {\n return partitionInstance.databaseName;\n }\n}\nexport function getPartitionInstancePartitionName(partitionInstance) {\n if (partitionInstance.ordinal !== undefined) {\n return `${partitionInstance.databaseName}:${partitionInstance.ordinal}`;\n }\n else {\n return partitionInstance.databaseName;\n }\n}\nexport function getPartitionInstanceType(pi) {\n if (pi.ordinal === undefined) {\n return \"Reference Partition Instance\";\n }\n else {\n return \"Data Partition Instance\";\n }\n}\nexport function getPartitionMasterInstance(partition) {\n const instance = partition.partitionInstances.find((partitionInstance) => partitionInstance.role === \"master\");\n return instance;\n}\nexport function getPartitionReplicaInstance(partition) {\n if (partition.kind === \"reference\") {\n return \"all-leaf-nodes\";\n }\n const instance = partition.partitionInstances.find((partitionInstance) => partitionInstance.role === \"slave\");\n return instance;\n}\n","// This function returns the fully qualified name (\"full.name\") for a database\n// entity in MemSQL. Note that tables and functions can have backticks in their\n// name, which is why we need to be very careful when escaping them.\nexport default function ({ databaseName, name, }) {\n const quotedDatabaseName = \"`\" + databaseName.replace(\"`\", \"``\") + \"`\";\n const quotedEntityName = \"`\" + name.replace(\"`\", \"``\") + \"`\";\n return `${quotedDatabaseName}.${quotedEntityName}`;\n}\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","import _ from \"lodash\";\nimport { stringify } from \"query-string\";\nimport { NonLoggableError } from \"util/logging\";\nconst API_URL = `api`;\nconst safePath = function (parts) {\n return _(parts).map(encodeURIComponent).join(\"/\");\n};\nconst makeRequest = function (pathParts, data, method) {\n if (!method) {\n method = data ? \"POST\" : \"GET\";\n }\n return fetch(`${self.BASE_URL}${safePath(pathParts)}`, {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n method,\n body: JSON.stringify(data),\n }).then((res) => {\n if (res.ok) {\n return res.json();\n }\n else {\n throw new NonLoggableError(JSON.stringify(res));\n }\n }, (res) => {\n throw new NonLoggableError(res);\n });\n};\nconst API_CLUSTERS_SLUG = \"clusters\";\nexport const backend = {\n getClusters: () => {\n return makeRequest([API_URL, API_CLUSTERS_SLUG]).then(({ clusters }) => clusters);\n },\n addCluster: (clusterObj, customRequester = makeRequest) => {\n return customRequester([API_URL, API_CLUSTERS_SLUG], clusterObj, \"POST\").then(({ cluster }) => cluster);\n },\n deleteCluster: (clusterId) => {\n return makeRequest([API_URL, API_CLUSTERS_SLUG, clusterId], undefined, \"DELETE\").then((result) => result);\n },\n ping: () => {\n return makeRequest([API_URL, \"ping\"]).then((result) => result);\n },\n redirectSamlLogin: (clusterId, user) => {\n const options = {\n clusterId,\n user,\n };\n window.location.href = `${self.BASE_URL}${API_URL}/saml-login?${stringify(options)}`;\n },\n};\n","import { allMarginUtilityVariants, allSizeUtilityVariants, displayUtilityVariants, fontSizeUtilityVariants, fontWeightUtilityVariants, lineHeightUtilityVariants, textColorUtilityVariants, } from \"@single-js/common/sui/utility-variants\";\nexport const allTextVariants = () => ({\n \"annotation-1\": \"sui-c-text--variant-annotation-1\",\n \"annotation-2\": \"sui-c-text--variant-annotation-2\",\n \"code-1\": \"sui-c-text--variant-code-1\",\n \"code-2\": \"sui-c-text--variant-code-2\",\n \"label-1\": \"sui-c-text--variant-label-1\",\n \"label-2\": \"sui-c-text--variant-label-2\",\n \"body-1\": \"sui-c-text--variant-body-1\",\n \"body-2\": \"sui-c-text--variant-body-2\",\n \"heading-1\": \"sui-c-text--variant-heading-1\",\n \"heading-2\": \"sui-c-text--variant-heading-2\",\n \"heading-3\": \"sui-c-text--variant-heading-3\",\n \"heading-4\": \"sui-c-text--variant-heading-4\",\n \"heading-5\": \"sui-c-text--variant-heading-5\",\n \"heading-6\": \"sui-c-text--variant-heading-6\",\n \"uppercase-heading-1\": \"sui-c-text--variant-uppercase-heading-1\",\n \"uppercase-heading-2\": \"sui-c-text--variant-uppercase-heading-2\",\n});\nexport const commonTypographyUtilityVariants = () => ({\n ...allMarginUtilityVariants(),\n ...allSizeUtilityVariants(),\n color: {\n white: \"sui-u-color-white\",\n currentColor: \"sui-u-color-currentColor\",\n ...textColorUtilityVariants(),\n },\n display: displayUtilityVariants(),\n fontWeight: fontWeightUtilityVariants(),\n fontSize: fontSizeUtilityVariants(),\n lineHeight: lineHeightUtilityVariants(),\n textTransform: {\n capitalize: \"sui-u-text-transform-capitalize\",\n uppercase: \"sui-u-text-transform-uppercase\",\n lowercase: \"sui-u-text-transform-lowercase\",\n },\n textStyle: {\n normal: \"sui-u-text-style-normal\",\n italic: \"sui-u-text-style-italic\",\n },\n flexGrow: {\n \"0\": \"sui-u-flex-grow-0\",\n \"1\": \"sui-u-flex-grow-1\",\n \"2\": \"sui-u-flex-grow-2\",\n \"3\": \"sui-u-flex-grow-3\",\n \"4\": \"sui-u-flex-grow-4\",\n \"5\": \"sui-u-flex-grow-5\",\n \"999\": \"sui-u-flex-grow-999\",\n },\n flexShrink: {\n \"0\": \"sui-u-flex-shrink-0\",\n \"1\": \"sui-u-flex-shrink-1\",\n },\n justifySelf: {\n auto: \"sui-u-justify-self-auto\",\n center: \"sui-u-justify-self-center\",\n start: \"sui-u-justify-self-start\",\n end: \"sui-u-justify-self-end\",\n stretch: \"sui-u-justify-self-stretch\",\n },\n alignSelf: {\n auto: \"sui-u-align-self-auto\",\n center: \"sui-u-align-self-center\",\n start: \"sui-u-align-self-start\",\n end: \"sui-u-align-self-end\",\n stretch: \"sui-u-align-self-stretch\",\n baseline: \"sui-u-align-self-baseline\",\n },\n centerAlign: {\n true: \"sui-u-center-align\",\n },\n ellipsis: {\n true: \"sui-u-ellipsis\",\n },\n overflowWrap: {\n anywhere: \"sui-u-overflow-wrap-anywhere\",\n },\n});\n","/**\n * This file was generated\n * Do not edit directly\n * See 'single-js/common/build-style-dictionary.js' for more info\n */\n\nexport const borderColorUtilityVariants = () => ({\n \"neutral-1\": \"sui-u-color-border-neutral-1\",\n \"neutral-2\": \"sui-u-color-border-neutral-2\",\n \"neutral-3\": \"sui-u-color-border-neutral-3\",\n \"neutral-4\": \"sui-u-color-border-neutral-4\",\n \"red-1\": \"sui-u-color-border-red-1\",\n \"green-1\": \"sui-u-color-border-green-1\",\n \"purple-1\": \"sui-u-color-border-purple-1\",\n \"purple-2\": \"sui-u-color-border-purple-2\",\n \"purple-3\": \"sui-u-color-border-purple-3\",\n \"indigo-1\": \"sui-u-color-border-indigo-1\",\n});\n","/**\n * This file was generated\n * Do not edit directly\n * See 'single-js/common/build-style-dictionary.js' for more info\n */\n\nexport const borderRadiusUtilityVariants = () => ({\n 0: \"sui-u-border-radius-0\",\n small: \"sui-u-border-radius-small\",\n medium: \"sui-u-border-radius-medium\",\n large: \"sui-u-border-radius-large\",\n xlarge: \"sui-u-border-radius-xlarge\",\n round: \"sui-u-border-radius-round\",\n pill: \"sui-u-border-radius-pill\",\n});\n","/**\n * This file was generated\n * Do not edit directly\n * See 'single-js/common/build-style-dictionary.js' for more info\n */\n\nexport const textColorUtilityVariants = () => ({\n \"neutral-1\": \"sui-u-color-neutral-1\",\n \"neutral-2\": \"sui-u-color-neutral-2\",\n \"neutral-3\": \"sui-u-color-neutral-3\",\n \"neutral-inverse-1\": \"sui-u-color-neutral-inverse-1\",\n \"purple-1\": \"sui-u-color-purple-1\",\n \"cyan-1\": \"sui-u-color-cyan-1\",\n \"red-1\": \"sui-u-color-red-1\",\n \"green-1\": \"sui-u-color-green-1\",\n \"indigo-1\": \"sui-u-color-indigo-1\",\n \"yellow-1\": \"sui-u-color-yellow-1\",\n});\n","/**\n * This file was generated\n * Do not edit directly\n * See 'single-js/common/build-style-dictionary.js' for more info\n */\n\nexport const backgroundColorUtilityVariants = () => ({\n \"neutral-1\": \"sui-u-background-neutral-1\",\n \"neutral-2\": \"sui-u-background-neutral-2\",\n \"neutral-3\": \"sui-u-background-neutral-3\",\n \"neutral-4\": \"sui-u-background-neutral-4\",\n \"neutral-inverse-1\": \"sui-u-background-neutral-inverse-1\",\n \"neutral-inverse-2\": \"sui-u-background-neutral-inverse-2\",\n \"neutral-inverse-3\": \"sui-u-background-neutral-inverse-3\",\n \"purple-1\": \"sui-u-background-purple-1\",\n \"purple-2\": \"sui-u-background-purple-2\",\n \"purple-3\": \"sui-u-background-purple-3\",\n \"purple-inverse-1\": \"sui-u-background-purple-inverse-1\",\n \"purple-inverse-2\": \"sui-u-background-purple-inverse-2\",\n \"cyan-1\": \"sui-u-background-cyan-1\",\n \"red-1\": \"sui-u-background-red-1\",\n \"red-inverse-1\": \"sui-u-background-red-inverse-1\",\n \"indigo-1\": \"sui-u-background-indigo-1\",\n \"indigo-2\": \"sui-u-background-indigo-2\",\n \"indigo-inverse-1\": \"sui-u-background-indigo-inverse-1\",\n \"indigo-inverse-2\": \"sui-u-background-indigo-inverse-2\",\n \"magenta-inverse-1\": \"sui-u-background-magenta-inverse-1\",\n \"green-1\": \"sui-u-background-green-1\",\n \"green-inverse-1\": \"sui-u-background-green-inverse-1\",\n \"yellow-1\": \"sui-u-background-yellow-1\",\n});\n","/**\n * This file was generated\n * Do not edit directly\n * See 'single-js/common/build-style-dictionary.js' for more info\n */\n\nexport const fontFamilyUtilityVariants = () => ({\n sans: \"sui-u-font-family-sans\",\n mono: \"sui-u-font-family-mono\",\n});\n\nexport const fontWeightUtilityVariants = () => ({\n regular: \"sui-u-font-weight-regular\",\n semibold: \"sui-u-font-weight-semibold\",\n bold: \"sui-u-font-weight-bold\",\n});\n\nexport const fontSizeUtilityVariants = () => ({\n \"code-1\": \"sui-u-font-size-code-1\",\n \"code-2\": \"sui-u-font-size-code-2\",\n \"label-1\": \"sui-u-font-size-label-1\",\n \"label-2\": \"sui-u-font-size-label-2\",\n \"body-1\": \"sui-u-font-size-body-1\",\n \"body-2\": \"sui-u-font-size-body-2\",\n \"annotation-1\": \"sui-u-font-size-annotation-1\",\n \"annotation-2\": \"sui-u-font-size-annotation-2\",\n \"tag-1\": \"sui-u-font-size-tag-1\",\n \"heading-1\": \"sui-u-font-size-heading-1\",\n \"heading-2\": \"sui-u-font-size-heading-2\",\n \"heading-3\": \"sui-u-font-size-heading-3\",\n \"heading-4\": \"sui-u-font-size-heading-4\",\n \"heading-5\": \"sui-u-font-size-heading-5\",\n \"heading-6\": \"sui-u-font-size-heading-6\",\n \"uppercase-heading-1\": \"sui-u-font-size-uppercase-heading-1\",\n \"uppercase-heading-2\": \"sui-u-font-size-uppercase-heading-2\",\n});\n\nexport const lineHeightUtilityVariants = () => ({\n 1: \"sui-u-line-height-1\",\n short: \"sui-u-line-height-short\",\n long: \"sui-u-line-height-long\",\n});\n","/**\n * This file was generated\n * Do not edit directly\n * See 'single-js/common/build-style-dictionary.js' for more info\n */\n\nexport const spaceUtilityVariants = (spaceUtilityKey) => ({\n auto: `sui-u-${spaceUtilityKey}-auto`,\n \"0x\": `sui-u-${spaceUtilityKey}-0x`,\n \"0-25x\": `sui-u-${spaceUtilityKey}-0-25x`,\n \"0-5x\": `sui-u-${spaceUtilityKey}-0-5x`,\n \"0-75x\": `sui-u-${spaceUtilityKey}-0-75x`,\n \"1x\": `sui-u-${spaceUtilityKey}-1x`,\n \"1-25x\": `sui-u-${spaceUtilityKey}-1-25x`,\n \"1-5x\": `sui-u-${spaceUtilityKey}-1-5x`,\n \"2x\": `sui-u-${spaceUtilityKey}-2x`,\n \"2-5x\": `sui-u-${spaceUtilityKey}-2-5x`,\n \"3x\": `sui-u-${spaceUtilityKey}-3x`,\n \"4x\": `sui-u-${spaceUtilityKey}-4x`,\n \"5x\": `sui-u-${spaceUtilityKey}-5x`,\n \"6x\": `sui-u-${spaceUtilityKey}-6x`,\n \"7x\": `sui-u-${spaceUtilityKey}-7x`,\n \"8x\": `sui-u-${spaceUtilityKey}-8x`,\n \"9x\": `sui-u-${spaceUtilityKey}-9x`,\n \"10x\": `sui-u-${spaceUtilityKey}-10x`,\n \"11x\": `sui-u-${spaceUtilityKey}-11x`,\n \"12x\": `sui-u-${spaceUtilityKey}-12x`,\n \"negative-0-25x\": `sui-u-${spaceUtilityKey}-negative-0-25x`,\n \"negative-0-5x\": `sui-u-${spaceUtilityKey}-negative-0-5x`,\n \"negative-0-75x\": `sui-u-${spaceUtilityKey}-negative-0-75x`,\n \"negative-1x\": `sui-u-${spaceUtilityKey}-negative-1x`,\n \"negative-1-25x\": `sui-u-${spaceUtilityKey}-negative-1-25x`,\n \"negative-1-5x\": `sui-u-${spaceUtilityKey}-negative-1-5x`,\n \"negative-2x\": `sui-u-${spaceUtilityKey}-negative-2x`,\n \"negative-2-5x\": `sui-u-${spaceUtilityKey}-negative-2-5x`,\n \"negative-3x\": `sui-u-${spaceUtilityKey}-negative-3x`,\n \"negative-4x\": `sui-u-${spaceUtilityKey}-negative-4x`,\n \"negative-5x\": `sui-u-${spaceUtilityKey}-negative-5x`,\n \"negative-6x\": `sui-u-${spaceUtilityKey}-negative-6x`,\n \"negative-7x\": `sui-u-${spaceUtilityKey}-negative-7x`,\n \"negative-8x\": `sui-u-${spaceUtilityKey}-negative-8x`,\n \"negative-9x\": `sui-u-${spaceUtilityKey}-negative-9x`,\n \"negative-10x\": `sui-u-${spaceUtilityKey}-negative-10x`,\n \"negative-11x\": `sui-u-${spaceUtilityKey}-negative-11x`,\n \"negative-12x\": `sui-u-${spaceUtilityKey}-negative-12x`,\n});\n","/**\n * This file was generated\n * Do not edit directly\n * See 'single-js/common/build-style-dictionary.js' for more info\n */\n\nexport const sizeUtilityVariants = (sizeUtilityKey) => ({\n auto: `sui-u-${sizeUtilityKey}-auto`,\n \"1/4\": `sui-u-${sizeUtilityKey}-1-4`,\n \"1/3\": `sui-u-${sizeUtilityKey}-1-3`,\n \"1/2\": `sui-u-${sizeUtilityKey}-1-2`,\n \"2/3\": `sui-u-${sizeUtilityKey}-2-3`,\n \"3/4\": `sui-u-${sizeUtilityKey}-3-4`,\n full: `sui-u-${sizeUtilityKey}-full`,\n \"100vw\": `sui-u-${sizeUtilityKey}-100vw`,\n \"100vh\": `sui-u-${sizeUtilityKey}-100vh`,\n \"min-content\": `sui-u-${sizeUtilityKey}-min-content`,\n \"max-content\": `sui-u-${sizeUtilityKey}-max-content`,\n \"fit-content\": `sui-u-${sizeUtilityKey}-fit-content`,\n \"0-25x\": `sui-u-${sizeUtilityKey}-0-25x`,\n \"0-5x\": `sui-u-${sizeUtilityKey}-0-5x`,\n \"0-75x\": `sui-u-${sizeUtilityKey}-0-75x`,\n \"1x\": `sui-u-${sizeUtilityKey}-1x`,\n \"1-25x\": `sui-u-${sizeUtilityKey}-1-25x`,\n \"1-5x\": `sui-u-${sizeUtilityKey}-1-5x`,\n \"2x\": `sui-u-${sizeUtilityKey}-2x`,\n \"2-5x\": `sui-u-${sizeUtilityKey}-2-5x`,\n \"3x\": `sui-u-${sizeUtilityKey}-3x`,\n \"4x\": `sui-u-${sizeUtilityKey}-4x`,\n \"5x\": `sui-u-${sizeUtilityKey}-5x`,\n \"6x\": `sui-u-${sizeUtilityKey}-6x`,\n \"7x\": `sui-u-${sizeUtilityKey}-7x`,\n \"8x\": `sui-u-${sizeUtilityKey}-8x`,\n \"9x\": `sui-u-${sizeUtilityKey}-9x`,\n \"10x\": `sui-u-${sizeUtilityKey}-10x`,\n \"11x\": `sui-u-${sizeUtilityKey}-11x`,\n \"12x\": `sui-u-${sizeUtilityKey}-12x`,\n \"15x\": `sui-u-${sizeUtilityKey}-15x`,\n \"20x\": `sui-u-${sizeUtilityKey}-20x`,\n \"25x\": `sui-u-${sizeUtilityKey}-25x`,\n \"30x\": `sui-u-${sizeUtilityKey}-30x`,\n \"35x\": `sui-u-${sizeUtilityKey}-35x`,\n \"40x\": `sui-u-${sizeUtilityKey}-40x`,\n \"45x\": `sui-u-${sizeUtilityKey}-45x`,\n \"50x\": `sui-u-${sizeUtilityKey}-50x`,\n \"55x\": `sui-u-${sizeUtilityKey}-55x`,\n \"60x\": `sui-u-${sizeUtilityKey}-60x`,\n \"65x\": `sui-u-${sizeUtilityKey}-65x`,\n \"70x\": `sui-u-${sizeUtilityKey}-70x`,\n \"75x\": `sui-u-${sizeUtilityKey}-75x`,\n \"80x\": `sui-u-${sizeUtilityKey}-80x`,\n \"90x\": `sui-u-${sizeUtilityKey}-90x`,\n \"100x\": `sui-u-${sizeUtilityKey}-100x`,\n \"110x\": `sui-u-${sizeUtilityKey}-110x`,\n \"120x\": `sui-u-${sizeUtilityKey}-120x`,\n});\n","// Do not import utility variants from './utility-variants.js' to avoid circular dependencies\n\nimport { sizeUtilityVariants } from \"./__generated__/size-utility-variants\";\nimport { spaceUtilityVariants } from \"./__generated__/space-utility-variants\";\n\nexport const displayUtilityVariants = () => ({\n block: \"sui-u-block\",\n \"inline-block\": \"sui-u-inline-block\",\n inline: \"sui-u-inline\",\n});\n\nexport const allMarginUtilityVariants = () => ({\n m: spaceUtilityVariants(\"m\"),\n mx: spaceUtilityVariants(\"mx\"),\n my: spaceUtilityVariants(\"my\"),\n mt: spaceUtilityVariants(\"mt\"),\n mr: spaceUtilityVariants(\"mr\"),\n mb: spaceUtilityVariants(\"mb\"),\n ml: spaceUtilityVariants(\"ml\"),\n});\n\nexport const allPaddingUtilityVariants = () => ({\n p: spaceUtilityVariants(\"p\"),\n px: spaceUtilityVariants(\"px\"),\n py: spaceUtilityVariants(\"py\"),\n pt: spaceUtilityVariants(\"pt\"),\n pr: spaceUtilityVariants(\"pr\"),\n pb: spaceUtilityVariants(\"pb\"),\n pl: spaceUtilityVariants(\"pl\"),\n});\n\nexport const allSizeUtilityVariants = () => ({\n width: sizeUtilityVariants(\"width\"),\n minWidth: sizeUtilityVariants(\"min-width\"),\n maxWidth: sizeUtilityVariants(\"max-width\"),\n\n height: sizeUtilityVariants(\"height\"),\n minHeight: sizeUtilityVariants(\"min-height\"),\n maxHeight: sizeUtilityVariants(\"max-height\"),\n});\n","module.exports = require('./lib/SqlString');\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar makeOptions = function (opts) {\r\n if (opts === void 0) { opts = {}; }\r\n return ({\r\n arrayFormat: opts.arrayFormat || 'none',\r\n booleanFormat: opts.booleanFormat || 'none',\r\n nullFormat: opts.nullFormat || 'default'\r\n });\r\n};\r\nvar encodeValue = function (value) { return encodeURIComponent(value); };\r\nvar decodeValue = function (value) { return decodeURIComponent(value); };\r\nvar encodeBoolean = function (name, value, opts) {\r\n if (opts.booleanFormat === 'empty-true' && value) {\r\n return name;\r\n }\r\n var encodedValue;\r\n if (opts.booleanFormat === 'unicode') {\r\n encodedValue = value ? '✓' : '✗';\r\n }\r\n else {\r\n encodedValue = value.toString();\r\n }\r\n return name + \"=\" + encodedValue;\r\n};\r\nvar encodeNull = function (name, opts) {\r\n if (opts.nullFormat === 'hidden') {\r\n return '';\r\n }\r\n if (opts.nullFormat === 'string') {\r\n return name + \"=null\";\r\n }\r\n return name;\r\n};\r\nvar getNameEncoder = function (opts) {\r\n if (opts.arrayFormat === 'index') {\r\n return function (name, index) { return name + \"[\" + index + \"]\"; };\r\n }\r\n if (opts.arrayFormat === 'brackets') {\r\n return function (name) { return name + \"[]\"; };\r\n }\r\n return function (name) { return name; };\r\n};\r\nvar encodeArray = function (name, arr, opts) {\r\n var encodeName = getNameEncoder(opts);\r\n return arr\r\n .map(function (val, index) { return encodeName(name, index) + \"=\" + encodeValue(val); })\r\n .join('&');\r\n};\r\nvar encode = function (name, value, opts) {\r\n if (value === null) {\r\n return encodeNull(name, opts);\r\n }\r\n if (typeof value === 'boolean') {\r\n return encodeBoolean(name, value, opts);\r\n }\r\n if (Array.isArray(value)) {\r\n return encodeArray(name, value, opts);\r\n }\r\n return name + \"=\" + encodeValue(value);\r\n};\r\nvar decode = function (value, opts) {\r\n if (value === undefined) {\r\n return opts.booleanFormat === 'empty-true' ? true : null;\r\n }\r\n if (opts.booleanFormat === 'string') {\r\n if (value === 'true') {\r\n return true;\r\n }\r\n if (value === 'false') {\r\n return false;\r\n }\r\n }\r\n else if (opts.booleanFormat === 'unicode') {\r\n if (decodeValue(value) === '✓') {\r\n return true;\r\n }\r\n if (decodeValue(value) === '✗') {\r\n return false;\r\n }\r\n }\r\n else if (opts.nullFormat === 'string') {\r\n if (value === 'null') {\r\n return null;\r\n }\r\n }\r\n return decodeValue(value);\r\n};\n\nvar getSearch = function (path) {\r\n var pos = path.indexOf('?');\r\n if (pos === -1) {\r\n return path;\r\n }\r\n return path.slice(pos + 1);\r\n};\r\nvar isSerialisable = function (val) { return val !== undefined; };\r\nvar parseName = function (name) {\r\n var bracketPosition = name.indexOf('[');\r\n var hasBrackets = bracketPosition !== -1;\r\n return {\r\n hasBrackets: hasBrackets,\r\n name: hasBrackets ? name.slice(0, bracketPosition) : name\r\n };\r\n};\n\n/**\r\n * Parse a querystring and return an object of parameters\r\n */\r\nvar parse = function (path, opts) {\r\n var options = makeOptions(opts);\r\n return getSearch(path)\r\n .split('&')\r\n .reduce(function (params, param) {\r\n var _a = param.split('='), rawName = _a[0], value = _a[1];\r\n var _b = parseName(rawName), hasBrackets = _b.hasBrackets, name = _b.name;\r\n var currentValue = params[name];\r\n var decodedValue = decode(value, options);\r\n if (currentValue === undefined) {\r\n params[name] = hasBrackets ? [decodedValue] : decodedValue;\r\n }\r\n else {\r\n params[name] = [].concat(currentValue, decodedValue);\r\n }\r\n return params;\r\n }, {});\r\n};\r\n/**\r\n * Build a querystring from an object of parameters\r\n */\r\nvar build = function (params, opts) {\r\n var options = makeOptions(opts);\r\n return Object.keys(params)\r\n .filter(function (paramName) { return isSerialisable(params[paramName]); })\r\n .map(function (paramName) { return encode(paramName, params[paramName], options); })\r\n .filter(Boolean)\r\n .join('&');\r\n};\r\n/**\r\n * Remove a list of parameters from a querystring\r\n */\r\nvar omit = function (path, paramsToOmit, opts) {\r\n var options = makeOptions(opts);\r\n var searchPart = getSearch(path);\r\n if (searchPart === '') {\r\n return {\r\n querystring: '',\r\n removedParams: {}\r\n };\r\n }\r\n var _a = path.split('&').reduce(function (_a, chunk) {\r\n var left = _a[0], right = _a[1];\r\n var rawName = chunk.split('=')[0];\r\n var name = parseName(rawName).name;\r\n return paramsToOmit.indexOf(name) === -1\r\n ? [left.concat(chunk), right]\r\n : [left, right.concat(chunk)];\r\n }, [[], []]), kept = _a[0], removed = _a[1];\r\n return {\r\n querystring: kept.join('&'),\r\n removedParams: parse(removed.join('&'), options)\r\n };\r\n};\r\n/**\r\n * Remove a list of parameters from a querystring\r\n */\r\nvar keep = function (path, paramsToKeep, opts) {\r\n var options = makeOptions(opts);\r\n var searchPart = getSearch(path);\r\n if (searchPart === '') {\r\n return {\r\n keptParams: {},\r\n querystring: ''\r\n };\r\n }\r\n var _a = path.split('&').reduce(function (_a, chunk) {\r\n var left = _a[0], right = _a[1];\r\n var rawName = chunk.split('=')[0];\r\n var name = parseName(rawName).name;\r\n return paramsToKeep.indexOf(name) >= 0\r\n ? [left.concat(chunk), right]\r\n : [left, right.concat(chunk)];\r\n }, [[], []]), kept = _a[0], removed = _a[1];\r\n return {\r\n keptParams: parse(kept.join('&'), options),\r\n querystring: kept.join('&')\r\n };\r\n};\n\nexports.parse = parse;\nexports.build = build;\nexports.omit = omit;\nexports.keep = keep;\n","import { useTheme } from \"@single-js/common/theme-context\";\nimport _ from \"lodash\";\nimport * as React from \"react\";\nimport Scrollbars from \"react-custom-scrollbars\";\nimport { zIndex } from \"../../util/z-index\";\n// This default renders were based on the react-custom-scrollbars v4.2.1\n// https://github.com/malte-wessel/react-custom-scrollbars/blob/v4.2.1/src/Scrollbars/defaultRenderElements.js\nfunction renderTrackHorizontalDefault({ style, ...props }) {\n const finalStyle = {\n ...style,\n right: 2,\n bottom: 2,\n left: 2,\n borderRadius: 3,\n };\n const newProps = _.omit(props, \"dark\");\n return React.createElement(\"div\", { style: finalStyle, ...newProps });\n}\nfunction renderTrackVerticalDefault({ style, ...props }) {\n const finalStyle = {\n ...style,\n right: 2,\n bottom: 2,\n top: 2,\n borderRadius: 3,\n };\n const newProps = _.omit(props, \"dark\");\n return React.createElement(\"div\", { style: finalStyle, ...newProps });\n}\nfunction renderThumbHorizontalDefault({ style, dark, ...props }) {\n let themeStyle;\n if (dark) {\n themeStyle = {\n borderRadius: \"3px\",\n backgroundColor: \"rgba(255, 255, 255, 0.4)\",\n };\n }\n else {\n themeStyle = {\n borderRadius: \"inherit\",\n backgroundColor: \"rgba(0,0,0,0.2)\",\n };\n }\n const finalStyle = {\n ...style,\n ...themeStyle,\n cursor: \"pointer\",\n };\n return React.createElement(\"div\", { style: finalStyle, ...props });\n}\nfunction renderThumbVerticalDefault({ style, dark, ...props }) {\n let themeStyle;\n if (dark) {\n themeStyle = {\n borderRadius: \"3px\",\n backgroundColor: \"rgba(255, 255, 255, 0.4)\",\n };\n }\n else {\n themeStyle = {\n borderRadius: \"inherit\",\n backgroundColor: \"rgba(0,0,0,0.2)\",\n };\n }\n const finalStyle = {\n ...style,\n ...themeStyle,\n cursor: \"pointer\",\n };\n return React.createElement(\"div\", { style: finalStyle, ...props });\n}\n// Wrapper of the third party component \"react-custom-scrollbars\". We use this\n// wrapper component to inject custom MemSQL styles, for instance, to overwrite\n// the scrollbar default render injecting the proper z-index value\nexport const CustomScrollbar = React.forwardRef(({ children, renderTrackHorizontal, renderTrackVertical, renderThumbHorizontal, renderThumbVertical, ...rest }, ref) => {\n const { theme } = useTheme();\n const dark = theme === \"dark\";\n return (React.createElement(Scrollbars, { ref: ref, renderTrackHorizontal: ({ style, ...props }) => {\n const finalStyle = {\n ...style,\n zIndex: zIndex.scrollbar,\n };\n if (renderTrackHorizontal) {\n return renderTrackHorizontal({\n ...props,\n style: finalStyle,\n });\n }\n else {\n return renderTrackHorizontalDefault({\n ...props,\n dark,\n style: finalStyle,\n });\n }\n }, renderTrackVertical: ({ style, ...props }) => {\n const finalStyle = {\n ...style,\n dark,\n zIndex: zIndex.scrollbar,\n };\n if (renderTrackVertical) {\n return renderTrackVertical({\n ...props,\n style: finalStyle,\n });\n }\n else {\n return renderTrackVerticalDefault({\n ...props,\n dark,\n style: finalStyle,\n });\n }\n }, renderThumbHorizontal: ({ style, ...props }) => {\n const finalStyle = {\n ...style,\n zIndex: zIndex.scrollbar,\n };\n if (renderThumbHorizontal) {\n return renderThumbHorizontal({\n ...props,\n style: finalStyle,\n });\n }\n else {\n return renderThumbHorizontalDefault({\n ...props,\n dark,\n style: finalStyle,\n });\n }\n }, renderThumbVertical: ({ style, ...props }) => {\n const finalStyle = {\n ...style,\n zIndex: zIndex.scrollbar,\n };\n if (renderThumbVertical) {\n return renderThumbVertical({\n ...props,\n style: finalStyle,\n });\n }\n else {\n return renderThumbVerticalDefault({\n ...props,\n dark,\n style: finalStyle,\n });\n }\n }, ...rest }, children));\n});\n","export * from \"./cluster-metadata\";\nexport * from \"./clusters\";\nexport * from \"./dashboard\";\nexport * from \"./events\";\nexport * from \"./hosts\";\nexport * from \"./license\";\nexport * from \"./pipelines\";\nexport * from \"./routes\";\nexport * from \"./schema-tree\";\nexport * from \"./schema\";\nexport * from \"./system-status\";\nexport * from \"./topology\";\n","import { selectError, selectLastUpdate, selectLoadingOrInitial, selectPayload, } from \"@single-js/common/util/loading-state-machine\";\nexport const selectLicenseLoading = (s) => selectLoadingOrInitial(s.license.licenseInfo);\nexport const selectLicenseLastUpdate = (s) => selectLastUpdate(s.license.licenseInfo);\nexport const selectLicenseError = (s) => {\n const error = selectError(s.license.licenseInfo);\n if (error) {\n return error.message;\n }\n};\nexport const selectLicenseInfo = (s) => selectPayload(s.license.licenseInfo);\nexport const selectLicenseUsage = (s) => {\n const licenseInfo = selectPayload(s.license.licenseInfo);\n if (licenseInfo) {\n const { usedCapacity, maximumCapacity } = licenseInfo;\n if (maximumCapacity === \"unlimited\" || maximumCapacity === 0) {\n return \"unlimited\";\n }\n return usedCapacity / maximumCapacity;\n }\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// 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 permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }return keys;\n};\n/**/\n\nmodule.exports = Duplex;\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\n{\n // avoid scope creep, the keys array can then be collected\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false) this.readable = false;\n\n if (options && options.writable === false) this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n\n pna.nextTick(cb, err);\n};","var parse = require('../parse/index.js')\nvar startOfISOWeek = require('../start_of_iso_week/index.js')\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * var result = getISOYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nfunction getISOYear (dirtyDate) {\n var date = parse(dirtyDate)\n var year = date.getFullYear()\n\n var fourthOfJanuaryOfNextYear = new Date(0)\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4)\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0)\n var startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear)\n\n var fourthOfJanuaryOfThisYear = new Date(0)\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4)\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0)\n var startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear)\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year\n } else {\n return year - 1\n }\n}\n\nmodule.exports = getISOYear\n","var startOfWeek = require('../start_of_week/index.js')\n\n/**\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * var result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nfunction startOfISOWeek (dirtyDate) {\n return startOfWeek(dirtyDate, {weekStartsOn: 1})\n}\n\nmodule.exports = startOfISOWeek\n","var parse = require('../parse/index.js')\n\n/**\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * var result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nfunction startOfDay (dirtyDate) {\n var date = parse(dirtyDate)\n date.setHours(0, 0, 0, 0)\n return date\n}\n\nmodule.exports = startOfDay\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","export default {\n \"1385\": \"ER_NO_GROUP_FOR_PROC\",\n \"1282\": \"ER_WARN_QC_RESIZE\",\n \"1401\": \"ER_XAER_RMERR\",\n \"1197\": \"ER_TRANS_CACHE_FULL\",\n \"2238\": \"ER_QUERY_TYPE_VARIABLE_REASSIGN\",\n \"1646\": \"ER_SIGNAL_BAD_CONDITION_TYPE\",\n \"1830\": \"ER_UNSUPPORTED_AUTH_PLUGIN\",\n \"1850\": \"ER_LOAD_NULL_OR_ZERO_AUTO_INCREMENT\",\n \"1061\": \"ER_DUP_KEYNAME\",\n \"1905\": \"ER_STATISTICS_JSON_WRONG_TABLE\",\n \"1775\": \"ER_DISTRIBUTED_CHECK_PARTITIONS_FAILURE\",\n \"1910\": \"ER_STATISTICS_JSON_MISSING_COLUMN\",\n \"2225\": \"ER_FAILOVER_DURING_CREATE_DATABASE\",\n \"1952\": \"ER_PROFILE_NOT_EXISTS\",\n \"1426\": \"ER_TOO_BIG_PRECISION\",\n \"1632\": \"ER_TABLE_NAME\",\n \"1544\": \"ER_EVENT_EXEC_TIME_IN_THE_PAST\",\n \"1872\": \"ER_INVALID_SPATIAL_INSERT\",\n \"1488\": \"ER_FIELD_NOT_FOUND_PART_ERROR\",\n \"1460\": \"ER_SP_NO_AGGREGATE\",\n \"1854\": \"ER_CONCURRENT_COLUMNAR_OPTIMIZE\",\n \"1410\": \"ER_CANT_CREATE_USER_WITH_GRANT\",\n \"1936\": \"ER_EXTRACTOR_NOT_EXISTS\",\n \"1211\": \"ER_NO_PERMISSION_TO_CREATE_USER\",\n \"1094\": \"ER_NO_SUCH_THREAD\",\n \"2330\": \"ER_FAILED_TO_CREATE_LINK\",\n \"1190\": \"ER_MASTER_NET_WRITE\",\n \"1001\": \"ER_NISAMCHK\",\n \"1120\": \"ER_WRONG_OUTER_JOIN\",\n \"2315\": \"ER_TOO_MANY_ARGUMENTS\",\n \"2303\": \"ER_REFERENCE_TABLE_MEMORY\",\n \"1960\": \"ER_QUERY_QUEUED_WARNING\",\n \"1060\": \"ER_DUP_FIELDNAME\",\n \"1212\": \"ER_UNION_TABLES_IN_DIFFERENT_DIR\",\n \"1251\": \"ER_NOT_SUPPORTED_AUTH_MODE\",\n \"1297\": \"ER_GET_TEMPORARY_ERRMSG\",\n \"1833\": \"ER_DIRECTORY_FAILED_TO_OPEN\",\n \"1645\": \"ER_RESIGNAL_WITHOUT_ACTIVE_HANDLER\",\n \"1562\": \"ER_PARTITION_NO_TEMPORARY\",\n \"1654\": \"ER_WRONG_TYPE_COLUMN_VALUE_ERROR\",\n \"1347\": \"ER_WRONG_OBJECT\",\n \"1196\": \"ER_WARNING_NOT_COMPLETE_ROLLBACK\",\n \"2307\": \"ER_INVALID_STORED_PROCEDURE_FOR_PIPELINES\",\n \"1860\": \"ER_BAD_GET_COORD_ARG\",\n \"1366\": \"ER_TRUNCATED_WRONG_VALUE_FOR_FIELD\",\n \"1114\": \"ER_RECORD_FILE_FULL\",\n \"1427\": \"ER_M_BIGGER_THAN_D\",\n \"1065\": \"ER_EMPTY_QUERY\",\n \"1499\": \"ER_TOO_MANY_PARTITIONS_ERROR\",\n \"1619\": \"WARN_PLUGIN_DELETE_BUILTIN\",\n \"1633\": \"ER_PARTITION_NAME\",\n \"1207\": \"ER_READ_ONLY_TRANSACTION\",\n \"1102\": \"ER_WRONG_DB_NAME\",\n \"1139\": \"ER_REGEXP_ERROR\",\n \"2328\": \"ER_REPLAY_CATCHING_UP\",\n \"1354\": \"ER_WARN_VIEW_MERGE\",\n \"1755\": \"ER_ALIAS_TVF_PARAMETER\",\n \"1549\": \"ER_EVENT_CANNOT_DELETE\",\n \"1440\": \"ER_XAER_DUPID\",\n \"1866\": \"ER_GEOMETRY_LARGE_XY\",\n \"1917\": \"ER_USER_ALREADY_IN_GROUP\",\n \"1988\": \"ER_UDF_NOT_NULL_VARIABLE_UNINITIALIZED\",\n \"1839\": \"ER_ROW_TOO_LARGE\",\n \"1976\": \"ER_VIEW_DEFINITION_NOT_SELECT_STATEMENT\",\n \"1416\": \"ER_CANT_CREATE_GEOMETRY_OBJECT\",\n \"1122\": \"ER_CANT_FIND_UDF\",\n \"1729\": \"ER_LOADING_SO\",\n \"1725\": \"ER_MEMSQL_USERS_TABLE\",\n \"1195\": \"ER_CRASHED_ON_REPAIR\",\n \"2275\": \"ER_DISTRIBUTED_CLUSTERDB_NOT_FOUND\",\n \"2219\": \"ER_NO_SUCH_AGGREGATE\",\n \"1343\": \"ER_FPARSER_ERROR_IN_PARAMETER\",\n \"1634\": \"ER_SUBPARTITION_NAME\",\n \"1314\": \"ER_SP_BADSTATEMENT\",\n \"1788\": \"ER_DROP_DURING_RESTORE\",\n \"1033\": \"ER_NOT_FORM_FILE\",\n \"1838\": \"ER_INVALID_PORT\",\n \"1778\": \"ER_DISTRIBUTED_PARTITION_NAME_TOO_LONG\",\n \"1305\": \"ER_SP_DOES_NOT_EXIST\",\n \"1785\": \"ER_DISTRIBUTED_REBALANCE_WARNING\",\n \"1271\": \"ER_CANT_AGGREGATE_NCOLLATIONS\",\n \"1303\": \"ER_SP_NO_RECURSIVE_CREATE\",\n \"2320\": \"ER_FAILED_FULLTEXT_QUERY\",\n \"2300\": \"ER_SUBPROC_RESTORE\",\n \"1995\": \"ER_DATE_TRUNC_INVALID_TIME_UNIT\",\n \"1954\": \"ER_SUBPROCESS_INTERNAL_ERROR\",\n \"2206\": \"ER_LITERAL_WITHOUT_TYPE\",\n \"1753\": \"ER_DISTRIBUTED_MASTER\",\n \"1455\": \"ER_OLD_FILE_FORMAT\",\n \"1505\": \"ER_PARTITION_MGMT_ON_NONPARTITIONED\",\n \"1515\": \"ER_COALESCE_PARTITION_NO_PARTITION\",\n \"1647\": \"WARN_COND_ITEM_TRUNCATED\",\n \"1129\": \"ER_HOST_IS_BLOCKED\",\n \"1502\": \"ER_BLOB_FIELD_IN_PART_FUNC_ERROR\",\n \"2221\": \"ER_BAD_CALLSITE\",\n \"1637\": \"ER_TOO_MANY_CONCURRENT_TRXS\",\n \"2298\": \"ER_SUBPROC_VALIDATION\",\n \"1307\": \"ER_SP_STORE_FAILED\",\n \"1865\": \"ER_GEOMETRY_LARGE_LONGITUDE\",\n \"1199\": \"ER_SLAVE_NOT_RUNNING\",\n \"1430\": \"ER_QUERY_ON_FOREIGN_DATA_SOURCE\",\n \"1586\": \"ER_DUP_ENTRY_WITH_KEY_NAME\",\n \"2343\": \"ER_BACKUP_FAILED\",\n \"1241\": \"ER_OPERAND_COLUMNS\",\n \"1504\": \"ER_NO_PARTS_ERROR\",\n \"1914\": \"ER_TOO_MANY_COLUMNSTORE_TABLES\",\n \"1138\": \"ER_INVALID_USE_OF_NULL\",\n \"1063\": \"ER_WRONG_FIELD_SPEC\",\n \"1087\": \"ER_LOAD_INFO\",\n \"1365\": \"ER_DIVISION_BY_ZERO\",\n \"2331\": \"ER_NO_LINK_FOUND\",\n \"1300\": \"ER_INVALID_CHARACTER_STRING\",\n \"2200\": \"ER_TVF_PARAMETER_UNUSED\",\n \"1882\": \"ER_RESULT_TABLE_ALREADY_STARTED\",\n \"1870\": \"ER_GEOMETRY_SELF_CROSSING_RING\",\n \"1174\": \"ER_NO_RAID_COMPILED\",\n \"1736\": \"ER_DISTRIBUTED_NOT_AGGREGATOR\",\n \"2000\": \"MIN_CLIENT_ERROR_CODE\",\n \"1104\": \"ER_TOO_BIG_SELECT\",\n \"1539\": \"ER_EVENT_DOES_NOT_EXIST\",\n \"2333\": \"ER_INVALID_VALUE_FOR_SYNC_VAR\",\n \"1737\": \"ER_DISTRIBUTED_LEAF_EXISTS\",\n \"1412\": \"ER_TABLE_DEF_CHANGED\",\n \"1429\": \"ER_CONNECT_TO_FOREIGN_DATA_SOURCE\",\n \"1338\": \"ER_SP_CURSOR_AFTER_HANDLER\",\n \"1916\": \"ER_USER_DOES_NOT_EXIST\",\n \"1932\": \"ER_EXTRACTOR_EXTRACTOR_CONNECT\",\n \"2295\": \"ER_NONAGGREGATED_NONGROUPED_FIELD\",\n \"1370\": \"ER_PROCACCESS_DENIED_ERROR\",\n \"2276\": \"ER_DISTRIBUTED_NOT_MASTER_ANYMORE\",\n \"1052\": \"ER_NON_UNIQ_ERROR\",\n \"1801\": \"ER_DISTRIBUTED_FOREIGN_KEY_SHARD_KEY\",\n \"1790\": \"ER_INVALID_RESTORE_PATH\",\n \"1603\": \"ER_TRG_NO_CREATION_CTX\",\n \"1214\": \"ER_TABLE_CANT_HANDLE_FT\",\n \"1765\": \"ER_TABLE_LOCK_FAILURE\",\n \"1225\": \"ER_DUP_ARGUMENT\",\n \"1746\": \"ER_DISTRIBUTED_UNCLASSIFIED_ERROR\",\n \"1015\": \"ER_CANT_LOCK\",\n \"1205\": \"ER_LOCK_WAIT_TIMEOUT\",\n \"1570\": \"ER_EVENT_MODIFY_QUEUE_ERROR\",\n \"1844\": \"ER_INVALID_JSON_EXPRESSION\",\n \"1745\": \"ER_MEMSQL_UNMAPPED_PARTITION\",\n \"1404\": \"ER_PROC_AUTO_GRANT_FAIL\",\n \"1126\": \"ER_CANT_OPEN_LIBRARY\",\n \"1684\": \"ER_WARN_I_S_SKIPPED_TABLE\",\n \"1357\": \"ER_SP_NO_DROP_SP\",\n \"1758\": \"ER_DISTRIBUTED_LAST_LEAF\",\n \"1901\": \"ER_DISTRIBUTED_FOREIGN_KEY_SHARD_KEY_TEMPORARY\",\n \"2263\": \"ER_RESTORE_WRONG_VERSION\",\n \"2217\": \"ER_CANNOT_CREATE_AGGREGATE\",\n \"2285\": \"ER_OPERATION_FAILED\",\n \"2213\": \"ER_BAD_QTV_ASSIGN\",\n \"1176\": \"ER_KEY_DOES_NOT_EXITS\",\n \"1853\": \"ER_CANT_SORT_TABLE_WITH_PRIMARY_PROJECTION\",\n \"2212\": \"ER_ASSIGN_INTO_CONST\",\n \"1557\": \"ER_FOREIGN_DUPLICATE_KEY\",\n \"2294\": \"ER_CANNOT_UPDATE_SHARD_KEY\",\n \"2282\": \"ER_SYNC_PARTITIONS_TIMEOUT\",\n \"1154\": \"ER_NET_READ_ERROR_FROM_PIPE\",\n \"1218\": \"ER_CONNECT_TO_MASTER\",\n \"2324\": \"ER_SYNC_VAR_ON_LEAF\",\n \"1680\": \"ER_PATH_LENGTH\",\n \"1468\": \"ER_USERNAME\",\n \"1601\": \"ER_SR_INVALID_CREATION_CTX\",\n \"1047\": \"ER_UNKNOWN_COM_ERROR\",\n \"2250\": \"ER_DATABASE_NOT_MASTER\",\n \"2215\": \"ER_QUERY_TYPE_VARIABLE_IN_SCALAR_EXPR\",\n \"2344\": \"ER_TOO_MANY_PROMOTE_LOCK_WAITS\",\n \"1908\": \"ER_STATISTICS_JSON_REPEATED_COLUMN\",\n \"1573\": \"ER_CANT_ACTIVATE_LOG\",\n \"2239\": \"ER_QUERY_TYPE_VARIABLE_WITH_NON_SCALAR_COLUMN\",\n \"1611\": \"ER_LOAD_DATA_INVALID_COLUMN\",\n \"1261\": \"ER_WARN_TOO_FEW_RECORDS\",\n \"1041\": \"ER_OUT_OF_RESOURCES\",\n \"1981\": \"ER_BAD_FUNCTION_ERROR\",\n \"1610\": \"ER_SLAVE_CORRUPT_EVENT\",\n \"1884\": \"ER_CANT_PARSE_FILE\",\n \"1864\": \"ER_GEOMETRY_LARGE_LATITUDE\",\n \"1434\": \"ER_CANT_CREATE_FEDERATED_TABLE\",\n \"1896\": \"ER_MEMSQL_UNIQUE_KEY_EMPTY_SHARD_KEY\",\n \"1417\": \"ER_FAILED_ROUTINE_BREAK_BINLOG\",\n \"1186\": \"ER_FLUSH_MASTER_BINLOG_CLOSED\",\n \"1451\": \"ER_ROW_IS_REFERENCED_2\",\n \"1384\": \"ER_DIFF_GROUPS_PROC\",\n // This error has been deprecated in Kalm.\n \"1797\": \"ER_RECOVERY_IN_PROGRESS\",\n \"1034\": \"ER_NOT_KEYFILE\",\n \"2204\": \"ER_FAILED_TO_WRITE_TO_SNAPSHOT_SUBPROCESS\",\n \"1402\": \"ER_XA_RBROLLBACK\",\n \"1419\": \"ER_BINLOG_CREATE_ROUTINE_NEED_SUPER\",\n \"1376\": \"ER_FSEEK_FAIL\",\n \"1382\": \"ER_RESERVED_SYNTAX\",\n \"1566\": \"ER_NULL_IN_VALUES_LESS_THAN\",\n \"1044\": \"ER_DBACCESS_DENIED_ERROR\",\n \"1200\": \"ER_BAD_SLAVE\",\n \"1358\": \"ER_SP_GOTO_IN_HNDLR\",\n \"1316\": \"ER_UPDATE_LOG_DEPRECATED_TRANSLATED\",\n \"1112\": \"ER_UNSUPPORTED_EXTENSION\",\n \"1283\": \"ER_BAD_FT_COLUMN\",\n \"1014\": \"ER_CANT_GET_WD\",\n \"1424\": \"ER_SP_NO_RECURSION\",\n \"1685\": \"ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_DIRECT\",\n \"1834\": \"ER_DISTRIBUTED_FAILED_ON_CHILD_AGGREGATOR\",\n \"1861\": \"ER_BAD_DISTANCE_ARG\",\n \"1681\": \"ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT\",\n \"1533\": \"ER_ALTER_FILEGROUP_FAILED\",\n \"1268\": \"ER_DROP_USER\",\n \"1443\": \"ER_VIEW_PREVENT_UPDATE\",\n \"1140\": \"ER_MIX_OF_GROUP_FUNC_AND_FIELDS\",\n \"1166\": \"ER_WRONG_COLUMN_NAME\",\n \"1699\": \"ER_SET_PASSWORD_AUTH_PLUGIN\",\n \"1965\": \"ER_LEAF_PIPELINE_SYNC_BAD_CHECKSUM\",\n \"1462\": \"ER_VIEW_RECURSIVE\",\n \"1784\": \"ER_DISTRIBUTED_GROUP_NOT_EMPTY\",\n \"1523\": \"ER_LIMITED_PART_RANGE\",\n \"1812\": \"ER_MEMSQL_READ_QUERY_DURING_ALTER_TABLE\",\n \"1486\": \"ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR\",\n \"2287\": \"ER_BAD_SP_FOR_PIPELINE\",\n \"1274\": \"ER_SLAVE_IGNORED_SSL_PARAMS\",\n \"1770\": \"ER_DISTRIBUTED_QUERY_PARALLELISM_IGNORED\",\n \"2254\": \"ER_NODE_NOT_FAILED_OVER\",\n \"1924\": \"ER_USER_ALREADY_EXISTS\",\n \"2289\": \"ER_RG_POOL\",\n \"1253\": \"ER_COLLATION_CHARSET_MISMATCH\",\n \"1476\": \"ER_FOREIGN_SERVER_EXISTS\",\n \"1464\": \"ER_TABLE_CANT_HANDLE_SPKEYS\",\n \"1180\": \"ER_ERROR_DURING_COMMIT\",\n \"1336\": \"ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG\",\n \"2245\": \"ER_AUTOSTATS_UNSUPPORTED\",\n \"1889\": \"ER_JOIN_ENUMERATION_FAILED\",\n \"1348\": \"ER_NONUPDATEABLE_COLUMN\",\n \"1575\": \"ER_BASE64_DECODE_ERROR\",\n \"1149\": \"ER_SYNTAX_ERROR\",\n \"1615\": \"ER_NEED_REPREPARE\",\n \"1748\": \"ER_DISTRIBUTED_NO_LEAVES\",\n \"1543\": \"ER_EVENT_ENDS_BEFORE_STARTS\",\n \"1470\": \"ER_WRONG_STRING_LENGTH\",\n \"2268\": \"ER_QUERY_SUCCEEDS_AFTER_FAILOVER\",\n \"1651\": \"ER_QUERY_CACHE_DISABLED\",\n \"2258\": \"ER_OPTIMIZE_TABLE_FLUSH_ROWSTORE\",\n \"1489\": \"ER_LIST_OF_FIELDS_ONLY_IN_HASH_ERROR\",\n \"1813\": \"ER_MEMSQL_ONLINE_ALTER_IMPOSSIBLE\",\n \"1483\": \"ER_PARTITION_SUBPART_MIX_ERROR\",\n \"1743\": \"ER_TOO_MANY_REPLICATION_TARGETS\",\n \"1574\": \"ER_RBR_NOT_AVAILABLE\",\n \"1513\": \"ER_ADD_PARTITION_SUBPART_ERROR\",\n \"1903\": \"ER_STATISTICS_JSON_MISSING_FIELD\",\n \"1627\": \"ER_EXCEPTIONS_WRITE_ERROR\",\n \"1223\": \"ER_CANT_UPDATE_WITH_READLOCK\",\n \"1660\": \"ER_PARTITION_FIELDS_TOO_LONG\",\n \"1690\": \"ER_DATA_OUT_OF_RANGE\",\n \"2242\": \"ER_USER_RAISE\",\n \"1163\": \"ER_TABLE_CANT_HANDLE_BLOB\",\n \"1353\": \"ER_VIEW_WRONG_LIST\",\n \"1215\": \"ER_CANNOT_ADD_FOREIGN\",\n \"1986\": \"ER_UDF_NULL_GIVEN_FOR_NOT_NULL_PARAMETER\",\n \"1481\": \"ER_PARTITION_MAXVALUE_ERROR\",\n \"1938\": \"ER_PROJECT_TOO_BIG\",\n \"1379\": \"ER_LOG_PURGE_UNKNOWN_ERR\",\n \"1229\": \"ER_GLOBAL_VARIABLE\",\n \"1069\": \"ER_TOO_MANY_KEYS\",\n \"1710\": \"ER_MEMSQL_TOO_MANY_SLAVES\",\n \"1479\": \"ER_PARTITION_REQUIRES_VALUES_ERROR\",\n \"2253\": \"ER_BAD_WINDOW_FRAME\",\n \"2229\": \"ER_NO_CLUSTER_ID\",\n \"1328\": \"ER_SP_WRONG_NO_OF_FETCH_ARGS\",\n \"1692\": \"ER_BINLOG_UNSAFE_MULTIPLE_ENGINES_AND_SELF_LOGGING_ENGINE\",\n \"1306\": \"ER_SP_DROP_FAILED\",\n \"1068\": \"ER_MULTIPLE_PRI_KEY\",\n \"2319\": \"ER_DECREASING_AUTO_INCREMENT\",\n \"1291\": \"ER_DUPLICATED_VALUE_IN_TYPE\",\n \"1511\": \"ER_REORG_NO_PARAM_ERROR\",\n \"1184\": \"ER_NEW_ABORTING_CONNECTION\",\n \"1373\": \"ER_UNKNOWN_TARGET_BINLOG\",\n \"1350\": \"ER_VIEW_SELECT_CLAUSE\",\n \"1345\": \"ER_VIEW_NO_EXPLAIN\",\n \"1228\": \"ER_LOCAL_VARIABLE\",\n \"1042\": \"ER_BAD_HOST_ERROR\",\n \"1789\": \"ER_INVALID_BACKUP_PATH\",\n \"1132\": \"ER_PASSWORD_NOT_ALLOWED\",\n \"1808\": \"ER_DISTRIBUTED_LEAF_USER_PERMISSIONS\",\n \"1769\": \"ER_REPL_ALREADY_REPLICATING\",\n \"1351\": \"ER_VIEW_SELECT_VARIABLE\",\n \"2199\": \"MAX_CLIENT_ERROR_CODE\",\n \"1249\": \"ER_SELECT_REDUCED\",\n \"1773\": \"ER_DISTRIBUTED_PARTITION_ORDINAL_TOO_BIG\",\n \"1540\": \"ER_EVENT_CANT_ALTER\",\n \"2340\": \"ER_LINK_TYPE_MISMATCH\",\n \"1804\": \"ER_DISTRIBUTED_LEAF_NOT_ONLINE\",\n \"1420\": \"ER_EXEC_STMT_WITH_OPEN_CURSOR\",\n \"1137\": \"ER_CANT_REOPEN_TABLE\",\n \"1329\": \"ER_SP_FETCH_NO_DATA\",\n \"1380\": \"ER_RELAY_LOG_INIT\",\n \"1037\": \"ER_OUTOFMEMORY\",\n \"1877\": \"ER_BAD_HINT\",\n \"1525\": \"ER_WRONG_VALUE\",\n \"1310\": \"ER_SP_LABEL_MISMATCH\",\n \"1856\": \"ER_PARTIALLY_COMMITTED_TRANSACTION\",\n \"1023\": \"ER_ERROR_ON_CLOSE\",\n \"1631\": \"ER_DATABASE_NAME\",\n \"1392\": \"ER_VIEW_CHECKSUM\",\n \"1247\": \"ER_ILLEGAL_REFERENCE\",\n \"2266\": \"ER_INVALID_RERAISE\",\n \"1624\": \"ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE\",\n \"1284\": \"ER_UNKNOWN_KEY_CACHE\",\n \"1270\": \"ER_CANT_AGGREGATE_3COLLATIONS\",\n \"2264\": \"ER_TOO_MANY_LOAD_DATA_ERRORS\",\n \"1759\": \"ER_DISTRIBUTED_REFERENCE_TABLES_ON_SINGLE_BOX\",\n \"2232\": \"ER_CALL_FUNCTION_THAT_RETURNS_EXTENDED_TYPE\",\n \"1891\": \"ER_WITH_DUP_ALIAS\",\n \"1712\": \"ER_MEMSQL_OOM\",\n \"1640\": \"ER_DEBUG_SYNC_HIT_LIMIT\",\n \"1673\": \"ER_BINLOG_UNSAFE_SYSTEM_VARIABLE\",\n \"1302\": \"ER_CONFLICTING_DECLARATIONS\",\n \"1221\": \"ER_WRONG_USAGE\",\n \"1541\": \"ER_EVENT_DROP_FAILED\",\n \"1119\": \"ER_STACK_OVERRUN\",\n \"1551\": \"ER_EVENT_SAME_NAME\",\n \"1779\": \"ER_DISTRIBUTED_INVALID_GROUP_ID\",\n \"1590\": \"ER_SLAVE_INCIDENT\",\n \"1371\": \"ER_RELAY_LOG_FAIL\",\n \"1608\": \"ER_NEVER_USED\",\n \"1876\": \"ER_LINESTRING_CONTAINS_LINESTRING\",\n \"1561\": \"ER_NDB_CANT_SWITCH_BINLOG_FORMAT\",\n \"1595\": \"ER_SLAVE_RELAY_LOG_WRITE_FAILURE\",\n \"1155\": \"ER_NET_FCNTL_ERROR\",\n \"1572\": \"ER_PARTITION_MERGE_ERROR\",\n \"1038\": \"ER_OUT_OF_SORTMEMORY\",\n \"1791\": \"ER_RESTORE_OUT_OF_DISK\",\n \"1024\": \"ER_ERROR_ON_READ\",\n \"1520\": \"ER_REORG_OUTSIDE_RANGE\",\n \"1814\": \"ER_DISTRIBUTED_USER_BAD_HOST\",\n \"1320\": \"ER_SP_NORETURN\",\n \"1202\": \"ER_SLAVE_THREAD\",\n \"1209\": \"ER_CREATE_DB_WITH_READ_LOCK\",\n \"1762\": \"ER_REPL_MEMSQL_DB\",\n \"1888\": \"ER_INVALID_LICENSE\",\n \"1531\": \"ER_WRONG_SIZE_NUMBER\",\n \"1609\": \"ER_NO_FORMAT_DESCRIPTION_EVENT_BEFORE_BINLOG_STATEMENT\",\n \"1983\": \"ER_TVF_NULL_GIVEN_FOR_NOT_NULL_PARAMETER\",\n \"1421\": \"ER_STMT_HAS_NO_OPEN_CURSOR\",\n \"2205\": \"ER_SNAPSHOT_SUBPROCESS_EXITED_WITH_NONZERO_RESULT\",\n \"1524\": \"ER_PLUGIN_IS_NOT_LOADED\",\n \"1178\": \"ER_CHECK_NOT_IMPLEMENTED\",\n \"2297\": \"ER_SUBPROC_SIZE\",\n \"2274\": \"ER_RESULT_TABLE_NET_ERROR_ON_WRITE\",\n \"1277\": \"ER_BAD_SLAVE_UNTIL_COND\",\n \"1254\": \"ER_SLAVE_WAS_RUNNING\",\n \"2251\": \"ER_DATABASE_DOESNT_EXIST\",\n \"1266\": \"ER_WARN_USING_OTHER_HANDLER\",\n \"1494\": \"ER_INCONSISTENT_TYPE_OF_FUNCTIONS_ERROR\",\n \"1912\": \"ER_STATISTICS_NOT_COLLECTED\",\n \"1396\": \"ER_CANNOT_USER\",\n \"1478\": \"ER_ILLEGAL_HA_CREATE_OPTION\",\n \"1720\": \"ER_TABLE_MEMORY_LIMIT\",\n \"1259\": \"ER_ZLIB_Z_DATA_ERROR\",\n \"2252\": \"ER_COUNTERS_UNAVAILABLE\",\n \"1073\": \"ER_BLOB_USED_AS_KEY\",\n \"1582\": \"ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT\",\n \"1020\": \"ER_CHECKREAD\",\n \"1968\": \"ER_PARQUET_EX\",\n \"1602\": \"ER_TRG_CORRUPTED_FILE\",\n \"2270\": \"ER_DB_BACKUP_ABORTED\",\n \"1937\": \"ER_EXTRACTOR_DROPPED_OR_ALTERED\",\n \"1591\": \"ER_NO_PARTITION_FOR_GIVEN_VALUE_SILENT\",\n \"2247\": \"ER_NOT_DR_DATABASE\",\n \"1841\": \"ER_CANNOT_DROP_REFERENCED_BY_VIEW\",\n \"1698\": \"ER_ACCESS_DENIED_NO_PASSWORD_ERROR\",\n \"2339\": \"ER_AVRO_BAD_DATAFILE_CONTENTS\",\n \"1713\": \"ER_MEMSQL_JOIN_NYA\",\n \"2249\": \"ER_FAILED_TO_PROVISION_DR\",\n \"1667\": \"ER_BINLOG_MULTIPLE_ENGINES_AND_SELF_LOGGING_ENGINE\",\n \"1188\": \"ER_MASTER\",\n \"1760\": \"ER_CANNOT_CREATE_REFERENCE_TABLES_ON_LEAF\",\n \"1584\": \"ER_WRONG_PARAMETERS_TO_STORED_FCT\",\n \"1997\": \"ER_XACT_UNKNOWN_STATE\",\n \"2231\": \"ER_NULL_DEREF\",\n \"1706\": \"ER_MEMSQL_FEATURE_LOCKDOWN\",\n \"1387\": \"ER_LOGGING_PROHIBIT_CHANGING_OF\",\n \"1288\": \"ER_NON_UPDATABLE_TABLE\",\n \"1958\": \"ER_TOO_MANY_RG_QUEUED_QUERIES\",\n \"1548\": \"ER_CANNOT_LOAD_FROM_TABLE\",\n \"1340\": \"ER_FPARSER_TOO_BIG_FILE\",\n \"2201\": \"ER_ARRAY_TYPES_CONCAT_MISMATCH\",\n \"1301\": \"ER_WARN_ALLOWED_PACKET_OVERFLOWED\",\n \"1857\": \"ER_ROLLED_BACK_TRANSACTION\",\n \"1243\": \"ER_UNKNOWN_STMT_HANDLER\",\n \"1153\": \"ER_NET_PACKET_TOO_LARGE\",\n \"1142\": \"ER_TABLEACCESS_DENIED_ERROR\",\n \"1807\": \"ER_DISTRIBUTED_USER_PERMISSIONS\",\n \"2243\": \"ER_AUTOSTATS_DISABLED\",\n \"1628\": \"ER_TOO_LONG_TABLE_COMMENT\",\n \"1827\": \"ER_MEMSQL_INVALID_LEAF_SIGNAL\",\n \"2273\": \"ER_DB_SNAPSHOT_ABORTED\",\n \"1693\": \"ER_BINLOG_UNSAFE_MIXED_STATEMENT\",\n \"1982\": \"ER_FUNCTION_EXISTS_ERROR\",\n \"1948\": \"ER_PARTITION_NOT_EXISTS\",\n \"1162\": \"ER_TOO_LONG_STRING\",\n \"1930\": \"ER_INVALID_ROLE_NAME\",\n \"1676\": \"ER_MESSAGE_AND_STATEMENT\",\n \"1679\": \"ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_FORMAT\",\n \"1118\": \"ER_TOO_BIG_ROWSIZE\",\n \"1286\": \"ER_UNKNOWN_STORAGE_ENGINE\",\n \"1374\": \"ER_IO_ERR_LOG_INDEX_READ\",\n \"2203\": \"ER_GEOGRAPHY_ASSIGNED_TO_GEOGRAPHY_POINT\",\n \"1604\": \"ER_TRG_INVALID_CREATION_CTX\",\n \"1992\": \"ER_TYPE_MISMATCH_CAN_PRINT_RHS_TYPE\",\n \"1500\": \"ER_SUBPARTITION_ERROR\",\n \"1192\": \"ER_LOCK_OR_ACTIVE_TRANSACTION\",\n \"2236\": \"ER_SCALAR_NOT_ONE_COLUMN\",\n \"1187\": \"ER_INDEX_REBUILD\",\n \"1110\": \"ER_FIELD_SPECIFIED_TWICE\",\n \"1926\": \"ER_NO_WITH_GRANT_OPTION_IN_STRICT_MODE\",\n \"1095\": \"ER_KILL_DENIED_ERROR\",\n \"1991\": \"ER_ARRAY_DIMENSIONS_MISMATCH\",\n \"1057\": \"ER_WRONG_SUM_SELECT\",\n \"1626\": \"ER_CONFLICT_FN_PARSE_ERROR\",\n \"2234\": \"ER_QUERY_TYPE_IN_ARRAY\",\n \"1071\": \"ER_TOO_LONG_KEY\",\n \"1617\": \"WARN_NO_MASTER_INFO\",\n \"1048\": \"ER_BAD_NULL_ERROR\",\n \"1222\": \"ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT\",\n \"1672\": \"ER_BINLOG_UNSAFE_UDF\",\n \"1206\": \"ER_LOCK_TABLE_FULL\",\n \"1587\": \"ER_BINLOG_PURGE_EMFILE\",\n \"1799\": \"ER_DISTRIBUTED_MASTER_AGGREGATOR_AS_LEAF\",\n \"2228\": \"ER_CUSTOM_TRANSFORM_NOT_SUPPORTED\",\n \"1435\": \"ER_TRG_IN_WRONG_SCHEMA\",\n \"1474\": \"ER_NAME_BECOMES_EMPTY\",\n \"1768\": \"ER_DB_QUERY_CORRUPTED\",\n \"2261\": \"ER_QUERY_RETRY_FAILURE\",\n \"1217\": \"ER_ROW_IS_REFERENCED\",\n \"1141\": \"ER_NONEXISTING_GRANT\",\n \"1806\": \"ER_CONCURRENT_LOAD_FILE\",\n \"1105\": \"ER_UNKNOWN_ERROR\",\n \"1568\": \"ER_CANT_CHANGE_TX_ISOLATION\",\n \"1415\": \"ER_SP_NO_RETSET\",\n \"1210\": \"ER_WRONG_ARGUMENTS\",\n \"1487\": \"ER_NO_CONST_EXPR_IN_RANGE_OR_LIST_ERROR\",\n \"1663\": \"ER_BINLOG_UNSAFE_AND_STMT_ENGINE\",\n \"1959\": \"ER_QUERY_QUEUE_TIMEOUT\",\n \"1444\": \"ER_PS_NO_RECURSION\",\n \"1036\": \"ER_OPEN_AS_READONLY\",\n \"1130\": \"ER_HOST_NOT_PRIVILEGED\",\n \"2312\": \"ER_WARN_DATA_OUT_OF_RANGE_UNSPECIFIC\",\n \"1448\": \"ER_VIEW_OTHER_USER\",\n \"1484\": \"ER_PARTITION_WRONG_NO_PART_ERROR\",\n \"1940\": \"ER_VECTOR_FUNCTION_ERROR\",\n \"1121\": \"ER_NULL_COLUMN_IN_INDEX\",\n \"1798\": \"ER_DISTRIBUTED_AGGREGATOR_LEAF\",\n \"1616\": \"ER_DELAYED_NOT_SUPPORTED\",\n \"1898\": \"ER_GEOMETRY_DUPLICATE_POINT\",\n \"1480\": \"ER_PARTITION_WRONG_VALUES_ERROR\",\n \"1508\": \"ER_DROP_LAST_PARTITION\",\n \"1614\": \"ER_XA_RBDEADLOCK\",\n \"1475\": \"ER_AMBIGUOUS_FIELD_TERM\",\n \"1873\": \"ER_GEOMETRY_CROSSING_RINGS\",\n \"1766\": \"ER_DB_QUERY_OFFLINE\",\n \"1248\": \"ER_DERIVED_MUST_HAVE_ALIAS\",\n \"1220\": \"ER_ERROR_WHEN_EXECUTING_COMMAND\",\n \"1894\": \"ER_TEMPORARY_TABLE_INSIDE_CTE\",\n \"1257\": \"ER_ZLIB_Z_MEM_ERROR\",\n \"1708\": \"ER_MEMSQL_AGG_NYA\",\n \"2338\": \"ER_AVRO_BAD_DATAFILE_HEADER\",\n \"1558\": \"ER_COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE\",\n \"1705\": \"ER_MEMSQL_FAILED_CODE_GEN\",\n \"1674\": \"ER_BINLOG_UNSAFE_SYSTEM_FUNCTION\",\n \"1929\": \"ER_STATISTICS_JSON_INVALID_OPTIMIZER_VARIABLE\",\n \"1010\": \"ER_DB_DROP_RMDIR\",\n \"1337\": \"ER_SP_VARCOND_AFTER_CURSHNDLR\",\n \"2283\": \"ER_CLUSTER_INTERNAL_AUTHENTICATION\",\n \"1323\": \"ER_SP_BAD_CURSOR_SELECT\",\n \"1135\": \"ER_CANT_CREATE_THREAD\",\n \"1368\": \"ER_VIEW_NONUPD_CHECK\",\n \"1005\": \"ER_CANT_CREATE_TABLE\",\n \"1333\": \"ER_SP_DUP_CURS\",\n \"1103\": \"ER_WRONG_TABLE_NAME\",\n \"1388\": \"ER_NO_FILE_MAPPING\",\n \"1182\": \"ER_ERROR_DURING_FLUSH_LOGS\",\n \"1237\": \"ER_SLAVE_IGNORED_TABLE\",\n \"1519\": \"ER_CONSECUTIVE_REORG_PARTITIONS\",\n \"1116\": \"ER_TOO_MANY_TABLES\",\n \"1620\": \"WARN_PLUGIN_BUSY\",\n \"1979\": \"ER_TVF_PARAMETER_TYPE_CONVERSION_ERROR\",\n \"1450\": \"ER_FORBID_SCHEMA_CHANGE\",\n \"1971\": \"ER_TRANSFORM_BAD_ENTRYPOINT\",\n \"1267\": \"ER_CANT_AGGREGATE_2COLLATIONS\",\n \"1718\": \"ER_MEMSQL_REPL_DB_CREATE_OR_DROP\",\n \"1721\": \"ER_SET_MEMORY_LIMIT\",\n \"1642\": \"ER_SIGNAL_WARN\",\n \"2299\": \"ER_SUBPROC_BACKUP\",\n \"1569\": \"ER_DUP_ENTRY_AUTOINCREMENT_CASE\",\n \"1579\": \"ER_UNSUPORTED_LOG_ENGINE\",\n \"1469\": \"ER_HOSTNAME\",\n \"1085\": \"ER_TEXTFILE_NOT_READABLE\",\n \"1152\": \"ER_ABORTING_CONNECTION\",\n \"1341\": \"ER_FPARSER_BAD_HEADER\",\n \"1330\": \"ER_SP_DUP_PARAM\",\n \"1383\": \"ER_WSAS_FAILED\",\n \"1588\": \"ER_EVENT_CANNOT_CREATE_IN_THE_PAST\",\n \"1013\": \"ER_CANT_GET_STAT\",\n \"1700\": \"ER_GRANT_PLUGIN_USER_EXISTS\",\n \"1578\": \"ER_ONLY_INTEGERS_ALLOWED\",\n \"1290\": \"ER_OPTION_PREVENTS_STATEMENT\",\n \"1875\": \"ER_COMPILE_DEADLOCK\",\n \"1378\": \"ER_LOG_IN_USE\",\n \"1652\": \"ER_SAME_NAME_PARTITION_FIELD\",\n \"2281\": \"ER_NO_PREWRITTEN_TRANSFORM_FOUND\",\n \"1309\": \"ER_SP_LABEL_REDEFINE\",\n \"1467\": \"ER_AUTOINC_READ_FAILED\",\n \"1054\": \"ER_BAD_FIELD_ERROR\",\n \"1359\": \"ER_TRG_ALREADY_EXISTS\",\n \"1722\": \"ER_MEMSQL_INVALID_BUCKET_COUNT\",\n \"1648\": \"ER_COND_ITEM_TOO_LONG\",\n \"1819\": \"ER_FOREIGN_KEY_GENERIC_ERROR\",\n \"1285\": \"ER_WARN_HOSTNAME_WONT_WORK\",\n \"1805\": \"ER_MULTIPLE_SHARD_KEYS\",\n \"1278\": \"ER_MISSING_SKIP_SLAVE\",\n \"2260\": \"ER_PROMOTE_TIMEOUT\",\n \"1644\": \"ER_SIGNAL_EXCEPTION\",\n \"1346\": \"ER_FRM_UNKNOWN_TYPE\",\n \"2291\": \"ER_PIVOT_ERROR\",\n \"1369\": \"ER_VIEW_CHECK_FAILED\",\n \"1911\": \"ER_STATISTICS_JSON_INCONSISTENT\",\n \"1702\": \"ER_PLUGIN_IS_PERMANENT\",\n \"1098\": \"ER_NO_UNIQUE_LOGFILE\",\n \"1056\": \"ER_WRONG_GROUP_FIELD\",\n \"1255\": \"ER_SLAVE_WAS_NOT_RUNNING\",\n \"1832\": \"ER_DISTRIBUTED_RESTORE_FAILED\",\n \"1534\": \"ER_BINLOG_ROW_LOGGING_FAILED\",\n \"1072\": \"ER_KEY_COLUMN_DOES_NOT_EXITS\",\n \"1177\": \"ER_CHECK_NO_SUCH_TABLE\",\n \"1846\": \"ER_TOO_MANY_XACT_TABLES\",\n \"1921\": \"ER_NO_PERMISSIONS_FOR_ROLE_AND_TABLE\",\n \"1311\": \"ER_SP_UNINIT_VAR\",\n \"1439\": \"ER_TOO_BIG_DISPLAYWIDTH\",\n \"1293\": \"ER_TOO_MUCH_AUTO_TIMESTAMP_COLS\",\n \"1390\": \"ER_PS_MANY_PARAM\",\n \"1492\": \"ER_PARTITIONS_MUST_BE_DEFINED_ERROR\",\n \"1146\": \"ER_NO_SUCH_TABLE\",\n \"1324\": \"ER_SP_CURSOR_MISMATCH\",\n \"1635\": \"ER_TEMPORARY_NAME\",\n \"1735\": \"ER_CANNOT_CONNECT_TO_LEAF\",\n \"1560\": \"ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_FORMAT\",\n \"1028\": \"ER_FILSORT_ABORT\",\n \"1252\": \"ER_SPATIAL_CANT_HAVE_NULL\",\n \"1714\": \"ER_MEMSQL_MAX_CON_TOO_HIGH\",\n \"1398\": \"ER_XAER_INVAL\",\n \"1375\": \"ER_BINLOG_PURGE_PROHIBITED\",\n \"1304\": \"ER_SP_ALREADY_EXISTS\",\n \"1400\": \"ER_XAER_OUTSIDE\",\n \"1639\": \"ER_DEBUG_SYNC_TIMEOUT\",\n \"1612\": \"ER_LOG_PURGE_NO_FILE\",\n \"2318\": \"ER_RESULT_TABLE_NOT_EXIST\",\n \"2346\": \"MAX_ERROR_CODE\",\n \"1599\": \"ER_VIEW_NO_CREATION_CTX\",\n \"1666\": \"ER_BINLOG_ROW_INJECTION_AND_STMT_MODE\",\n \"1084\": \"ER_BLOBS_AND_NO_TERMINATED\",\n \"1962\": \"ER_ALTER_PIPELINE_TRANSFORM\",\n \"1431\": \"ER_FOREIGN_DATA_SOURCE_DOESNT_EXIST\",\n \"2304\": \"ER_SYNC_POINT_OUT_OF_SYNC\",\n \"1552\": \"ER_EVENT_DATA_TOO_LONG\",\n \"1792\": \"ER_BACKUP_IO_ERROR\",\n \"1909\": \"ER_STATISTICS_JSON_EXTRA_COLUMN\",\n \"1331\": \"ER_SP_DUP_VAR\",\n \"2310\": \"ER_RPC_INTERRUPTED\",\n \"1493\": \"ER_RANGE_NOT_INCREASING_ERROR\",\n \"1824\": \"ER_MEMSQL_COMPUTED_DEPEND_ON_TIME\",\n \"1649\": \"ER_UNKNOWN_LOCALE\",\n \"1928\": \"ER_CANNOT_GRANT_TO_SELF_IN_STRICT_MODE\",\n \"1970\": \"ER_SUBPROCESS_TIMEOUT_ERROR\",\n \"2207\": \"ER_TRANSACTION_EXISTS_OR_NOT_FOUND\",\n \"1425\": \"ER_TOO_BIG_SCALE\",\n \"1783\": \"ER_DISTRIBUTED_INVALID_REDUNDANCY_LEVEL\",\n \"1786\": \"ER_NON_ALIASED_PROJECT_LIST_ECHO_SELECT_ITEM\",\n \"1711\": \"ER_MEMSQL_INDEX_NOT_SUPPORTED\",\n \"1230\": \"ER_NO_DEFAULT\",\n \"1522\": \"ER_PART_STATE_ERROR\",\n \"2230\": \"ER_ARRAY_OUT_OF_BOUNDS\",\n \"1260\": \"ER_CUT_VALUE_GROUP_CONCAT\",\n \"1636\": \"ER_RENAMED_NAME\",\n \"1433\": \"ER_FOREIGN_DATA_STRING_INVALID\",\n \"1298\": \"ER_UNKNOWN_TIME_ZONE\",\n \"1727\": \"ER_COMMUNITY_EDITION\",\n \"1831\": \"ER_DISTRIBUTED_BACKUP_SYNCHRONIZATION_FAILED\",\n \"1618\": \"WARN_OPTION_IGNORED\",\n \"1662\": \"ER_BINLOG_ROW_MODE_AND_STMT_ENGINE\",\n \"1682\": \"ER_WRONG_NATIVE_TABLE_STRUCTURE\",\n \"1281\": \"ER_WRONG_NAME_FOR_CATALOG\",\n \"1793\": \"ER_CANNOT_CONTINUE_REPLICATING\",\n \"1946\": \"ER_NO_SUCH_METRIC\",\n \"1159\": \"ER_NET_READ_INTERRUPTED\",\n \"1043\": \"ER_HANDSHAKE_ERROR\",\n \"1893\": \"ER_FOREIGN_KEY_ON_TEMPORARY\",\n \"1078\": \"ER_GOT_SIGNAL\",\n \"1733\": \"ER_UNRECOVERABLE\",\n \"2337\": \"ER_AVRO_SCHEMA_MISSING_FIELD\",\n \"2317\": \"ER_WARN_BATCH_CONTAINED_WARNINGS\",\n \"1127\": \"ER_CANT_FIND_DL_ENTRY\",\n \"1198\": \"ER_SLAVE_MUST_STOP\",\n \"1219\": \"ER_QUERY_ON_MASTER\",\n \"1193\": \"ER_UNKNOWN_SYSTEM_VARIABLE\",\n \"1744\": \"ER_MEMSQL_UNIQUE_KEY_SHARD_KEY\",\n \"1026\": \"ER_ERROR_ON_WRITE\",\n \"2288\": \"ER_PARSE_FULLTEXT_QUERY\",\n \"1980\": \"ER_REFERENCE_NEW_OBJECT_IN_BODY\",\n \"1947\": \"ER_NO_SUCH_METRIC_NAMESPACE\",\n \"1496\": \"ER_PARTITION_ENTRY_ERROR\",\n \"2226\": \"ER_INVALID_ESTIMATE_QUERY\",\n \"1776\": \"ER_DISTRIBUTED_INSTANCE_IS_MASTER\",\n \"1194\": \"ER_CRASHED_ON_USAGE\",\n \"1086\": \"ER_FILE_EXISTS_ERROR\",\n \"1089\": \"ER_WRONG_SUB_KEY\",\n \"1868\": \"ER_GEOMETRY_NOT_ENOUGH_EDGES\",\n \"1585\": \"ER_NATIVE_FCT_NAME_COLLISION\",\n \"1510\": \"ER_REORG_HASH_ONLY_ON_SAME_NO\",\n \"2214\": \"ER_ASSIGN_STATEMENT_TO_NON_QUERY_TYPE_VARIABLE\",\n \"1904\": \"ER_STATISTICS_JSON_WRONG_DATABASE\",\n \"1697\": \"ER_VALUES_IS_NOT_INT_TYPE_ERROR\",\n \"1521\": \"ER_PARTITION_FUNCTION_FAILURE\",\n \"1308\": \"ER_SP_LILABEL_MISMATCH\",\n \"2325\": \"ER_INVALID_PAIRED_WITH_CLAUSE\",\n \"1535\": \"ER_BINLOG_ROW_WRONG_TABLE_DEF\",\n \"1613\": \"ER_XA_RBTIMEOUT\",\n \"1945\": \"ER_CANNOT_DROP_REFERENCED_BY_PIPELINE\",\n \"1100\": \"ER_TABLE_NOT_LOCKED\",\n \"2208\": \"ER_DB_QUERY_SLAVE\",\n \"1605\": \"ER_EVENT_INVALID_CREATION_CTX\",\n \"1143\": \"ER_COLUMNACCESS_DENIED_ERROR\",\n \"1943\": \"ER_PIPELINE_EXISTS\",\n \"1131\": \"ER_PASSWORD_ANONYMOUS_USER\",\n \"1018\": \"ER_CANT_READ_DIR\",\n \"1145\": \"ER_GRANT_WRONG_HOST_OR_USER\",\n \"1495\": \"ER_MULTIPLE_DEF_CONST_IN_LIST_PART_ERROR\",\n \"1436\": \"ER_STACK_OVERRUN_NEED_MORE\",\n \"1011\": \"ER_CANT_DELETE_FILE\",\n \"1040\": \"ER_CON_COUNT_ERROR\",\n \"1717\": \"ER_MEMSQL_FEATURE_DISABLED\",\n \"1796\": \"ER_DISTRIBUTED_CONCURRENT_REBALANCE\",\n \"1414\": \"ER_SP_NOT_VAR_ARG\",\n \"1501\": \"ER_CANT_CREATE_HANDLER_FILE\",\n \"1845\": \"ER_SUBSELECT_RESULT_TOO_LARGE\",\n \"1466\": \"ER_REMOVED_SPACES\",\n \"2277\": \"ER_DISTRIBUTED_NOT_IN_CLUSTER\",\n \"1767\": \"ER_DB_QUERY_PROVISIONING\",\n \"1317\": \"ER_QUERY_INTERRUPTED\",\n \"1115\": \"ER_UNKNOWN_CHARACTER_SET\",\n \"1554\": \"ER_WARN_DEPRECATED_SYNTAX_WITH_VER\",\n \"2296\": \"ER_SUBQUERY_UNGROUPED_FIELD\",\n \"1008\": \"ER_DB_DROP_EXISTS\",\n \"1985\": \"ER_NULL_AND_NOT_NULL\",\n \"1704\": \"ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MAX\",\n \"1596\": \"ER_SLAVE_CREATE_EVENT_FAILURE\",\n \"1989\": \"ER_UDF_NULL_RETURNED\",\n \"1442\": \"ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG\",\n \"1134\": \"ER_UPDATE_INFO\",\n \"1021\": \"ER_DISK_FULL\",\n \"1695\": \"ER_STORED_FUNCTION_PREVENTS_SWITCH_SQL_LOG_BIN\",\n \"1998\": \"ER_UNUSED2\",\n \"1738\": \"ER_DISTRIBUTED_LEAF_DOESNT_EXIST\",\n \"1532\": \"ER_SIZE_OVERFLOW_ERROR\",\n \"1741\": \"ER_DISTRIBUTED_QUERY_SHARDED_TABLE_FROM_LEAF\",\n \"1559\": \"ER_TEMP_TABLE_PREVENTS_SWITCH_OUT_OF_RBR\",\n \"1716\": \"ER_MEMSQL_NOT_ALLOWED\",\n \"2256\": \"ER_LEADER_NOT_FOUND\",\n \"1547\": \"ER_COL_COUNT_DOESNT_MATCH_CORRUPTED\",\n \"1890\": \"ER_MEMSQL_ONLINE_ALTER_IMPOSSIBLE_COLUMNSTORE\",\n \"1953\": \"ER_TRANSFORM_NONZERO_EXIT_VALUE\",\n \"1942\": \"ER_RESULT_TABLE_COMPLEX_QUERY\",\n \"1240\": \"ER_KEY_REF_DO_NOT_MATCH_TABLE_REF\",\n \"1250\": \"ER_TABLENAME_NOT_ALLOWED_HERE\",\n \"1355\": \"ER_WARN_VIEW_WITHOUT_KEY\",\n \"1372\": \"ER_PASSWD_LENGTH\",\n \"1446\": \"ER_MALFORMED_DEFINER\",\n \"1606\": \"ER_TRG_CANT_OPEN_TABLE\",\n \"1157\": \"ER_NET_UNCOMPRESS_ERROR\",\n \"1638\": \"WARN_NON_ASCII_SEPARATOR_NOT_IMPLEMENTED\",\n \"1625\": \"ER_NDB_REPLICATION_SCHEMA_ERROR\",\n \"1811\": \"ER_DISTRIBUTED_ATTACH_LEAF_FAILED\",\n \"1538\": \"ER_EVENT_STORE_FAILED\",\n \"1781\": \"ER_DISTRIBUTED_LEAF_HAS_NO_PAIR_REORGANIZE\",\n \"1332\": \"ER_SP_DUP_COND\",\n \"1245\": \"ER_CYCLIC_REFERENCE\",\n \"1657\": \"ER_TOO_MANY_VALUES_ERROR\",\n \"1019\": \"ER_CANT_SET_WD\",\n \"1987\": \"ER_UDF_NULL_ASSIGNED_TO_NOT_NULL_VARIABLE\",\n \"1276\": \"ER_WARN_FIELD_RESOLVED\",\n \"1563\": \"ER_PARTITION_CONST_DOMAIN_ERROR\",\n \"2321\": \"ER_CTE_WRONG_NUMBER_OF_COLUMNS\",\n \"2227\": \"ER_UNUSED_AUTOSTATS\",\n \"1653\": \"ER_PARTITION_COLUMN_LIST_ERROR\",\n \"1408\": \"ER_STARTUP\",\n \"1167\": \"ER_WRONG_KEY_COLUMN\",\n \"1456\": \"ER_SP_RECURSION_LIMIT\",\n \"2305\": \"ER_TOO_MANY_TEMP_TABLES\",\n \"1449\": \"ER_NO_SUCH_USER\",\n \"1655\": \"ER_TOO_MANY_PARTITION_FUNC_FIELDS_ERROR\",\n \"1099\": \"ER_TABLE_NOT_LOCKED_FOR_WRITE\",\n \"1739\": \"ER_DISTRIBUTED_LEAF_CANT_CREATE_DB\",\n \"2334\": \"ER_DIFFERENT_VALUE_FOR_SYNC_VAR\",\n \"1147\": \"ER_NONEXISTING_TABLE_GRANT\",\n \"1055\": \"ER_WRONG_FIELD_WITH_GROUP\",\n \"1213\": \"ER_LOCK_DEADLOCK\",\n \"1514\": \"ER_ADD_PARTITION_NO_NEW_PARTITION\",\n \"1472\": \"ER_ADMIN_WRONG_MRG_TABLE\",\n \"1294\": \"ER_INVALID_ON_UPDATE\",\n \"1258\": \"ER_ZLIB_Z_BUF_ERROR\",\n \"1571\": \"ER_EVENT_SET_VAR_ERROR\",\n \"1299\": \"ER_WARN_INVALID_TIMESTAMP\",\n \"1869\": \"ER_GEOMETRY_NOT_A_RING\",\n \"1961\": \"ER_CREATE_PIPELINE_TRANSFORM\",\n \"1949\": \"ER_PARTITION_METADATA_OUT_OF_SYNC\",\n \"2233\": \"ER_QUERY_TYPE_IN_RECORD_OR_ARRAY\",\n \"1173\": \"ER_REQUIRES_PRIMARY_KEY\",\n \"1671\": \"ER_BINLOG_UNSAFE_AUTOINC_COLUMNS\",\n \"1485\": \"ER_PARTITION_WRONG_NO_SUBPART_ERROR\",\n \"1158\": \"ER_NET_READ_ERROR\",\n \"1749\": \"ER_DISTRIBUTED_FEATURE_LOCKDOWN\",\n \"1170\": \"ER_BLOB_KEY_WITHOUT_LENGTH\",\n \"1002\": \"ER_NO\",\n \"1621\": \"ER_VARIABLE_IS_READONLY\",\n \"1933\": \"ER_EXTRACTOR_EXTRACTOR_GET_LATEST_OFFSETS\",\n \"1226\": \"ER_USER_LIMIT_REACHED\",\n \"1445\": \"ER_SP_CANT_SET_AUTOCOMMIT\",\n \"1459\": \"ER_TABLE_NEEDS_UPGRADE\",\n \"1607\": \"ER_CANT_CREATE_SROUTINE\",\n \"1313\": \"ER_SP_BADRETURN\",\n \"1295\": \"ER_UNSUPPORTED_PS\",\n \"1224\": \"ER_MIXING_NOT_ALLOWED\",\n \"2224\": \"ER_BAD_GEOGRAPHY_TYPECAST\",\n \"1367\": \"ER_ILLEGAL_VALUE_FOR_TYPE\",\n \"1006\": \"ER_CANT_CREATE_DB\",\n \"2290\": \"ER_LEAF_LOST_TEMP_TABLE\",\n \"2269\": \"ER_DB_PENDING\",\n \"1659\": \"ER_FIELD_TYPE_NOT_ALLOWED_AS_PARTITION_FIELD\",\n \"1506\": \"ER_FOREIGN_KEY_ON_PARTITIONED\",\n \"1852\": \"ER_MULTIPLE_PROJECTIONS\",\n \"1403\": \"ER_NONEXISTING_PROC_GRANT\",\n \"1081\": \"ER_IPSOCK_ERROR\",\n \"1840\": \"ER_BAD_VIEW_ERROR\",\n \"1517\": \"ER_SAME_NAME_PARTITION\",\n \"1463\": \"ER_NON_GROUPING_FIELD_USED\",\n \"1518\": \"ER_NO_BINLOG_ERROR\",\n \"1815\": \"ER_INTERNAL_USER_DROP\",\n \"1169\": \"ER_DUP_UNIQUE\",\n \"1546\": \"ER_EVENT_NEITHER_M_EXPR_NOR_M_AT\",\n \"2244\": \"ER_STATISTICS_IMPORT_WITH_AUTOSTATS\",\n \"1234\": \"ER_CANT_USE_OPTION_HERE\",\n \"1934\": \"ER_EXTRACTOR_EXTRACTOR_EXTRACT\",\n \"1035\": \"ER_OLD_KEYFILE\",\n \"1411\": \"ER_WRONG_VALUE_FOR_TYPE\",\n \"1004\": \"ER_CANT_CREATE_FILE\",\n \"1996\": \"ER_CLUSTER_XACT_FAILED_NOT_LEADER\",\n \"1757\": \"ER_DISTRIBUTED_TABLE_NOT_SHARDED\",\n \"2308\": \"ER_OBJECT_NOT_DEFINED\",\n \"1977\": \"ER_TVF_USER_PARAMETER_NOT_SCALAR_VALUE\",\n \"1650\": \"ER_SLAVE_IGNORE_SERVER_IDS\",\n \"1088\": \"ER_ALTER_INFO\",\n \"1032\": \"ER_KEY_NOT_FOUND\",\n \"1565\": \"ER_DDL_LOG_ERROR\",\n \"1322\": \"ER_SP_BAD_CURSOR_QUERY\",\n \"1312\": \"ER_SP_BADSELECT\",\n \"1292\": \"ER_TRUNCATED_WRONG_VALUE\",\n \"2220\": \"ER_LIMIT_BY_NON_INTEGER_OR_NEGATIVE\",\n \"1156\": \"ER_NET_PACKETS_OUT_OF_ORDER\",\n \"1334\": \"ER_SP_CANT_ALTER\",\n \"1096\": \"ER_NO_TABLES_USED\",\n \"1344\": \"ER_FPARSER_EOF_IN_UNKNOWN_PARAMETER\",\n \"1397\": \"ER_XAER_NOTA\",\n \"2237\": \"ER_INTO_OUTFILE_IN_QUERY_TYPE_VARIABLE\",\n \"1629\": \"ER_TOO_LONG_FIELD_COMMENT\",\n \"2259\": \"ER_CONCURRENT_PROMOTE\",\n \"2216\": \"ER_INVALID_RECORD_FIELD\",\n \"1576\": \"ER_EVENT_RECURSION_FORBIDDEN\",\n \"1843\": \"ER_AUTO_INCREMENT_COLUMN_PROMOTED_TO_BIGINT\",\n \"1272\": \"ER_VARIABLE_IS_NOT_STRUCT\",\n \"1269\": \"ER_REVOKE_GRANTS\",\n \"2311\": \"ER_UNSUPPORTED_MULTI_RESULT_SET\",\n \"1885\": \"ER_PLAN_DOES_NOT_EXIST\",\n \"1577\": \"ER_EVENTS_DB_ERROR\",\n \"1432\": \"ER_FOREIGN_DATA_STRING_INVALID_CANT_CREATE\",\n \"1730\": \"ER_DB_NOT_ONLINE\",\n \"1939\": \"ER_PIPELINE_CANNOT_START_OR_STOP\",\n \"1895\": \"ER_MEMSQL_UNIQUE_KEY_IMPLICIT_SHARD_KEY\",\n \"1665\": \"ER_BINLOG_STMT_MODE_AND_ROW_ENGINE\",\n \"1754\": \"ER_DISTRIBUTED_UNKNOWN_AGGREGATOR_COMMAND\",\n \"1497\": \"ER_MIX_HANDLER_ERROR\",\n \"1326\": \"ER_SP_CURSOR_NOT_OPEN\",\n \"2271\": \"ER_QUERY_INTERRUPTED_BY_DDL\",\n \"1878\": \"ER_DDL_TRANS_DEADLOCK\",\n \"1923\": \"ER_USER_NOT_IN_GROUP\",\n \"1256\": \"ER_TOO_BIG_FOR_UNCOMPRESS\",\n \"2335\": \"ER_ALREADY_UPGRADE_VARIABLES\",\n \"1356\": \"ER_VIEW_INVALID\",\n \"1070\": \"ER_TOO_MANY_KEY_PARTS\",\n \"1490\": \"ER_INCONSISTENT_PARTITION_INFO_ERROR\",\n \"1106\": \"ER_UNKNOWN_PROCEDURE\",\n \"1732\": \"ER_INVALID_STATE\",\n \"1045\": \"ER_ACCESS_DENIED_ERROR\",\n \"2284\": \"ER_LEAF_ERROR\",\n \"1794\": \"ER_UNKNOWN_EXPLAIN_FORMAT\",\n \"1689\": \"ER_LOCK_ABORTED\",\n \"2202\": \"ER_UDF_OPERATOR_APPLIED_TO_NON_SCALAR\",\n \"1956\": \"ER_PARAMETER_CAPACITY_EXCEEDED\",\n \"1630\": \"ER_FUNC_INEXISTENT_NAME_COLLISION\",\n \"1656\": \"ER_MAXVALUE_IN_VALUES_IN\",\n \"1883\": \"ER_DISK_LIMIT\",\n \"1064\": \"ER_PARSE_ERROR\",\n \"1349\": \"ER_VIEW_SELECT_DERIVED\",\n \"2293\": \"ER_RG_TIMEOUT\",\n \"1465\": \"ER_NO_TRIGGERS_ON_SYSTEM_SCHEMA\",\n \"1925\": \"ER_ROLE_DOES_NOT_HAVE_PERMISSIONS\",\n \"1707\": \"ER_MEMSQL_FAILED_PARAMETERIZE\",\n \"1201\": \"ER_MASTER_INFO\",\n \"1516\": \"ER_REORG_PARTITION_NOT_EXIST\",\n \"1918\": \"ER_GROUP_DOES_NOT_EXIST\",\n \"1944\": \"ER_PIPELINE_NOT_EXISTS\",\n \"1512\": \"ER_ONLY_ON_RANGE_LIST_PARTITION\",\n \"1124\": \"ER_UDF_NO_PATHS\",\n \"1829\": \"ER_WRONG_KEY_COLUMN_JSON\",\n \"1622\": \"ER_WARN_ENGINE_TRANSACTION_ROLLBACK\",\n \"1133\": \"ER_PASSWORD_NO_MATCH\",\n \"1803\": \"ER_DISTRIBUTED_LEAF_ALREADY_ONLINE\",\n \"1264\": \"ER_WARN_DATA_OUT_OF_RANGE\",\n \"1125\": \"ER_UDF_EXISTS\",\n \"1974\": \"ER_PAM_SERVICE_NOT_SPECIFIED\",\n \"1931\": \"ER_INVALID_GROUP_NAME\",\n \"1950\": \"ER_NON_DEFAULT_PARAM_AFTER_DEFAULT_PARAM\",\n \"1734\": \"ER_DURABILITY_DISABLED\",\n \"1907\": \"ER_STATISTICS_JSON_EXTRA_FIELDS\",\n \"1362\": \"ER_TRG_CANT_CHANGE_ROW\",\n \"2302\": \"ER_BACKUP_RECORD_FAILED\",\n \"1339\": \"ER_SP_CASE_NOT_FOUND\",\n \"1185\": \"ER_DUMP_NOT_IMPLEMENTED\",\n \"2314\": \"ER_CANT_TURN_ON_SYNC_PERMISSIONS\",\n \"2292\": \"ER_DB_BLOB_DISK_ERROR\",\n \"2332\": \"ER_INVALID_CNF\",\n \"1594\": \"ER_SLAVE_RELAY_LOG_READ_FAILURE\",\n \"1386\": \"ER_ORDER_WITH_PROC\",\n \"1993\": \"ER_INVALID_ARRAY_LITERAL\",\n \"1999\": \"ER_DISTRIBUTED_AGGREGATOR_DOESNT_EXIST\",\n \"1564\": \"ER_PARTITION_FUNCTION_IS_NOT_ALLOWED\",\n \"1835\": \"ER_DISTRIBUTED_REFERENCE_DB_MUST_BE_ONLINE_ON_MASTER_AGG\",\n \"1675\": \"ER_BINLOG_UNSAFE_NONTRANS_AFTER_TRANS\",\n \"2240\": \"ER_UNSUPPORTED_DDL_IN_SP\",\n \"1922\": \"ER_ROLE_NOT_ASSIGNED_TO_GROUP\",\n \"1550\": \"ER_EVENT_COMPILE_ERROR\",\n \"1058\": \"ER_WRONG_VALUE_COUNT\",\n \"1179\": \"ER_CANT_DO_THIS_DURING_AN_TRANSACTION\",\n \"1821\": \"ER_MEMSQL_COMPUTED_DEPENDENCY_LOOP\",\n \"1800\": \"ER_DISTRIBUTED_MULTIPLE_FOREIGN_KEYS\",\n \"1902\": \"ER_IGNORED_STALE_PLAN\",\n \"1589\": \"ER_EVENT_CANNOT_ALTER_IN_THE_PAST\",\n \"1555\": \"ER_CANT_WRITE_LOCK_LOG_TABLE\",\n \"2210\": \"ER_FUNCTION_USED_BY_AGGREGATE\",\n \"1327\": \"ER_SP_UNDECLARED_VAR\",\n \"1900\": \"ER_COLUMNSTORE_RESTORE_FAILED\",\n \"1027\": \"ER_FILE_USED\",\n \"1491\": \"ER_PARTITION_FUNC_NOT_ALLOWED_ERROR\",\n \"2322\": \"ER_SHADOWING_PL_VARIABLE\",\n \"1453\": \"ER_SP_BAD_VAR_SHADOW\",\n \"1092\": \"ER_INSERT_INFO\",\n \"1598\": \"ER_BINLOG_LOGGING_IMPOSSIBLE\",\n \"1405\": \"ER_PROC_AUTO_REVOKE_FAIL\",\n \"2272\": \"ER_DB_SNAPSHOT_IO_ERROR\",\n \"1752\": \"ER_DISTRIBUTED_NOT_MASTER\",\n \"1503\": \"ER_UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF\",\n \"1756\": \"ER_DISTRIBUTED_BIGINT_AUTO_INCREMENT\",\n \"1457\": \"ER_SP_PROC_TABLE_CORRUPT\",\n \"1694\": \"ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_SQL_LOG_BIN\",\n \"1747\": \"ER_DISTRIBUTED_TOO_MANY_LEADERS\",\n \"2280\": \"ER_INVALID_PREWRITTEN_TRANSFORM_PATH\",\n \"1600\": \"ER_VIEW_INVALID_CREATION_CTX\",\n \"1318\": \"ER_SP_WRONG_NO_OF_ARGS\",\n \"1231\": \"ER_WRONG_VALUE_FOR_VAR\",\n \"1528\": \"ER_CREATE_FILEGROUP_FAILED\",\n \"1969\": \"ER_TRANSFORM_UNTAR_ERROR\",\n \"1275\": \"ER_SERVER_IS_IN_SECURE_AUTH_MODE\",\n \"1066\": \"ER_NONUNIQ_TABLE\",\n \"1428\": \"ER_WRONG_LOCK_OF_SYSTEM_TABLE\",\n \"1189\": \"ER_MASTER_NET_READ\",\n \"1643\": \"ER_SIGNAL_NOT_FOUND\",\n \"1802\": \"ER_DISTRIBUTED_LEAF_IS_OFFLINE\",\n \"1364\": \"ER_NO_DEFAULT_FOR_FIELD\",\n \"1751\": \"ER_DISTRIBUTED_AMBIGUOUS_PARTITION_KEY\",\n \"2255\": \"ER_PERCENTILE_INVALID\",\n \"1816\": \"ER_FAILED_FOREIGN_KEY_CONSTRAINT\",\n \"1377\": \"ER_BINLOG_PURGE_FATAL_ERR\",\n \"1810\": \"ER_UNUSED\",\n \"1227\": \"ER_SPECIFIC_ACCESS_DENIED_ERROR\",\n \"1859\": \"ER_BAD_INTERSECTS_ARG\",\n \"1232\": \"ER_WRONG_TYPE_FOR_VAR\",\n \"1050\": \"ER_TABLE_EXISTS_ERROR\",\n \"1855\": \"ER_UNIQUE_PROJECTIONS\",\n \"1661\": \"ER_BINLOG_ROW_ENGINE_AND_STMT_ENGINE\",\n \"2341\": \"ER_FOR_UPDATE_SUBQUERY\",\n \"1080\": \"ER_FORCING_CLOSE\",\n \"1941\": \"ER_RESULT_TABLE_BINARY_PROTOCOL\",\n \"1967\": \"ER_INTERNAL_KILL\",\n \"1461\": \"ER_MAX_PREPARED_STMT_COUNT_REACHED\",\n \"1897\": \"ER_AUTH_PLUGIN_FAILURE\",\n \"1025\": \"ER_ERROR_ON_RENAME\",\n \"1966\": \"ER_TRANSFORM_DOWNLOAD_ERROR\",\n \"2342\": \"ER_FOR_UPDATE_REFTABLE\",\n \"1887\": \"ER_GC_ON_INFO_SCHEMA\",\n \"1342\": \"ER_FPARSER_EOF_IN_COMMENT\",\n \"1144\": \"ER_ILLEGAL_GRANT_FOR_TABLE\",\n \"1915\": \"ER_INFO_NOT_AN_ERROR\",\n \"1075\": \"ER_WRONG_AUTO_KEY\",\n \"1407\": \"ER_SP_BAD_SQLSTATE\",\n \"1039\": \"ER_UNEXPECTED_EOF\",\n \"2222\": \"ER_BAD_NULL_TYPECAST\",\n \"1719\": \"ER_MEMSQL_WRITE_QUERY_DURING_ALTER_TABLE\",\n \"2262\": \"ER_TOO_MANY_DATABASES\",\n \"2246\": \"ER_BAD_REPL_STATEMENT\",\n \"1825\": \"ER_MEMSQL_COMPUTED_IS_TIMESTAMP\",\n \"1817\": \"ER_FOREIGN_KEY_INDEX\",\n \"1175\": \"ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE\",\n \"1858\": \"ER_TOO_MANY_SORTED_RUNS\",\n \"1687\": \"ER_SPATIAL_MUST_HAVE_GEOM_COL\",\n \"1437\": \"ER_TOO_LONG_BODY\",\n \"1171\": \"ER_PRIMARY_CANT_HAVE_NULL\",\n \"2336\": \"ER_MUST_UPGRADE_VARIABLES\",\n \"1059\": \"ER_TOO_LONG_IDENT\",\n \"1399\": \"ER_XAER_RMFAIL\",\n \"1093\": \"ER_UPDATE_TABLE_USED\",\n \"2323\": \"ER_NOT_SYNC_VAR\",\n \"1441\": \"ER_DATETIME_FUNCTION_OVERFLOW\",\n \"1016\": \"ER_CANT_OPEN_FILE\",\n \"1879\": \"ER_INTERNAL_INVALID_OPTREE\",\n \"1422\": \"ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG\",\n \"1990\": \"ER_ARRAY_TOO_MANY_SUBSCRIPTS\",\n \"1972\": \"ER_SAML_LOGIN_ERROR\",\n \"1335\": \"ER_SP_SUBSELECT_NYI\",\n \"1161\": \"ER_NET_WRITE_INTERRUPTED\",\n \"1828\": \"ER_MEMSQL_SIGNAL_LEAF_TIMEOUT\",\n \"1077\": \"ER_NORMAL_SHUTDOWN\",\n \"1777\": \"ER_DISTRIBUTED_PARTITION_HAS_NO_INSTANCES\",\n \"1017\": \"ER_FILE_NOT_FOUND\",\n \"1641\": \"ER_DUP_SIGNAL_SET\",\n \"1165\": \"ER_DELAYED_INSERT_TABLE_LOCKED\",\n \"2327\": \"ER_INVALID_HLL_BINARY\",\n \"1242\": \"ER_SUBQUERY_NO_1_ROW\",\n \"1473\": \"ER_TOO_HIGH_LEVEL_OF_NESTING_FOR_SELECT\",\n \"1542\": \"ER_EVENT_INTERVAL_NOT_POSITIVE_OR_TOO_BIG\",\n \"1847\": \"ER_WARN_COMMITTED\",\n \"1787\": \"ER_DISTRIBUTED_CONCURRENT_NODE_REMOVAL\",\n \"1764\": \"ER_PARTITION_NOT_ALLOWED\",\n \"1108\": \"ER_WRONG_PARAMETERS_TO_PROCEDURE\",\n \"1003\": \"ER_YES\",\n \"1454\": \"ER_TRG_NO_DEFINER\",\n \"1031\": \"ER_ILLEGAL_HA\",\n \"1381\": \"ER_NO_BINARY_LOGGING\",\n \"1691\": \"ER_WRONG_SPVAR_TYPE_IN_LIMIT\",\n \"1973\": \"ER_SAML_DECRYPTION_ERROR\",\n \"2267\": \"ER_OFFLINE_PROMOTE\",\n \"1867\": \"ER_GEOMETRY_NON_INT_COORD\",\n \"1458\": \"ER_SP_WRONG_NAME\",\n \"1728\": \"ER_MEMSQL_SYNC_ERROR\",\n \"1553\": \"ER_DROP_INDEX_FK\",\n \"1863\": \"ER_GEOMETRY_HUGE_POLYGON\",\n \"1160\": \"ER_NET_ERROR_ON_WRITE\",\n \"1172\": \"ER_TOO_MANY_ROWS\",\n \"1498\": \"ER_PARTITION_NOT_DEFINED_ERROR\",\n \"1696\": \"ER_FAILED_READ_FROM_PAR_FILE\",\n \"1703\": \"ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MIN\",\n \"1822\": \"ER_MEMSQL_COMPUTED_INSERT\",\n \"1782\": \"ER_DISTRIBUTED_GROUPS_UNBALANCED\",\n \"1238\": \"ER_INCORRECT_GLOBAL_LOCAL_VAR\",\n \"1826\": \"ER_QTV_WRONG_NUMBER_OF_COLUMNS\",\n \"1029\": \"ER_FORM_NOT_FOUND\",\n \"1363\": \"ER_TRG_NO_SUCH_ROW_IN_TRG\",\n \"1920\": \"ER_ROLE_ALREADY_ASSIGNED_TO_GROUP\",\n \"1244\": \"ER_CORRUPT_HELP_DB\",\n \"1204\": \"ER_SET_CONSTANTS_ONLY\",\n \"1389\": \"ER_WRONG_MAGIC\",\n \"1203\": \"ER_TOO_MANY_USER_CONNECTIONS\",\n \"1862\": \"ER_GEOMETRY_BAD_SYNTAX\",\n \"1593\": \"ER_SLAVE_FATAL_ERROR\",\n \"2248\": \"ER_DATABASE_ALREADY_PAUSED\",\n \"1780\": \"ER_DISTRIBUTED_LEAF_LOST_PAIR\",\n \"1265\": \"WARN_DATA_TRUNCATED\",\n \"1148\": \"ER_LOCAL_INFILE_NOT_ALLOWED\",\n \"2241\": \"ER_FUNCCALL_EXPECTED\",\n \"2218\": \"ER_AGGREGATE_NOT_DEFINED\",\n \"1975\": \"ER_AUTH_PARAMS_IN_SAML_USER_SPEC\",\n \"1763\": \"ER_REPL_ONLINE_DB\",\n \"1406\": \"ER_DATA_TOO_LONG\",\n \"1208\": \"ER_DROP_DB_WITH_READ_LOCK\",\n \"1701\": \"ER_TRUNCATE_ILLEGAL_FK\",\n \"1150\": \"ER_DELAYED_CANT_CHANGE_LOCK\",\n \"1236\": \"ER_MASTER_FATAL_ERROR_READING_BINLOG\",\n \"2279\": \"ER_STUCK_CLUSTER_REPROVISIONING\",\n \"1978\": \"ER_MEMSQL_UNUSED\",\n \"1360\": \"ER_TRG_DOES_NOT_EXIST\",\n \"1669\": \"ER_BINLOG_UNSAFE_INSERT_DELAYED\",\n \"1688\": \"ER_TOO_LONG_INDEX_COMMENT\",\n \"2345\": \"ER_SAVE_MODEL\",\n \"1000\": \"ER_HASHCHK\",\n \"1537\": \"ER_EVENT_ALREADY_EXISTS\",\n \"1409\": \"ER_LOAD_FROM_FIXED_SIZE_ROWS_TO_VAR\",\n \"1418\": \"ER_BINLOG_UNSAFE_ROUTINE\",\n \"1994\": \"ER_NON_SCALAR_IN_SCALAR_EXPR\",\n \"1771\": \"ER_DISTRIBUTED_LEAF_STATUS_UNRECOGNIZED_FIELD\",\n \"1664\": \"ER_BINLOG_ROW_INJECTION_AND_STMT_ENGINE\",\n \"1556\": \"ER_CANT_LOCK_LOG_TABLE\",\n \"1123\": \"ER_CANT_INITIALIZE_UDF\",\n \"2209\": \"ER_AGGREGATE_EXISTS\",\n \"1315\": \"ER_UPDATE_LOG_DEPRECATED_IGNORED\",\n \"1319\": \"ER_SP_COND_MISMATCH\",\n \"1321\": \"ER_SP_NORETURNEND\",\n \"1683\": \"ER_WRONG_PERFSCHEMA_USAGE\",\n \"1715\": \"ER_MEMSQL_SYNTAX_CHECK_OK\",\n \"2223\": \"ER_BAD_JSON_TYPECAST\",\n \"1235\": \"ER_NOT_SUPPORTED_YET\",\n \"1623\": \"ER_SLAVE_HEARTBEAT_FAILURE\",\n \"1761\": \"ER_DISTRIBUTED_MASTER_IS_ALIVE\",\n \"1181\": \"ER_ERROR_DURING_ROLLBACK\",\n \"1262\": \"ER_WARN_TOO_MANY_RECORDS\",\n \"1391\": \"ER_KEY_PART_0\",\n \"1545\": \"ER_EVENT_OPEN_TABLE_FAILED\",\n \"2265\": \"ER_NO_AVX2\",\n \"1191\": \"ER_FT_MATCHING_KEY_NOT_FOUND\",\n \"1567\": \"ER_WRONG_PARTITION_NAME\",\n \"1128\": \"ER_FUNCTION_NOT_DEFINED\",\n \"1583\": \"ER_WRONG_PARAMETERS_TO_NATIVE_FCT\",\n \"1526\": \"ER_NO_PARTITION_FOR_GIVEN_VALUE\",\n \"1447\": \"ER_VIEW_FRM_NO_USER\",\n \"1772\": \"ER_DISTRIBUTED_PARTITION_MOVE_FAILED\",\n \"1527\": \"ER_FILEGROUP_OPTION_ONLY_ONCE\",\n \"1880\": \"ER_RESULT_TABLE_QUOTA_FULL\",\n \"1477\": \"ER_FOREIGN_SERVER_DOESNT_EXIST\",\n \"1849\": \"ER_GRANT_DELETED\",\n \"1848\": \"ER_AGGREGATOR_PROMOTE_DR_OVERRIDE_DB\",\n \"1955\": \"ER_RESULT_TABLE_WAIT_TIMEOUT\",\n \"2313\": \"ER_CANT_TURN_OFF_SYNC_PERMISSIONS\",\n \"1818\": \"ER_FOREIGN_KEY_TYPE_MISMATCH\",\n \"1423\": \"ER_NO_DEFAULT_FOR_VIEW_FIELD\",\n \"1724\": \"ER_SET_MAX_MEMORY_LIMIT\",\n \"1580\": \"ER_BAD_LOG_STATEMENT\",\n \"1082\": \"ER_NO_SUCH_INDEX\",\n \"1067\": \"ER_INVALID_DEFAULT\",\n \"1090\": \"ER_CANT_REMOVE_ALL_FIELDS\",\n \"1076\": \"ER_READY\",\n \"1668\": \"ER_BINLOG_UNSAFE_LIMIT\",\n \"1279\": \"ER_UNTIL_COND_IGNORED\",\n \"1151\": \"ER_TOO_MANY_DELAYED_THREADS\",\n \"1022\": \"ER_DUP_KEY\",\n \"1886\": \"ER_EXTENSIBILITY_MULTIPLE_ASSIGNS_IN_STATEMENT\",\n \"2309\": \"ER_NON_CLUSTER_CLUSTER_DB\",\n \"1957\": \"ER_OUT_OF_THREADS\",\n \"1395\": \"ER_VIEW_DELETE_MERGE_VIEW\",\n \"1352\": \"ER_VIEW_SELECT_TMPTABLE\",\n \"1325\": \"ER_SP_CURSOR_ALREADY_OPEN\",\n \"1836\": \"ER_DISTRIBUTED_CONCURRENT_LEAF_FAILURE\",\n \"1927\": \"ER_NO_STAR_DOT_STAR_GRANT_IN_STRICT_MODE\",\n \"1536\": \"ER_BINLOG_ROW_RBR_TO_SBR\",\n \"1723\": \"ER_MEMSQL_BUCKET_COUNT_WITHOUT_HASH\",\n \"1394\": \"ER_VIEW_NO_INSERT_FIELD_LIST\",\n \"1007\": \"ER_DB_CREATE_EXISTS\",\n \"2306\": \"ER_LIMIT_BY_NULL\",\n \"1452\": \"ER_NO_REFERENCED_ROW_2\",\n \"1906\": \"ER_STATISTICS_JSON_UNSUPPORTED_VERSION\",\n \"2235\": \"ER_NOT_QUERY_TYPE_ARGUMENT\",\n \"1677\": \"ER_SLAVE_CONVERSION_FAILED\",\n \"1079\": \"ER_SHUTDOWN_COMPLETE\",\n \"1963\": \"ER_LEAF_PIPELINE_SYNC\",\n \"1009\": \"ER_DB_DROP_DELETE\",\n \"1823\": \"ER_MEMSQL_COMPUTED_UPDATE\",\n \"1750\": \"ER_DISTRIBUTED_PARTITIONS_POWER_OF_TWO\",\n \"1109\": \"ER_UNKNOWN_TABLE\",\n \"1289\": \"ER_FEATURE_DISABLED\",\n \"1482\": \"ER_PARTITION_SUBPARTITION_ERROR\",\n \"1529\": \"ER_DROP_FILEGROUP_FAILED\",\n \"1984\": \"ER_DUPLICATE_PARAMETER_MODIFIER\",\n \"1233\": \"ER_VAR_CANT_BE_READ\",\n \"1597\": \"ER_SLAVE_MASTER_COM_FAILURE\",\n \"1820\": \"ER_MEMSQL_COMPUTED_EXPR_DEPENDS_ON_UNKNOWN_COLUMN\",\n \"1881\": \"ER_INVALID_HINT\",\n \"1239\": \"ER_WRONG_FK_DEF\",\n \"2316\": \"ER_DB_BLOB_TOO_BIG\",\n \"1899\": \"ER_CANNOT_COPY_FILE\",\n \"1012\": \"ER_CANT_FIND_SYSTEM_REC\",\n \"1874\": \"ER_INVALID_SPATIAL_DEFAULT\",\n \"1686\": \"ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_DIRECT\",\n \"1809\": \"ER_UNUSED_CAPACITY_CODE\",\n \"1581\": \"ER_CANT_RENAME_LOG_TABLE\",\n \"1658\": \"ER_ROW_SINGLE_PARTITION_FIELD_ERROR\",\n \"1361\": \"ER_TRG_ON_VIEW_OR_TEMP_TABLE\",\n \"1393\": \"ER_VIEW_MULTIUPDATE\",\n \"1062\": \"ER_DUP_ENTRY\",\n \"2301\": \"ER_ANALYZE_UNSUPPORTED_COLUMNTYPE\",\n \"2278\": \"ER_BOOTSTRAP_FAILED_UPGRADE\",\n \"1164\": \"ER_TABLE_CANT_HANDLE_AUTO_INCREMENT\",\n \"1471\": \"ER_NON_INSERTABLE_TABLE\",\n \"1136\": \"ER_WRONG_VALUE_COUNT_ON_ROW\",\n \"1726\": \"ER_CREATE_TABLE_MEMSQL\",\n \"1742\": \"ER_DISTRIBUTED_REPLICATE_REFERENCE_DATABASE_FAILED\",\n \"1892\": \"ER_NESTED_CTE_LIMIT\",\n \"1670\": \"ER_BINLOG_UNSAFE_SYSTEM_TABLE\",\n \"1183\": \"ER_ERROR_DURING_CHECKPOINT\",\n \"1113\": \"ER_TABLE_MUST_HAVE_COLUMNS\",\n \"1678\": \"ER_SLAVE_CANT_CREATE_CONVERSION\",\n \"1216\": \"ER_NO_REFERENCED_ROW\",\n \"1530\": \"ER_TABLESPACE_AUTO_EXTEND_ERROR\",\n \"1273\": \"ER_UNKNOWN_COLLATION\",\n \"1507\": \"ER_DROP_PARTITION_NON_EXISTENT\",\n \"1413\": \"ER_SP_DUP_HANDLER\",\n \"1709\": \"ER_MEMSQL_TOO_MANY_AGGREGATORS\",\n \"2211\": \"ER_TYPE_MISMATCH_CANNOT_PRINT_RHS_TYPE\",\n \"1101\": \"ER_BLOB_CANT_HAVE_DEFAULT\",\n \"1111\": \"ER_INVALID_GROUP_FUNC_USE\",\n \"1837\": \"ER_EXPIRED_LICENSE_UNUSED\",\n \"1049\": \"ER_BAD_DB_ERROR\",\n \"1053\": \"ER_SERVER_SHUTDOWN\",\n \"1951\": \"ER_PARAMETERS_PASSED_TO_NON_TVF\",\n \"1731\": \"ER_DB_NOT_RECOVERED\",\n \"1871\": \"ER_BAD_GET_LATLONG_ARG\",\n \"1964\": \"ER_AGGREGATOR_PIPELINE_SYNC\",\n \"1263\": \"ER_WARN_NULL_TO_NOTNULL\",\n \"1740\": \"ER_DISTRIBUTED_LEAF_INVALID_RANGE\",\n \"1046\": \"ER_NO_DB_ERROR\",\n \"1287\": \"ER_WARN_DEPRECATED_SYNTAX\",\n \"1117\": \"ER_TOO_MANY_FIELDS\",\n \"1168\": \"ER_WRONG_MRG_TABLE\",\n \"1913\": \"ER_ANALYZE_TABLE_INTERRUPTED\",\n \"2257\": \"ER_UNKOWN_VARIABLE_IN_LOAD_DATA\",\n \"1774\": \"ER_DISTRIBUTED_INSTANCE_ON_NODE_ALREADY_PRESENT\",\n \"1097\": \"ER_TOO_BIG_SET\",\n \"1919\": \"ER_ROLE_DOES_NOT_EXIST\",\n \"1030\": \"ER_GET_ERRNO\",\n \"1509\": \"ER_COALESCE_ONLY_ON_HASH_PARTITION\",\n \"1280\": \"ER_WRONG_NAME_FOR_INDEX\",\n \"1842\": \"ER_INVALID_DB_NAME\",\n \"2286\": \"ER_OPERATION_TIMEOUT\",\n \"1083\": \"ER_WRONG_FIELD_TERMINATORS\",\n \"1051\": \"ER_BAD_TABLE_ERROR\",\n \"2329\": \"ER_WARN_INVALID_JSON\",\n \"1091\": \"ER_CANT_DROP_FIELD_OR_KEY\",\n \"1246\": \"ER_AUTO_CONVERT\",\n \"1935\": \"ER_EXTRACTOR_EXISTS\",\n \"1592\": \"ER_BINLOG_UNSAFE_STATEMENT\",\n \"2326\": \"ER_ASYNC_ERROR_IO\",\n \"1074\": \"ER_TOO_BIG_FIELDLENGTH\",\n \"1107\": \"ER_WRONG_PARAMCOUNT_TO_PROCEDURE\",\n \"1438\": \"ER_WARN_CANT_DROP_DEFAULT_KEYCACHE\",\n \"1851\": \"ER_COLUMNAR_TABLE_HAS_INDEX\",\n \"1296\": \"ER_GET_ERRMSG\",\n \"1795\": \"ER_DISTRIBUTED_DATABASE_NOT_SHARDED\",\n \"2363\": \"ER_BAD_DATE_TIME_TYPECAST\",\n \"2388\": \"ER_FAILED_TO_READ_PROC\",\n \"2402\": \"ER_TIME_BUCKET_INVALID_TIME_UNIT\",\n \"2422\": \"ER_DB_BLOB_EOF\",\n};\n","let inherits = require(\"inherits\");\nlet EventEmitter = require(\"events\").EventEmitter;\nlet Packets = require(\"../packets\");\n\nlet NonLoggableError = require(\"../../../../util/logging\").NonLoggableError;\n\nimport ERROR_CONSTANTS from \"../../../../memsql/errorcodes\";\n\n// istanbul ignore next: Node.js < 0.10 not covered\nlet listenerCount =\n EventEmitter.listenerCount ||\n function (emitter, type) {\n return emitter.listeners(type).length;\n };\n\nlet LONG_STACK_DELIMITER = \"\\n --------------------\\n\";\n\ninherits(Sequence, EventEmitter);\nexport default function Sequence(options, callback) {\n if (typeof options === \"function\") {\n callback = options;\n options = {};\n }\n\n EventEmitter.call(this);\n\n options = options || {};\n\n this._callback = callback;\n this._callSite = null;\n this._ended = false;\n this._timeout = options.timeout;\n\n // For Timers\n this._idleNext = null;\n this._idlePrev = null;\n this._idleStart = null;\n this._idleTimeout = -1;\n this._repeat = null;\n}\n\nSequence.prototype._id = \"Sequence\";\n\nSequence.determinePacket = function (byte) {\n switch (byte) {\n case 0x00:\n return Packets.OkPacket;\n\n case 0xfe:\n return Packets.EofPacket;\n\n case 0xff:\n return Packets.ErrorPacket;\n\n default:\n return undefined;\n }\n};\n\nSequence.prototype.hasErrorHandler = function () {\n return Boolean(this._callback) || listenerCount(this, \"error\") > 1;\n};\n\nSequence.prototype._packetToError = function (packet) {\n let code = ERROR_CONSTANTS[packet.errno.toString()] || \"UNKNOWN_ERR_CODE\";\n let err = new NonLoggableError(code + \": \" + packet.message);\n err.code = code;\n err.errno = packet.errno;\n err.sqlState = packet.sqlState;\n\n return err;\n};\n\nSequence.prototype.end = function (err) {\n if (this._ended) {\n return;\n }\n\n this._ended = true;\n\n if (err) {\n this._addLongStackTrace(err);\n }\n\n // Without this we are leaking memory. This problem was introduced in\n // 8189925374e7ce3819bbe88b64c7b15abac96b16. I suspect that the error object\n // causes a cyclic reference that the GC does not detect properly, but I was\n // unable to produce a standalone version of this leak. This would be a great\n // challenge for somebody interested in difficult problems : )!\n this._callSite = null;\n\n // try...finally for exception safety\n try {\n if (err) {\n this.emit(\"error\", err);\n }\n } finally {\n try {\n if (this._callback) {\n this._callback.apply(this, arguments);\n }\n } finally {\n this.emit(\"end\");\n }\n }\n};\n\nSequence.prototype[\"OkPacket\"] = function (packet) {\n this.end(null, packet);\n};\n\nSequence.prototype[\"ErrorPacket\"] = function (packet) {\n this.end(this._packetToError(packet));\n};\n\n// Implemented by child classes\nSequence.prototype.start = function () {};\n\nSequence.prototype._addLongStackTrace = function _addLongStackTrace(err) {\n let callSiteStack = this._callSite && this._callSite.stack;\n\n if (!callSiteStack || typeof callSiteStack !== \"string\") {\n // No recorded call site\n return;\n }\n\n if (err.stack.indexOf(LONG_STACK_DELIMITER) !== -1) {\n // Error stack already looks long\n return;\n }\n\n let index = callSiteStack.indexOf(\"\\n\");\n\n if (index !== -1) {\n // Append recorded call site\n err.stack += LONG_STACK_DELIMITER + callSiteStack.substr(index + 1);\n }\n};\n\nSequence.prototype._onTimeout = function _onTimeout() {\n this.emit(\"timeout\");\n};\n","export const buildClusterStatisticsAction = (data) => {\n return {\n type: \"CLUSTER_STATISTICS\",\n error: false,\n payload: {\n loading: false,\n data,\n },\n };\n};\nexport const buildMemsqlPartitionsAction = (data) => {\n return {\n type: \"MEMSQL_PARTITIONS\",\n error: false,\n payload: {\n loading: false,\n data,\n },\n };\n};\nexport const sortPartitions = (payload) => ({\n type: \"SORT_PARTITIONS\",\n error: false,\n payload,\n});\nexport const sortPartitionInstances = (payload) => ({\n type: \"SORT_PARTITION_INSTANCES\",\n error: false,\n payload,\n});\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isFunction(x) {\n return typeof x === 'function';\n}\n//# sourceMappingURL=isFunction.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var isArray = /*@__PURE__*/ (function () { return Array.isArray || (function (x) { return x && typeof x.length === 'number'; }); })();\n//# sourceMappingURL=isArray.js.map\n","// `buildRankDictionary` takes in an ordered array of strings and returns an\n// object that maps each string into its index in the array.\nexport function buildRankDictionary(arr) {\n const dict = {};\n for (let i = 0; i < arr.length; i++) {\n dict[arr[i]] = i;\n }\n return dict;\n}\n","import NumberFormatter from \"@single-js/common/util/number-formatter\";\nimport _ from \"lodash\";\nconst CELL_WIDTH = 30;\nconst ASTERISK_HALF_LINE = _.repeat(\"*\", 27);\nconst separator = (numFields) => `+${\"-\".repeat(CELL_WIDTH * numFields + (numFields - 1))}+`;\nconst formatCell = (contents) => _.truncate(_.padEnd(\" \" + contents + \" \", CELL_WIDTH), {\n length: CELL_WIDTH,\n});\nconst formatFields = (fields) => [\n separator(fields.length),\n \"|\" + _.map(fields, (f) => formatCell(f.name)).join(\"|\") + \"|\",\n separator(fields.length),\n].join(\"\\n\");\nconst formatRow = (row, queryInfo, rowIndex) => {\n if (queryInfo.vertical) {\n const fieldPad = queryInfo.longestFieldLength;\n if (fieldPad === undefined) {\n throw new Error(\"Expected queryInfo.longestFieldLength to be defined\");\n }\n return (`${ASTERISK_HALF_LINE} ${rowIndex + 1}. row ${ASTERISK_HALF_LINE}\\n` +\n _.map(queryInfo.fields, (field, idx) => {\n return `${field.name.padStart(fieldPad)}: ${row[idx]}`;\n }).join(\"\\n\"));\n }\n else {\n return \"|\" + _.map(row, (c) => formatCell(c)).join(\"|\") + \"|\";\n }\n};\nconst formatError = (res) => res.message;\nexport const truncateBuffer = (buf, maxLength) => {\n if (buf.length > maxLength) {\n // trim the buffer to maxLength by slicing a string of maxLength length\n // from the end\n buf = buf.slice(buf.length - maxLength);\n // find the first newline\n const idx = buf.indexOf(\"\\n\");\n // trim up to the first newline\n buf = buf.slice(idx);\n }\n return buf;\n};\nexport const bufferWithQuery = (buf, query) => buf + `\\n> ${query}`;\nexport const bufferWithFields = (buf, queryInfo) => {\n if (!queryInfo.fields) {\n throw new Error(\"Expected queryInfo.fields to be defined\");\n }\n if (queryInfo.vertical) {\n return buf;\n }\n return buf + \"\\n\" + formatFields(queryInfo.fields);\n};\nexport const bufferWithRow = (buf, row, queryInfo, rowIndex) => buf + \"\\n\" + formatRow(row, queryInfo, rowIndex);\n// When printing an error or the success metrics, we should check to see if\n// there was an unfinished query output in progress and print its output. This\n// can only happen in stored procedures.\nexport function cleanUpLastQuery(buf, queryInfo) {\n // As long as rows have been printed, we have to print a separator. A row's\n // query end might be of type \"exec\" and rows may still have been printed\n // (this happens when calling stored procedures).\n if (queryInfo.rowsPrinted > 0 && queryInfo.fields) {\n if (queryInfo.vertical) {\n buf += \"\\n\";\n }\n else {\n buf += \"\\n\" + separator(queryInfo.fields.length) + \"\\n\";\n }\n }\n else if (queryInfo.fields && queryInfo.rowsPrinted === 0) {\n buf += \"\\nEmpty set\\n\";\n }\n return buf;\n}\nexport const bufferWithError = (buf, err, queryInfo) => {\n buf = cleanUpLastQuery(buf, queryInfo);\n return buf + \"\\n\" + formatError(err);\n};\nexport const bufferWithSuccessMetrics = (buf, queryInfo, metrics) => {\n if (!metrics.endTimeUnix) {\n throw new Error(\"Expected end time to be set\");\n }\n const duration = NumberFormatter.formatDuration(metrics.endTimeUnix - metrics.startTimeUnix);\n buf = cleanUpLastQuery(buf, queryInfo);\n // We check for one of the metrics' exec fields (\"affectedRows\") to\n // distinguish an exec query from a rows query.\n if (!(\"affectedRows\" in metrics) && queryInfo.fields) {\n const count = metrics.emittedRows;\n if (count > 0) {\n const rows = count === 1 ? \"row\" : \"rows\";\n buf += \"\\n\" + `${count} ${rows} in set (${duration})`;\n }\n else {\n buf += \"\\n\" + `Empty set (${duration})`;\n }\n }\n else if (\"affectedRows\" in metrics) {\n const count = metrics.affectedRows || 0;\n const rows = count === 1 ? \"row\" : \"rows\";\n buf += \"\\n\" + `Query OK, ${count} ${rows} affected (${duration})`;\n }\n return buf + \"\\n\";\n};\n","import assign from \"@single-js/common/util/assign\";\nimport { isVerticalQuery } from \"@single-js/common/util/sql-query\";\nimport _ from \"lodash\";\nimport { bufferWithError, bufferWithFields, bufferWithQuery, bufferWithRow, bufferWithSuccessMetrics, cleanUpLastQuery, truncateBuffer, } from \"util/sql-buffer\";\n// Once the buffer is longer than this length we will trim lines off the\n// beginning until we reach this length.\nconst MAX_SCROLLBACK_LENGTH = 100000;\n// Don't keep around more than this many\nconst MAX_HISTORY_LENGTH = 500;\nexport const CONNECTION_ID = \"CONSOLE\";\nconst initialState = {\n connectionId: CONNECTION_ID,\n buffer: \"\",\n initQueryExecutorError: undefined,\n queryExecutorState: undefined,\n history: [],\n activeHistory: [\"\"],\n editingQueryIndex: 0,\n};\nconst appendHistory = (history, query) => {\n // If the user runs the same query multiple times don't steamroll the\n // history.\n if (history[0] === query) {\n return history;\n }\n history = [query, ...history];\n if (history.length > MAX_HISTORY_LENGTH) {\n history = history.slice(0, MAX_HISTORY_LENGTH);\n }\n return history;\n};\nexport function consoleReducer(state = initialState, action) {\n switch (action.type) {\n case \"CONSOLE_EDIT_QUERY\": {\n const { query } = action.payload;\n const { activeHistory, editingQueryIndex } = state;\n activeHistory[editingQueryIndex] = query;\n state = assign(state, { activeHistory });\n break;\n }\n case \"CONSOLE_SHIFT_QUERY\": {\n const { direction } = action.payload;\n const { activeHistory, editingQueryIndex } = state;\n const newIdx = Math.max(0, Math.min(activeHistory.length - 1, editingQueryIndex + (direction === \"UP\" ? 1 : -1)));\n state = assign(state, { editingQueryIndex: newIdx });\n break;\n }\n case \"CONSOLE_EMPTY_QUERY\": {\n state = assign(state, {\n activeHistory: [\"\", ...state.history],\n editingQueryIndex: 0,\n buffer: truncateBuffer(bufferWithQuery(state.buffer, \"\"), MAX_SCROLLBACK_LENGTH),\n });\n break;\n }\n case \"CONSOLE_QUERY\": {\n const { query, automated } = action.payload;\n // If this query was automated (i.e. not run by the user), then\n // we restore whatever the user had written in the console so\n // that they don't lose it.\n let savedQuery = \"\";\n if (automated) {\n savedQuery = state.activeHistory[state.editingQueryIndex];\n }\n const history = appendHistory(state.history, query);\n state = assign(state, {\n history,\n activeHistory: [savedQuery, ...history],\n editingQueryIndex: 0,\n buffer: truncateBuffer(bufferWithQuery(state.buffer, query), MAX_SCROLLBACK_LENGTH),\n });\n break;\n }\n case \"INIT_QUERY_EXECUTOR\": {\n if (action.meta.id !== state.connectionId) {\n break;\n }\n state = {\n ...state,\n initQueryExecutorError: action.error\n ? action.payload\n : undefined,\n };\n break;\n }\n case \"QUERY_EXECUTOR_MESSAGE\": {\n if (action.payload.id !== state.connectionId) {\n break;\n }\n state = handleQueryExecutorMessage(state, action.payload.msg);\n break;\n }\n }\n return state;\n}\nconst handleQueryExecutorMessage = (state, msg) => {\n switch (msg.kind) {\n case \"queryExecutorState\": {\n let buffer = state.buffer;\n const { error } = msg;\n if (error && error.message) {\n buffer = truncateBuffer(state.buffer + \"\\n\" + error.message, MAX_SCROLLBACK_LENGTH);\n }\n state = assign(state, {\n queryExecutorState: msg.state,\n buffer,\n });\n break;\n }\n case \"queryRun\": {\n state = assign(state, {\n currentQuery: {\n vertical: isVerticalQuery(msg.query.text),\n rowsPrinted: 0,\n fieldsPrinted: false,\n },\n });\n break;\n }\n case \"queryMessage\": {\n switch (msg.queryMsg.kind) {\n case \"resultSet\": {\n if (!state.currentQuery) {\n throw new Error(\"Expected currentQuery to exist in the state.\");\n }\n const currentQuery = state.currentQuery;\n const { fields } = msg.queryMsg;\n const longestFieldLength = _(fields)\n .map((field) => field.name.length)\n .max();\n const buffer = cleanUpLastQuery(state.buffer, currentQuery);\n const newQueryInfo = {\n ...currentQuery,\n fields,\n longestFieldLength,\n rowsPrinted: 0,\n fieldsPrinted: false,\n };\n state = {\n ...state,\n currentQuery: newQueryInfo,\n buffer,\n };\n break;\n }\n case \"rows\": {\n if (!state.currentQuery) {\n throw new Error(\"Expected currentQuery to exist in the state.\");\n }\n const currentQuery = state.currentQuery;\n // Add the fields that we have yet to print to the buffer\n // before adding the rows.\n let buffer = state.buffer;\n if (!currentQuery.fieldsPrinted) {\n buffer = truncateBuffer(bufferWithFields(buffer, state.currentQuery), MAX_SCROLLBACK_LENGTH);\n }\n const bufferWithRows = _.reduce(msg.queryMsg.rows, (buf, row, idx) => bufferWithRow(buf, row, currentQuery, currentQuery.rowsPrinted + idx), buffer);\n state = {\n ...state,\n currentQuery: assign(currentQuery, {\n rowsPrinted: currentQuery.rowsPrinted + 1,\n fieldsPrinted: true,\n }),\n buffer: truncateBuffer(bufferWithRows, MAX_SCROLLBACK_LENGTH),\n };\n break;\n }\n case \"queryEnd\": {\n if (!state.currentQuery) {\n throw new Error(\"Expected currentQuery to exist in the state.\");\n }\n const { metrics, status } = msg.queryMsg;\n if (status.state === \"error\") {\n state = _.omit({\n ...state,\n buffer: truncateBuffer(bufferWithError(state.buffer, status, state.currentQuery), MAX_SCROLLBACK_LENGTH),\n }, \"currentQuery\");\n }\n else {\n state = _.omit({\n ...state,\n buffer: truncateBuffer(bufferWithSuccessMetrics(state.buffer, state.currentQuery, metrics), MAX_SCROLLBACK_LENGTH),\n }, \"currentQuery\");\n }\n break;\n }\n }\n break;\n }\n case \"selectedDatabaseChanged\": {\n state = {\n ...state,\n selectedDatabase: msg.database,\n };\n break;\n }\n }\n return state;\n};\n","var formatName = function formatName(_ref, name) {\n var sectionPrefix = _ref._reduxForm.sectionPrefix;\n return sectionPrefix ? sectionPrefix + \".\" + name : name;\n};\n\nexport default formatName;","import { ExternalLink as ExternalLinkBase, } from \"@single-js/common/components/external-link/external-link\";\nimport * as React from \"react\";\nexport const ExternalLink = React.forwardRef((props, ref) => {\n return React.createElement(ExternalLinkBase, { ...props, forwardedRef: ref });\n});\n","import classnames from \"classnames\";\nimport * as React from \"react\";\nimport { ExternalLink } from \"../external-link/external-link\";\nimport { Tip } from \"../tip/tip\";\nimport { Icon } from \"./icon\";\nimport \"./icon-tip.scss\";\nexport function IconTip(props) {\n const { children, className, tipProps, iconProps, iconName = \"info-circle\", leftMargin, ...rest } = props;\n const classes = classnames(\"single-common-components-icon-tip\", {\n \"left-margin\": leftMargin,\n \"onclick-wrapper\": \"onClick\" in rest,\n }, className);\n const tip = (React.createElement(Tip, { ...tipProps, className: classes, tooltip: children },\n React.createElement(Icon, { icon: iconName, ...iconProps })));\n if (\"link\" in rest) {\n return React.createElement(ExternalLink, { ...rest.link }, tip);\n }\n if (\"onClick\" in rest) {\n return (React.createElement(\"span\", { \n // eslint-disable-next-line react/jsx-handler-names\n onMouseDown: (e) => {\n rest.onClick();\n // prevent trigger blur events when used along forms\n e.preventDefault();\n } }, tip));\n }\n return tip;\n}\n","const booleanToString = (value)=>typeof value === \"boolean\" ? \"\".concat(value) : value\n;\nexport const cx = function() {\n for(var _len = arguments.length, classes = new Array(_len), _key = 0; _key < _len; _key++){\n classes[_key] = arguments[_key];\n }\n return classes.flat(Infinity).filter(Boolean).join(\" \");\n};\nexport const cva = (base, config)=>{\n return (props)=>{\n var ref;\n const className = props === null || props === void 0 ? void 0 : props.class;\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, className);\n const { variants , defaultVariants } = config;\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n if (variantProp === null) return null;\n const variantKey = booleanToString(variantProp) || booleanToString(defaultVariantProp);\n return variants[variant][variantKey];\n });\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n let [key, value] = param;\n if (value === undefined) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (ref = config.compoundVariants) === null || ref === void 0 ? void 0 : ref.reduce((acc, param1)=>{\n let { class: classNames , ...compoundVariantOptions } = param1;\n if (classNames == null) return acc;\n return Object.entries(compoundVariantOptions).every((param)=>{\n let [key, value] = param;\n return ({\n ...defaultVariants,\n ...propsWithoutUndefined\n })[key] === value;\n }) ? [\n ...acc,\n classNames\n ] : acc;\n }, []);\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, className);\n };\n};\n\n\n//# sourceMappingURL=index.esm.js.map","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// 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 permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// 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 permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// 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 permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","import Types from \"../mysqljs/lib/protocol/constants/types\";\n// Parses a time in hour:minute:second format, possibly with a negative sign in\n// front, to a number of seconds.\nconst parseTimeToSeconds = (time) => {\n let sign = 1;\n let nonnegativeTime = time;\n if (time.startsWith(\"-\")) {\n // A negative sign applies to all components.\n sign = -1;\n nonnegativeTime = time.substring(1);\n }\n const components = nonnegativeTime.split(\":\").map(Number);\n return sign * (components[0] * 3600 + components[1] * 60 + components[2]);\n};\n// Convert a string, given its MySQL type, to a JavaScript value that allows it\n// to be sorted.\nexport const typecast = (value, type) => {\n switch (type) {\n case Types.TINY:\n case Types.SHORT:\n case Types.LONG:\n case Types.INT24:\n case Types.YEAR:\n case Types.FLOAT:\n case Types.DOUBLE:\n case Types.NEWDECIMAL:\n case Types.LONGLONG:\n // TODO(PLAT-2222): This can lose precision for NEWDECIMAL and\n // LONGLONG fields, and will incorrectly sort values in such fields\n // that are large but close together.\n return Number(value);\n case Types.TIME:\n case Types.TIME2:\n // We get times that are zero-padded to two-digit hours, but MemSQL\n // supports TIME instances with hours that are negative or more\n // than 100, which don't sort lexicographically and which date-fns\n // cannot handle. So we have to parse TIMEs ourselves.\n return parseTimeToSeconds(value);\n default:\n // Dates and datetimes are actually formatted so they sort well as\n // strings, and sorting geospatial types is implausible, so treat\n // everything else as a string for sorting purposes.\n return value;\n }\n};\n","import _ from \"lodash\";\nimport { createSelector } from \"reselect\";\nimport { typecast } from \"../../../memsql/typecast\";\nimport { extractQueries, parseQueries } from \"../../../util/sql-query\";\nexport const selectConnectionState = (state) => state.queryEditor.connectionState;\nexport const selectLogsTab = (state) => state.queryEditor.logsTab;\nexport const selectQueryLogs = (state) => state.queryEditor.sessionQueries;\nexport const selectTabs = (state) => state.queryEditor.tabs;\nexport const selectAllTabs = (state) => [\n state.queryEditor.logsTab,\n ...state.queryEditor.tabs,\n];\nexport const selectActiveTabId = (state) => state.queryEditor.activeTabId;\nexport const selectRunningQueryTabId = (state) => state.queryEditor.runningQueryTabId;\nexport const selectActiveTabState = createSelector(selectLogsTab, selectTabs, selectActiveTabId, (logsTab, tabs, activeTabId) => {\n if (activeTabId === \"LOGS\") {\n return logsTab;\n }\n const tab = _.find(tabs, { id: activeTabId });\n if (!tab) {\n throw new Error(`No active tab with id ${activeTabId} found`);\n }\n return tab;\n});\nexport const selectActiveResultTabIndex = createSelector(selectTabs, selectActiveTabId, (tabs, activeTabId) => {\n if (activeTabId === \"LOGS\") {\n return undefined;\n }\n const index = _.findIndex(tabs, { id: activeTabId });\n if (index === -1) {\n throw new Error(`No active tab with id ${activeTabId} found`);\n }\n return index;\n});\nexport const selectRunningQueryTabState = createSelector(selectTabs, selectRunningQueryTabId, (tabs, runningQueryTabId) => {\n // Note that runningQueryTabId may be undefined and, even if defined, may\n // correspond to a tab that still exists. Those are not errors; in\n // those cases we just return undefined.\n return _.find(tabs, { id: runningQueryTabId });\n});\n// The tab that is actively using the connection, if one exists.\nexport const selectRunningTabId = createSelector(selectConnectionState, selectRunningQueryTabId, (state, runningQueryTabId) => state === \"ACTIVE\" ? runningQueryTabId : undefined);\nexport const selectActiveTabIsRunning = createSelector(selectActiveTabId, selectRunningTabId, (activeTabId, runningTabId) => activeTabId === runningTabId);\n// Return if the active tab is idle, i.e. does not have an ongoing query. True\n// if it's not the running query tab, or if it's the running query tab but the\n// connection is idle.\nexport const selectActiveTabIsIdle = createSelector(selectActiveTabId, selectRunningQueryTabId, selectConnectionState, (activeTabId, runningQueryTabId, state) => activeTabId !== runningQueryTabId || state === \"IDLE\");\nexport const selectStateResults = createSelector(selectActiveTabState, (state) => {\n if (\"results\" in state) {\n return state.results;\n }\n else {\n return undefined;\n }\n});\nexport const selectCanceling = (state) => state.queryEditor.canceling;\nexport const selectSort = createSelector(selectActiveTabState, (state) => {\n if (\"sort\" in state) {\n return state.sort;\n }\n else {\n return undefined;\n }\n});\nexport const selectRunningQueryGroupLogs = createSelector(selectQueryLogs, selectRunningQueryTabState, (queryLogs, runningQueryTab) => {\n if (runningQueryTab) {\n return _.filter(queryLogs, (queryLog) => queryLog.context.groupId ===\n runningQueryTab.queryContext.groupId);\n }\n else {\n return undefined;\n }\n});\nexport const selectRunningQueryGroupStatuses = createSelector(selectRunningQueryGroupLogs, (queryLogs) => _.map(queryLogs, (queryLog) => queryLog.status));\nexport const selectRunningQueryGroupError = createSelector(selectRunningQueryGroupStatuses, (queryStatuses) => _.find(queryStatuses, (queryStatus) => {\n return queryStatus !== undefined && queryStatus.status === \"error\";\n}));\nexport const selectCursorIndex = (state) => state.queryEditor.cursorInfo.index;\nexport const selectCursorSelection = (state) => state.queryEditor.cursorInfo.selectedRange;\nexport const selectBuffer = (state) => state.queryEditor.buffer;\nconst sortResultRows = (results, sort) => {\n const { rows, fields } = results;\n if (sort) {\n // The ID for the columns of the SuperTable in Query Results\n // is a combination of the database name, table name, column\n // name and index, where an underscore (_) separates the index\n // from the rest of column ID\n // This Regex serves to get the index of the column from the\n // rest of the ID\n // * \\_ - find the underscore\n // * (\\d+) - capturing group of one or more (+) digits (\\d)\n // * $ - pattern should be found at the end of the string\n const indexPattern = /\\_(\\d+)$/;\n const match = sort.columnId.match(indexPattern);\n if (match !== null) {\n // match[1] will contain the capturing group with the\n // stringified index\n const sortColumnIndex = Number(match[1]);\n const fieldType = fields[sortColumnIndex].type;\n return _.orderBy(rows, [(r) => typecast(r[sortColumnIndex], fieldType)], sort ? sort.direction : \"desc\");\n }\n }\n return rows;\n};\nexport const selectResultsToExport = createSelector(selectStateResults, selectSort, (results, sort) => {\n if (canExportResultsAsCSV(results)) {\n return {\n fields: results.fields,\n rows: sortResultRows(results, sort),\n };\n }\n});\nexport const selectCurrentEditorResults = createSelector(selectStateResults, selectSort, (results, sort) => {\n if (!results) {\n return;\n }\n if (results.type === \"exec\") {\n return results;\n }\n if (results.type === \"unknown\") {\n return results;\n }\n if (results.type === \"error\") {\n return results;\n }\n const rows = sortResultRows(results, sort);\n return {\n ...results,\n rows,\n totalRows: results.rows.length,\n };\n});\nfunction canExportResultsAsCSV(results) {\n return Boolean(results && results.type === \"rows\" && !results.loading);\n}\n// This selector returns whether the SQL editor results are of type \"rows\" and\n// if they have finished. This is the only circumstance where the results can be\n// exported as a CSV file.\nexport const selectCanExportResultsAsCSV = createSelector(selectStateResults, (results) => {\n return canExportResultsAsCSV(results);\n});\nexport const selectQueryRanges = createSelector(selectBuffer, parseQueries);\nexport const selectActiveQueryRange = createSelector(selectQueryRanges, selectBuffer, selectCursorIndex, selectCursorSelection, (queryRanges, buffer, cursorIdx, selectedRange) => {\n // if the user is selecting anything - we run that verbatim\n if (selectedRange) {\n return { range: selectedRange, userSelected: true };\n }\n // if there are no query ranges there is nothing to select\n if (queryRanges.length === 0) {\n return undefined;\n }\n // check to see which query the user's cursor is closest to\n let closest, candidate;\n for (let i = 0, l = queryRanges.length; i < l; ++i) {\n candidate = queryRanges[i];\n // check to see if the cursor is inside of this candidate\n if (candidate.start <= cursorIdx && cursorIdx <= candidate.end) {\n // we got a winner!\n closest = candidate;\n break;\n }\n // check to see if the cursor is on the same line as candidate.end,\n // but before the next candidates start\n const nextCandidate = queryRanges[i + 1];\n const nextCandidateStart = nextCandidate\n ? nextCandidate.start\n : Infinity;\n if (cursorIdx > candidate.end && cursorIdx < nextCandidateStart) {\n const newlineIdx = buffer\n .slice(candidate.end, nextCandidateStart)\n .indexOf(\"\\n\");\n /*\n * case 1:\n * no newline between candidates, so treat the cursor as\n * being in the candidate\n *\n * case 2:\n * if the cursor is to the left of the newline, then treat\n * the cursor as being in the candidate\n */\n if (newlineIdx === -1 ||\n cursorIdx <= candidate.end + newlineIdx) {\n closest = candidate;\n break;\n }\n }\n // If the cursor is ahead of the candidate treat it as the closest\n // query we have seen so far provided the cursor isn't before an\n // already set closest query.\n if (!(closest && cursorIdx < closest.end) &&\n cursorIdx < candidate.start) {\n closest = candidate;\n }\n }\n const range = closest || candidate;\n if (range) {\n return { range, userSelected: false };\n }\n});\nexport const selectEditorConnectionCanRunQuery = createSelector(selectConnectionState, (connectionState) => {\n return connectionState === \"IDLE\";\n});\n// We only support running EXPLAIN or PROFILE of a single query at a time.\nexport const selectEditorExplainQueryStatus = createSelector(selectActiveQueryRange, selectEditorConnectionCanRunQuery, selectBuffer, (activeQueryRange, canRunQuery, buffer) => {\n // If there is no active query range, there are no queries in the\n // buffer.\n if (activeQueryRange && canRunQuery) {\n const { range, userSelected } = activeQueryRange;\n const queryText = range.extract(buffer);\n const queries = extractQueries(queryText);\n let canExplainQuery;\n // If the user is selecting queries, then we only want to let them\n // run EXPLAIN if they are currently selecting only 1 query. If the\n // user is not selecting any queries, then the SQL Editor will\n // choose the first one based on the cursor position so it's okay if\n // there are multiple queries in the buffer. Either way, the query\n // that will be EXPLAIN'ed cannot be empty.\n if (userSelected) {\n canExplainQuery = queries.length === 1;\n }\n else {\n canExplainQuery = queries.length >= 1;\n }\n if (canExplainQuery) {\n return { canExplainQuery };\n }\n else {\n return {\n canExplainQuery,\n disabledMessage: \"Please select just one query.\",\n };\n }\n }\n return {\n canExplainQuery: false,\n disabledMessage: \"Please select a query first.\",\n };\n});\nexport const selectFirstSelection = createSelector(selectActiveQueryRange, selectBuffer, (activeQueryRange, buffer) => {\n if (activeQueryRange) {\n const { range, userSelected } = activeQueryRange;\n const queryText = range.extract(buffer);\n if (userSelected) {\n return extractQueries(queryText)[0];\n }\n else {\n return queryText;\n }\n }\n});\nexport const selectEditorCanRunQuery = createSelector(selectFirstSelection, selectEditorConnectionCanRunQuery, (firstSelection, canRunQuery) => {\n return Boolean(firstSelection && canRunQuery);\n});\n","const iterRowCol = (buffer, fn) => {\n let row = 0;\n let col = 0;\n let i = 0;\n for (let l = buffer.length; i < l; ++i) {\n if (fn(i, row, col)) {\n return;\n }\n if (buffer[i] === \"\\n\") {\n row++;\n col = 0;\n }\n else {\n col++;\n }\n }\n // this is only called if we don't return from the inside loop\n fn(i, row, col);\n};\nexport class RowColumnRange {\n constructor(startRow, startColumn, endRow, endColumn) {\n if (startRow > endRow) {\n throw new Error(\"RowColumnRange: startRow should be <= endRow\");\n }\n if (startRow === endRow) {\n if (startColumn > endColumn) {\n throw new Error(\"RowColumnRange: (single row) startColumn should be <= endColumn\");\n }\n }\n this.startRow = startRow;\n this.startColumn = startColumn;\n this.endRow = endRow;\n this.endColumn = endColumn;\n }\n toAbsolute(buffer) {\n const out = new AbsoluteRange(0, 0);\n let lastIdx = 0;\n let setStart = false, setEnd = false;\n iterRowCol(buffer, (i, row, col) => {\n lastIdx = i;\n // we are exactly at the start position\n if (row === this.startRow && col === this.startColumn) {\n out.start = i;\n setStart = true;\n }\n // we are exactly at the end position\n if (row === this.endRow && col === this.endColumn) {\n out.end = i;\n setEnd = true;\n return true;\n }\n });\n if (!setStart) {\n out.start = lastIdx;\n }\n if (!setEnd) {\n out.end = lastIdx;\n }\n return out;\n }\n extract(buffer) {\n return this.toAbsolute(buffer).extract(buffer);\n }\n}\nexport class AbsoluteRange {\n constructor(start, end) {\n if (start < 0) {\n throw new Error(\"AbsoluteRange: start should be >= 0\");\n }\n if (start > end) {\n throw new Error(\"AbsoluteRange: start should be <= end\");\n }\n this.start = start;\n this.end = end;\n }\n compare(range) {\n return range.start === this.start && range.end === this.end;\n }\n toRowColumn(buffer) {\n const out = new RowColumnRange(-1, -1, -1, -1);\n let lastRow = 0, lastCol = 0;\n let setStart = false, setEnd = false;\n iterRowCol(buffer, (i, row, col) => {\n lastRow = row;\n lastCol = col;\n if (i === this.start) {\n setStart = true;\n out.startRow = row;\n out.startColumn = col;\n }\n if (i === this.end) {\n setEnd = true;\n out.endRow = row;\n out.endColumn = col;\n return true;\n }\n });\n if (!setStart) {\n out.startRow = lastRow;\n out.startColumn = lastCol;\n }\n if (!setEnd) {\n out.endRow = lastRow;\n out.endColumn = lastCol;\n }\n return out;\n }\n extract(buffer) {\n return buffer.slice(this.start, this.end);\n }\n}\n","export const buildTopologyAction = (payload) => ({\n type: \"TOPOLOGY\",\n payload: {\n loading: false,\n data: payload,\n },\n error: false,\n});\nexport const sortNodes = (payload) => ({\n type: \"SORT_NODES\",\n error: false,\n payload,\n});\nexport const sortNodePartitionInstances = (payload) => ({\n type: \"SORT_NODE_PARTITION_INSTANCES\",\n error: false,\n payload,\n});\n","import jwtDecode from \"jwt-decode\";\nconst STAGING_PROFILE = \"s\";\nconst DEVELOPMENT_PROFILE = \"d\";\nexport function decodeClusterJwt(jwt) {\n // jwtDecode can raise an error if the argument is not a valid string, and\n // we return undefined if so.\n let decodedJwt;\n try {\n decodedJwt = jwtDecode(jwt);\n }\n catch (err) {\n return undefined;\n }\n let profile;\n switch (decodedJwt.env) {\n case STAGING_PROFILE:\n profile = \"STAGING\";\n break;\n case DEVELOPMENT_PROFILE:\n profile = \"DEVELOPMENT\";\n break;\n default:\n profile = \"PRODUCTION\";\n }\n if (!decodedJwt.end) {\n return undefined;\n }\n const splitEndpoint = decodedJwt.end.split(\":\");\n const name = decodedJwt.nam || splitEndpoint[0];\n const port = Number(splitEndpoint[1]) || 3306;\n const defaultUser = decodedJwt.usr || \"\";\n let heliosExpiresAt;\n if (decodedJwt.cxp) {\n heliosExpiresAt = new Date(decodedJwt.cxp * 1000); // convert to milliseconds\n }\n return {\n id: jwt,\n name,\n description: \"\",\n profile,\n hostname: splitEndpoint[0],\n port,\n defaultUser,\n websocket: false,\n websocketSSL: false,\n kerberosAutoLogin: false,\n helios: {\n clusterID: decodedJwt.cid,\n expiresAt: heliosExpiresAt,\n },\n // JWT users can never be SAML users as SAML authentication is currently not available for Helios clusters\n samlEnabled: false,\n };\n}\nexport function formatClusterProfile(profile) {\n switch (profile) {\n case \"DEVELOPMENT\":\n return \"Development\";\n case \"STAGING\":\n return \"Staging\";\n case \"PRODUCTION\":\n return \"Production\";\n default:\n return \"Unknown\";\n }\n}\n","import UAParser from \"ua-parser-js\";\nconst uaParser = new UAParser();\nfunction getMajorVersion(version) {\n if (version) {\n const versionNumber = version.substring(0, version.indexOf(\".\"));\n return Number(versionNumber);\n }\n return 0;\n}\nexport function isSupportedBrowser() {\n const browser = uaParser.getBrowser().name;\n const version = getMajorVersion(uaParser.getBrowser().version);\n return ((browser === \"Chrome\" && version >= 56) ||\n (browser === \"Firefox\" && version >= 47) ||\n (browser === \"Edge\" && version >= 80) ||\n browser === \"Chromium\");\n}\nexport function isMobileDevice() {\n // device.type is undefined on non-mobile/tablet devices\n return Boolean(uaParser.getDevice().type);\n}\nexport function isSupportedDevice() {\n return !isMobileDevice() && isSupportedBrowser();\n}\n","module.exports = require('./lib/SqlString');\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isObject(x) {\n return x !== null && typeof x === 'object';\n}\n//# sourceMappingURL=isObject.js.map\n","/** PURE_IMPORTS_START _Observable,_Subscription PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nexport function scheduleArray(input, scheduler) {\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n var i = 0;\n sub.add(scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n return;\n }\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n sub.add(this.schedule());\n }\n }));\n return sub;\n });\n}\n//# sourceMappingURL=scheduleArray.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function map(project, thisArg) {\n return function mapOperation(source) {\n if (typeof project !== 'function') {\n throw new TypeError('argument is not a function. Are you looking for `mapTo()`?');\n }\n return source.lift(new MapOperator(project, thisArg));\n };\n}\nvar MapOperator = /*@__PURE__*/ (function () {\n function MapOperator(project, thisArg) {\n this.project = project;\n this.thisArg = thisArg;\n }\n MapOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg));\n };\n return MapOperator;\n}());\nexport { MapOperator };\nvar MapSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(MapSubscriber, _super);\n function MapSubscriber(destination, project, thisArg) {\n var _this = _super.call(this, destination) || this;\n _this.project = project;\n _this.count = 0;\n _this.thisArg = thisArg || _this;\n return _this;\n }\n MapSubscriber.prototype._next = function (value) {\n var result;\n try {\n result = this.project.call(this.thisArg, value, this.count++);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n };\n return MapSubscriber;\n}(Subscriber));\n//# sourceMappingURL=map.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from './Subscriber';\nvar InnerSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(InnerSubscriber, _super);\n function InnerSubscriber(parent, outerValue, outerIndex) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n _this.outerValue = outerValue;\n _this.outerIndex = outerIndex;\n _this.index = 0;\n return _this;\n }\n InnerSubscriber.prototype._next = function (value) {\n this.parent.notifyNext(this.outerValue, value, this.outerIndex, this.index++, this);\n };\n InnerSubscriber.prototype._error = function (error) {\n this.parent.notifyError(error, this);\n this.unsubscribe();\n };\n InnerSubscriber.prototype._complete = function () {\n this.parent.notifyComplete(this);\n this.unsubscribe();\n };\n return InnerSubscriber;\n}(Subscriber));\nexport { InnerSubscriber };\n//# sourceMappingURL=InnerSubscriber.js.map\n","/** PURE_IMPORTS_START _InnerSubscriber,_subscribeTo,_Observable PURE_IMPORTS_END */\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeTo } from './subscribeTo';\nimport { Observable } from '../Observable';\nexport function subscribeToResult(outerSubscriber, result, outerValue, outerIndex, destination) {\n if (destination === void 0) {\n destination = new InnerSubscriber(outerSubscriber, outerValue, outerIndex);\n }\n if (destination.closed) {\n return undefined;\n }\n if (result instanceof Observable) {\n return result.subscribe(destination);\n }\n return subscribeTo(result)(destination);\n}\n//# sourceMappingURL=subscribeToResult.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from './Subscriber';\nvar OuterSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(OuterSubscriber, _super);\n function OuterSubscriber() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n OuterSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.destination.next(innerValue);\n };\n OuterSubscriber.prototype.notifyError = function (error, innerSub) {\n this.destination.error(error);\n };\n OuterSubscriber.prototype.notifyComplete = function (innerSub) {\n this.destination.complete();\n };\n return OuterSubscriber;\n}(Subscriber));\nexport { OuterSubscriber };\n//# sourceMappingURL=OuterSubscriber.js.map\n","import { isValidElementType } from 'react-is';\n\nvar validateComponentProp = function validateComponentProp(props, propName, componentName) {\n if (!isValidElementType(props[propName])) {\n return new Error('Invalid prop `' + propName + '` supplied to' + ' `' + componentName + '`.');\n }\n\n return null;\n};\n\nexport default validateComponentProp;","var isEvent = function isEvent(candidate) {\n return !!(candidate && candidate.stopPropagation && candidate.preventDefault);\n};\n\nexport default isEvent;","module.exports = isPromise;\nmodule.exports.default = isPromise;\n\nfunction isPromise(obj) {\n return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function';\n}\n","var defaultShouldValidate = function defaultShouldValidate(_ref) {\n var values = _ref.values,\n nextProps = _ref.nextProps,\n initialRender = _ref.initialRender,\n lastFieldValidatorKeys = _ref.lastFieldValidatorKeys,\n fieldValidatorKeys = _ref.fieldValidatorKeys,\n structure = _ref.structure;\n\n if (initialRender) {\n return true;\n }\n\n return !structure.deepEqual(values, nextProps && nextProps.values) || !structure.deepEqual(lastFieldValidatorKeys, fieldValidatorKeys);\n};\n\nexport default defaultShouldValidate;","import { Observable } from \"rxjs\";\nexport const mapFilter = (map) => (source) => Observable.create((subscriber) => {\n let count = 0;\n return source.subscribe((value) => {\n let result;\n try {\n result = map(value, count++);\n }\n catch (err) {\n subscriber.error(err);\n return;\n }\n if (result) {\n subscriber.next(result);\n }\n });\n});\n","/** PURE_IMPORTS_START _config,_util_hostReportError PURE_IMPORTS_END */\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\nexport var empty = {\n closed: true,\n next: function (value) { },\n error: function (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n else {\n hostReportError(err);\n }\n },\n complete: function () { }\n};\n//# sourceMappingURL=Observer.js.map\n","let Sequence = require(\"./Sequence\").default;\nlet inherits = require(\"inherits\");\nlet Packets = require(\"../packets\");\nlet ResultSet = require(\"../ResultSet\");\nlet ServerStatus = require(\"../constants/server_status\");\nlet Readable = require(\"readable-stream\");\n\nmodule.exports = Query;\ninherits(Query, Sequence);\nfunction Query(options, callback) {\n Sequence.call(this, options, callback);\n\n this.sql = options.sql;\n this.values = options.values;\n this.typeCast = options.typeCast === undefined ? true : options.typeCast;\n this.nestTables = options.nestTables || false;\n\n this._resultSet = null;\n this._results = [];\n this._fields = [];\n this._index = 0;\n this._loadError = null;\n}\n\nQuery.prototype._id = \"Query\";\n\nQuery.prototype.start = function () {\n this.emit(\"packet\", new Packets.ComQueryPacket(this.sql));\n};\n\nQuery.prototype.determinePacket = function determinePacket(byte, parser) {\n let resultSet = this._resultSet;\n\n if (!resultSet) {\n switch (byte) {\n case 0x00:\n return Packets.OkPacket;\n\n case 0xff:\n return Packets.ErrorPacket;\n\n default:\n return Packets.ResultSetHeaderPacket;\n }\n }\n\n if (resultSet.eofPackets.length === 0) {\n return resultSet.fieldPackets.length <\n resultSet.resultSetHeaderPacket.fieldCount\n ? Packets.FieldPacket\n : Packets.EofPacket;\n }\n\n if (byte === 0xff) {\n return Packets.ErrorPacket;\n }\n\n if (byte === 0xfe && parser.packetLength() < 9) {\n return Packets.EofPacket;\n }\n\n return Packets.RowDataPacket;\n};\n\nQuery.prototype[\"OkPacket\"] = function (packet) {\n // try...finally for exception safety\n try {\n if (!this._callback) {\n this.emit(\"result\", packet, this._index);\n } else {\n this._results.push(packet);\n this._fields.push(undefined);\n }\n } finally {\n this._index++;\n this._resultSet = null;\n this._handleFinalResultPacket(packet);\n }\n};\n\nQuery.prototype[\"ErrorPacket\"] = function (packet) {\n let err = this._packetToError(packet);\n\n let results = this._results.length > 0 ? this._results : undefined;\n\n let fields = this._fields.length > 0 ? this._fields : undefined;\n\n err.index = this._index;\n this.end(err, results, fields);\n};\n\nQuery.prototype[\"ResultSetHeaderPacket\"] = function (packet) {\n if (packet.fieldCount === null) {\n this.emit(\n \"error\",\n new Error(\n \"Local file data loading is not supported in SingleStore Studio\"\n )\n );\n } else {\n this._resultSet = new ResultSet(packet);\n }\n};\n\nQuery.prototype[\"FieldPacket\"] = function (packet) {\n this._resultSet.fieldPackets.push(packet);\n};\n\nQuery.prototype[\"EofPacket\"] = function (packet) {\n this._resultSet.eofPackets.push(packet);\n\n if (this._resultSet.eofPackets.length === 1 && !this._callback) {\n this.emit(\"fields\", this._resultSet.fieldPackets, this._index);\n }\n\n if (this._resultSet.eofPackets.length !== 2) {\n return;\n }\n\n if (this._callback) {\n this._results.push(this._resultSet.rows);\n this._fields.push(this._resultSet.fieldPackets);\n }\n\n this._index++;\n this._resultSet = null;\n this._handleFinalResultPacket(packet);\n};\n\nQuery.prototype._handleFinalResultPacket = function (packet) {\n if (packet.serverStatus & ServerStatus.SERVER_MORE_RESULTS_EXISTS) {\n return;\n }\n\n let results = this._results.length > 1 ? this._results : this._results[0];\n\n let fields = this._fields.length > 1 ? this._fields : this._fields[0];\n\n this.end(this._loadError, results, fields);\n};\n\nQuery.prototype[\"RowDataPacket\"] = function (packet, parser, connection) {\n packet.parse(\n parser,\n this._resultSet.fieldPackets,\n this.typeCast,\n this.nestTables,\n connection\n );\n\n if (this._callback) {\n this._resultSet.rows.push(packet);\n } else {\n this.emit(\"result\", packet, this._index);\n }\n};\n\nQuery.prototype.stream = function (options) {\n let self = this,\n stream;\n\n options = options || {};\n options.objectMode = true;\n stream = new Readable(options);\n\n stream._read = function () {\n self._connection && self._connection.resume();\n };\n\n stream.once(\"end\", function () {\n process.nextTick(function () {\n stream.emit(\"close\");\n });\n });\n\n this.on(\"result\", function (row, i) {\n if (!stream.push(row)) {\n self._connection.pause();\n }\n stream.emit(\"result\", row, i); // replicate old emitter\n });\n\n this.on(\"error\", function (err) {\n stream.emit(\"error\", err); // Pass on any errors\n });\n\n this.on(\"end\", function () {\n stream.push(null); // pushing null, indicating EOF\n });\n\n this.on(\"fields\", function (fields, i) {\n stream.emit(\"fields\", fields, i); // replicate old emitter\n });\n\n return stream;\n};\n","// This function counts the number of elements in T for which pred(element)\n// returns true. We use this over _.filter().length to avoid allocating a new\n// array.\nexport function count(arr, pred) {\n let result = 0;\n for (let i = 0; i < arr.length; i++) {\n if (pred(arr[i])) {\n result++;\n }\n }\n return result;\n}\n","export const COMPRESSION_RATIO_TIP = \"This percentage represents the reduction in size of the data after compression.\";\n// Implements the \"space savings\" metric:\n// https://en.wikipedia.org/wiki/Data_compression_ratio\nexport default function (compressedSize, uncompressedSize) {\n if (uncompressedSize.isZero()) {\n if (compressedSize.isZero()) {\n return \"invalid\";\n }\n else {\n // Uncompressed size is 0 but compressed size is not 0.\n // Very weird and unexpected. We return -100%.\n return -1;\n }\n }\n return 1 - compressedSize.dividedBy(uncompressedSize).toNumber();\n}\n","export default function ({ formatter, }) {\n return {\n id: \"showDefinition\",\n title: \"\",\n // Original this value was set to 60px. Because we are rendering a\n // tooltip on top of the `showDefinition` button and the tooltip itself\n // renders a `inline-block` div (Overlay component), we need this extra\n // space to avoid ellipsis even knowing that the button width is no\n // greater than the cell one.\n defaultMaxWidth: 63,\n defaultMinWidth: 63,\n sort: \"DISABLED\",\n revealOnHover: true,\n formatter,\n getValue: () => undefined,\n nonResizable: true,\n };\n}\n","import { Button, } from \"@single-js/common/components/button/button\";\nimport { Tip } from \"@single-js/common/components/tip/tip\";\nimport classnames from \"classnames\";\nimport { consoleRunQuery } from \"data/actions\";\nimport * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport * as analytics from \"util/segment\";\nimport \"./console-query-button.scss\";\nfunction ConsoleQueryButton({ query, consoleQueryExecutorState, dispatch, category, action, tipProps, buttonProps, className, }) {\n const onClick = () => {\n dispatch(consoleRunQuery({ query }));\n analytics.track(action, { category });\n };\n const classes = classnames(\"common-console-query-button\", className);\n return (React.createElement(Tip, { ...tipProps },\n React.createElement(Button, { className: classes, onClick: onClick, small: true, ghost: true, disabled: consoleQueryExecutorState !== \"IDLE\", icon: \"console\", ...buttonProps })));\n}\nexport default connect((s) => ({\n consoleQueryExecutorState: s.console.queryExecutorState,\n}))(ConsoleQueryButton);\n","/* global window */\nimport ponyfill from './ponyfill.js';\n\nvar root;\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 = ponyfill(root);\nexport default result;\n","/** PURE_IMPORTS_START _util_isScheduler,_fromArray,_scheduled_scheduleArray PURE_IMPORTS_END */\nimport { isScheduler } from '../util/isScheduler';\nimport { fromArray } from './fromArray';\nimport { scheduleArray } from '../scheduled/scheduleArray';\nexport function of() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = args[args.length - 1];\n if (isScheduler(scheduler)) {\n args.pop();\n return scheduleArray(args, scheduler);\n }\n else {\n return fromArray(args);\n }\n}\n//# sourceMappingURL=of.js.map\n","import assign from \"@single-js/common/util/assign\";\nimport { isLoadingError, LEError, LELoading, LESuccess, updateLoadingError, } from \"@single-js/common/util/loading-error\";\nimport { selectError, selectIsError, selectIsInitial, selectIsSuccess, selectLastUpdate, selectLoadingOrInitial, selectPayload, } from \"@single-js/common/util/loading-state-machine\";\nimport BigNumber from \"@single-js/common/vendor/bignumber.js/bignumber\";\nimport { formatNodeAddress, } from \"data/models\";\nimport { deriveDatabaseImpacted, deriveDatabaseStatus, derivePartitions, selectClusterStatisticsError, } from \"data/selectors/cluster-metadata\";\nimport { selectPipelines, selectPipelinesError, } from \"data/selectors/pipelines\";\nimport { selectRoute } from \"data/selectors/routes\";\nimport { deriveNodes, selectTopologyError, selectTopologyLastUpdate, selectTopologyLoading, } from \"data/selectors/topology\";\nimport _ from \"lodash\";\nimport { genTableId } from \"memsql/db-object-id\";\nimport { COLUMN_COLUMNS, DATABASE_COLUMNS, INDEX_COLUMNS, STORED_PROCEDURE_COLUMNS, TABLE_COLUMNS, UDA_COLUMNS, UDF_COLUMNS, VIEW_COLUMN_COLUMNS, VIEW_COLUMNS, } from \"memsql/schema-column-info\";\nimport { createSelector } from \"reselect\";\nimport { count } from \"util/count\";\nimport PIPELINES_COLUMNS from \"view/pipelines/columns-info\";\nconst selectSchemaSort = (kind) => (s) => s.schema.sort[kind];\nexport const selectColumns = (s) => s.schema.structure.columns;\nexport const selectViewColumns = (s) => s.schema.structure.viewColumns;\nexport const selectIndexes = (s) => s.schema.indexes;\nexport const selectDatabases = (s) => {\n return s.schema.structure.databases;\n};\nexport function selectDatabaseNames(s) {\n const schemaSummary = selectPayload(s.schema.summary);\n if (schemaSummary) {\n return schemaSummary.databaseNames;\n }\n}\nexport const selectTables = (s) => s.schema.structure.tables;\nexport const selectViews = (s) => s.schema.structure.views;\nexport const selectStoredProcedures = (s) => s.schema.structure.storedProcedures;\nexport const selectUDFs = (s) => s.schema.structure.userDefinedFunctions;\nexport const selectUDAs = (s) => s.schema.structure.aggregates;\nexport const selectCurrentDatabaseName = (s) => selectRoute(s).params.databaseName;\nexport const selectCurrentTableName = (s) => selectRoute(s).params.tableName;\nexport const selectCurrentDatabase = createSelector(selectCurrentDatabaseName, selectDatabases, (currentDatabaseName, databases) => {\n if (currentDatabaseName && databases.isSuccess()) {\n return _.find(databases.value, (db) => db.databaseName === currentDatabaseName);\n }\n});\nexport const selectCurrentTableLike = createSelector(selectCurrentDatabaseName, selectCurrentTableName, selectTables, selectViews, (currentDatabaseName, currentTableName, tables, views) => {\n if (currentDatabaseName) {\n const tablesPerDatabase = tables[currentDatabaseName];\n const viewsPerDatabase = views[currentDatabaseName];\n if (currentTableName &&\n tablesPerDatabase &&\n tablesPerDatabase.isSuccess() &&\n viewsPerDatabase &&\n viewsPerDatabase.isSuccess()) {\n return _.find(_.concat(tablesPerDatabase.value, viewsPerDatabase.value), (t) => t.databaseName === currentDatabaseName &&\n t.tableName === currentTableName);\n }\n }\n});\nexport const selectCurrentTable = (s) => selectRoute(s).params.tableName;\nexport const deriveColumns = createSelector(selectColumns, (columns) => {\n if (columns.isLoading()) {\n return new LELoading();\n }\n else if (columns.isError()) {\n return new LEError();\n }\n const maxDiskUsagePerTable = _.reduce(columns.value, (maxPerTable, column) => {\n const tableId = genTableId(column);\n const columnDiskUsage = column.statistics\n ? column.statistics.compressedSize\n : new LELoading();\n if (tableId in maxPerTable) {\n maxPerTable[tableId] = updateLoadingError(maxPerTable[tableId], (currentMax) => updateLoadingError(columnDiskUsage, (columnDiskUsage) => {\n if (columnDiskUsage.gt(currentMax)) {\n return new LESuccess(columnDiskUsage);\n }\n else {\n return new LESuccess(currentMax);\n }\n }));\n }\n else {\n maxPerTable[tableId] = columnDiskUsage;\n }\n return maxPerTable;\n }, {});\n const maxMemoryUsagePerTable = _.reduce(columns.value, (maxPerTable, column) => {\n const tableId = genTableId(column);\n const columnMemoryUsage = column.statistics\n ? column.statistics.memoryUse\n : new LELoading();\n if (tableId in maxPerTable &&\n maxPerTable[tableId] !== undefined) {\n maxPerTable[tableId] = updateLoadingError(maxPerTable[tableId], (currentMax) => updateLoadingError(columnMemoryUsage, (columnMemoryUsage) => {\n if (columnMemoryUsage.gt(currentMax)) {\n return new LESuccess(columnMemoryUsage);\n }\n else {\n return new LESuccess(currentMax);\n }\n }));\n }\n else {\n maxPerTable[tableId] = columnMemoryUsage;\n }\n return maxPerTable;\n }, {});\n return new LESuccess(_.map(columns.value, (column) => {\n let diskUsagePercent = new LELoading();\n let memoryUsagePercent = new LELoading();\n if (column.statistics) {\n diskUsagePercent = updateLoadingError(column.statistics.compressedSize, (compressedSize) => {\n return updateLoadingError(maxDiskUsagePerTable[genTableId(column)], (maxDiskUsage) => {\n if (maxDiskUsage.isZero()) {\n return new LESuccess(0);\n }\n else {\n return new LESuccess(compressedSize\n .dividedBy(maxDiskUsage)\n .toNumber());\n }\n });\n });\n }\n if (column.statistics) {\n memoryUsagePercent = updateLoadingError(column.statistics.memoryUse, (memoryUse) => {\n return updateLoadingError(maxMemoryUsagePerTable[genTableId(column)], (maxMemoryUsage) => {\n if (maxMemoryUsage.isZero()) {\n return new LESuccess(0);\n }\n else {\n return new LESuccess(memoryUse\n .dividedBy(maxMemoryUsage)\n .toNumber());\n }\n });\n });\n }\n return {\n column,\n derived: {\n diskUsagePercent,\n memoryUsagePercent,\n },\n };\n }));\n});\nexport const deriveTables = createSelector(selectTables, selectColumns, (tables, columns) => {\n let derivedTables = {};\n Object.keys(tables).forEach((databaseName) => {\n let derivedTablesByDatabase = new LELoading();\n const allTables = {};\n const tablesPerDb = tables[databaseName];\n if (tablesPerDb.isSuccess()) {\n for (let i = 0; i < tablesPerDb.value.length; i++) {\n const table = tablesPerDb.value[i];\n allTables[table.tableId] = {\n table,\n derived: {\n diskUsage: new LESuccess(new BigNumber(0)),\n uncompressedSize: new LESuccess(new BigNumber(0)),\n diskUsagePercent: new LELoading(),\n memoryUsagePercent: new LELoading(),\n },\n };\n }\n derivedTablesByDatabase = new LESuccess(allTables);\n }\n else if (tablesPerDb.isLoading()) {\n derivedTables = {\n ...derivedTables,\n [databaseName]: new LELoading(),\n };\n // we don't want to continue calculating schema for the loading tables\n return;\n }\n else {\n derivedTables = {\n ...derivedTables,\n [databaseName]: new LEError(tablesPerDb.errorValue),\n };\n // we don't want to continue calculating schema for the loading tables\n return;\n }\n if (columns.isSuccess()) {\n const columnsByDatabase = columns.value.filter((column) => column.databaseName === databaseName);\n for (let i = 0; i < columnsByDatabase.length; i++) {\n const column = columnsByDatabase[i];\n const tableId = genTableId(column);\n const derivedTable = derivedTablesByDatabase.value[tableId];\n if (column.statistics && derivedTable) {\n const { derived } = derivedTable;\n const diskUsage = updateLoadingError(column.statistics.compressedSize, (columnDiskUsage) => {\n return updateLoadingError(derived.diskUsage, (currentDiskUsage) => {\n return new LESuccess(currentDiskUsage.plus(columnDiskUsage));\n });\n });\n const uncompressedSize = updateLoadingError(column.statistics.uncompressedSize, (columnUncompressedSize) => {\n return updateLoadingError(derived.uncompressedSize, (currentUncompressedSize) => {\n return new LESuccess(currentUncompressedSize.plus(columnUncompressedSize));\n });\n });\n if (derivedTablesByDatabase.value[tableId]) {\n derivedTablesByDatabase.value[tableId].derived = {\n ...derived,\n diskUsage,\n uncompressedSize,\n };\n }\n }\n }\n }\n const maxDiskUsagePerDatabase = _.reduce(derivedTablesByDatabase.value, (maxPerDatabase, { table, derived }) => {\n const databaseName = table.databaseName;\n const tableDiskUsage = derived.diskUsage;\n const currentMax = maxPerDatabase[databaseName];\n if (databaseName in maxPerDatabase) {\n maxPerDatabase[databaseName] = updateLoadingError(maxPerDatabase[databaseName], (currentMax) => updateLoadingError(tableDiskUsage, (tableDiskUsage) => {\n if (tableDiskUsage.gt(currentMax)) {\n return new LESuccess(tableDiskUsage);\n }\n else {\n return new LESuccess(currentMax);\n }\n }));\n }\n else {\n maxPerDatabase[databaseName] = tableDiskUsage;\n }\n if (currentMax &&\n currentMax.isSuccess() &&\n tableDiskUsage &&\n tableDiskUsage.isSuccess()) {\n if (tableDiskUsage.value.gt(currentMax.value)) {\n maxPerDatabase[databaseName] = tableDiskUsage;\n }\n }\n else if (currentMax === undefined) {\n maxPerDatabase[databaseName] = tableDiskUsage;\n }\n return maxPerDatabase;\n }, {});\n const maxMemoryUsagePerDatabase = _.reduce(derivedTablesByDatabase.value, (maxPerDatabase, { table }) => {\n const databaseName = table.databaseName;\n const tableMemoryUsage = table.statistics\n ? table.statistics.memoryUse\n : new BigNumber(0);\n if (maxPerDatabase[databaseName]) {\n maxPerDatabase[databaseName] = BigNumber.max(maxPerDatabase[databaseName], tableMemoryUsage);\n }\n else {\n maxPerDatabase[databaseName] = tableMemoryUsage;\n }\n return maxPerDatabase;\n }, {});\n derivedTables = {\n ...derivedTables,\n [databaseName]: new LESuccess(_.map(derivedTablesByDatabase.value, ({ table, derived }) => {\n const maxMemoryUsage = maxMemoryUsagePerDatabase[table.databaseName] ||\n new BigNumber(0);\n const diskUsagePercent = updateLoadingError(derived.diskUsage, (tableDiskUsage) => {\n // We special case tables with 0 disk usage and\n // immediately know that their diskUsagePercent is 0.\n if (tableDiskUsage.isZero()) {\n return new LESuccess(0);\n }\n return updateLoadingError(maxDiskUsagePerDatabase[table.databaseName], (maxDiskUsage) => {\n if (maxDiskUsage.isZero()) {\n return new LESuccess(0);\n }\n else {\n return new LESuccess(tableDiskUsage\n .dividedBy(maxDiskUsage)\n .toNumber());\n }\n });\n });\n let memoryUsagePercent = new LELoading();\n if (table.statistics) {\n if (maxMemoryUsage.isZero()) {\n memoryUsagePercent = new LESuccess(0);\n }\n else {\n memoryUsagePercent = new LESuccess(table.statistics.memoryUse\n .dividedBy(maxMemoryUsage)\n .toNumber());\n }\n }\n return {\n table,\n derived: {\n ...derived,\n diskUsagePercent,\n memoryUsagePercent,\n },\n };\n })),\n };\n });\n return derivedTables;\n});\nexport const selectSortedTables = createSelector(selectCurrentDatabaseName, selectSchemaSort(\"TABLE\"), deriveTables, (databaseName, sort, tables) => {\n if (databaseName) {\n const filteredTables = tables[databaseName];\n if (filteredTables && filteredTables.isLoading()) {\n return new LELoading();\n }\n else if (filteredTables && filteredTables.isError()) {\n return new LEError();\n }\n if (sort) {\n const { direction, columnId } = sort;\n const columnInfo = _.find(TABLE_COLUMNS, (col) => col.id === columnId);\n if (!columnInfo) {\n throw new Error(\"Expected column to be defined.\");\n }\n return new LESuccess(_.orderBy(filteredTables.value, [columnInfo.getValue], direction));\n }\n return filteredTables;\n }\n return new LEError();\n});\nconst deriveViews = createSelector(selectViews, selectViewColumns, (views, viewColumns) => {\n let derivedViews = {};\n Object.keys(views).forEach((databaseName) => {\n const derivedViewsPerDb = {};\n const viewsPerDb = views[databaseName];\n if (viewsPerDb.isSuccess()) {\n for (let i = 0; i < viewsPerDb.value.length; i++) {\n const view = viewsPerDb.value[i];\n derivedViewsPerDb[view.tableId] = {\n view,\n derived: {\n columnCount: 0,\n },\n };\n }\n }\n else if (viewsPerDb.isLoading()) {\n derivedViews = {\n ...derivedViews,\n [databaseName]: new LELoading(),\n };\n // we don't want to continue calculating schema for the loading views\n return;\n }\n else {\n derivedViews = {\n ...derivedViews,\n [databaseName]: new LEError(viewsPerDb.errorValue),\n };\n // we don't want to continue calculating schema for the loading views\n return;\n }\n if (viewColumns.isSuccess()) {\n const viewsColumnsByDatabase = viewColumns.value.filter((viewColumn) => viewColumn.databaseName === databaseName);\n for (let i = 0; i < viewsColumnsByDatabase.length; i++) {\n const viewColumn = viewsColumnsByDatabase[i];\n const viewId = genTableId(viewColumn);\n const { derived } = derivedViewsPerDb[viewId];\n derivedViewsPerDb[viewId].derived = {\n columnCount: derived.columnCount + 1,\n };\n }\n }\n derivedViews[databaseName] = new LESuccess(_.map(derivedViewsPerDb));\n });\n return derivedViews;\n});\nexport const selectSortedViews = createSelector(selectCurrentDatabaseName, deriveViews, selectSchemaSort(\"VIEW\"), (currentDatabase, views, sort) => {\n if (currentDatabase) {\n const selectedViews = views[currentDatabase];\n if (selectedViews && selectedViews.isSuccess()) {\n if (sort) {\n const { direction, columnId } = sort;\n const columnInfo = _.find(VIEW_COLUMNS, (col) => col.id === columnId);\n if (!columnInfo) {\n throw new Error(\"Expected column to be defined.\");\n }\n return new LESuccess(_.orderBy(selectedViews.value, [columnInfo.getValue], direction));\n }\n else {\n return selectedViews;\n }\n }\n else if (selectedViews && selectedViews.isLoading()) {\n return new LELoading();\n }\n }\n return new LEError();\n});\nexport const selectSortedStoredProcedures = createSelector(selectCurrentDatabaseName, selectStoredProcedures, selectSchemaSort(\"STORED_PROCEDURE\"), (currentDatabase, storedProcedures, sort) => {\n if (storedProcedures.isLoading()) {\n return new LELoading();\n }\n else if (storedProcedures.isError()) {\n return new LEError();\n }\n const selectedSortedProcedures = _.filter(storedProcedures.value, (sp) => sp.databaseName === currentDatabase);\n if (sort) {\n const { direction, columnId } = sort;\n const columnInfo = _.find(STORED_PROCEDURE_COLUMNS, (col) => col.id === columnId);\n if (!columnInfo) {\n throw new Error(\"Expected column to be defined.\");\n }\n return new LESuccess(_.orderBy(selectedSortedProcedures, [columnInfo.getValue], direction));\n }\n else {\n return new LESuccess(selectedSortedProcedures);\n }\n});\nexport const selectSortedUDFs = createSelector(selectCurrentDatabaseName, selectUDFs, selectSchemaSort(\"USER_DEFINED_FUNCTION\"), (currentDatabase, userDefinedFunctions, sort) => {\n if (userDefinedFunctions.isLoading()) {\n return new LELoading();\n }\n else if (userDefinedFunctions.isError()) {\n return new LEError();\n }\n const selectedUDFs = _.filter(userDefinedFunctions.value, (udf) => udf.databaseName === currentDatabase);\n if (sort) {\n const { direction, columnId } = sort;\n const columnInfo = _.find(UDF_COLUMNS, (col) => col.id === columnId);\n if (!columnInfo) {\n throw new Error(\"Expected column to be defined.\");\n }\n return new LESuccess(_.orderBy(selectedUDFs, [columnInfo.getValue], direction));\n }\n else {\n return new LESuccess(selectedUDFs);\n }\n});\nexport const selectSortedUDAs = createSelector(selectCurrentDatabaseName, selectUDAs, selectSchemaSort(\"USER_DEFINED_AGGREGATE\"), (currentDatabase, aggregates, sort) => {\n if (aggregates.isLoading()) {\n return new LELoading();\n }\n else if (aggregates.isError()) {\n return new LEError();\n }\n const selectedUDAs = _.filter(aggregates.value, (aggregate) => aggregate.databaseName === currentDatabase);\n if (sort) {\n const { direction, columnId } = sort;\n const columnInfo = _.find(UDA_COLUMNS, (col) => col.id === columnId);\n if (!columnInfo) {\n throw new Error(\"Expected column to be defined.\");\n }\n return new LESuccess(_.orderBy(selectedUDAs, [columnInfo.getValue], direction));\n }\n else {\n return new LESuccess(selectedUDAs);\n }\n});\nexport const deriveDatabases = createSelector(selectDatabases, deriveTables, derivePartitions, deriveNodes, (databases, tables, derivedPartitions, derivedNodes) => {\n if (derivedPartitions) {\n const derivedDatabases = {};\n if (databases.isSuccess()) {\n for (let i = 0; i < databases.value.length; i++) {\n const database = databases.value[i];\n const databasePartitions = _.filter(derivedPartitions, {\n databaseName: database.databaseName,\n });\n let dataPartitionInstanceNodeCount = 0;\n let totalLeafCount = 0;\n if (derivedNodes) {\n const dataPartitions = _.filter(databasePartitions, (part) => part.kind === \"data\");\n const dataPartitionInstances = _.flatMap(dataPartitions, (dataPart) => dataPart.partitionInstances);\n dataPartitionInstanceNodeCount = _.uniqBy(dataPartitionInstances, formatNodeAddress).length;\n totalLeafCount = _.filter(derivedNodes, (node) => node.role === \"LEAF\").length;\n }\n // We want the values to be loading by default, unless we don't have\n // any tables in the database. In that case, we can set those values\n // to 0 since they are not going to be overwritten on the tables loop.\n let defaultValue = new LELoading();\n let percentDefaultValue = new LELoading();\n if (database.tableCount === 0) {\n defaultValue = new LESuccess(new BigNumber(0));\n percentDefaultValue = new LESuccess(0);\n }\n derivedDatabases[database.databaseName] = {\n database,\n derived: {\n dataPartitionInstanceNodeCount,\n totalLeafCount,\n memoryUsage: new BigNumber(0),\n memoryUsagePercent: percentDefaultValue,\n diskUsage: defaultValue,\n diskUsagePercent: percentDefaultValue,\n uncompressedSize: new LESuccess(new BigNumber(0)),\n status: deriveDatabaseStatus(database.databaseName, databasePartitions),\n impacted: deriveDatabaseImpacted(database.databaseName, databasePartitions),\n },\n };\n const tablesPerDatabase = tables[database.databaseName];\n if (tablesPerDatabase && tablesPerDatabase.isSuccess()) {\n for (let i = 0; i < tablesPerDatabase.value.length; i++) {\n const table = tablesPerDatabase.value[i];\n const databaseName = table.table.databaseName;\n const { derived } = derivedDatabases[databaseName];\n const tableStatistics = table.table.statistics;\n let diskUsage = new LELoading();\n if (derived.diskUsage.isLoading() &&\n table.derived.diskUsage.isSuccess()) {\n diskUsage = new LESuccess(table.derived.diskUsage.value);\n }\n else if (derived.diskUsage.isSuccess()) {\n diskUsage = updateLoadingError(table.derived.diskUsage, (tableDiskUsage) => updateLoadingError(derived.diskUsage, (currentDiskUsage) => new LESuccess(currentDiskUsage.plus(tableDiskUsage))));\n }\n const uncompressedSize = updateLoadingError(table.derived.uncompressedSize, (tableUncompressedSize) => updateLoadingError(derived.uncompressedSize, (currentUncompressedSize) => new LESuccess(currentUncompressedSize.plus(tableUncompressedSize))));\n const memoryUsage = derived.memoryUsage.plus(tableStatistics ? tableStatistics.memoryUse : 0);\n derivedDatabases[databaseName].derived = assign(derived, {\n diskUsage,\n uncompressedSize,\n memoryUsage,\n });\n }\n }\n }\n }\n let maxDiskUsage = new LESuccess(new BigNumber(0));\n _.forEach(derivedDatabases, ({ derived }) => {\n if (derived.diskUsage.isSuccess() && maxDiskUsage.isSuccess()) {\n if (derived.diskUsage.value.gt(maxDiskUsage.value)) {\n maxDiskUsage = new LESuccess(derived.diskUsage.value);\n }\n }\n });\n let maxMemoryUsage = new BigNumber(0);\n _.forEach(derivedDatabases, ({ derived }) => {\n if (derived.memoryUsage.gt(maxMemoryUsage)) {\n maxMemoryUsage = derived.memoryUsage;\n }\n });\n return _.map(derivedDatabases, ({ database, derived }) => {\n const diskUsagePercent = updateLoadingError(derived.diskUsage, (databaseDiskUsage) => {\n // We special case databases with 0 disk usage and\n // immediately know that their diskUsagePercent is\n // 0.\n if (databaseDiskUsage.isZero()) {\n return new LESuccess(0);\n }\n return updateLoadingError(maxDiskUsage, (maxDiskUsage) => {\n if (maxDiskUsage.isZero()) {\n return new LESuccess(0);\n }\n else {\n return new LESuccess(databaseDiskUsage\n .dividedBy(maxDiskUsage)\n .toNumber());\n }\n });\n });\n let memoryUsagePercent;\n if (maxMemoryUsage.isZero()) {\n memoryUsagePercent = new LESuccess(0);\n }\n else {\n memoryUsagePercent = new LESuccess(derived.memoryUsage\n .dividedBy(maxMemoryUsage)\n .toNumber());\n }\n return {\n database,\n derived: {\n ...derived,\n diskUsagePercent,\n memoryUsagePercent,\n },\n };\n });\n }\n});\nexport const selectSortedDatabases = createSelector(selectSchemaSort(\"DATABASE\"), deriveDatabases, (sort, databases) => {\n if (sort) {\n const { direction, columnId } = sort;\n const databaseInfo = _.find(DATABASE_COLUMNS, (col) => col.id === columnId);\n if (!databaseInfo) {\n throw new Error(\"Expected column to be defined.\");\n }\n return _.orderBy(databases, [databaseInfo.getValue], direction);\n }\n else {\n return databases;\n }\n});\nexport const selectSortedColumns = createSelector(selectSchemaSort(\"TABLE_COLUMN\"), deriveColumns, selectCurrentDatabaseName, selectCurrentTableName, (sort, columns, currentDatabase, currentTable) => {\n if (columns.isLoading()) {\n return new LELoading();\n }\n else if (columns.isError()) {\n return new LEError();\n }\n const selectedColumns = _.filter(columns.value, ({ column }) => column.databaseName === currentDatabase &&\n column.tableName === currentTable);\n if (sort) {\n const { direction, columnId } = sort;\n const columnInfo = _.find(COLUMN_COLUMNS, (col) => col.id === columnId);\n if (!columnInfo) {\n throw new Error(\"Expected column to be defined.\");\n }\n return new LESuccess(_.orderBy(selectedColumns, [columnInfo.getValue], direction));\n }\n else {\n return new LESuccess(selectedColumns);\n }\n});\nexport const selectSortedViewColumns = createSelector(selectSchemaSort(\"VIEW_COLUMN\"), selectViewColumns, selectCurrentDatabaseName, selectCurrentTableName, (sort, columns, currentDatabase, currentTable) => {\n let selectedColumns = [];\n if (columns.isSuccess()) {\n selectedColumns = _.filter(columns.value, (column) => column.databaseName === currentDatabase &&\n column.tableName === currentTable);\n }\n if (sort) {\n const { direction, columnId } = sort;\n const columnInfo = _.find(VIEW_COLUMN_COLUMNS, (col) => col.id === columnId);\n if (!columnInfo) {\n throw new Error(\"Expected column to be defined.\");\n }\n return _.orderBy(selectedColumns, [columnInfo.getValue], direction);\n }\n else {\n return selectedColumns;\n }\n});\nexport const selectSortedIndexes = createSelector(selectSchemaSort(\"INDEX\"), selectIndexes, selectCurrentDatabaseName, selectCurrentTableName, (sort, indexes, currentDatabase, currentTable) => {\n if (indexes.isLoading()) {\n return new LELoading();\n }\n else if (indexes.isError()) {\n return new LEError();\n }\n const selectedIndexes = _.filter(indexes.value, (index) => index.databaseName === currentDatabase &&\n index.tableName === currentTable);\n if (sort) {\n const { direction, columnId } = sort;\n const columnInfo = _.find(INDEX_COLUMNS, (col) => col.id === columnId);\n if (!columnInfo) {\n throw new Error(\"Expected column to be defined.\");\n }\n return new LESuccess(_.orderBy(selectedIndexes, [columnInfo.getValue], direction));\n }\n else {\n return new LESuccess(selectedIndexes);\n }\n});\nexport const selectCurrentDerivedTable = createSelector(selectCurrentDatabaseName, selectCurrentTableName, deriveTables, (databaseName, tableName, tables) => {\n if (databaseName) {\n const tablesPerDatabase = tables[databaseName];\n if (tablesPerDatabase && tablesPerDatabase.isSuccess()) {\n return _.find(tablesPerDatabase.value, ({ table }) => table.databaseName === databaseName &&\n table.tableName === tableName);\n }\n }\n});\nexport const selectCurrentDerivedDatabase = createSelector(selectCurrentDatabaseName, deriveDatabases, (databaseName, databases) => {\n return _.find(databases, ({ database }) => database.databaseName === databaseName);\n});\nexport const selectCurrentView = createSelector(selectCurrentDatabaseName, selectCurrentTableName, selectViews, (databaseName, tableName, views) => {\n if (databaseName) {\n const viewsPerDatabase = views[databaseName];\n if (viewsPerDatabase && viewsPerDatabase.isSuccess()) {\n return _.find(viewsPerDatabase.value, (view) => view.tableName === tableName);\n }\n }\n});\nfunction isAnyItemLoading(schema) {\n Object.values(schema).forEach((item) => {\n if (item && isLoadingError(item)) {\n if (item.isLoading()) {\n return true;\n }\n }\n });\n return false;\n}\nfunction anyItemNeedsLoading(schema) {\n Object.values(schema).forEach((item) => {\n if (item && isLoadingError(item)) {\n if (item.isError() || item.isLoading) {\n return true;\n }\n }\n });\n return false;\n}\n// We return `true` if ANY of the stores that the Schema Explorer\n// depends on are in the loading state.\nexport const selectSchemaExplorerLoading = (s) => isAnyItemLoading(s.schema.structure) ||\n s.schema.statisticsLoading ||\n selectTopologyLoading(s) ||\n selectLoadingOrInitial(s.clusterMetadata.clusterStatistics) ||\n selectLoadingOrInitial(s.pipelines.pipelines) ||\n selectLoadingOrInitial(s.clusterMetadata.partitions);\n// We return `true` if ANY of the stores that the Schema Explorer\n// depends on are in the initial or error state, because that means we should\n// issue a reload action.\nexport const selectSchemaExplorerNeedsLoading = (s) => !anyItemNeedsLoading(s.schema.structure) ||\n !(s.schema.statisticsLoading || s.schema.statisticsLoaded) ||\n selectIsInitial(s.topology.topology) ||\n selectIsError(s.topology.topology) ||\n selectIsInitial(s.clusterMetadata.clusterStatistics) ||\n !!selectError(s.clusterMetadata.clusterStatistics) ||\n selectIsInitial(s.pipelines.pipelines) ||\n selectIsInitial(s.clusterMetadata.partitions);\n// We return `true` if and only if all of the stores that the Schema\n// Explorer depends on have been loaded.\nexport const selectSchemaExplorerLoaded = (s) => s.schema.structure.databases.isSuccess() &&\n selectIsSuccess(s.topology.topology) &&\n selectIsSuccess(s.clusterMetadata.clusterStatistics) &&\n selectIsSuccess(s.pipelines.pipelines) &&\n selectIsSuccess(s.clusterMetadata.partitions);\n// We return the first error we find that may have happened while getting the\n// information that the SChema Explorer depends on.\nexport const selectSchemaExplorerError = (s) => s.schema.structureError ||\n s.schema.statisticsError ||\n selectPipelinesError(s) ||\n selectTopologyError(s) ||\n selectClusterStatisticsError(s) ||\n selectError(s.clusterMetadata.partitions);\n// We look at all of the stores that the Schema Explorer depends on and\n// return the date that is more recent.\nexport const selectSchemaExplorerLastUpdate = (s) => _.max([\n s.schema.lastStatisticsUpdate,\n selectTopologyLastUpdate(s),\n selectLastUpdate(s.clusterMetadata.clusterStatistics),\n selectLastUpdate(s.clusterMetadata.partitions),\n]);\nexport const selectSchemaSummaryLoading = (s) => selectLoadingOrInitial(s.schema.summary);\nexport const selectSchemaSummaryLastUpdate = (s) => selectLastUpdate(s.schema.summary);\nexport const selectSchemaSummaryError = (s) => selectError(s.schema.summary);\n// This method returns the entire state that the Schema Explorer depends\n// on. If the schema explorer data has not yet been loaded, then it returns\n// `undefined`.\nexport const selectSchemaFullPayload = (s) => {\n const clusterStatistics = selectPayload(s.clusterMetadata.clusterStatistics);\n const topology = selectPayload(s.topology.topology);\n const partitions = selectPayload(s.clusterMetadata.partitions);\n if (!clusterStatistics ||\n !topology ||\n !selectSchemaExplorerLoaded(s) ||\n !partitions) {\n return;\n }\n return {\n structure: s.schema.structure,\n clusterStatistics,\n indexes: s.schema.indexes,\n topology,\n partitions,\n };\n};\nexport const selectSampleData = (s) => {\n return selectPayload(s.schema.sampleData);\n};\nexport const selectSampleDataError = (s) => {\n return selectError(s.schema.sampleData);\n};\nexport const selectSchemaPipelinesSort = selectSchemaSort(\"PIPELINE\");\nexport const selectSchemaSortedPipelines = createSelector(selectCurrentDatabaseName, selectPipelines, selectSchemaPipelinesSort, (currentDatabase, pipelines, sort) => {\n if (pipelines) {\n const selectedPipelines = _.filter(pipelines, (pipeline) => pipeline.databaseName === currentDatabase);\n if (sort) {\n const { direction, columnId } = sort;\n const columnInfo = _.find(PIPELINES_COLUMNS, (col) => col.id === columnId);\n if (!columnInfo) {\n throw new Error(\"Expected column to be defined.\");\n }\n return _.orderBy(selectedPipelines, [columnInfo.getValue], direction);\n }\n else {\n return selectedPipelines;\n }\n }\n return [];\n});\nexport const deriveDatabasesMetadata = createSelector(selectDatabaseNames, derivePartitions, (databaseNames, derivedPartitions) => {\n if (databaseNames && derivedPartitions) {\n return _.map(databaseNames, (databaseName) => {\n const databasePartitions = _.filter(derivedPartitions, {\n databaseName,\n });\n return {\n databaseName,\n status: deriveDatabaseStatus(databaseName, databasePartitions),\n impacted: deriveDatabaseImpacted(databaseName, databasePartitions),\n };\n });\n }\n});\nexport const selectAnyDatabasesOfflineWithoutPartitions = createSelector(deriveDatabases, derivePartitions, (derivedDatabases, derivedParititons) => {\n const dataPartitions = _.filter(derivedParititons, (partition) => partition.kind === \"data\" &&\n partition.partitionInstances.length > 0);\n const withPartitions = _.uniqBy(dataPartitions, \"databaseName\").map((partition) => partition.databaseName);\n if (derivedDatabases) {\n const numWithoutPartitionsAndOffline = count(derivedDatabases, (db) => db.derived.status === \"offline\" &&\n !withPartitions.includes(db.database.databaseName));\n return numWithoutPartitionsAndOffline > 0;\n }\n return false;\n});\n","import { NonLoggableError } from \"util/logging\";\nconst WEB_API_URL = \"https://www.singlestore.com/api/v1\";\nconst apiPath = function (parts) {\n return `${parts.map(encodeURIComponent).join(\"/\")}/`; // bifrost api paths have trailing slashes\n};\nconst makeWebApiRequest = function (pathParts, data, method) {\n if (!method) {\n method = data ? \"POST\" : \"GET\";\n }\n return fetch(`${WEB_API_URL}/${apiPath(pathParts)}`, {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n method,\n body: JSON.stringify(data),\n }).then((res) => {\n if (res.ok) {\n return res.json();\n }\n else {\n throw new NonLoggableError(JSON.stringify(res));\n }\n }, (res) => {\n throw new Error(res);\n });\n};\nexport const makeWebPing = () => {\n return makeWebApiRequest([\"ping\"]);\n};\n","import { makeWebPing } from \"data/memsql-web-api\";\nexport const webPing = () => (dispatch) => {\n if (window.DISABLE_UI_TELEMETRY) {\n return;\n }\n makeWebPing()\n .then(({ success }) => {\n if (success) {\n dispatch({\n type: \"WEB_PING\",\n error: false,\n payload: { date: new Date() },\n });\n }\n else {\n dispatch({\n type: \"WEB_PING\",\n error: true,\n payload: { date: new Date(), message: \"Ping failed\" },\n });\n }\n })\n .catch((err) => dispatch({\n type: \"WEB_PING\",\n error: true,\n payload: {\n date: new Date(),\n message: err.message,\n },\n }));\n};\n","import SqlString from \"sqlstring\";\nexport const SQL_LEAVES_QUERY = `\n SELECT\n HOST AS host,\n PORT AS port,\n AVAILABILITY_GROUP AS availabilityGroup,\n PAIR_HOST AS pairHost,\n PAIR_PORT AS pairPort,\n STATE AS state,\n OPENED_CONNECTIONS AS openedConnections,\n AVERAGE_ROUNDTRIP_LATENCY AS averageLatency\n FROM\n INFORMATION_SCHEMA.LEAVES;\n`;\nexport const SQL_AGGREGATORS_QUERY = `\n SELECT\n HOST AS host,\n PORT AS port,\n MASTER_AGGREGATOR AS masterAggregator,\n STATE AS state,\n OPENED_CONNECTIONS AS openedConnections,\n AVERAGE_ROUNDTRIP_LATENCY AS averageLatency\n FROM\n INFORMATION_SCHEMA.AGGREGATORS;\n`;\nfunction SQL_WHERE_IP_ADDR(ipAddress) {\n if (ipAddress) {\n return SqlString.format(\"WHERE IP_ADDR = ?\", [ipAddress]);\n }\n}\n// We read CFS_QUOTA_NS or CFS_PERIOD_NS as unsigned since the engine doesn't\n// support unsigned big ints in information_schema causing this column to return\n// negative numbers for really large ints.\nexport const SQL_NODES_LIVE_CPU = (ipAddress) => `\n SELECT\n IP_ADDR AS ipAddress,\n CONCAT(IP_ADDR, \":\", PORT) AS nodeAddress,\n MEMSQL_TOTAL_CUMULATIVE_NS AS memsqlTotalUsedCumulativeNs,\n CAST(CFS_QUOTA_NS AS UNSIGNED) AS cgroupQuotaNs,\n CAST(CFS_PERIOD_NS AS UNSIGNED) AS cgroupPeriodNs,\n TIMESTAMP_NS AS timestampNs,\n NUM_CPUS AS numCpus\n FROM\n INFORMATION_SCHEMA.MV_SYSINFO_CPU\n ${SQL_WHERE_IP_ADDR(ipAddress)}\n`;\n// We use `MEMSQL_B` as opposed to `HOST_USED_B` since we need per-node memory\n// used.\n// We read CGROUP_TOTAL_B as unsigned since the engine doesn't support unsigned\n// big ints in information_schema causing this column to return negative numbers\n// for really large ints.\nexport const SQL_NODES_LIVE_MEMORY = (ipAddress) => `\n SELECT\n IP_ADDR AS ipAddress,\n CONCAT(IP_ADDR, \":\", PORT) AS nodeAddress,\n MEMSQL_B AS usedMemoryB,\n HOST_TOTAL_B AS totalMemoryB,\n CAST(CGROUP_TOTAL_B AS UNSIGNED) AS cgroupMemoryLimitB,\n TIMESTAMP_NS AS timestampNs\n FROM\n INFORMATION_SCHEMA.MV_SYSINFO_MEM\n ${SQL_WHERE_IP_ADDR(ipAddress)}\n`;\nexport const SQL_NODES_LIVE_DISK = (ipAddress) => `\n SELECT\n IP_ADDR AS ipAddress,\n PORT AS port,\n CONCAT(IP_ADDR, \":\", PORT) AS nodeAddress,\n SUM(MOUNT_TOTAL_B) AS totalDiskB,\n SUM(MOUNT_USED_B) AS usedDiskB\n FROM\n INFORMATION_SCHEMA.MV_SYSINFO_DISK\n ${SQL_WHERE_IP_ADDR(ipAddress)}\n GROUP BY\n ipAddress, port\n`;\n","import { LEError, LELoading, LESuccess, } from \"@single-js/common/util/loading-error\";\nimport { nullableToMaybe } from \"@single-js/common/util/nullable\";\nimport { multiSelect } from \"@single-js/common/util/query\";\nimport BigNumber from \"@single-js/common/vendor/bignumber.js/bignumber\";\nimport { buildTopologyAction, } from \"data/actions/topology\";\nimport { getEmptyNodeLiveMonitoringMetrics, } from \"data/models\";\nimport { differenceInSeconds } from \"date-fns\";\nimport _ from \"lodash\";\nimport { from, merge, of } from \"rxjs\";\nimport { logError } from \"util/logging\";\nimport * as logging from \"util/logging\";\nimport { makeActionCreator } from \"worker/api/helpers\";\nimport { SQL_AGGREGATORS_QUERY, SQL_LEAVES_QUERY, SQL_NODES_LIVE_CPU, SQL_NODES_LIVE_DISK, SQL_NODES_LIVE_MEMORY, } from \"worker/api/topology-queries\";\n(\"@single-js/common/worker/api\");\nexport function buildNodes([rawLeaves, rawAggregators]) {\n const leaves = _.map(rawLeaves, (rawLeaf) => ({\n host: rawLeaf.host,\n port: rawLeaf.port,\n state: rawLeaf.state,\n openedConnections: rawLeaf.openedConnections,\n averageLatency: rawLeaf.averageLatency || undefined,\n availabilityGroup: rawLeaf.availabilityGroup,\n role: \"LEAF\",\n pairHost: rawLeaf.pairHost,\n pairPort: nullableToMaybe(rawLeaf.pairPort),\n liveMonitoring: getEmptyNodeLiveMonitoringMetrics(),\n }));\n const aggregators = _.map(rawAggregators, (rawAggregator) => ({\n host: rawAggregator.host,\n port: rawAggregator.port,\n state: rawAggregator.state,\n openedConnections: rawAggregator.openedConnections,\n averageLatency: rawAggregator.averageLatency || undefined,\n role: rawAggregator.masterAggregator.eq(1)\n ? \"MASTER_AGGREGATOR\"\n : \"AGGREGATOR\",\n liveMonitoring: getEmptyNodeLiveMonitoringMetrics(),\n }));\n return _.concat(leaves, aggregators);\n}\nexport const fetchTopologyData = (conn) => {\n return multiSelect(conn, { sql: SQL_LEAVES_QUERY }, { sql: SQL_AGGREGATORS_QUERY });\n};\nexport const queryTopology = makeActionCreator({\n name: \"queryTopology\",\n handle: (ctx) => {\n const $loading = of({\n type: \"TOPOLOGY\",\n error: false,\n payload: { loading: true },\n });\n const startDate = new Date();\n const $compute = from(ctx.manager\n .getPooledConnection()\n .then((conn) => fetchTopologyData(conn)\n .then(buildNodes)\n .then((nodes) => buildTopologyAction({\n nodes,\n deltaTimeS: differenceInSeconds(new Date(), startDate),\n }))\n .catch((err) => {\n logError(err);\n return {\n type: \"TOPOLOGY\",\n error: true,\n payload: err.message,\n };\n })\n .finally(() => conn.release()))\n .catch((err) => {\n return {\n type: \"TOPOLOGY\",\n error: true,\n payload: err.message,\n };\n }));\n return merge($loading, $compute);\n },\n});\n// This function calculates the CPU usage for a given node given the results for\n// the previous and the current mv_sysinfo_cpu query.\n// ** This function has a few EARLY RETURNS and throws some errors to handle\n// some special cases. **\nfunction calculateNodeCpuUsagePercent(previous, current) {\n let nodeCpuUsage;\n let nodeCpuLimit;\n if (current.memsqlTotalUsedCumulativeNs === null) {\n throw new Error(\"current.totalUsedCumulativeNs should not be null\");\n }\n if (current.timestampNs === null) {\n throw new Error(\"current.timestampNs should not be null\");\n }\n if (previous) {\n if (previous.memsqlTotalUsedCumulativeNs === null) {\n throw new Error(\"previous.totalUsedCumulativeNs should not be null\");\n }\n if (previous.timestampNs === null) {\n throw new Error(\"previous.timestampNs should not be null\");\n }\n if (current.numCpus === null) {\n throw new Error(\"current.numCpus should not be null\");\n }\n // nodeCpuUsage is defined in number of cpu seconds per second\n nodeCpuUsage = current.memsqlTotalUsedCumulativeNs\n .minus(previous.memsqlTotalUsedCumulativeNs)\n .dividedBy(current.timestampNs.minus(previous.timestampNs));\n nodeCpuLimit = current.numCpus;\n // This node's CPU usage is being managed via a cgroup\n if (current.cgroupQuotaNs) {\n if (current.cgroupPeriodNs === null) {\n throw new Error(\"sqlNodesLiveCPU.cgroupPeriodNs should not be null\");\n }\n // If there is a previous value for cgroupQuotaNs and it is\n // different from the current one, we make `totalCpuUsagePercent`\n // undefined since a valid comparison cannot be made. An example\n // problematic case would be if the quota increases, then the delta\n // cpu time could be higher than the previous quota would have\n // allowed and we'd get a value over 100%.\n if (previous.cgroupQuotaNs !== null &&\n !current.cgroupQuotaNs.eq(previous.cgroupQuotaNs)) {\n return new LELoading();\n }\n else {\n // If the quota forms a tighter bound on CPU than the number of\n // physical CPUs, use that bound as the limit instead.\n nodeCpuLimit = BigNumber.min(nodeCpuLimit, current.cgroupQuotaNs.dividedBy(current.cgroupPeriodNs));\n }\n }\n }\n else {\n // If there are previous results, but not for this specific node, we\n // have an unknown CPU value.\n logging.log(\"error\", `Found no previous CPU usage value for node ${current.nodeAddress}.`);\n return new LEError();\n }\n if (nodeCpuLimit === undefined) {\n return new LESuccess(nodeCpuUsage.toNumber());\n }\n else {\n return new LESuccess(nodeCpuUsage.dividedBy(nodeCpuLimit).toNumber());\n }\n}\nfunction buildNodesLiveMonitoringAction({ results: { sqlNodesLiveCPU, sqlNodesLiveMemory, sqlNodesLiveDisk }, previousResults, }) {\n const payload = {};\n // This function updates the payload for a given node address.\n function updatePayload(nodeAddress, newPartialPayload) {\n payload[nodeAddress] = {\n ...payload[nodeAddress],\n ...newPartialPayload,\n };\n }\n // Add CPU Usage to each node.\n _.forEach(sqlNodesLiveCPU, (current) => {\n let totalCpuUsagePercent = new LELoading();\n // If there are no previous results, we just let `totalCpuUsagePercent`\n // default to `undefined` (loading).\n if (previousResults) {\n const previous = _.find(previousResults.sqlNodesLiveCPU, (row) => row.nodeAddress === current.nodeAddress);\n totalCpuUsagePercent = calculateNodeCpuUsagePercent(previous, current);\n }\n updatePayload(current.nodeAddress, {\n totalCpuUsagePercent,\n });\n });\n // Add used and total system memory to each host.\n _.forEach(sqlNodesLiveMemory, (sqlNodesLiveMemoryRow) => {\n if (sqlNodesLiveMemoryRow.usedMemoryB === null) {\n throw new Error(\"sqlNodesLiveMemoryRow.memoryLimitB should not be null\");\n }\n if (sqlNodesLiveMemoryRow.totalMemoryB === null) {\n throw new Error(\"sqlNodesLiveMemoryRow.totalMemoryB should not be null\");\n }\n // If CGROUP_TOTAL_B in MV_SYSINFO_MEM is larger or equal than\n // HOST_TOTAL_B, this node's memory usage is not being limited by the\n // cgroup and so we just take the host's total memory and use that as\n // the total.\n let memoryLimitB = new LELoading();\n if (sqlNodesLiveMemoryRow.cgroupMemoryLimitB === null) {\n memoryLimitB = new LESuccess(sqlNodesLiveMemoryRow.totalMemoryB);\n }\n else {\n memoryLimitB = new LESuccess(BigNumber.min(sqlNodesLiveMemoryRow.cgroupMemoryLimitB, sqlNodesLiveMemoryRow.totalMemoryB));\n }\n updatePayload(sqlNodesLiveMemoryRow.nodeAddress, {\n memoryLimitB,\n usedMemoryB: new LESuccess(sqlNodesLiveMemoryRow.usedMemoryB),\n });\n });\n _.forEach(sqlNodesLiveDisk, (sqlNodesLiveDiskRow) => {\n if (sqlNodesLiveDiskRow.totalDiskB === null) {\n throw new Error(\"sqlNodesLiveDiskRow.totalDiskB should not be null\");\n }\n if (sqlNodesLiveDiskRow.usedDiskB === null) {\n throw new Error(\"sqlNodesLiveDiskRow.usedDiskB should not be null\");\n }\n updatePayload(sqlNodesLiveDiskRow.nodeAddress, {\n usedDiskB: new LESuccess(sqlNodesLiveDiskRow.usedDiskB),\n totalDiskB: new LESuccess(sqlNodesLiveDiskRow.totalDiskB),\n });\n });\n return {\n type: \"NODES_LIVE_MONITORING\",\n error: false,\n payload,\n };\n}\nconst NODES_LIVE_MONITORING_SAGA_ID = \"nodes-live-monitoring\";\nconst NODES_LIVE_MONITORING_SAGA_INTERVAL_MS = 1000;\nexport const nodesLiveMonitoringStart = makeActionCreator({\n name: \"nodesLiveMonitoringStart\",\n handle(ctx, args) {\n const ipAddress = args && args.ipAddress;\n return ctx.sagas.register(NODES_LIVE_MONITORING_SAGA_ID, (observer) => {\n let running = true;\n let timeoutId;\n const emit = (action) => running && observer.next(action);\n let previousResults;\n const liveMonitor = () => {\n return ctx.manager\n .getPooledConnection()\n .then((conn) => {\n multiSelect(conn, {\n sql: SQL_NODES_LIVE_CPU(ipAddress),\n }, {\n sql: SQL_NODES_LIVE_MEMORY(ipAddress),\n }, {\n sql: SQL_NODES_LIVE_DISK(ipAddress),\n })\n .then((results) => {\n const resultsObj = {\n sqlNodesLiveCPU: results[0],\n sqlNodesLiveMemory: results[1],\n sqlNodesLiveDisk: results[2],\n };\n emit(buildNodesLiveMonitoringAction({\n previousResults,\n results: resultsObj,\n }));\n previousResults = resultsObj;\n })\n .catch((err) => {\n logError(err);\n emit({\n type: \"NODES_LIVE_MONITORING\",\n error: true,\n payload: err.message,\n });\n })\n .finally(() => {\n conn.release();\n });\n })\n .catch((err) => {\n emit({\n type: \"NODES_LIVE_MONITORING\",\n error: true,\n payload: err.message,\n });\n })\n .finally(() => {\n if (running) {\n timeoutId = setTimeout(liveMonitor, NODES_LIVE_MONITORING_SAGA_INTERVAL_MS);\n }\n });\n };\n liveMonitor();\n return () => {\n running = false;\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n };\n });\n },\n});\nexport const nodesLiveMonitoringStop = makeActionCreator({\n name: \"nodesLiveMonitoringStop\",\n handle(ctx) {\n ctx.sagas.stop(NODES_LIVE_MONITORING_SAGA_ID);\n return of({\n type: \"NODES_LIVE_MONITORING_STOP\",\n error: false,\n payload: {},\n });\n },\n});\n","'use strict'\nvar inherits = require('inherits')\nvar MD5 = require('md5.js')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Base = require('cipher-base')\n\nfunction Hash (hash) {\n Base.call(this, 'digest')\n\n this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n alg = alg.toLowerCase()\n if (alg === 'md5') return new MD5()\n if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()\n\n return new Hash(sha(alg))\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// 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 permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('buffer').Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n","module.exports = function xor (a, b) {\n var length = Math.min(a.length, b.length)\n var buffer = new Buffer(length)\n\n for (var i = 0; i < length; ++i) {\n buffer[i] = a[i] ^ b[i]\n }\n\n return buffer\n}\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nconst inherits = require('inherits');\nconst Reporter = require('../base/reporter').Reporter;\nconst Buffer = require('safer-buffer').Buffer;\n\nfunction DecoderBuffer(base, options) {\n Reporter.call(this, options);\n if (!Buffer.isBuffer(base)) {\n this.error('Input not Buffer');\n return;\n }\n\n this.base = base;\n this.offset = 0;\n this.length = base.length;\n}\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\n\nDecoderBuffer.isDecoderBuffer = function isDecoderBuffer(data) {\n if (data instanceof DecoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n Buffer.isBuffer(data.base) &&\n data.constructor.name === 'DecoderBuffer' &&\n typeof data.offset === 'number' &&\n typeof data.length === 'number' &&\n typeof data.save === 'function' &&\n typeof data.restore === 'function' &&\n typeof data.isEmpty === 'function' &&\n typeof data.readUInt8 === 'function' &&\n typeof data.skip === 'function' &&\n typeof data.raw === 'function';\n\n return isCompatible;\n};\n\nDecoderBuffer.prototype.save = function save() {\n return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };\n};\n\nDecoderBuffer.prototype.restore = function restore(save) {\n // Return skipped data\n const res = new DecoderBuffer(this.base);\n res.offset = save.offset;\n res.length = this.offset;\n\n this.offset = save.offset;\n Reporter.prototype.restore.call(this, save.reporter);\n\n return res;\n};\n\nDecoderBuffer.prototype.isEmpty = function isEmpty() {\n return this.offset === this.length;\n};\n\nDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n if (this.offset + 1 <= this.length)\n return this.base.readUInt8(this.offset++, true);\n else\n return this.error(fail || 'DecoderBuffer overrun');\n};\n\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n if (!(this.offset + bytes <= this.length))\n return this.error(fail || 'DecoderBuffer overrun');\n\n const res = new DecoderBuffer(this.base);\n\n // Share reporter state\n res._reporterState = this._reporterState;\n\n res.offset = this.offset;\n res.length = this.offset + bytes;\n this.offset += bytes;\n return res;\n};\n\nDecoderBuffer.prototype.raw = function raw(save) {\n return this.base.slice(save ? save.offset : this.offset, this.length);\n};\n\nfunction EncoderBuffer(value, reporter) {\n if (Array.isArray(value)) {\n this.length = 0;\n this.value = value.map(function(item) {\n if (!EncoderBuffer.isEncoderBuffer(item))\n item = new EncoderBuffer(item, reporter);\n this.length += item.length;\n return item;\n }, this);\n } else if (typeof value === 'number') {\n if (!(0 <= value && value <= 0xff))\n return reporter.error('non-byte EncoderBuffer value');\n this.value = value;\n this.length = 1;\n } else if (typeof value === 'string') {\n this.value = value;\n this.length = Buffer.byteLength(value);\n } else if (Buffer.isBuffer(value)) {\n this.value = value;\n this.length = value.length;\n } else {\n return reporter.error('Unsupported type: ' + typeof value);\n }\n}\nexports.EncoderBuffer = EncoderBuffer;\n\nEncoderBuffer.isEncoderBuffer = function isEncoderBuffer(data) {\n if (data instanceof EncoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n data.constructor.name === 'EncoderBuffer' &&\n typeof data.length === 'number' &&\n typeof data.join === 'function';\n\n return isCompatible;\n};\n\nEncoderBuffer.prototype.join = function join(out, offset) {\n if (!out)\n out = Buffer.alloc(this.length);\n if (!offset)\n offset = 0;\n\n if (this.length === 0)\n return out;\n\n if (Array.isArray(this.value)) {\n this.value.forEach(function(item) {\n item.join(out, offset);\n offset += item.length;\n });\n } else {\n if (typeof this.value === 'number')\n out[offset] = this.value;\n else if (typeof this.value === 'string')\n out.write(this.value, offset);\n else if (Buffer.isBuffer(this.value))\n this.value.copy(out, offset);\n offset += this.length;\n }\n\n return out;\n};\n","var parse = require('../parse/index.js')\n\n/**\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added\n * @returns {Date} the new date with the days added\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * var result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nfunction addDays (dirtyDate, dirtyAmount) {\n var date = parse(dirtyDate)\n var amount = Number(dirtyAmount)\n date.setDate(date.getDate() + amount)\n return date\n}\n\nmodule.exports = addDays\n","var parse = require('../parse/index.js')\n\n/**\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added\n * @returns {Date} the new date with the milliseconds added\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * var result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nfunction addMilliseconds (dirtyDate, dirtyAmount) {\n var timestamp = parse(dirtyDate).getTime()\n var amount = Number(dirtyAmount)\n return new Date(timestamp + amount)\n}\n\nmodule.exports = addMilliseconds\n","var getISOYear = require('../get_iso_year/index.js')\nvar startOfISOWeek = require('../start_of_iso_week/index.js')\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of an ISO year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * var result = startOfISOYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nfunction startOfISOYear (dirtyDate) {\n var year = getISOYear(dirtyDate)\n var fourthOfJanuary = new Date(0)\n fourthOfJanuary.setFullYear(year, 0, 4)\n fourthOfJanuary.setHours(0, 0, 0, 0)\n var date = startOfISOWeek(fourthOfJanuary)\n return date\n}\n\nmodule.exports = startOfISOYear\n","var parse = require('../parse/index.js')\n\n/**\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * @param {Date|String|Number} dateLeft - the first date to compare\n * @param {Date|String|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * var result = compareAsc(\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * )\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * var result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\nfunction compareAsc (dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft)\n var timeLeft = dateLeft.getTime()\n var dateRight = parse(dirtyDateRight)\n var timeRight = dateRight.getTime()\n\n if (timeLeft < timeRight) {\n return -1\n } else if (timeLeft > timeRight) {\n return 1\n } else {\n return 0\n }\n}\n\nmodule.exports = compareAsc\n","import { Icon } from \"@single-js/common/components/icon/icon\";\nimport { renderLoadingError } from \"@single-js/common/components/render-loading-error/render-loading-error\";\nimport { FakeLinkCell } from \"@single-js/common/components/super-table/super-table\";\nimport { humanizeNodeRole } from \"@single-js/common/core/sql/topology/models-topology\";\nimport NumberFormatter from \"@single-js/common/util/number-formatter\";\nimport { LONG_EM_DASH } from \"@single-js/common/util/symbols\";\nimport classNames from \"classnames\";\nimport { formatNodeAddress, getNodeDiskUsage, getNodeMemoryUsage, getNodePair, getPartitionInstanceName, getPartitionInstancePartitionName, getPartitionInstanceType, } from \"data/models\";\nimport { PARTITION_INSTANCE_LOG_COLUMN, PARTITION_INSTANCE_ROLE_COLUMN, PARTITION_INSTANCE_STATE_COLUMN, } from \"memsql/schema-column-info\";\nimport * as React from \"react\";\nimport { titleize } from \"underscore.string\";\nimport InternalLink from \"view/common/internal-link\";\nimport { formatNodePartitionInstanceStatus, getNodeStateLevel, } from \"view/common/models/topology\";\nimport { RatioMetricCell } from \"view/common/ratio-metric-cell\";\nimport \"./columns-info.scss\";\nconst formatNodeState = (node) => {\n let icon;\n const nodeStateLevel = getNodeStateLevel(node);\n const classes = classNames(\"node-state-cell\", {\n error: nodeStateLevel === \"error\",\n });\n let state = undefined;\n switch (node.state) {\n case \"online\":\n icon = \"check-circle\";\n break;\n case \"offline\":\n icon = \"exclamation-triangle\";\n break;\n case \"detached\":\n case \"attaching\":\n default:\n icon = \"exclamation-circle\";\n }\n if (nodeStateLevel === \"warning\") {\n state = \"warn\";\n }\n else if (nodeStateLevel === \"error\" || nodeStateLevel === \"success\") {\n state = nodeStateLevel;\n }\n return (React.createElement(\"div\", { className: classes },\n React.createElement(Icon, { icon: icon, size: \"sm\", iconType: \"regular\", rightMargin: true, state: state }),\n titleize(node.state)));\n};\nconst NODE_STATE_COLUMN = {\n id: \"nodeState\",\n title: \"State\",\n formatter: formatNodeState,\n getValue: (node) => node.state,\n};\nconst NODE_PARTITION_INSTANCE_STATUS = {\n id: \"nodePartitionInstanceStatus\",\n title: \"Partition Instance Status\",\n defaultMinWidth: 250,\n formatter: (node) => formatNodePartitionInstanceStatus(node),\n getValue: (node) => node.partitionInstanceStatus,\n};\nconst NODE_ROLE_COLUMN = {\n id: \"nodeRole\",\n title: \"Role\",\n formatter: (node) => humanizeNodeRole(node.role),\n getValue: (node) => {\n switch (node.role) {\n case \"MASTER_AGGREGATOR\":\n return 2;\n case \"AGGREGATOR\":\n return 1;\n case \"LEAF\":\n return 0;\n default:\n return -1;\n }\n },\n};\nconst NODE_AVAILABILITY_GROUP_COLUMN = {\n id: \"nodeAvailabilityGroup\",\n title: \"Availability Group\",\n textAlign: \"right\",\n formatter: (node) => node.role === \"LEAF\" ? node.availabilityGroup.toString() : LONG_EM_DASH,\n getValue: (node) => node.role === \"LEAF\" ? node.availabilityGroup.toNumber() : undefined, // PLAT-3189\n};\nconst NODE_AVAILABILITY_PAIR_COLUMN = {\n id: \"nodePair\",\n title: \"Availability Pair\",\n formatter: (node) => {\n const nodePair = getNodePair(node);\n if (nodePair) {\n return (React.createElement(InternalLink, { routeInfo: {\n name: \"cluster.nodes.node\",\n params: {\n nodeAddress: nodePair,\n },\n }, category: \"schema-explorer\", clusterLink: true, onClick: \n /* stop propagation to the cell click event */ (e) => e.stopPropagation() }, nodePair));\n }\n else {\n return LONG_EM_DASH;\n }\n },\n getValue: (node) => getNodePair(node),\n};\nconst NODE_CONNECTIONS_COLUMN = {\n id: \"nodeConnections\",\n title: \"Open Connections\",\n textAlign: \"right\",\n formatter: (node) => node.openedConnections.toString(),\n // PLAT-3189\n getValue: (node) => node.openedConnections.toNumber(),\n};\nconst NODE_LATENCY_COLUMN = {\n id: \"nodeLatency\",\n title: \"Average Latency\",\n textAlign: \"right\",\n formatter: (node) => node.averageLatency\n ? NumberFormatter.formatDuration(node.averageLatency)\n : \"—\",\n getValue: (node) => node.averageLatency,\n};\nconst NODE_ADDRESS_COLUMN = {\n id: \"nodeHostPort\",\n title: \"Node Address\",\n formatter: (node) => (React.createElement(FakeLinkCell, null, formatNodeAddress(node))),\n // PLAT-3189\n getValue: (node) => node.port.toNumber(),\n};\nexport const NODE_CPU_USAGE_TIP = \"Node CPU usage displays the percentage of available CPU being used by the SingleStore DB process on this node and is limited by cgroup configuration.\";\nexport const NODE_CPU_USAGE_COLUMN = {\n id: \"nodeTotalCpuUsage\",\n title: \"CPU Usage\",\n sort: \"DISABLED\",\n description: NODE_CPU_USAGE_TIP,\n formatter: (node) => {\n const renderNodeCpuUsage = (cpuUsage) => (React.createElement(RatioMetricCell, { labelPosition: \"top\", value: cpuUsage }));\n return renderLoadingError(node.liveMonitoring.totalCpuUsagePercent, renderNodeCpuUsage, { cell: true });\n },\n getValue: (node) => {\n // If loading, return undefined. If error, return null.\n if (node.liveMonitoring.totalCpuUsagePercent.isSuccess()) {\n return node.liveMonitoring.totalCpuUsagePercent.value;\n }\n else if (node.liveMonitoring.totalCpuUsagePercent.isLoading()) {\n return undefined;\n }\n else {\n return null;\n }\n },\n};\nexport const NODE_MEMORY_USAGE_TIP = \"Node memory usage displays the percentage of available memory being used by the SingleStore DB process and is limited by cgroup configuration.\";\nexport const NODE_MEMORY_USAGE_COLUMN = {\n id: \"nodeMemoryUsage\",\n title: \"Memory Usage\",\n sort: \"DISABLED\",\n description: NODE_MEMORY_USAGE_TIP,\n formatter: (node) => {\n const renderNodeMemoryUsage = ({ ratio, used, total, }) => {\n const bottomLabel = `${NumberFormatter.formatBytes(used)}/${NumberFormatter.formatBytes(total)}`;\n return (React.createElement(RatioMetricCell, { labelPosition: \"top\", value: ratio, bottomLabel: bottomLabel }));\n };\n return renderLoadingError(getNodeMemoryUsage(node), renderNodeMemoryUsage, { cell: true });\n },\n getValue: (node) => {\n const nodeMemoryUsage = getNodeMemoryUsage(node);\n // If loading, return undefined. If error, return null.\n if (nodeMemoryUsage.isSuccess()) {\n return nodeMemoryUsage.value.ratio;\n }\n else if (nodeMemoryUsage.isLoading()) {\n return undefined;\n }\n else {\n return null;\n }\n },\n};\nexport const NODE_DISK_USAGE_TIP = \"Node disk usage displays the used and available disk space for each mount point being used by this SingleStore DB node.\";\nexport const NODE_DISK_USAGE_COLUMN = {\n id: \"nodeDiskUsage\",\n title: \"Disk Usage\",\n sort: \"DISABLED\",\n description: NODE_DISK_USAGE_TIP,\n formatter: (node) => {\n const renderNodeDiskUsage = ({ ratio, used, total, }) => {\n const bottomLabel = `${NumberFormatter.formatBytes(used)}/${NumberFormatter.formatBytes(total)}`;\n return (React.createElement(RatioMetricCell, { labelPosition: \"top\", value: ratio, bottomLabel: bottomLabel }));\n };\n return renderLoadingError(getNodeDiskUsage(node), renderNodeDiskUsage, {\n cell: true,\n });\n },\n getValue: (node) => {\n const nodeDiskUsage = getNodeDiskUsage(node);\n // If loading, return undefined. If error, return null.\n if (nodeDiskUsage.isSuccess()) {\n return nodeDiskUsage.value.ratio;\n }\n else if (nodeDiskUsage.isLoading()) {\n return undefined;\n }\n else {\n return null;\n }\n },\n};\nexport function getNodesPageColumns(physicalMonitoringEnabled) {\n if (physicalMonitoringEnabled) {\n return [\n NODE_ADDRESS_COLUMN,\n NODE_STATE_COLUMN,\n NODE_PARTITION_INSTANCE_STATUS,\n NODE_ROLE_COLUMN,\n NODE_CPU_USAGE_COLUMN,\n NODE_MEMORY_USAGE_COLUMN,\n NODE_DISK_USAGE_COLUMN,\n ];\n }\n else {\n return [NODE_ADDRESS_COLUMN, NODE_STATE_COLUMN, NODE_ROLE_COLUMN];\n }\n}\nexport const ALL_NODES_PAGE_COLUMNS = [\n NODE_ADDRESS_COLUMN,\n NODE_STATE_COLUMN,\n NODE_PARTITION_INSTANCE_STATUS,\n NODE_ROLE_COLUMN,\n NODE_CPU_USAGE_COLUMN,\n NODE_MEMORY_USAGE_COLUMN,\n NODE_DISK_USAGE_COLUMN,\n NODE_ADDRESS_COLUMN,\n NODE_STATE_COLUMN,\n NODE_ROLE_COLUMN,\n];\nexport function getHostPageColumns(physicalMonitoringEnabled) {\n if (physicalMonitoringEnabled) {\n return [\n NODE_ADDRESS_COLUMN,\n NODE_STATE_COLUMN,\n NODE_ROLE_COLUMN,\n NODE_CPU_USAGE_COLUMN,\n NODE_MEMORY_USAGE_COLUMN,\n NODE_DISK_USAGE_COLUMN,\n ];\n }\n else {\n return [\n NODE_ADDRESS_COLUMN,\n NODE_STATE_COLUMN,\n NODE_ROLE_COLUMN,\n NODE_AVAILABILITY_GROUP_COLUMN,\n NODE_AVAILABILITY_PAIR_COLUMN,\n NODE_CONNECTIONS_COLUMN,\n NODE_LATENCY_COLUMN,\n ];\n }\n}\nexport const ALL_HOST_PAGE_COLUMNS = [\n NODE_ADDRESS_COLUMN,\n NODE_STATE_COLUMN,\n NODE_ROLE_COLUMN,\n NODE_AVAILABILITY_GROUP_COLUMN,\n NODE_AVAILABILITY_PAIR_COLUMN,\n NODE_CONNECTIONS_COLUMN,\n NODE_LATENCY_COLUMN,\n NODE_CPU_USAGE_COLUMN,\n NODE_MEMORY_USAGE_COLUMN,\n NODE_DISK_USAGE_COLUMN,\n];\nexport const NODE_PARTITION_INSTANCE_COLUMNS = [\n {\n id: \"partitionInstancePartitionType\",\n title: \"Type\",\n formatter: getPartitionInstanceType,\n getValue: getPartitionInstanceType,\n defaultMinWidth: 220,\n },\n PARTITION_INSTANCE_STATE_COLUMN,\n {\n id: \"partitionInstancePartitionId\",\n title: \"Partition\",\n formatter: (pi) => (React.createElement(InternalLink, { routeInfo: {\n name: \"cluster.databases.partition\",\n params: {\n databaseName: pi.databaseName,\n partitionName: getPartitionInstanceName(pi),\n },\n }, category: \"schema-explorer\", clusterLink: true, onClick: \n /* stop propagation to the cell click event */ (e) => e.stopPropagation() }, getPartitionInstancePartitionName(pi))),\n getValue: (pi) => getPartitionInstancePartitionName(pi),\n },\n PARTITION_INSTANCE_ROLE_COLUMN,\n PARTITION_INSTANCE_LOG_COLUMN,\n];\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","import toInteger from '../_lib/toInteger/index.js';\nimport toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * var result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\n\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","var MILLISECONDS_IN_MINUTE = 60000;\n\nfunction getDateMillisecondsPart(date) {\n return date.getTime() % MILLISECONDS_IN_MINUTE;\n}\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\n\n\nexport default function getTimezoneOffsetInMilliseconds(dirtyDate) {\n var date = new Date(dirtyDate.getTime());\n var baseTimezoneOffset = Math.ceil(date.getTimezoneOffset());\n date.setSeconds(0, 0);\n var hasNegativeUTCOffset = baseTimezoneOffset > 0;\n var millisecondsPartOfTimezoneOffset = hasNegativeUTCOffset ? (MILLISECONDS_IN_MINUTE + getDateMillisecondsPart(date)) % MILLISECONDS_IN_MINUTE : getDateMillisecondsPart(date);\n return baseTimezoneOffset * MILLISECONDS_IN_MINUTE + millisecondsPartOfTimezoneOffset;\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * var result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * var result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\n\nexport default function compareAsc(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var diff = dateLeft.getTime() - dateRight.getTime();\n\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1; // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}","var parse = require('../parse/index.js')\n\n/**\n * @category Timestamp Helpers\n * @summary Get the milliseconds timestamp of the given date.\n *\n * @description\n * Get the milliseconds timestamp of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the timestamp\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05.123:\n * var result = getTime(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 1330515905123\n */\nfunction getTime (dirtyDate) {\n var date = parse(dirtyDate)\n var timestamp = date.getTime()\n return timestamp\n}\n\nmodule.exports = getTime\n","var defaultShouldError = function defaultShouldError(_ref) {\n var values = _ref.values,\n nextProps = _ref.nextProps,\n initialRender = _ref.initialRender,\n lastFieldValidatorKeys = _ref.lastFieldValidatorKeys,\n fieldValidatorKeys = _ref.fieldValidatorKeys,\n structure = _ref.structure;\n\n if (initialRender) {\n return true;\n }\n\n return !structure.deepEqual(values, nextProps && nextProps.values) || !structure.deepEqual(lastFieldValidatorKeys, fieldValidatorKeys);\n};\n\nexport default defaultShouldError;","var defaultShouldWarn = function defaultShouldWarn(_ref) {\n var values = _ref.values,\n nextProps = _ref.nextProps,\n initialRender = _ref.initialRender,\n lastFieldValidatorKeys = _ref.lastFieldValidatorKeys,\n fieldValidatorKeys = _ref.fieldValidatorKeys,\n structure = _ref.structure;\n\n if (initialRender) {\n return true;\n }\n\n return !structure.deepEqual(values, nextProps && nextProps.values) || !structure.deepEqual(lastFieldValidatorKeys, fieldValidatorKeys);\n};\n\nexport default defaultShouldWarn;","import { Buffer } from \"buffer\";\nimport EventEmitter from \"eventemitter3\";\nexport default class WebsocketWrapper extends EventEmitter {\n constructor(host, port, endpoint, ssl) {\n super();\n this._handleOpen = (evt) => {\n this.emit(\"open\", evt);\n this._opened = true;\n this._flushQueue();\n };\n this._flushQueue = () => {\n if (this._opened) {\n while (this._readQueue.length > 0) {\n this.emit(\"data\", this._readQueue.shift());\n }\n }\n };\n this._handleMessage = (evt) => {\n if (!(evt.data instanceof ArrayBuffer)) {\n throw new Error(\"Expected to receive ArrayBuffer from websocket\");\n }\n if (!this._opened || this._readQueue.length > 0) {\n this._readQueue.push(Buffer.from(evt.data));\n this._flushQueue();\n }\n else {\n this.emit(\"data\", Buffer.from(evt.data));\n }\n };\n this._handleError = (evt) => this.emit(\"error\", evt);\n this._handleClose = (evt) => this.emit(\"end\", evt);\n this.write = (data) => this._ws.send(data);\n this.destroy = () => this._ws.close();\n this.end = () => this._ws.close();\n // Not Implemented\n this.pause = () => { };\n this.resume = () => { };\n this._opened = false;\n this._readQueue = [];\n let proto = \"ws\";\n if (ssl) {\n proto = \"wss\";\n }\n this._ws = new WebSocket(`${proto}://${host}:${port}${endpoint}`);\n this._ws.binaryType = \"arraybuffer\";\n this._ws.onopen = this._handleOpen;\n this._ws.onmessage = this._handleMessage;\n this._ws.onerror = this._handleError;\n this._ws.onclose = this._handleClose;\n }\n}\n","import EventEmitter from \"eventemitter3\";\n\nimport { NonLoggableError } from \"../../util/logging\";\nimport Protocol from \"./protocol/Protocol\";\nimport Query from \"./protocol/sequences/Query\";\nimport SqlString from \"./protocol/SqlString\";\nimport WebSocketWrapper from \"./WebSocketWrapper\";\n\nexport default class Connection extends EventEmitter {\n constructor(options) {\n super();\n\n this.config = options.config;\n\n this._socket = options.socket;\n this._protocol = new Protocol({\n config: this.config,\n connection: this,\n });\n this._connectCalled = false;\n this.state = \"disconnected\";\n this.threadId = null;\n }\n\n static createQuery(sql, values, callback) {\n if (sql instanceof Query) {\n return sql;\n }\n\n let cb = callback;\n let options = {};\n\n if (typeof sql === \"function\") {\n cb = sql;\n return new Query(options, cb);\n }\n\n if (typeof sql === \"object\") {\n for (let prop in sql) {\n options[prop] = sql[prop];\n }\n\n if (typeof values === \"function\") {\n cb = values;\n } else if (values !== undefined) {\n options.values = values;\n }\n\n return new Query(options, cb);\n }\n\n options.sql = sql;\n options.values = values;\n\n if (typeof values === \"function\") {\n cb = values;\n options.values = undefined;\n }\n\n if (cb === undefined && callback !== undefined) {\n throw new TypeError(\n \"argument callback must be a function when provided\"\n );\n }\n\n return new Query(options, cb);\n }\n\n connect(options, callback) {\n if (!callback && typeof options === \"function\") {\n callback = options;\n options = {};\n }\n\n if (!this._connectCalled) {\n this._connectCalled = true;\n\n // Connect via a WebSocket\n this._socket = new WebSocketWrapper(\n this.config.host,\n this.config.port,\n this.config.endpoint,\n this.config.ssl\n );\n\n this._socket.on(\"error\", function (err) {\n // We don't have to do anything with this error, the protocol will\n // raise PROTOCOL_CONNECTION_LOST when it receives the end event.\n // We need this handler since the socket's eventemitter will raise\n // an exception if there is nothing listening to the error event.\n console.error(err);\n });\n\n let connection = this;\n this._protocol.on(\"data\", function (data) {\n connection._socket.write(data);\n });\n this._socket.on(\"data\", function (data) {\n connection._protocol.write(data);\n });\n this._protocol.on(\"end\", function () {\n connection._socket.end();\n });\n this._socket.on(\"end\", function () {\n connection._protocol.end();\n });\n\n this._protocol.on(\"error\", this._handleNetworkError.bind(this));\n this._protocol.on(\n \"connect\",\n this._handleProtocolConnect.bind(this)\n );\n this._protocol.on(\n \"handshake\",\n this._handleProtocolHandshake.bind(this)\n );\n this._protocol.on(\n \"unhandledError\",\n this._handleProtocolError.bind(this)\n );\n this._protocol.on(\"drain\", this._handleProtocolDrain.bind(this));\n this._protocol.on(\"end\", this._handleProtocolEnd.bind(this));\n this._protocol.on(\n \"enqueue\",\n this._handleProtocolEnqueue.bind(this)\n );\n }\n\n this._protocol.handshake(options, callback);\n }\n\n _startTLS() {\n throw new Error(\"TLS not supported by websocket connection\");\n }\n\n beginTransaction(options, callback) {\n if (!callback && typeof options === \"function\") {\n callback = options;\n options = {};\n }\n\n options = options || {};\n options.sql = \"START TRANSACTION\";\n options.values = null;\n\n return this.query(options, callback);\n }\n\n commit(options, callback) {\n if (!callback && typeof options === \"function\") {\n callback = options;\n options = {};\n }\n\n options = options || {};\n options.sql = \"COMMIT\";\n options.values = null;\n\n return this.query(options, callback);\n }\n\n rollback(options, callback) {\n if (!callback && typeof options === \"function\") {\n callback = options;\n options = {};\n }\n\n options = options || {};\n options.sql = \"ROLLBACK\";\n options.values = null;\n\n return this.query(options, callback);\n }\n\n query(sql, values, cb) {\n let query = Connection.createQuery(sql, values, cb);\n query._connection = this;\n\n if (!(typeof sql === \"object\" && \"typeCast\" in sql)) {\n query.typeCast = this.config.typeCast;\n }\n\n if (query.sql) {\n query.sql = this.format(query.sql, query.values);\n }\n\n this._implyConnect();\n\n return this._protocol._enqueue(query);\n }\n\n ping(options, callback) {\n if (!callback && typeof options === \"function\") {\n callback = options;\n options = {};\n }\n\n this._implyConnect();\n this._protocol.ping(options, callback);\n }\n\n statistics(options, callback) {\n if (!callback && typeof options === \"function\") {\n callback = options;\n options = {};\n }\n\n this._implyConnect();\n this._protocol.stats(options, callback);\n }\n\n end(options, callback) {\n let cb = callback;\n let opts = options;\n\n if (!callback && typeof options === \"function\") {\n cb = options;\n opts = null;\n }\n\n // create custom options reference\n opts = Object.create(opts || null);\n\n if (opts.timeout === undefined) {\n // default timeout of 30 seconds\n opts.timeout = 30000;\n }\n\n this._implyConnect();\n this._protocol.quit(opts, cb);\n }\n\n destroy() {\n this.state = \"disconnected\";\n this._implyConnect();\n this._socket.destroy();\n this._protocol.destroy();\n }\n\n pause() {\n this._socket.pause();\n this._protocol.pause();\n }\n\n resume() {\n this._socket.resume();\n this._protocol.resume();\n }\n\n escape(value) {\n return SqlString.escape(value, false, this.config.timezone);\n }\n\n escapeId(value) {\n return SqlString.escapeId(value, false);\n }\n\n format(sql, values) {\n if (typeof this.config.queryFormat === \"function\") {\n return this.config.queryFormat.call(\n this,\n sql,\n values,\n this.config.timezone\n );\n }\n return SqlString.format(\n sql,\n values,\n this.config.stringifyObjects,\n this.config.timezone\n );\n }\n\n getConnectionConfig() {\n return this.config;\n }\n\n _handleConnectTimeout() {\n if (this._socket) {\n this._socket.setTimeout(0);\n this._socket.destroy();\n }\n\n let err = new NonLoggableError(\"connect ETIMEDOUT\");\n err.errorno = \"ETIMEDOUT\";\n err.code = \"ETIMEDOUT\";\n err.syscall = \"connect\";\n\n this._handleNetworkError(err);\n }\n\n _handleNetworkError(err) {\n this._protocol.handleNetworkError(err);\n }\n\n _handleProtocolError(err) {\n this.state = \"protocol_error\";\n this.emit(\"error\", err);\n }\n\n _handleProtocolDrain() {\n this.emit(\"drain\");\n }\n\n _handleProtocolConnect() {\n this.state = \"connected\";\n this.emit(\"connect\");\n }\n\n _handleProtocolHandshake(packet) {\n this.state = \"authenticated\";\n this.threadId = packet.threadId;\n }\n\n _handleProtocolEnd(err) {\n this.state = \"disconnected\";\n this.emit(\"end\", err);\n }\n\n _handleProtocolEnqueue(sequence) {\n this.emit(\"enqueue\", sequence);\n }\n\n _implyConnect() {\n if (!this._connectCalled) {\n this.connect();\n }\n }\n}\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var rxSubscriber = /*@__PURE__*/ (function () {\n return typeof Symbol === 'function'\n ? /*@__PURE__*/ Symbol('rxSubscriber')\n : '@@rxSubscriber_' + /*@__PURE__*/ Math.random();\n})();\nexport var $$rxSubscriber = rxSubscriber;\n//# sourceMappingURL=rxSubscriber.js.map\n","import \"fast-text-encoding\";\nimport BigNumber from \"../vendor/bignumber.js/bignumber\";\nconst FIELD_DECODER = new TextDecoder();\nexport const rawResultToArray = (fields, result) => {\n const out = [];\n for (let i = 0; i < fields.length; i++) {\n const field = fields[i];\n const value = result[field.table][field.name];\n if (value === null) {\n out.push(\"NULL\");\n }\n else if (value instanceof Uint8Array) {\n out.push(FIELD_DECODER.decode(value));\n }\n else if (value instanceof BigNumber) {\n out.push(value.toString());\n }\n else if (value instanceof Date) {\n out.push(value.toString());\n }\n else {\n out.push(value);\n }\n }\n return out;\n};\nexport const rawResultToArrayNoTable = (fields, result) => {\n const out = [];\n for (let i = 0; i < fields.length; i++) {\n const field = fields[i];\n const value = result[field.name];\n if (value === null) {\n out.push(\"NULL\");\n }\n else if (value instanceof Uint8Array) {\n out.push(FIELD_DECODER.decode(value));\n }\n else if (typeof value === \"object\" &&\n value.hasOwnProperty(\"type\") &&\n value[\"type\"] === \"Buffer\") {\n // Sending a uint8array between workers results in it being encoded in JSON.\n // This converts it into a uint8array for use by the field decoder\n out.push(FIELD_DECODER.decode(new Uint8Array(value[\"data\"])));\n }\n else if (value instanceof BigNumber) {\n out.push(value.toString());\n }\n else if (value instanceof Date) {\n out.push(value.toString());\n }\n else {\n out.push(value);\n }\n }\n return out;\n};\n","import _ from \"lodash\";\n// Whether we are runing on macOS or not.\nexport const IS_MAC = _.includes(navigator.platform.toLowerCase(), \"mac\");\nexport const IS_WINDOWS = navigator.userAgent.indexOf(\"Windows\") >= 0;\nexport const newlineCharacter = IS_WINDOWS ? \"\\r\\n\" : \"\\n\";\nexport function replaceAllNewlineByPlatformNewline(string) {\n // Regex for matching any new line character regardless the used platform\n const RE_ANY_NEWLINE = /(\\r\\n|\\n|\\r)/gm;\n return string.replace(RE_ANY_NEWLINE, newlineCharacter);\n}\n","import _ from \"lodash\";\nexport default function removeFromSet(set, value) {\n return _.reject(set, (v) => _.isEqual(v, value));\n}\n","// Performs a left join given 2 arrays (sorted the same way)\n// where the second one is the \"right\" array, which is joined\n// against the first one (i.e. rows from the first array are\n// kept no matter what).\nexport default function leftJoin(comparator, \n// The merge function can not take in a second argument which means\n// that it simply has to convert from T to T3.\nmerge, arr1, arr2) {\n const output = [];\n let iterator1 = 0;\n let iterator2 = 0;\n while (iterator1 < arr1.length && iterator2 < arr2.length) {\n const comparison = comparator(arr1[iterator1], arr2[iterator2]);\n if (comparison === 0) {\n output.push(merge(arr1[iterator1], arr2[iterator2]));\n iterator1++;\n iterator2++;\n }\n else {\n if (comparison === -1) {\n output.push(merge(arr1[iterator1], undefined));\n iterator1++;\n }\n else if (comparison === 1) {\n iterator2++;\n }\n }\n }\n // We want to keep going even if we reached the end of the second\n // array.\n while (iterator1 < arr1.length) {\n output.push(merge(arr1[iterator1], undefined));\n iterator1++;\n }\n return output;\n}\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\nfunction isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n}\n\nmodule.exports = isEqualWith;\n","import { select } from \"@single-js/common/util/query\";\nimport { Version } from \"@single-js/common/util/version\";\nexport const GET_MEMSQL_VERSION = `SHOW GLOBAL VARIABLES LIKE 'memsql_version'`;\nexport function fetchMemsqlVersion(conn) {\n return select(conn, GET_MEMSQL_VERSION).then((sqlGetMemSQLVersionRow) => {\n if (sqlGetMemSQLVersionRow.length !== 1) {\n throw new Error(\"This SingleStore DB version query should only return one row.\");\n }\n return Version.fromString(sqlGetMemSQLVersionRow[0].Value);\n });\n}\n","import { logFocusConnectionError, logSilentError, } from \"@single-js/common/core/sql/actions\";\nimport { of } from \"rxjs\";\nimport { makeActionCreator } from \"worker/api/helpers\";\nimport { backend } from \"worker/net/backend\";\nconst PROXY_SAGA_ID = \"proxy-ping\";\nexport const proxyPing = makeActionCreator({\n name: \"proxyPing\",\n handle(ctx) {\n return ctx.sagas.register(PROXY_SAGA_ID, (observer) => {\n let running = true;\n let timeoutId;\n let lastError = false;\n const emit = (action) => running && observer.next(action);\n const ping = () => {\n return backend\n .ping()\n .then(() => {\n emit({\n type: \"PROXY_PING\",\n error: false,\n payload: {},\n });\n lastError = false;\n })\n .catch((err) => {\n emit({\n type: \"PROXY_PING\",\n error: true,\n payload: { message: err.toString() },\n });\n const msg = `Proxy ping failed: ${err.toString()}`;\n // We want to focus the Connection tab on a ping error\n // to alert the user that something is wrong, but only\n // on the first error, if the ping last succeeded\n // (otherwise, once the ping starts failing, we'd focus\n // the tab every five seconds and the user wouldn't be\n // able to close the bottom panel or check other tabs.)\n if (lastError) {\n emit(logSilentError(msg));\n }\n else {\n emit(logFocusConnectionError(msg));\n }\n lastError = true;\n })\n .finally(() => {\n if (running) {\n timeoutId = setTimeout(ping, 5000);\n }\n });\n };\n ping();\n return () => {\n running = false;\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n };\n });\n },\n});\nexport const proxyPingStop = makeActionCreator({\n name: \"proxyPingStop\",\n handle(ctx) {\n ctx.sagas.stop(PROXY_SAGA_ID);\n return of({\n type: \"PROXY_PING_STOP\",\n error: false,\n payload: {},\n });\n },\n});\n","/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function takeUntil(notifier) {\n return function (source) { return source.lift(new TakeUntilOperator(notifier)); };\n}\nvar TakeUntilOperator = /*@__PURE__*/ (function () {\n function TakeUntilOperator(notifier) {\n this.notifier = notifier;\n }\n TakeUntilOperator.prototype.call = function (subscriber, source) {\n var takeUntilSubscriber = new TakeUntilSubscriber(subscriber);\n var notifierSubscription = subscribeToResult(takeUntilSubscriber, this.notifier);\n if (notifierSubscription && !takeUntilSubscriber.seenValue) {\n takeUntilSubscriber.add(notifierSubscription);\n return source.subscribe(takeUntilSubscriber);\n }\n return takeUntilSubscriber;\n };\n return TakeUntilOperator;\n}());\nvar TakeUntilSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(TakeUntilSubscriber, _super);\n function TakeUntilSubscriber(destination) {\n var _this = _super.call(this, destination) || this;\n _this.seenValue = false;\n return _this;\n }\n TakeUntilSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.seenValue = true;\n this.complete();\n };\n TakeUntilSubscriber.prototype.notifyComplete = function () {\n };\n return TakeUntilSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=takeUntil.js.map\n","import { OkPacket, RowDataPacket, } from \"@single-js/common/mysqljs/lib/protocol/packets\";\nimport { servicesLocator } from \"@single-js/common/services/services-locator\";\nimport assign from \"@single-js/common/util/assign\";\nimport { stripSlashG } from \"@single-js/common/util/sql-query\";\nimport { rawResultToArray } from \"@single-js/common/util/sql-results\";\nimport RowBatcher from \"@single-js/common/worker/net/row-batcher\";\nimport getTime from \"date-fns/getTime\";\nimport EventEmitter from \"eventemitter3\";\nimport { fromEvent, merge, of } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\n// This RegEx matches any \"USE db\" query:\n// * Any whitespace characters\n// * The word \"use\"\n// Note that it is case insensitive.\nconst RE_USE_DATABASE = /^\\s*use/gi;\n// This RegEx matches any \"DROP DATABASE db\" query:\n// * Any whitespace characters\n// * The word \"drop\"\n// * Any whitespace characters\n// * The word \"database\"\n// Note that it is case insensitive.\nconst RE_DROP_DATABASE = /^\\s*drop\\s+database/gi;\n// All the following USE queries are valid (and similar for DROP DATABASE):\n// * USE \"\"\n// * USE \n// * USE ``\n// * USE ''\n// Which means that to extract the of a USE query, we need to clean\n// it up with the following RegEx which matches all non-database name\n// characters. MemSQL database names can only have alphanumeric or underscore\n// characters and cannot start with a digit.\nconst RE_CLEAN_DATABASE_NAME = /[\\\"\\'\\`]/g;\n// This RegEx matches any \"SET sql_select_limit\" query:\n// * Any whitespace characters\n// * The word \"set\"\n// * Any whitespace characters\n// * May or may not contain the word \"session\"\n// * Any whitespace characters\n// * The word \"sql_select_limit\" or \"`sql_select_limit`\"\n// * Any whitespace characters\n// * The char \"=\"\n// Note that it is case insensitive.\nconst RE_SET_SELECT_LIMIT = /^\\s*set(\\s+session)?\\s+(`sql_select_limit`|sql_select_limit)\\s+=/gi;\n// RegEx to clean any whitespace around the row limit number\nconst RE_CLEAN_ROW_LIMIT = /\\s/g;\nexport default class StaticConnection extends EventEmitter {\n constructor(conn) {\n super();\n this.formatErrorMsg = (error) => error.errno ? `ERROR ${error.errno} ${error.message}` : error.message;\n this.onError = (error) => {\n this.rowBatcher.flush();\n // If the error is fatal, we want the next state to be `TERMINATED`\n // since we want to reconnect the query executor whenever possible.\n // See `data/listeners/reconnect.tsx` for more details.\n //\n // Otherwise we set the state to be `IDLE` - this will not attempt a\n // reconnect, instead it just enables query runs for this executor.\n const nextState = error.fatal ? \"TERMINATED\" : \"IDLE\";\n // if running query\n if (this.sequence) {\n if (!this.metrics) {\n throw new Error(\"Expected metrics to be set on error with a query in flight\");\n }\n this.emitError(error.code, this.formatErrorMsg(error), error.index, {\n ...this.metrics,\n endTimeUnix: getTime(new Date()),\n });\n // Since we have a sequence running we let the `this.onSequenceEnd`\n // method to emit the next state.\n this.pendingErrorState = nextState;\n }\n else {\n // Since we don't have a sequence running we have to emit the next\n // state and the respective error message direcly here.\n const err = {\n code: error.code,\n message: this.formatErrorMsg(error),\n };\n this.emitState(nextState, err);\n }\n };\n this.onFields = (fields) => {\n // If this is the second field set we get for the current query, we're\n // dealing with a multiple result set query in which case we flush all\n // the rows that we have received thus far.\n if (this.currentQueryFields) {\n this.rowBatcher.flush();\n }\n this.currentQueryFields = fields;\n this.emitResultSet(fields);\n // reset emittedRows when we receive fields\n if (!this.metrics) {\n throw new Error(\"Expected metrics to be set on receiving fields\");\n }\n this.metrics.emittedRows = 0;\n };\n this.onResult = (result) => {\n if (!this.metrics) {\n throw new Error(\"Expected metrics to be set on receiving result\");\n }\n const metrics = this.metrics;\n // We check to see if the result we got is an OKResult or a RowResult.\n // Row results have to be an instance of RowDataPacket\n if (result instanceof RowDataPacket) {\n if (this.currentQueryFields) {\n this.rowBatcher.push(rawResultToArray(this.currentQueryFields, result));\n this.metrics.emittedRows += 1;\n }\n else {\n servicesLocator\n .getLogger()\n .logError(new Error(\"Expected fields to be set when receiving rows\"));\n }\n }\n else if (result instanceof OkPacket) {\n // Must be an OKResult\n const res = result;\n this.handleDatabaseChange();\n this.handlePerQueryRowLimitChange();\n this.metrics = assign(metrics, {\n insertId: res.insertId,\n affectedRows: res.affectedRows,\n changedRows: res.changedRows,\n });\n }\n };\n this.onSequenceEnd = () => {\n const metrics = this.metrics;\n const pendingErrorState = this.pendingErrorState;\n if (!metrics) {\n throw new Error(\"Expected metrics to be set on receiving sequence end\");\n }\n // Clear listeners and other data eagerly, because emitting the IDLE\n // state may cause somebody else to immediately, synchronously run\n // another query on us, and we don't want this to clear data from that\n // runQuery invocation.\n if (!this.sequence) {\n throw new Error(\"Expected sequence to be set\");\n }\n this.sequence\n .removeListener(\"error\", this.onError)\n .removeListener(\"fields\", this.onFields)\n .removeListener(\"result\", this.onResult)\n .removeListener(\"end\", this.onSequenceEnd);\n this.sequence = undefined;\n this.metrics = undefined;\n this.currentQueryFields = undefined;\n this.pendingErrorState = undefined;\n if (pendingErrorState) {\n this.emitState(pendingErrorState);\n }\n else {\n this.rowBatcher.flush();\n this.emitSequenceEnd({\n ...metrics,\n endTimeUnix: getTime(new Date()),\n });\n this.emitState(\"IDLE\");\n }\n };\n // This function is called whenever an exec-type query has just finished\n // successfully. Whenever that happens, we want to check if the selected\n // database has changed (via a USE query or, rarely, a DROP DATABASE\n // query).\n this.handleDatabaseChange = () => {\n if (this.sequence) {\n const selectedDatabase = getSelectedDatabase(this.sequence.sql);\n if (selectedDatabase && selectedDatabase !== this.database) {\n this.database = selectedDatabase;\n this.emitMessage({\n kind: \"selectedDatabaseChanged\",\n database: selectedDatabase,\n });\n }\n else {\n const droppedDatabase = getDroppedDatabase(this.sequence.sql);\n if (droppedDatabase && droppedDatabase === this.database) {\n // If we drop the selected database, no database is\n // selected any more.\n this.database = undefined;\n this.emitMessage({\n kind: \"selectedDatabaseChanged\",\n database: undefined,\n });\n }\n }\n }\n };\n // This function is called whenever an exec-type query has just finished\n // successfully. Whenever that happens, we want to check if the current\n // row limit per query has changed (SET sql_select_limit = 300, for example).\n this.handlePerQueryRowLimitChange = () => {\n if (this.sequence) {\n const rowLimit = getPerQueryRowLimitSelected(this.sequence.sql);\n if (rowLimit !== undefined) {\n this.emitMessage({\n kind: \"perQueryRowLimitChanged\",\n rowLimit,\n });\n }\n }\n };\n this.rowBatcher = new RowBatcher(this.emitRows.bind(this));\n this.connection = conn;\n this.connection.on(\"error\", this.onError);\n this.connection.on(\"end\", (msg) => {\n this.emit(\"end\", msg);\n });\n this.state = \"IDLE\";\n this.sequence = undefined;\n this.currentQueryFields = undefined;\n this.metrics = undefined;\n this.pendingErrorState = undefined;\n }\n close() {\n this.connection.end();\n }\n destroy() {\n this.connection.destroy();\n }\n messageObservable() {\n const init$ = of({\n kind: \"state\",\n state: this.state,\n });\n const info$ = fromEvent(this, \"message\");\n const end$ = fromEvent(this.connection, \"end\");\n return merge(init$, info$).pipe(takeUntil(end$));\n }\n emitMessage(message) {\n // simple wrapper that is typechecked\n this.emit(\"message\", message);\n }\n emitState(state, error) {\n this.state = state;\n this.emitMessage({ kind: \"state\", state, error });\n }\n emitResultSet(fields) {\n this.emitMessage({ kind: \"resultSet\", fields });\n }\n emitRows(rows) {\n this.emitMessage({ kind: \"rows\", rows });\n }\n emitError(code, message, index, metrics) {\n this.emitMessage({\n kind: \"queryEnd\",\n status: { state: \"error\", code, message, index },\n metrics,\n });\n }\n emitSequenceEnd(metrics) {\n this.emitMessage({\n kind: \"queryEnd\",\n status: { state: \"success\" },\n metrics,\n });\n }\n runQuery(query) {\n if (this.state !== \"IDLE\") {\n return;\n }\n this.emitState(\"ACTIVE\");\n this.metrics = {\n startTimeUnix: getTime(new Date()),\n emittedRows: 0,\n };\n const { text, values } = query;\n this.sequence = this.connection.query({\n sql: stripSlashG(text),\n values,\n nestTables: true,\n });\n this.sequence\n .on(\"error\", this.onError)\n .on(\"fields\", this.onFields)\n .on(\"result\", this.onResult)\n .on(\"end\", this.onSequenceEnd);\n }\n}\nexport function getSelectedDatabase(query) {\n if (query.match(RE_USE_DATABASE)) {\n const database = query.split(RE_USE_DATABASE)[1];\n if (database) {\n return database.trim().replace(RE_CLEAN_DATABASE_NAME, \"\");\n }\n }\n}\nexport function getDroppedDatabase(query) {\n if (query.match(RE_DROP_DATABASE)) {\n const database = query.split(RE_DROP_DATABASE)[1];\n if (database) {\n return database.trim().replace(RE_CLEAN_DATABASE_NAME, \"\");\n }\n }\n}\nexport function getPerQueryRowLimitSelected(query) {\n if (query.match(RE_SET_SELECT_LIMIT)) {\n const queryArray = query.split(RE_SET_SELECT_LIMIT);\n const rowLimit = queryArray[queryArray.length - 1];\n if (rowLimit) {\n return rowLimit.trim().replace(RE_CLEAN_ROW_LIMIT, \"\");\n }\n }\n}\n","import { servicesLocator } from \"@single-js/common/services/services-locator\";\nimport _ from \"lodash\";\nimport { stringify } from \"query-string\";\nimport { decodeClusterJwt, } from \"../../core/sql/models\";\nimport { Connection as MysqlConnection, ConnectionConfig, } from \"../../mysqljs\";\nimport { NonLoggableError } from \"../../util/logging\";\nimport { multiSelect, multiSelectWithErrors } from \"../../util/query\";\nimport { Version } from \"../../util/version\";\nimport { GET_MEMSQL_VERSION, } from \"../api/version-query\";\nimport QueryExecutor from \"../net/query-executor\";\nimport StaticConnection from \"../net/static-connection\";\n// `getBaseConnectionConfig` returns the base connection config for any MemSQL\n// connections. It looks at the cluster connection object and figures out\n// whether to point directly to the MA with ws or wss, or if we should connect\n// to the memsql-studio proxy with the appropriate endpoint to tell the\n// memsql-studio proxy which cluster to connect to.\nfunction getBaseConnectionConfig(clusterInfo) {\n let host;\n let port;\n let ssl;\n if (clusterInfo.websocket) {\n host = clusterInfo.hostname;\n port = clusterInfo.port;\n ssl = clusterInfo.websocketSSL;\n }\n else {\n // The proxy runs on the same host as where the UI is served, so we grab\n // its connection details (i.e., hostname and port) from\n // `location`. If there is no port on the URL, then the proxy is\n // either running on port 443 or 80 depending on whether the Studio UI\n // is being served over HTTPS or not, respectively.\n const API_HOST = location.hostname;\n let API_PORT = Number(location.port);\n if (!location.port) {\n // studio is running on either port 80 or 443\n if (location.protocol === \"https:\") {\n API_PORT = 443;\n }\n else {\n API_PORT = 80;\n }\n }\n host = API_HOST;\n port = API_PORT;\n // When connecting through the memsql-studio proxy, whether we use WSS\n // or WS will depend on how memsql-studio itself is being served.\n ssl = location.protocol === \"https:\";\n }\n return {\n host,\n port,\n typeCast: false,\n ssl,\n };\n}\nconst MIN_MEMSQL_VERSION = new Version([7, 0, 0]);\nconst MIN_VERSION_DDL_STABLE_FORWARDING = new Version([7, 9, 0]);\nconst SUPPORTS_DDL_FORWARDING_OR_MA = `\n SELECT (SELECT 1\n FROM dual\n WHERE\n EXISTS (SELECT 1 FROM information_schema.global_variables WHERE variable_name = 'enable_dml_query_forwarding' AND variable_value = 'ON')\n AND EXISTS (SELECT 1 FROM information_schema.global_variables WHERE variable_name = 'sync_permissions' AND variable_value = 'ON')\n AND EXISTS (SELECT 1 FROM information_schema.global_variables WHERE variable_name = 'enable_query_forwarding' AND variable_value = 'ON')\n ) AS enabledDDLForwarding,\n (SELECT 1\n FROM dual\n WHERE EXISTS (SELECT 1 FROM information_schema.global_variables WHERE variable_name = 'MASTER_AGGREGATOR' AND variable_value = 'self')\n ) as isMasterAggregator\n FROM DUAL\n`;\n// Users could have an unsafe GLOBAL SQL_MODE, so we set the following SQL_MODE\n// on every dynamic connection in order to ensure the queries we are running are\n// safe.\nconst SET_SQL_MODE = `SET SQL_MODE = 'STRICT_ALL_TABLES,ONLY_FULL_GROUP_BY'`;\nconst SET_COLLATION_MODE = `SET COLLATION_SERVER = utf8_general_ci`;\nexport const SQL_SELECT_LIMIT = \"18446744073709551615\";\nconst SET_SQL_SELECT_LIMIT = `SET SQL_SELECT_LIMIT = ${SQL_SELECT_LIMIT}`;\nconst SET_COMPILE_ONLY = `SET COMPILE_ONLY = false`;\nconst SET_AUTO_PROFILE = `SET ENABLE_AUTO_PROFILE = false`;\nself.BASE_URL = \"/\";\nconst getConnectionConfig = (config) => {\n let jwtCluster;\n let clusterId;\n if (\"clusterId\" in config) {\n clusterId = config.clusterId;\n if (clusterId) {\n jwtCluster = decodeClusterJwt(clusterId);\n }\n }\n // For testing the connection, Studio sends both the hostname and the port\n // to the proxy, but after that it just uses the cluster ID.\n let endpoint;\n if (config.websocket) {\n endpoint = `${self.BASE_URL}proxy`;\n }\n else {\n let options;\n if (jwtCluster) {\n if (!clusterId) {\n throw new Error(\"Expected clusterId to exist if jwtCluster also exists\");\n }\n options = { id: clusterId };\n }\n else {\n options = {\n hostname: config.hostname,\n port: config.port.toString(),\n };\n }\n endpoint = `${self.BASE_URL}proxy?${stringify(options)}`;\n }\n return {\n user: config.user,\n user2: config.user2,\n password: config.password,\n endpoint,\n baseUrl: self.BASE_URL,\n };\n};\nexport default class ConnectionManager {\n constructor(pool, connectionAcquireTimeout) {\n this.queryExecutors = {};\n this.pool = pool;\n this.connectionAcquireTimeout = connectionAcquireTimeout;\n }\n state() {\n return {\n connected: !!this.defaultConfig,\n config: this.defaultConfig,\n };\n }\n // This method validates that a given connection is \"valid\":\n // * It must be a connection to a Master Aggregator;\n // * It must be a connection to a version of MemSQL supported by Studio;\n //\n // This method returns a Promise which resolves to nothing on success.\n validateConnection(conn) {\n return multiSelectWithErrors(conn, { sql: GET_MEMSQL_VERSION }, { sql: SUPPORTS_DDL_FORWARDING_OR_MA }).then(([sqlGetMemSQLVersionRow, sqlSupportsDDLForwardingOrMa]) => {\n if (sqlGetMemSQLVersionRow instanceof Error) {\n throw new NonLoggableError(\"Could not find SingleStore version for this cluster. Please make sure you are trying to connect to a SingleStore cluster.\");\n }\n if (sqlSupportsDDLForwardingOrMa instanceof Error) {\n throw new NonLoggableError(\"Could not figure out whether this connection supports DDL forwarding or is an MA.\");\n }\n if (sqlGetMemSQLVersionRow.length !== 1) {\n throw new NonLoggableError(\"This SingleStore version query should only return one row.\");\n }\n if (sqlSupportsDDLForwardingOrMa.length !== 1) {\n throw new NonLoggableError(\"This SingleStore master aggregator query should only return one row.\");\n }\n if (Version.fromString(sqlGetMemSQLVersionRow[0].Value).lt(MIN_MEMSQL_VERSION)) {\n throw new NonLoggableError(`SingleStore Studio does not support the SingleStore version running on this cluster. SingleStore Studio only supports version ${MIN_MEMSQL_VERSION.toString()} or higher.`);\n }\n const isMA = sqlSupportsDDLForwardingOrMa[0].isMasterAggregator === 1;\n const supportsDDLForwarding = sqlSupportsDDLForwardingOrMa[0].enabledDDLForwarding === 1;\n if (Version.fromString(sqlGetMemSQLVersionRow[0].Value).lt(MIN_VERSION_DDL_STABLE_FORWARDING)) {\n // DDL forwarding is not fully supported yet, so we need to make sure we are fully connecting to an MA\n if (!isMA) {\n throw new NonLoggableError(\"SingleStore Studio needs to connect directly to the Master Aggregator.\");\n }\n }\n else {\n // If we are on a version that supports DDL forwarding we need to make sure it's enabled or we\n // are connecting to an MA\n if (!supportsDDLForwarding && !isMA) {\n throw new NonLoggableError(\"SingleStore Studio needs to either have DDL forwarding enabled or connect directly to the Master Aggregator.\");\n }\n }\n });\n }\n // This function prepares a given connection object such that Studio can\n // safely run queries on it. The engine performs a similar operation for\n // internal queries. This function returns a Promise over the initial\n // connection type that was passed in.\n prepareConnection(conn) {\n return new Promise((resolve, reject) => multiSelect(conn, { sql: SET_SQL_MODE }, { sql: SET_COLLATION_MODE }, { sql: SET_SQL_SELECT_LIMIT }, { sql: SET_COMPILE_ONLY }, { sql: SET_AUTO_PROFILE })\n .then(() => resolve(conn))\n .catch((err) => {\n reject(new Error(`Failed to set the proper SQL Mode for running queries against SingleStore: ${err}.`));\n }));\n }\n // This function returns a new connection. It will also validate the\n // connection as being a valid SingleStore connection (with a version that Studio\n // supports). Moreover, it will prepare the connection by running a set of\n // queries that prepare the connection for Studio queries.\n newConnection(config) {\n return new Promise((resolve, reject) => {\n const conn = new MysqlConnection({\n config: new ConnectionConfig({\n ...getBaseConnectionConfig(config),\n ...getConnectionConfig(config),\n typeCast: true,\n }),\n });\n conn.connect((err) => {\n if (err) {\n return reject(err);\n }\n else {\n return this.validateConnection(conn)\n .then(() => {\n return resolve(this.prepareConnection(conn));\n })\n .catch(reject);\n }\n });\n });\n }\n testConnect(config) {\n return this.newConnection(config).then((conn) => {\n conn.end();\n });\n }\n initialize(config) {\n const updateConfig = () => {\n // cleanup any connections associated with the previous config\n if (this.defaultConfig) {\n _.forEach(this.queryExecutors, (executor) => {\n executor.close();\n });\n this.queryExecutors = {};\n }\n // update the config to the new config\n this.defaultConfig = config;\n };\n return this.newConnection(config).then((conn) => {\n return this.validateConnection(conn)\n .then(updateConfig)\n .finally(() => conn.end());\n });\n }\n getPooledConnection(connectionConfig) {\n let finalConnectionConfig;\n if (connectionConfig) {\n finalConnectionConfig = new ConnectionConfig({\n ...getBaseConnectionConfig(connectionConfig),\n ...getConnectionConfig(connectionConfig),\n typeCast: true,\n supportBigNumbers: true,\n bigNumberStrings: true,\n });\n }\n else {\n if (this.defaultConfig) {\n finalConnectionConfig = new ConnectionConfig({\n ...getBaseConnectionConfig(this.defaultConfig),\n ...getConnectionConfig(this.defaultConfig),\n typeCast: true,\n supportBigNumbers: true,\n bigNumberStrings: true,\n });\n }\n else {\n // This mean no connection config was found. We first prioritize the one coming as a parameter, then\n // the default one defined in the connection manager\n throw new Error(\"Must call initialize before you can get a connection or pass a new connectionConfig\");\n }\n }\n const pool = this.pool;\n return new Promise((resolve, reject) => {\n const handleConnection = (poolErr, conn, justCreated) => {\n if (poolErr) {\n servicesLocator\n .getLogger()\n .log(\"error\", `An error occurred while grabbing a connection from the pool: ${poolErr}`);\n reject(poolErr);\n }\n else {\n // If the connection was just created in the pool, then we\n // have to set the right SQL Mode. If not, we just resolve\n // this promise.\n if (justCreated) {\n this.prepareConnection(conn)\n .then(resolve)\n .catch(reject);\n }\n else {\n resolve(conn);\n }\n }\n };\n pool.getConnection(finalConnectionConfig, (poolErr, conn, justCreated) => {\n if (poolErr &&\n \"code\" in poolErr &&\n poolErr.code === \"ER_ACCESS_DENIED_ERROR\" &&\n connectionConfig &&\n connectionConfig.user2) {\n pool.getConnection({\n ...finalConnectionConfig,\n user: connectionConfig.user2,\n }, handleConnection);\n }\n else {\n handleConnection(poolErr, conn, justCreated);\n }\n });\n });\n }\n createQueryExecutor(id, { initialQueryRowLimit, connectionConfig, database, }) {\n let clusterId;\n let finalConnectionConfig;\n if (connectionConfig) {\n finalConnectionConfig = new ConnectionConfig({\n ...getBaseConnectionConfig(connectionConfig),\n ...getConnectionConfig(connectionConfig),\n supportBigNumbers: true,\n multipleStatements: true,\n });\n clusterId = connectionConfig.clusterId;\n }\n else {\n if (this.defaultConfig) {\n finalConnectionConfig = new ConnectionConfig({\n ...getBaseConnectionConfig(this.defaultConfig),\n ...getConnectionConfig(this.defaultConfig),\n supportBigNumbers: true,\n multipleStatements: true,\n });\n clusterId = this.defaultConfig.clusterId;\n }\n else {\n // This mean no connection config was found. We first prioritize the one coming as a parameter, then\n // the default one defined in the connection manager\n throw new Error(\"Must call initialize before you can get a connection or pass a new connectionConfig\");\n }\n }\n const staticConnectionFactory = {\n clusterId,\n getConnection: () => {\n const conn = new MysqlConnection({\n config: finalConnectionConfig,\n });\n const resolveStaticConn = (conn) => new Promise((resolve) => {\n const staticConnection = new StaticConnection(conn);\n resolve(staticConnection);\n });\n const out = new Promise((resolve, reject) => conn.connect({ timeout: this.connectionAcquireTimeout }, (err) => {\n if (err) {\n conn.destroy();\n if (err &&\n \"code\" in err &&\n err.code === \"ER_ACCESS_DENIED_ERROR\" &&\n connectionConfig &&\n connectionConfig.user2) {\n const conn2 = new MysqlConnection({\n config: {\n ...finalConnectionConfig,\n user: finalConnectionConfig.user2,\n },\n });\n conn2.connect({\n timeout: this\n .connectionAcquireTimeout,\n }, (err) => {\n if (err) {\n conn.destroy();\n reject(err);\n }\n else {\n resolve(conn2);\n }\n });\n }\n else {\n reject(err);\n }\n }\n else {\n resolve(conn);\n }\n }));\n return out.then(resolveStaticConn);\n },\n };\n const queryExecutor = this.queryExecutors[id];\n if (queryExecutor) {\n queryExecutor.changeConnectionTarget(staticConnectionFactory);\n }\n else {\n this.queryExecutors[id] = new QueryExecutor(staticConnectionFactory, {\n initialQueryRowLimit,\n database,\n });\n }\n return Promise.resolve(this.queryExecutors[id]);\n }\n getQueryExecutor(id) {\n if (this.queryExecutors[id]) {\n return this.queryExecutors[id];\n }\n return undefined;\n }\n}\n","/** PURE_IMPORTS_START _Observable,_util_isScheduler,_operators_mergeAll,_fromArray PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { isScheduler } from '../util/isScheduler';\nimport { mergeAll } from '../operators/mergeAll';\nimport { fromArray } from './fromArray';\nexport function merge() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n var concurrent = Number.POSITIVE_INFINITY;\n var scheduler = null;\n var last = observables[observables.length - 1];\n if (isScheduler(last)) {\n scheduler = observables.pop();\n if (observables.length > 1 && typeof observables[observables.length - 1] === 'number') {\n concurrent = observables.pop();\n }\n }\n else if (typeof last === 'number') {\n concurrent = observables.pop();\n }\n if (scheduler === null && observables.length === 1 && observables[0] instanceof Observable) {\n return observables[0];\n }\n return mergeAll(concurrent)(fromArray(observables, scheduler));\n}\n//# sourceMappingURL=merge.js.map\n","import * as React from \"react\";\nimport { CenteringWrapper } from \"../centering-wrapper/centering-wrapper\";\nimport { Icon } from \"../icon/icon\";\nimport \"./general-error.scss\";\nexport class GeneralError extends React.PureComponent {\n render() {\n const { error, errorHeader, children } = this.props;\n return (React.createElement(CenteringWrapper, { className: \"single-common-components-general-error\" },\n React.createElement(\"div\", { className: \"icon-wrapper\" },\n React.createElement(Icon, { icon: \"exclamation-triangle\", size: \"4x\" }),\n React.createElement(\"div\", { className: \"caption\" }, \"Error\")),\n React.createElement(\"div\", { className: \"notes\" },\n React.createElement(\"div\", null, errorHeader),\n React.createElement(\"div\", { className: \"error-message\" }, error)),\n children));\n }\n}\nGeneralError.defaultProps = {\n errorHeader: \"An error occurred:\",\n};\n","import classnames from \"classnames\";\nimport * as React from \"react\";\nimport Key from \"../../util/key\";\nimport { CustomScrollbar } from \"../custom-scrollbar/custom-scrollbar\";\nimport { Icon } from \"../icon/icon\";\nimport { Portal } from \"../portal/portal\";\nimport { ResizeDetector } from \"../resize/resize-detector\";\nimport \"./modal.scss\";\n// This component is rendered in absolute positioning so you might want\n// to wrap it within a position relative element.\nexport class Modal extends React.Component {\n constructor() {\n super(...arguments);\n this.state = {\n height: undefined,\n };\n this.handleKeyDown = (evt) => {\n const { onClose } = this.props;\n if (evt.keyCode === Key.ESC && !this.props.disableClose && onClose) {\n evt.preventDefault();\n onClose();\n }\n };\n this.handleClickWrapper = (evt) => {\n // Ignore secondary mouse click.\n // https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button\n if (evt.button === 2) {\n return;\n }\n if (!this.props.disableClose && this.props.onClose) {\n if (evt.target === this.$wrapper) {\n this.props.onClose();\n }\n }\n };\n }\n render() {\n const { className, viewClassName, viewOuterClassName, children, onClose, active, actions, inline, innerContentPadding, disableClose, hideCloseButton = disableClose, autoHide, size, } = this.props;\n const { height } = this.state;\n if (!active) {\n return null;\n }\n const classes = classnames({\n \"single-common-components-modal\": true,\n }, className);\n const viewOuterClasses = classnames(viewOuterClassName, \"modal-inner\", `size-${size}`);\n // The reason the following two event listeners are \"onMouseDown\" is\n // because mousedown triggers blur on form events inside a Modal which\n // means that the user will see a \"Field is required\" flash if they\n // didn't fill one of the fields. Using onMouseDown on every Modal-close\n // event prevent this behavior.\n const viewClasses = classnames(viewClassName, \"modal-content-inner\", {\n \"with-padding\": innerContentPadding,\n });\n const maxModalHeight = height && 0.8 * height;\n let closeButton;\n if (!hideCloseButton && onClose) {\n closeButton = (React.createElement(\"div\", { onMouseDown: onClose, className: \"close-button\", \"aria-label\": \"close modal\" },\n React.createElement(Icon, { icon: \"times\" })));\n }\n const modal = (React.createElement(\"div\", { ref: (el) => {\n this.$wrapper = el || undefined;\n }, className: classes, onKeyDown: this.handleKeyDown, onMouseDown: this.handleClickWrapper, role: \"dialog\" },\n React.createElement(ResizeDetector, { onResize: (__, height) => {\n this.setState({\n height,\n });\n } }),\n React.createElement(\"div\", { className: viewOuterClasses },\n closeButton,\n React.createElement(CustomScrollbar, { autoHide: autoHide, autoHeight: true, autoHeightMin: 200, autoHeightMax: maxModalHeight },\n React.createElement(\"div\", { className: viewClasses },\n React.createElement(\"div\", { className: \"children\" }, children),\n actions && (React.createElement(\"div\", { className: \"actions\" }, actions)))))));\n if (inline) {\n return modal;\n }\n return React.createElement(Portal, { active: true }, modal);\n }\n}\nModal.defaultProps = {\n inline: false,\n innerContentPadding: true,\n autoHide: false,\n size: \"small\",\n};\n","import classnames from \"classnames\";\nimport * as React from \"react\";\nimport \"./centering-wrapper.scss\";\n// Wraps an element such as a FeatureCard on pages that display only one or a few prominently centered components as\n// content.\nexport class CenteringWrapper extends React.Component {\n render() {\n const { className, vertical, children } = this.props;\n const classes = classnames(\"single-common-components-centering-wrapper\", className, {\n vertical,\n });\n return React.createElement(\"div\", { className: classes }, children);\n }\n}\n","import classnames from \"classnames\";\nimport * as React from \"react\";\nimport { Icon } from \"../icon/icon\";\nimport \"./alert.scss\";\nconst ALERT_ICON = {\n success: \"check-circle\",\n warning: \"exclamation-circle\",\n error: \"exclamation-triangle\",\n info: \"info-circle\",\n};\nexport function Alert(props) {\n const { title, message, status, className, squareCorners, showIcon = true, } = props;\n const classes = classnames(\"single-common-components-alert\", status, className, {\n \"square-corners\": squareCorners,\n });\n const alertTitle = title && React.createElement(\"div\", { className: \"title\" }, title);\n let icon;\n if (showIcon) {\n icon = (React.createElement(\"div\", { className: \"left\" },\n React.createElement(Icon, { icon: ALERT_ICON[status], className: \"icon\", rightMargin: true })));\n }\n return (React.createElement(\"div\", { className: classes },\n icon,\n React.createElement(\"div\", { className: \"right\" },\n alertTitle,\n React.createElement(\"div\", { className: \"description\" }, message))));\n}\n","module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\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\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","export * from \"./connection/selectors-connection\";\nexport * from \"./explain/selectors-explain\";\nexport * from \"./query-editor/selectors-page-editor\";\n","var dotOrEnd = '(\\\\..+$|$)';\r\nvar dotOrStart = '(^.+\\\\.|^)';\r\nvar getName = function (route) {\r\n return typeof route === 'string' ? route : route.name || '';\r\n};\r\nvar test = function (route, regex) {\r\n return regex.test(getName(route));\r\n};\r\nvar normaliseSegment = function (name) {\r\n return name.replace('.', '\\\\.');\r\n};\r\nvar testRouteWithSegment = function (start, end) {\r\n return function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var route = args[0];\r\n var applySegment = function (segment) {\r\n return test(route, new RegExp(start + normaliseSegment(segment) + end));\r\n };\r\n if (args.length === 2) {\r\n return applySegment(args[1]);\r\n }\r\n return applySegment;\r\n };\r\n};\r\nvar startsWithSegment = testRouteWithSegment('^', dotOrEnd);\r\nvar endsWithSegment = testRouteWithSegment(dotOrStart, '$');\r\nvar includesSegment = testRouteWithSegment(dotOrStart, dotOrEnd);\n\nexport { startsWithSegment, endsWithSegment, includesSegment };\n","// Based on https://github.com/maslianok/react-resize-detector\n// Rewritten to be statically typed + actually remove event handler on unmount\nimport * as React from \"react\";\nimport ResizeObserver from \"resize-observer-polyfill\";\nconst styles = {\n position: \"absolute\",\n width: 0,\n height: 0,\n visibility: \"hidden\",\n display: \"none\",\n};\nexport class ResizeDetector extends React.PureComponent {\n constructor(props) {\n super(props);\n this.$el = React.createRef();\n this.observer = new ResizeObserver((entries) => {\n entries.forEach((entry) => {\n const { width, height } = entry.contentRect;\n this.props.onResize(width, height);\n });\n });\n }\n componentDidMount() {\n if (!this.$el.current) {\n throw new Error(\"Expected element ref to be defined\");\n }\n if (!this.$el.current.parentElement) {\n throw new Error(\"Expected element to have parent\");\n }\n this.observer.observe(this.$el.current.parentElement);\n }\n componentWillUnmount() {\n if (!this.$el.current) {\n throw new Error(\"Expected element ref to be defined\");\n }\n if (!this.$el.current.parentElement) {\n throw new Error(\"Expected element to have parent\");\n }\n this.observer.unobserve(this.$el.current.parentElement);\n }\n render() {\n return React.createElement(\"div\", { style: styles, ref: this.$el });\n }\n}\n","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","'use strict';\n\nif (typeof process === 'undefined' ||\n !process.version ||\n process.version.indexOf('v0.') === 0 ||\n process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = { nextTick: nextTick };\n} else {\n module.exports = process\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n var len = arguments.length;\n var args, i;\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n default:\n args = new Array(len - 1);\n i = 0;\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}\n\n","// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\n\nvar Buffer = require('safe-buffer').Buffer\n\nfunction asUInt32Array (buf) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n\n var len = (buf.length / 4) | 0\n var out = new Array(len)\n\n for (var i = 0; i < len; i++) {\n out[i] = buf.readUInt32BE(i * 4)\n }\n\n return out\n}\n\nfunction scrubVec (v) {\n for (var i = 0; i < v.length; v++) {\n v[i] = 0\n }\n}\n\nfunction cryptBlock (M, keySchedule, SUB_MIX, SBOX, nRounds) {\n var SUB_MIX0 = SUB_MIX[0]\n var SUB_MIX1 = SUB_MIX[1]\n var SUB_MIX2 = SUB_MIX[2]\n var SUB_MIX3 = SUB_MIX[3]\n\n var s0 = M[0] ^ keySchedule[0]\n var s1 = M[1] ^ keySchedule[1]\n var s2 = M[2] ^ keySchedule[2]\n var s3 = M[3] ^ keySchedule[3]\n var t0, t1, t2, t3\n var ksRow = 4\n\n for (var round = 1; round < nRounds; round++) {\n t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[(s1 >>> 16) & 0xff] ^ SUB_MIX2[(s2 >>> 8) & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++]\n t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[(s2 >>> 16) & 0xff] ^ SUB_MIX2[(s3 >>> 8) & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++]\n t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[(s3 >>> 16) & 0xff] ^ SUB_MIX2[(s0 >>> 8) & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++]\n t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[(s0 >>> 16) & 0xff] ^ SUB_MIX2[(s1 >>> 8) & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++]\n s0 = t0\n s1 = t1\n s2 = t2\n s3 = t3\n }\n\n t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]\n t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]\n t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]\n t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]\n t0 = t0 >>> 0\n t1 = t1 >>> 0\n t2 = t2 >>> 0\n t3 = t3 >>> 0\n\n return [t0, t1, t2, t3]\n}\n\n// AES constants\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]\nvar G = (function () {\n // Compute double table\n var d = new Array(256)\n for (var j = 0; j < 256; j++) {\n if (j < 128) {\n d[j] = j << 1\n } else {\n d[j] = (j << 1) ^ 0x11b\n }\n }\n\n var SBOX = []\n var INV_SBOX = []\n var SUB_MIX = [[], [], [], []]\n var INV_SUB_MIX = [[], [], [], []]\n\n // Walk GF(2^8)\n var x = 0\n var xi = 0\n for (var i = 0; i < 256; ++i) {\n // Compute sbox\n var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63\n SBOX[x] = sx\n INV_SBOX[sx] = x\n\n // Compute multiplication\n var x2 = d[x]\n var x4 = d[x2]\n var x8 = d[x4]\n\n // Compute sub bytes, mix columns tables\n var t = (d[sx] * 0x101) ^ (sx * 0x1010100)\n SUB_MIX[0][x] = (t << 24) | (t >>> 8)\n SUB_MIX[1][x] = (t << 16) | (t >>> 16)\n SUB_MIX[2][x] = (t << 8) | (t >>> 24)\n SUB_MIX[3][x] = t\n\n // Compute inv sub bytes, inv mix columns tables\n t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)\n INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)\n INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)\n INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)\n INV_SUB_MIX[3][sx] = t\n\n if (x === 0) {\n x = xi = 1\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]]\n xi ^= d[d[xi]]\n }\n }\n\n return {\n SBOX: SBOX,\n INV_SBOX: INV_SBOX,\n SUB_MIX: SUB_MIX,\n INV_SUB_MIX: INV_SUB_MIX\n }\n})()\n\nfunction AES (key) {\n this._key = asUInt32Array(key)\n this._reset()\n}\n\nAES.blockSize = 4 * 4\nAES.keySize = 256 / 8\nAES.prototype.blockSize = AES.blockSize\nAES.prototype.keySize = AES.keySize\nAES.prototype._reset = function () {\n var keyWords = this._key\n var keySize = keyWords.length\n var nRounds = keySize + 6\n var ksRows = (nRounds + 1) * 4\n\n var keySchedule = []\n for (var k = 0; k < keySize; k++) {\n keySchedule[k] = keyWords[k]\n }\n\n for (k = keySize; k < ksRows; k++) {\n var t = keySchedule[k - 1]\n\n if (k % keySize === 0) {\n t = (t << 8) | (t >>> 24)\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n\n t ^= RCON[(k / keySize) | 0] << 24\n } else if (keySize > 6 && k % keySize === 4) {\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n }\n\n keySchedule[k] = keySchedule[k - keySize] ^ t\n }\n\n var invKeySchedule = []\n for (var ik = 0; ik < ksRows; ik++) {\n var ksR = ksRows - ik\n var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)]\n\n if (ik < 4 || ksR <= 4) {\n invKeySchedule[ik] = tt\n } else {\n invKeySchedule[ik] =\n G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^\n G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 0xff]] ^\n G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 0xff]] ^\n G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]]\n }\n }\n\n this._nRounds = nRounds\n this._keySchedule = keySchedule\n this._invKeySchedule = invKeySchedule\n}\n\nAES.prototype.encryptBlockRaw = function (M) {\n M = asUInt32Array(M)\n return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds)\n}\n\nAES.prototype.encryptBlock = function (M) {\n var out = this.encryptBlockRaw(M)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[1], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[3], 12)\n return buf\n}\n\nAES.prototype.decryptBlock = function (M) {\n M = asUInt32Array(M)\n\n // swap\n var m1 = M[1]\n M[1] = M[3]\n M[3] = m1\n\n var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[3], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[1], 12)\n return buf\n}\n\nAES.prototype.scrub = function () {\n scrubVec(this._keySchedule)\n scrubVec(this._invKeySchedule)\n scrubVec(this._key)\n}\n\nmodule.exports.AES = AES\n","var Buffer = require('safe-buffer').Buffer\nvar MD5 = require('md5.js')\n\n/* eslint-disable camelcase */\nfunction EVP_BytesToKey (password, salt, keyBits, ivLen) {\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary')\n if (salt) {\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, 'binary')\n if (salt.length !== 8) throw new RangeError('salt should be Buffer with 8 byte length')\n }\n\n var keyLen = keyBits / 8\n var key = Buffer.alloc(keyLen)\n var iv = Buffer.alloc(ivLen || 0)\n var tmp = Buffer.alloc(0)\n\n while (keyLen > 0 || ivLen > 0) {\n var hash = new MD5()\n hash.update(tmp)\n hash.update(password)\n if (salt) hash.update(salt)\n tmp = hash.digest()\n\n var used = 0\n\n if (keyLen > 0) {\n var keyStart = key.length - keyLen\n used = Math.min(keyLen, tmp.length)\n tmp.copy(key, keyStart, 0, used)\n keyLen -= used\n }\n\n if (used < tmp.length && ivLen > 0) {\n var ivStart = iv.length - ivLen\n var length = Math.min(ivLen, tmp.length - used)\n tmp.copy(iv, ivStart, used, used + length)\n ivLen -= length\n }\n }\n\n tmp.fill(0)\n return { key: key, iv: iv }\n}\n\nmodule.exports = EVP_BytesToKey\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","var asn1 = require('./asn1')\nvar aesid = require('./aesid.json')\nvar fixProc = require('./fixProc')\nvar ciphers = require('browserify-aes')\nvar compat = require('pbkdf2')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = parseKeys\n\nfunction parseKeys (buffer) {\n var password\n if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n password = buffer.passphrase\n buffer = buffer.key\n }\n if (typeof buffer === 'string') {\n buffer = Buffer.from(buffer)\n }\n\n var stripped = fixProc(buffer, password)\n\n var type = stripped.tag\n var data = stripped.data\n var subtype, ndata\n switch (type) {\n case 'CERTIFICATE':\n ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo\n // falls through\n case 'PUBLIC KEY':\n if (!ndata) {\n ndata = asn1.PublicKey.decode(data, 'der')\n }\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der')\n case '1.2.840.10045.2.1':\n ndata.subjectPrivateKey = ndata.subjectPublicKey\n return {\n type: 'ec',\n data: ndata\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der')\n return {\n type: 'dsa',\n data: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'ENCRYPTED PRIVATE KEY':\n data = asn1.EncryptedPrivateKey.decode(data, 'der')\n data = decrypt(data, password)\n // falls through\n case 'PRIVATE KEY':\n ndata = asn1.PrivateKey.decode(data, 'der')\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der')\n case '1.2.840.10045.2.1':\n return {\n curve: ndata.algorithm.curve,\n privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der')\n return {\n type: 'dsa',\n params: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'RSA PUBLIC KEY':\n return asn1.RSAPublicKey.decode(data, 'der')\n case 'RSA PRIVATE KEY':\n return asn1.RSAPrivateKey.decode(data, 'der')\n case 'DSA PRIVATE KEY':\n return {\n type: 'dsa',\n params: asn1.DSAPrivateKey.decode(data, 'der')\n }\n case 'EC PRIVATE KEY':\n data = asn1.ECPrivateKey.decode(data, 'der')\n return {\n curve: data.parameters.value,\n privateKey: data.privateKey\n }\n default: throw new Error('unknown key type ' + type)\n }\n}\nparseKeys.signature = asn1.signature\nfunction decrypt (data, password) {\n var salt = data.algorithm.decrypt.kde.kdeparams.salt\n var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10)\n var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')]\n var iv = data.algorithm.decrypt.cipher.iv\n var cipherText = data.subjectPrivateKey\n var keylen = parseInt(algo.split('-')[1], 10) / 8\n var key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1')\n var cipher = ciphers.createDecipheriv(algo, key, iv)\n var out = []\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n return Buffer.concat(out)\n}\n","var now = require('performance-now')\n , root = typeof window === 'undefined' ? global : window\n , vendors = ['moz', 'webkit']\n , suffix = 'AnimationFrame'\n , raf = root['request' + suffix]\n , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor(var i = 0; !raf && i < vendors.length; i++) {\n raf = root[vendors[i] + 'Request' + suffix]\n caf = root[vendors[i] + 'Cancel' + suffix]\n || root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif(!raf || !caf) {\n var last = 0\n , id = 0\n , queue = []\n , frameDuration = 1000 / 60\n\n raf = function(callback) {\n if(queue.length === 0) {\n var _now = now()\n , next = Math.max(0, frameDuration - (_now - last))\n last = next + _now\n setTimeout(function() {\n var cp = queue.slice(0)\n // Clear queue here to prevent\n // callbacks from appending listeners\n // to the current frame's queue\n queue.length = 0\n for(var i = 0; i < cp.length; i++) {\n if(!cp[i].cancelled) {\n try{\n cp[i].callback(last)\n } catch(e) {\n setTimeout(function() { throw e }, 0)\n }\n }\n }\n }, Math.round(next))\n }\n queue.push({\n handle: ++id,\n callback: callback,\n cancelled: false\n })\n return id\n }\n\n caf = function(handle) {\n for(var i = 0; i < queue.length; i++) {\n if(queue[i].handle === handle) {\n queue[i].cancelled = true\n }\n }\n }\n}\n\nmodule.exports = function(fn) {\n // Wrap in a new function to prevent\n // `cancel` potentially being assigned\n // to the native rAF function\n return raf.call(root, fn)\n}\nmodule.exports.cancel = function() {\n caf.apply(root, arguments)\n}\nmodule.exports.polyfill = function(object) {\n if (!object) {\n object = root;\n }\n object.requestAnimationFrame = raf\n object.cancelAnimationFrame = caf\n}\n","export const changeBottomPanelHeight = (payload) => ({\n type: \"CHANGE_BOTTOM_PANEL_HEIGHT\",\n error: false,\n payload,\n});\nexport const changeBottomPanelTab = (payload) => ({\n type: \"CHANGE_BOTTOM_PANEL_TAB\",\n error: false,\n payload,\n});\n","var parse = require('../parse/index.js')\n\n/**\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Object} [options] - the object with options\n * @param {Number} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * var result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * var result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), {weekStartsOn: 1})\n * //=> Mon Sep 01 2014 00:00:00\n */\nfunction startOfWeek (dirtyDate, dirtyOptions) {\n var weekStartsOn = dirtyOptions ? (Number(dirtyOptions.weekStartsOn) || 0) : 0\n\n var date = parse(dirtyDate)\n var day = date.getDay()\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn\n\n date.setDate(date.getDate() - diff)\n date.setHours(0, 0, 0, 0)\n return date\n}\n\nmodule.exports = startOfWeek\n","var startOfDay = require('../start_of_day/index.js')\n\nvar MILLISECONDS_IN_MINUTE = 60000\nvar MILLISECONDS_IN_DAY = 86400000\n\n/**\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * var result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n */\nfunction differenceInCalendarDays (dirtyDateLeft, dirtyDateRight) {\n var startOfDayLeft = startOfDay(dirtyDateLeft)\n var startOfDayRight = startOfDay(dirtyDateRight)\n\n var timestampLeft = startOfDayLeft.getTime() -\n startOfDayLeft.getTimezoneOffset() * MILLISECONDS_IN_MINUTE\n var timestampRight = startOfDayRight.getTime() -\n startOfDayRight.getTimezoneOffset() * MILLISECONDS_IN_MINUTE\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a day is not constant\n // (e.g. it's different in the day of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY)\n}\n\nmodule.exports = differenceInCalendarDays\n","var parse = require('../parse/index.js')\nvar getDaysInMonth = require('../get_days_in_month/index.js')\n\n/**\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added\n * @returns {Date} the new date with the months added\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * var result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\nfunction addMonths (dirtyDate, dirtyAmount) {\n var date = parse(dirtyDate)\n var amount = Number(dirtyAmount)\n var desiredMonth = date.getMonth() + amount\n var dateWithDesiredMonth = new Date(0)\n dateWithDesiredMonth.setFullYear(date.getFullYear(), desiredMonth, 1)\n dateWithDesiredMonth.setHours(0, 0, 0, 0)\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth)\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n date.setMonth(desiredMonth, Math.min(daysInMonth, date.getDate()))\n return date\n}\n\nmodule.exports = addMonths\n","var parse = require('../parse/index.js')\n\n/**\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of milliseconds\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * var result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\nfunction differenceInMilliseconds (dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft)\n var dateRight = parse(dirtyDateRight)\n return dateLeft.getTime() - dateRight.getTime()\n}\n\nmodule.exports = differenceInMilliseconds\n","var makeString = require('./helper/makeString');\nvar strRepeat = require('./helper/strRepeat');\n\nmodule.exports = function pad(str, length, padStr, type) {\n str = makeString(str);\n length = ~~length;\n\n var padlen = 0;\n\n if (!padStr)\n padStr = ' ';\n else if (padStr.length > 1)\n padStr = padStr.charAt(0);\n\n switch (type) {\n case 'right':\n padlen = length - str.length;\n return str + strRepeat(padStr, padlen);\n case 'both':\n padlen = length - str.length;\n return strRepeat(padStr, Math.ceil(padlen / 2)) + str + strRepeat(padStr, Math.floor(padlen / 2));\n default: // 'left'\n padlen = length - str.length;\n return strRepeat(padStr, padlen) + str;\n }\n};\n","import _ from \"lodash\";\nexport const STUDIO_CONFIG_KEY = \"studioConfig\";\nfunction objectDefaultValueHandler(defaultValue) {\n return {\n get(target, name) {\n return target[name] || defaultValue;\n },\n };\n}\nconst DEFAULT_CLUSTER_CONFIG = {};\nconst getClustersWithDefault = (cluster) => {\n return new Proxy(cluster, objectDefaultValueHandler(DEFAULT_CLUSTER_CONFIG));\n};\nexport const DEFAULT_STUDIO_CONFIG = {\n // Wraps clusters in a Proxy object to make sure a clusterConfig is\n // always defined for a given clusterId that may not be in clusters\n clusters: getClustersWithDefault(Object.freeze({})),\n notificationManager: Object.freeze({}),\n sidebarCollapsed: undefined,\n};\nexport const readStudioConfig = () => {\n try {\n const configString = window.localStorage.getItem(STUDIO_CONFIG_KEY);\n let data = DEFAULT_STUDIO_CONFIG;\n if (configString) {\n const config = JSON.parse(configString);\n // Build the StudioConfig object (we do a basic sanity check that\n // each key looks like what we expect)\n if (config) {\n if (_.isObject(config.clusters)) {\n data = {\n ...data,\n clusters: getClustersWithDefault(config.clusters),\n };\n }\n if (_.isObject(config.notificationManager)) {\n data = {\n ...data,\n notificationManager: config.notificationManager,\n };\n }\n data = {\n ...data,\n sidebarCollapsed: config.sidebarCollapsed,\n };\n }\n }\n return data;\n }\n catch (error) {\n // could be caused by JSON failing to parse, or user configuration to\n // deny localStorage access\n console.error(error);\n return DEFAULT_STUDIO_CONFIG;\n }\n};\n// Similar to the setState of React. Receives a function that returns a\n// new StudioConfig partial to update the local storage config\nexport const setStudioConfig = (updater) => {\n const oldConfig = readStudioConfig();\n const updatedConfig = {\n ...oldConfig,\n ...updater(oldConfig),\n };\n try {\n window.localStorage.setItem(STUDIO_CONFIG_KEY, JSON.stringify(updatedConfig));\n }\n catch (error) {\n // could be caused by user configuration to deny localStorage access\n console.error(error);\n // if the update of localstorage fails, let's return the current (old) configuration\n return oldConfig;\n }\n return updatedConfig;\n};\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","import { H1, Paragraph } from \"@single-js/common/components/typography\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { Alert } from \"../../components/alert/alert\";\nimport { Button, } from \"../../components/button/button\";\nimport { Loading } from \"../../components/loading/loading\";\nimport \"./form.scss\";\nexport class FormSubmitButton extends React.Component {\n render() {\n const { children, loading, onClick, styleProps, secondary, title } = this.props;\n let classes = classnames(\"single-common-components-form-submit-button\");\n let buttonStyleProps = {\n disabled: loading,\n primary: !secondary,\n };\n if (styleProps) {\n classes = classnames(\"single-common-components-form-submit-button\", styleProps.className);\n buttonStyleProps = {\n ...buttonStyleProps,\n ...styleProps,\n disabled: styleProps.disabled || loading,\n };\n }\n let loadingSpinner;\n if (loading) {\n // Studio was using Loading component without rightMargin.\n // If any impact is noticed, rightMargin should become an optional prop.\n loadingSpinner = React.createElement(Loading, { rightMargin: true, size: \"small\" });\n buttonStyleProps = {\n ...buttonStyleProps,\n icon: undefined,\n };\n }\n return (React.createElement(Button, { large: true, ...buttonStyleProps, className: classes, onClick: onClick, title: title || \"Submit\" },\n loadingSpinner,\n children));\n }\n}\nexport class FormHeader extends React.Component {\n render() {\n const { title, description, className, leftAlign } = this.props;\n const classes = classnames(\"single-common-components-form-header\", className, {\n \"left-align\": leftAlign,\n });\n let headerTitle;\n if (title) {\n headerTitle = (React.createElement(H1, { variant: \"heading-4\", mb: \"1-25x\" }, title));\n }\n let headerDescription;\n if (description) {\n headerDescription = (React.createElement(Paragraph, { variant: \"body-2\", color: \"neutral-1\", mb: \"2x\" }, description));\n }\n return (React.createElement(\"div\", { className: classes },\n headerTitle,\n headerDescription));\n }\n}\nexport function FormBody(props) {\n const { error, headerProps, children, className, innerClassName, formElementClassName, leftAlign, formBodyFullWidth, formBodyFullHeight = true, } = props;\n let formError;\n if (error) {\n formError = (React.createElement(Alert, { status: \"error\", className: \"status-msg\", message: error }));\n }\n let formHeader;\n if (headerProps) {\n const { title, description, className: headerClassName } = headerProps;\n formHeader = (React.createElement(FormHeader, { className: headerClassName, title: title, description: description, leftAlign: leftAlign }));\n }\n const classes = classnames(\"single-common-components-form-body\", className, {\n \"left-align\": leftAlign,\n \"full-height\": formBodyFullHeight,\n });\n const innerClasses = classnames(\"form-wrapper\", innerClassName, {\n \"full-width\": formBodyFullWidth,\n });\n let form;\n if (props.withoutFormTag) {\n form = children;\n }\n else {\n const handleSubmit = props.onSubmit;\n form = (React.createElement(Form, { className: formElementClassName, onSubmit: handleSubmit },\n children,\n React.createElement(\"button\", { type: \"submit\", className: \"hidden-submit-button\", tabIndex: -1 })));\n }\n return (React.createElement(\"div\", { className: classes },\n formHeader,\n React.createElement(\"div\", { className: innerClasses },\n formError,\n form)));\n}\nexport class Form extends React.Component {\n render() {\n const { className, children, ...props } = this.props;\n const classes = classnames(\"single-common-components-form\", className);\n return (React.createElement(\"form\", { ...props, className: classes, noValidate: true }, children));\n }\n}\n","\n// turn {x: {val: 1, stiffness: 1, damping: 2}, y: 2} generated by\n// `{x: spring(1, {stiffness: 1, damping: 2}), y: 2}` into {x: 1, y: 2}\n\n'use strict';\n\nexports.__esModule = true;\nexports['default'] = stripStyle;\n\nfunction stripStyle(style) {\n var ret = {};\n for (var key in style) {\n if (!Object.prototype.hasOwnProperty.call(style, key)) {\n continue;\n }\n ret[key] = typeof style[key] === 'number' ? style[key] : style[key].val;\n }\n return ret;\n}\n\nmodule.exports = exports['default'];","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","import React from \"react\";\nexport function useMediaQuery(query) {\n const getMatches = (query) => {\n // Prevents SSR issues\n if (typeof window !== \"undefined\" && window.matchMedia) {\n return window.matchMedia(query).matches;\n }\n return false;\n };\n const [matches, setMatches] = React.useState(getMatches(query));\n function handleChange() {\n setMatches(getMatches(query));\n }\n React.useEffect(() => {\n if (window.matchMedia) {\n const matchMedia = window.matchMedia(query);\n // Triggered at the first client-side load and if query changes\n handleChange();\n // Listen matchMedia\n if (matchMedia.addListener) {\n matchMedia.addListener(handleChange);\n }\n else {\n matchMedia.addEventListener(\"change\", handleChange);\n }\n return () => {\n if (matchMedia.removeListener) {\n matchMedia.removeListener(handleChange);\n }\n else {\n matchMedia.removeEventListener(\"change\", handleChange);\n }\n };\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [query]);\n return matches;\n}\nexport default useMediaQuery;\n","import React from \"react\";\nimport { useLocalStorage } from \"./hooks/use-local-storage\";\nimport { useMediaQuery } from \"./hooks/use-media-query\";\nconst COLOR_SCHEME_QUERY = \"(prefers-color-scheme: dark)\";\nexport const ThemeContext = React.createContext(null);\nexport function ThemeProvider(props) {\n const isOSDark = useMediaQuery(COLOR_SCHEME_QUERY);\n const systemTheme = isOSDark ? \"dark\" : \"light\";\n const [themePreferenceLocalStorage, setThemePreferenceLocalStorage] = useLocalStorage(\"singlestore-ui-theme\", \"system\");\n let themePreference = themePreferenceLocalStorage;\n if (props.themePreference) {\n themePreference = props.themePreference;\n }\n let setThemePreference = setThemePreferenceLocalStorage;\n if (props.setThemePreference) {\n setThemePreference = props.setThemePreference;\n }\n const theme = themePreference === \"system\" ? systemTheme : themePreference;\n const themeConditional = (value) => {\n return value[theme];\n };\n React.useEffect(() => {\n if (theme === \"dark\") {\n document.body.classList.add(\"dark-mode\");\n }\n else {\n document.body.classList.remove(\"dark-mode\");\n }\n }, [theme]);\n return (React.createElement(ThemeContext.Provider, { value: {\n theme,\n themePreference,\n setThemePreference,\n themeConditional,\n } }, props.children));\n}\nexport function useTheme() {\n const context = React.useContext(ThemeContext);\n if (!context) {\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n }\n return context;\n}\n","import React from \"react\";\n// https://usehooks.com/useLocalStorage/\n/*\n Sync state to local storage so that it persists through a page refresh. Usage is similar to useState except we pass in a local storage key so that we can default to that value on page load instead of the specified initial value.\n\n Since the local storage API isn't available in server-rendering environments, we check that typeof window !== \"undefined\" to make SSR and SSG work properly.\n*/\nexport function useLocalStorage(key, initialValue) {\n // State to store our value\n // Pass initial state function to useState so logic is only executed once\n const [storedValue, setStoredValue] = React.useState(() => {\n if (typeof window === \"undefined\") {\n return initialValue;\n }\n try {\n // Get from local storage by key\n const item = window.localStorage.getItem(key);\n // Parse stored json or if none return initialValue\n return item ? JSON.parse(item) : initialValue;\n }\n catch (error) {\n // If error also return initialValue\n console.log(error);\n return initialValue;\n }\n });\n // Return a wrapped version of useState's setter function that ...\n // ... persists the new value to localStorage.\n const setValue = (value) => {\n try {\n // Allow value to be a function so we have same API as useState\n const valueToStore = value instanceof Function ? value(storedValue) : value;\n // Save state\n setStoredValue(valueToStore);\n // Save to local storage\n if (typeof window !== \"undefined\") {\n window.localStorage.setItem(key, JSON.stringify(valueToStore));\n }\n }\n catch (error) {\n // A more advanced implementation would handle the error case\n console.log(error);\n }\n };\n return [storedValue, setValue];\n}\n","export function Condition({ check, children }) {\n if (check) {\n return children;\n }\n else {\n return null;\n }\n}\n","import classnames from \"classnames\";\nimport _ from \"lodash\";\nimport * as React from \"react\";\nimport { Condition } from \"../../components/condition/condition\";\nimport { Icon } from \"../../components/icon/icon\";\nimport { Portal } from \"../../components/portal/portal\";\nimport Key from \"../../util/key\";\nimport { CustomScrollbar, } from \"../custom-scrollbar/custom-scrollbar\";\nimport \"./fullscreen.scss\";\nexport class FullScreen extends React.Component {\n constructor(props) {\n super(props);\n this.$scrollbar = React.createRef();\n this.handleKeyDown = (evt) => {\n const { onClose } = this.props;\n if (evt.keyCode === Key.ESC && onClose) {\n evt.preventDefault();\n onClose();\n }\n };\n this.handleAnimationEnd = () => {\n // Because the content animation changes the content's height, the\n // height that the Scrollbars used to render will be out of date after\n // the animation, so trigger a rerender with a Resize event.\n window.dispatchEvent(new Event(\"resize\"));\n };\n this.handleAnimationEnd = _.debounce(this.handleAnimationEnd, 100);\n }\n scrollToTop() {\n if (this.$scrollbar.current) {\n this.$scrollbar.current.scrollToTop();\n }\n }\n render() {\n const { children, actions, onClose, disableClose, className, innerClassName, fullWidth, innerContentPadding, } = this.props;\n const classes = classnames(\"single-common-components-fullscreen\", className);\n const innerClasses = classnames(\"fullscreen-content-inner\", {\n \"full-width\": fullWidth,\n \"content-padding\": innerContentPadding,\n }, innerClassName);\n let closeButton;\n if (onClose) {\n const closeButtonClasses = classnames(\"close-button\", {\n disabled: disableClose,\n });\n if (disableClose) {\n closeButton = (React.createElement(Icon, { icon: \"times\", iconType: \"light\", \"data-testid\": \"close-modal-btn\", className: closeButtonClasses }));\n }\n else {\n closeButton = (React.createElement(Icon, { icon: \"times\", iconType: \"light\", onClick: onClose, \"data-testid\": \"close-modal-btn\", className: closeButtonClasses }));\n }\n }\n return (React.createElement(Portal, { active: true },\n React.createElement(\"div\", { className: classes, onKeyDown: this.handleKeyDown },\n React.createElement(\"div\", { className: \"fullscreen-inner\" },\n React.createElement(CustomScrollbar, { universal: true, autoHide: true, className: \"fullscreen-scroll\", ref: this.$scrollbar },\n React.createElement(\"div\", { className: \"fullscreen-content\" },\n closeButton,\n React.createElement(\"div\", { className: innerClasses, onAnimationEnd: this.handleAnimationEnd }, children))),\n React.createElement(Condition, { check: !!actions },\n React.createElement(\"div\", { className: \"fullscreen-actions\" },\n React.createElement(\"div\", { className: \"fullscreen-actions-inner\" }, actions)))))));\n }\n}\nFullScreen.defaultProps = {\n innerContentPadding: true,\n};\n","export const PER_QUERY_ROW_LIMIT = \"300\";\n","// Manually extracted from mysql-5.5.23/include/mysql_com.h\nexports.CLIENT_LONG_PASSWORD = 1; /* new more secure passwords */\nexports.CLIENT_FOUND_ROWS = 2; /* Found instead of affected rows */\nexports.CLIENT_LONG_FLAG = 4; /* Get all column flags */\nexports.CLIENT_CONNECT_WITH_DB = 8; /* One can specify db on connect */\nexports.CLIENT_NO_SCHEMA = 16; /* Don't allow database.table.column */\nexports.CLIENT_COMPRESS = 32; /* Can use compression protocol */\nexports.CLIENT_ODBC = 64; /* Odbc client */\nexports.CLIENT_LOCAL_FILES = 128; /* Can use LOAD DATA LOCAL */\nexports.CLIENT_IGNORE_SPACE = 256; /* Ignore spaces before '(' */\nexports.CLIENT_PROTOCOL_41 = 512; /* New 4.1 protocol */\nexports.CLIENT_INTERACTIVE = 1024; /* This is an interactive client */\nexports.CLIENT_SSL = 2048; /* Switch to SSL after handshake */\nexports.CLIENT_IGNORE_SIGPIPE = 4096; /* IGNORE sigpipes */\nexports.CLIENT_TRANSACTIONS = 8192; /* Client knows about transactions */\nexports.CLIENT_RESERVED = 16384; /* Old flag for 4.1 protocol */\nexports.CLIENT_SECURE_CONNECTION = 32768; /* New 4.1 authentication */\n\nexports.CLIENT_MULTI_STATEMENTS = 65536; /* Enable/disable multi-stmt support */\nexports.CLIENT_MULTI_RESULTS = 131072; /* Enable/disable multi-results */\nexports.CLIENT_PS_MULTI_RESULTS = 262144; /* Multi-results in PS-protocol */\n\nexports.CLIENT_PLUGIN_AUTH = 524288; /* Client supports plugin authentication */\n\nexports.CLIENT_SSL_VERIFY_SERVER_CERT = 1073741824;\nexports.CLIENT_REMEMBER_OPTIONS = 2147483648;\n","import _ from \"lodash\";\nimport * as ConnectionApi from \"../../core/sql/connection/worker-connection\";\nimport * as ExplainApi from \"../../core/sql/explain/worker-explain\";\nexport class ApiHandler {\n constructor(extraApis) {\n this.apis = [ConnectionApi, ExplainApi, extraApis];\n }\n // For each API file, there are multiple exported values. We have\n // to filter out the values which are action handlers. We do this\n // by checking for the `handler` property which is a part of every\n // action creator (as per `makeActionCreator`).\n getHandlers(api) {\n return _(api)\n .values()\n .filter((v) => v.handler)\n .value();\n }\n getApiHandler() {\n return _(this.apis).map(this.getHandlers).flatten().value();\n }\n findHandler(actionType) {\n return _(this.getApiHandler())\n .filter((ac) => ac.handler.actionType === actionType)\n .map((ac) => ac.handler.handle)\n .first();\n }\n handlesAction(actionType) {\n return !!this.findHandler(actionType);\n }\n handleAction(actionType, ctx, args) {\n const handler = this.findHandler(actionType);\n if (!handler) {\n throw new Error(`Unhandled worker action ${actionType}`);\n }\n return handler(ctx, args);\n }\n}\n","export const buildHostsAction = (payload) => ({\n type: \"HOSTS\",\n payload: {\n loading: false,\n data: payload,\n },\n error: false,\n});\nexport const sortHosts = (payload) => ({\n type: \"SORT_HOSTS\",\n error: false,\n payload,\n});\nexport const sortHostNodes = (payload) => ({\n type: \"SORT_HOST_NODES\",\n error: false,\n payload,\n});\n","import { DATA_TYPE_TO_CATEGORY } from \"@single-js/common/util/data-type\";\nimport { _formatPartitionStatus } from \"view/common/models/cluster-metadata\";\nconst COLUMN_CATEGORY_ICON = {\n number: \"hashtag\",\n datetime: \"calendar-alt\",\n string: \"font\",\n json: \"json\",\n geospatial: \"globe\",\n enum: \"ballot-check\",\n};\nexport function formatDatabaseStatus(database) {\n return _formatPartitionStatus(database.derived.status, database.derived.impacted);\n}\nexport function getDatabaseStatusLevel(database) {\n if (database.status === \"online\" && !database.impacted) {\n return \"success\";\n }\n else if (database.status === \"offline_recovering\" ||\n database.status === \"offline\") {\n return \"error\";\n }\n else {\n return \"warning\";\n }\n}\nexport function getColumnIcon(column) {\n return (COLUMN_CATEGORY_ICON[DATA_TYPE_TO_CATEGORY[column.dataType]] ||\n \"question\");\n}\n","import { Icon } from \"@single-js/common/components/icon/icon\";\nimport { COLORS } from \"@single-js/common/sui/color-map\";\nimport { LONG_EM_DASH } from \"@single-js/common/util/symbols\";\nimport getTime from \"date-fns/get_time\";\nimport qualifiedName from \"memsql/qualified-name\";\nimport * as React from \"react\";\nimport showDefinitionColumn from \"util/show-definition-column\";\nimport ConsoleQueryButton from \"view/common/console-query-button\";\nimport { formatBatchTimestamp } from \"view/common/models/pipelines\";\nimport \"./columns-info.scss\";\nconst formatPipelineState = (state) => {\n let iconColor;\n switch (state) {\n case \"Running\":\n iconColor = \"success\";\n break;\n case \"Stopped\":\n iconColor = \"warn\";\n break;\n case \"Error\":\n default:\n iconColor = \"error\";\n break;\n }\n return (React.createElement(\"div\", { className: \"pipeline-state\" },\n React.createElement(Icon, { className: \"icon\", icon: \"circle\", size: \"xs\", ...{ [iconColor]: true } }),\n state));\n};\nconst formatLastBatchState = (batch) => {\n if (!batch) {\n return \"—\";\n }\n let color;\n switch (batch.state) {\n case \"Failed\":\n color = COLORS[\"base-red-900\"];\n break;\n case \"Canceled\":\n color = COLORS[\"base-yellow-900\"];\n break;\n default:\n break;\n }\n return React.createElement(\"span\", { style: { color } }, batch.state);\n};\nconst getSourceTypeIcon = (sourceType) => {\n switch (sourceType) {\n case \"S3\":\n return \"s3\";\n case \"KAFKA\":\n return \"kafka\";\n case \"AZURE\":\n return \"azure\";\n case \"FS\":\n return \"filesystem\";\n case \"HDFS\":\n return \"hdfs\";\n case \"PROMETHEUS_EXPORTER\":\n return \"prometheus\";\n default:\n return \"question\";\n }\n};\nconst PIPELINES_COLUMNS = [\n {\n id: \"pipelineName\",\n title: \"Name\",\n formatter: (pipeline) => (React.createElement(React.Fragment, null,\n React.createElement(Icon, { icon: getSourceTypeIcon(pipeline.sourceType), size: \"sm\", className: \"name-icon\" }),\n pipeline.pipelineName)),\n getValue: (pipeline) => pipeline.pipelineName,\n },\n {\n id: \"databaseName\",\n title: \"Database Name\",\n formatter: (pipeline) => pipeline.databaseName,\n getValue: (pipeline) => pipeline.databaseName,\n },\n {\n id: \"pipelineState\",\n title: \"State\",\n formatter: (pipeline) => formatPipelineState(pipeline.state),\n getValue: (pipeline) => pipeline.state,\n },\n {\n id: \"pipelineFailedBatches\",\n title: \"Failed Batches\",\n textAlign: \"right\",\n formatter: (pipeline) => pipeline.numFailedBatches.toString(),\n getValue: (pipeline) => pipeline.numFailedBatches.toNumber(), // PLAT-3189\n },\n {\n id: \"pipelineLastBatchState\",\n title: \"Last Batch State\",\n formatter: (pipeline) => formatLastBatchState(pipeline.lastBatch),\n getValue: (pipeline) => pipeline.lastBatch ? pipeline.lastBatch.state : undefined,\n },\n {\n id: \"pipelineLastBatchTimestamp\",\n title: \"Last Batch Time\",\n formatter: (pipeline) => pipeline.lastBatch\n ? formatBatchTimestamp(pipeline.lastBatch)\n : LONG_EM_DASH,\n getValue: (pipeline) => {\n if (pipeline.lastBatch && pipeline.lastBatch.timestamp) {\n return getTime(pipeline.lastBatch.timestamp);\n }\n },\n },\n {\n id: \"pipelineLastBatchRowsWritten\",\n title: \"Last Batch Rows Written\",\n textAlign: \"right\",\n formatter: (pipeline) => {\n if (pipeline.lastBatch) {\n return pipeline.lastBatch.rowsWritten === undefined\n ? LONG_EM_DASH\n : pipeline.lastBatch.rowsWritten.toString();\n }\n else {\n return LONG_EM_DASH;\n }\n },\n getValue: (pipeline) => pipeline.lastBatch && pipeline.lastBatch.rowsWritten\n ? pipeline.lastBatch.rowsWritten.toNumber()\n : undefined, // PLAT-3189\n },\n showDefinitionColumn({\n formatter: ({ databaseName, pipelineName }) => (React.createElement(ConsoleQueryButton, { tipProps: {\n direction: \"sw\",\n tooltip: \"Get the SHOW CREATE PIPELINE output for this pipeline.\",\n }, query: `SHOW CREATE PIPELINE ${qualifiedName({\n databaseName,\n name: pipelineName,\n })} \\\\G`, category: \"schema-explorer\", action: \"show-create-pipeline\" })),\n }),\n];\nexport default PIPELINES_COLUMNS;\n","var defaultShouldAsyncValidate = function defaultShouldAsyncValidate(_ref) {\n var initialized = _ref.initialized,\n trigger = _ref.trigger,\n pristine = _ref.pristine,\n syncValidationPasses = _ref.syncValidationPasses;\n\n if (!syncValidationPasses) {\n return false;\n }\n\n switch (trigger) {\n case 'blur':\n case 'change':\n // blurring\n return true;\n\n case 'submit':\n // submitting, so only async validate if form is dirty or was never initialized\n // conversely, DON'T async validate if the form is pristine just as it was initialized\n return !pristine || !initialized;\n\n default:\n return false;\n }\n};\n\nexport default defaultShouldAsyncValidate;","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nexport default function formatDistance(token, count, options) {\n options = options || {};\n var result;\n\n if (typeof formatDistanceLocale[token] === 'string') {\n result = formatDistanceLocale[token];\n } else if (count === 1) {\n result = formatDistanceLocale[token].one;\n } else {\n result = formatDistanceLocale[token].other.replace('{{count}}', count);\n }\n\n if (options.addSuffix) {\n if (options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n\n return result;\n}","export default function buildFormatLongFn(args) {\n return function (dirtyOptions) {\n var options = dirtyOptions || {};\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index.js';\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nexport default function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n}","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, dirtyOptions) {\n var options = dirtyOptions || {};\n var context = options.context ? String(options.context) : 'standalone';\n var valuesArray;\n\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n\n var _width = options.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n return valuesArray[index];\n };\n}","export default function buildMatchFn(args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString);\n var options = dirtyOptions || {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var value;\n\n if (Object.prototype.toString.call(parsePatterns) === '[object Array]') {\n value = findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n } else {\n value = findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n }\n\n value = args.valueCallback ? args.valueCallback(value) : value;\n value = options.valueCallback ? options.valueCallback(value) : value;\n return {\n value: value,\n rest: string.slice(matchedString.length)\n };\n };\n}\n\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n}\n\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n}","import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index.js';\nimport buildMatchFn from '../../../_lib/buildMatchFn/index.js';\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function (value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function (index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","export default function buildMatchPatternFn(args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString);\n var options = dirtyOptions || {};\n var matchResult = string.match(args.matchPattern);\n\n if (!matchResult) {\n return null;\n }\n\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n\n if (!parseResult) {\n return null;\n }\n\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n return {\n value: value,\n rest: string.slice(matchedString.length)\n };\n };\n}","import formatDistance from './_lib/formatDistance/index.js';\nimport formatLong from './_lib/formatLong/index.js';\nimport formatRelative from './_lib/formatRelative/index.js';\nimport localize from './_lib/localize/index.js';\nimport match from './_lib/match/index.js';\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\n\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0\n /* Sunday */\n ,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index.js';\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter'] // Note: in English, the names of days of the week and months are capitalized.\n // If you are making a new locale based on this one, check if the same is true for the language you're working on.\n // Generally, formatted dates should look like they are in the middle of a sentence,\n // e.g. in Spanish language the weekdays and months should be in the lowercase.\n\n};\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\n\nfunction ordinalNumber(dirtyNumber, _dirtyOptions) {\n var number = Number(dirtyNumber); // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`:\n //\n // var options = dirtyOptions || {}\n // var unit = String(options.unit)\n //\n // where `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'\n\n var rem100 = number % 100;\n\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n\n case 2:\n return number + 'nd';\n\n case 3:\n return number + 'rd';\n }\n }\n\n return number + 'th';\n}\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function (quarter) {\n return Number(quarter) - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","const initialState = {\n state: { connected: false, config: undefined },\n monitoringState: { connected: false },\n};\nexport function connectionReducer(state = initialState, action) {\n switch (action.type) {\n case \"CONNECT\": {\n if (action.error) {\n state = {\n ...state,\n monitoringState: {\n connected: false,\n error: {\n message: action.payload.message,\n },\n },\n };\n }\n else {\n state = {\n ...state,\n state: action.payload.primaryConnection,\n monitoringState: action.payload.monitoringConnection,\n };\n }\n break;\n }\n }\n return state;\n}\n","import { getInitialState, reduce as reduceLoadingStateMachine, } from \"../../../util/loading-state-machine\";\nimport removeFromSet from \"../../../util/remove-from-set\";\nconst DEFAULT_EXPANDED_SECTIONS = [\n // Global sections\n \"Summary\",\n \"Details\",\n \"Warnings\",\n // Active node sections\n \"Node Details\",\n \"Metrics\",\n \"Projections\",\n];\nconst initialState = {\n payload: getInitialState(),\n viewportTransform: undefined,\n selectedIndex: undefined,\n tab: \"Estimated\",\n expandedSections: DEFAULT_EXPANDED_SECTIONS,\n};\n// Figure out which tab should be active when the explain layout state changes.\n// In particular, the tab should be Actual when the state becomes a new PROFILE\n// layout and Estimated when the state becomes a new EXPLAIN layout.\nconst explainTabFor = (action) => {\n if (!action.error &&\n !action.payload.loading &&\n action.payload.data.layout.planType === \"PROFILE\") {\n return \"Actual\";\n }\n return \"Estimated\";\n};\nexport function explainReducer(state = initialState, action) {\n switch (action.type) {\n case \"EXPLAIN_LAYOUT\": {\n state = {\n ...state,\n payload: reduceLoadingStateMachine(state.payload, action),\n viewportTransform: undefined,\n selectedIndex: undefined,\n tab: explainTabFor(action),\n expandedSections: DEFAULT_EXPANDED_SECTIONS,\n };\n break;\n }\n case \"SELECT_EXPLAIN_NODE\": {\n state = {\n ...state,\n selectedIndex: action.payload.index,\n };\n break;\n }\n case \"EXPLAIN_VIEWPORT_TRANSFORM\": {\n state = {\n ...state,\n viewportTransform: action.payload.transform,\n };\n break;\n }\n case \"CHANGE_EXPLAIN_TAB\": {\n state = {\n ...state,\n tab: action.payload.tab,\n };\n break;\n }\n case \"EXPAND_EXPLAIN_SECTION\": {\n state = {\n ...state,\n expandedSections: [\n ...state.expandedSections,\n action.payload.sectionName,\n ],\n };\n break;\n }\n case \"COLLAPSE_EXPLAIN_SECTION\": {\n state = {\n ...state,\n expandedSections: removeFromSet(state.expandedSections, action.payload.sectionName),\n };\n break;\n }\n }\n return state;\n}\n","import _ from \"lodash\";\nimport assign from \"../../../util/assign\";\nconst MAX_LOG_MESSAGES = 1000;\nconst initialState = {\n nextId: 0,\n messages: [],\n};\nexport function logReducer(state = initialState, action) {\n switch (action.type) {\n case \"LOG_MESSAGE\": {\n const id = state.nextId;\n state = assign(state, {\n nextId: id + 1,\n messages: _.takeRight([...state.messages, { id, msg: action.payload }], MAX_LOG_MESSAGES),\n });\n break;\n }\n }\n return state;\n}\n","import { connectionReducer, } from \"./connection/reducers-connection\";\nimport { explainReducer } from \"./explain/reducers-explain\";\nimport { logReducer } from \"./log/reducers-log\";\nimport { queryEditorReducer, } from \"./query-editor/reducers-query-editor\";\nexport const coreReducers = {\n connection: connectionReducer,\n queryEditor: queryEditorReducer,\n log: logReducer,\n explain: explainReducer,\n};\n","import EventEmitter from \"eventemitter3\";\nimport { Observable } from \"rxjs\";\nimport { jsonReplacer, jsonReviver } from \"../util/json\";\nconst nextStreamId = (() => {\n let counter = 0;\n return () => `s${counter++}`;\n})();\nexport default class WorkerProtocol extends EventEmitter {\n constructor(worker) {\n super();\n this.worker = worker;\n this.worker.onmessage = this._recv.bind(this);\n }\n // Send the request and return an Observable that streams the\n // worker's response.\n stream(request) {\n const streamId = nextStreamId();\n return Observable.create((observer) => {\n const handler = (r) => {\n switch (r.kind) {\n case \"request\":\n throw new Error(`Received unexpected response in client: ${JSON.stringify(r)}`);\n case \"response-frame\":\n observer.next(r.data);\n break;\n case \"response-error\":\n this.removeListener(streamId, handler);\n observer.error(r.error);\n break;\n case \"response-end\":\n this.removeListener(streamId, handler);\n observer.complete();\n break;\n }\n };\n // subscribe to the stream\n this.on(streamId, handler);\n // send the request to the worker\n this.send(streamId, request);\n // on observable unsubscription, stop receiving stream events\n return () => this.removeListener(streamId, handler);\n });\n }\n // Send a request or response to a specific stream\n send(streamId, payload) {\n const msg = [streamId, payload];\n try {\n const json = JSON.stringify(msg, jsonReplacer);\n this.worker.postMessage(json);\n }\n catch (err) {\n console.error(\"Failed to serialize message to JSON:\", err);\n }\n }\n _recv(msg) {\n if (typeof msg.data !== \"string\") {\n console.error(\"Received non-string message from webworker\", msg);\n return;\n }\n const json = msg.data;\n let streamId, payload;\n try {\n const message = JSON.parse(json, jsonReviver);\n [streamId, payload] = message;\n }\n catch (err) {\n return console.error(\"Failed to parse message from worker:\", msg, err);\n }\n if (this.listenerCount(streamId) > 0) {\n this.emit(streamId, payload);\n }\n else {\n this.emit(\"stream\", streamId, payload);\n }\n }\n}\n","import { map } from \"rxjs/operators\";\nimport { servicesLocator } from \"..\";\nimport { ApiHandler } from \"./api\";\nimport Protocol from \"./protocol\";\nexport const getWorkerMiddleware = (worker, extraApis = []) => ({ getState, dispatch, }) => (next) => {\n const proto = new Protocol(worker);\n const apiHandler = new ApiHandler(extraApis);\n worker.onerror = (evt) => console.error(\"WebWorker crashed\", evt);\n return (action) => {\n if (typeof action !== \"function\" &&\n apiHandler.handlesAction(action.type)) {\n // pass forward the action so it can be seen by other middleware like\n // redux-devtools or loggers\n next(action);\n return proto\n .stream({\n kind: \"request\",\n action: action.type,\n args: action.payload,\n })\n .pipe(map((action) => {\n // Every action that is emitted by the observable is dispatched\n // and if an error occurs, we catch it and log it.\n try {\n return dispatch(action);\n }\n catch (err) {\n servicesLocator\n .getLogger()\n .logError(err, `An error occurred while dispatching the action ${action.type} from the worker`);\n }\n }))\n .toPromise()\n .catch((err) => {\n servicesLocator\n .getLogger()\n .logError(err, `Uncaught promise rejection from the worker for action ${action.type}`);\n });\n }\n else {\n if (typeof action === \"function\") {\n // We pass `store.dispatch` to every thunk instead of `next` so that\n // thunks can dispatch actions that get reprocessed by this middleware\n // again and thus can be async too.\n return action(dispatch, getState);\n }\n return next(action);\n }\n };\n};\n","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\nfunction _extendableBuiltin(cls) {\n function ExtendableBuiltin() {\n cls.apply(this, arguments);\n }\n\n ExtendableBuiltin.prototype = Object.create(cls.prototype, {\n constructor: {\n value: cls,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(ExtendableBuiltin, cls);\n } else {\n ExtendableBuiltin.__proto__ = cls;\n }\n\n return ExtendableBuiltin;\n}\n\nvar ExtendableError = function (_extendableBuiltin2) {\n _inherits(ExtendableError, _extendableBuiltin2);\n\n function ExtendableError() {\n var message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n _classCallCheck(this, ExtendableError);\n\n // extending Error is weird and does not propagate `message`\n var _this = _possibleConstructorReturn(this, (ExtendableError.__proto__ || Object.getPrototypeOf(ExtendableError)).call(this, message));\n\n Object.defineProperty(_this, 'message', {\n configurable: true,\n enumerable: false,\n value: message,\n writable: true\n });\n\n Object.defineProperty(_this, 'name', {\n configurable: true,\n enumerable: false,\n value: _this.constructor.name,\n writable: true\n });\n\n if (Error.hasOwnProperty('captureStackTrace')) {\n Error.captureStackTrace(_this, _this.constructor);\n return _possibleConstructorReturn(_this);\n }\n\n Object.defineProperty(_this, 'stack', {\n configurable: true,\n enumerable: false,\n value: new Error(message).stack,\n writable: true\n });\n return _this;\n }\n\n return ExtendableError;\n}(_extendableBuiltin(Error));\n\nexport default ExtendableError;\n","import _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport ExtendableError from 'es6-error';\n\nvar SubmissionError =\n/*#__PURE__*/\nfunction (_ExtendableError) {\n _inheritsLoose(SubmissionError, _ExtendableError);\n\n function SubmissionError(errors) {\n var _this;\n\n _this = _ExtendableError.call(this, 'Submit Validation Failed') || this;\n _this.errors = errors;\n return _this;\n }\n\n return SubmissionError;\n}(ExtendableError);\n\nexport default SubmissionError;","'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","exports.BIG5_CHINESE_CI = 1;\nexports.LATIN2_CZECH_CS = 2;\nexports.DEC8_SWEDISH_CI = 3;\nexports.CP850_GENERAL_CI = 4;\nexports.LATIN1_GERMAN1_CI = 5;\nexports.HP8_ENGLISH_CI = 6;\nexports.KOI8R_GENERAL_CI = 7;\nexports.LATIN1_SWEDISH_CI = 8;\nexports.LATIN2_GENERAL_CI = 9;\nexports.SWE7_SWEDISH_CI = 10;\nexports.ASCII_GENERAL_CI = 11;\nexports.UJIS_JAPANESE_CI = 12;\nexports.SJIS_JAPANESE_CI = 13;\nexports.CP1251_BULGARIAN_CI = 14;\nexports.LATIN1_DANISH_CI = 15;\nexports.HEBREW_GENERAL_CI = 16;\nexports.TIS620_THAI_CI = 18;\nexports.EUCKR_KOREAN_CI = 19;\nexports.LATIN7_ESTONIAN_CS = 20;\nexports.LATIN2_HUNGARIAN_CI = 21;\nexports.KOI8U_GENERAL_CI = 22;\nexports.CP1251_UKRAINIAN_CI = 23;\nexports.GB2312_CHINESE_CI = 24;\nexports.GREEK_GENERAL_CI = 25;\nexports.CP1250_GENERAL_CI = 26;\nexports.LATIN2_CROATIAN_CI = 27;\nexports.GBK_CHINESE_CI = 28;\nexports.CP1257_LITHUANIAN_CI = 29;\nexports.LATIN5_TURKISH_CI = 30;\nexports.LATIN1_GERMAN2_CI = 31;\nexports.ARMSCII8_GENERAL_CI = 32;\nexports.UTF8_GENERAL_CI = 33;\nexports.CP1250_CZECH_CS = 34;\nexports.UCS2_GENERAL_CI = 35;\nexports.CP866_GENERAL_CI = 36;\nexports.KEYBCS2_GENERAL_CI = 37;\nexports.MACCE_GENERAL_CI = 38;\nexports.MACROMAN_GENERAL_CI = 39;\nexports.CP852_GENERAL_CI = 40;\nexports.LATIN7_GENERAL_CI = 41;\nexports.LATIN7_GENERAL_CS = 42;\nexports.MACCE_BIN = 43;\nexports.CP1250_CROATIAN_CI = 44;\nexports.UTF8MB4_GENERAL_CI = 45;\nexports.UTF8MB4_BIN = 46;\nexports.LATIN1_BIN = 47;\nexports.LATIN1_GENERAL_CI = 48;\nexports.LATIN1_GENERAL_CS = 49;\nexports.CP1251_BIN = 50;\nexports.CP1251_GENERAL_CI = 51;\nexports.CP1251_GENERAL_CS = 52;\nexports.MACROMAN_BIN = 53;\nexports.UTF16_GENERAL_CI = 54;\nexports.UTF16_BIN = 55;\nexports.UTF16LE_GENERAL_CI = 56;\nexports.CP1256_GENERAL_CI = 57;\nexports.CP1257_BIN = 58;\nexports.CP1257_GENERAL_CI = 59;\nexports.UTF32_GENERAL_CI = 60;\nexports.UTF32_BIN = 61;\nexports.UTF16LE_BIN = 62;\nexports.BINARY = 63;\nexports.ARMSCII8_BIN = 64;\nexports.ASCII_BIN = 65;\nexports.CP1250_BIN = 66;\nexports.CP1256_BIN = 67;\nexports.CP866_BIN = 68;\nexports.DEC8_BIN = 69;\nexports.GREEK_BIN = 70;\nexports.HEBREW_BIN = 71;\nexports.HP8_BIN = 72;\nexports.KEYBCS2_BIN = 73;\nexports.KOI8R_BIN = 74;\nexports.KOI8U_BIN = 75;\nexports.LATIN2_BIN = 77;\nexports.LATIN5_BIN = 78;\nexports.LATIN7_BIN = 79;\nexports.CP850_BIN = 80;\nexports.CP852_BIN = 81;\nexports.SWE7_BIN = 82;\nexports.UTF8_BIN = 83;\nexports.BIG5_BIN = 84;\nexports.EUCKR_BIN = 85;\nexports.GB2312_BIN = 86;\nexports.GBK_BIN = 87;\nexports.SJIS_BIN = 88;\nexports.TIS620_BIN = 89;\nexports.UCS2_BIN = 90;\nexports.UJIS_BIN = 91;\nexports.GEOSTD8_GENERAL_CI = 92;\nexports.GEOSTD8_BIN = 93;\nexports.LATIN1_SPANISH_CI = 94;\nexports.CP932_JAPANESE_CI = 95;\nexports.CP932_BIN = 96;\nexports.EUCJPMS_JAPANESE_CI = 97;\nexports.EUCJPMS_BIN = 98;\nexports.CP1250_POLISH_CI = 99;\nexports.UTF16_UNICODE_CI = 101;\nexports.UTF16_ICELANDIC_CI = 102;\nexports.UTF16_LATVIAN_CI = 103;\nexports.UTF16_ROMANIAN_CI = 104;\nexports.UTF16_SLOVENIAN_CI = 105;\nexports.UTF16_POLISH_CI = 106;\nexports.UTF16_ESTONIAN_CI = 107;\nexports.UTF16_SPANISH_CI = 108;\nexports.UTF16_SWEDISH_CI = 109;\nexports.UTF16_TURKISH_CI = 110;\nexports.UTF16_CZECH_CI = 111;\nexports.UTF16_DANISH_CI = 112;\nexports.UTF16_LITHUANIAN_CI = 113;\nexports.UTF16_SLOVAK_CI = 114;\nexports.UTF16_SPANISH2_CI = 115;\nexports.UTF16_ROMAN_CI = 116;\nexports.UTF16_PERSIAN_CI = 117;\nexports.UTF16_ESPERANTO_CI = 118;\nexports.UTF16_HUNGARIAN_CI = 119;\nexports.UTF16_SINHALA_CI = 120;\nexports.UTF16_GERMAN2_CI = 121;\nexports.UTF16_CROATIAN_MYSQL561_CI = 122;\nexports.UTF16_UNICODE_520_CI = 123;\nexports.UTF16_VIETNAMESE_CI = 124;\nexports.UCS2_UNICODE_CI = 128;\nexports.UCS2_ICELANDIC_CI = 129;\nexports.UCS2_LATVIAN_CI = 130;\nexports.UCS2_ROMANIAN_CI = 131;\nexports.UCS2_SLOVENIAN_CI = 132;\nexports.UCS2_POLISH_CI = 133;\nexports.UCS2_ESTONIAN_CI = 134;\nexports.UCS2_SPANISH_CI = 135;\nexports.UCS2_SWEDISH_CI = 136;\nexports.UCS2_TURKISH_CI = 137;\nexports.UCS2_CZECH_CI = 138;\nexports.UCS2_DANISH_CI = 139;\nexports.UCS2_LITHUANIAN_CI = 140;\nexports.UCS2_SLOVAK_CI = 141;\nexports.UCS2_SPANISH2_CI = 142;\nexports.UCS2_ROMAN_CI = 143;\nexports.UCS2_PERSIAN_CI = 144;\nexports.UCS2_ESPERANTO_CI = 145;\nexports.UCS2_HUNGARIAN_CI = 146;\nexports.UCS2_SINHALA_CI = 147;\nexports.UCS2_GERMAN2_CI = 148;\nexports.UCS2_CROATIAN_MYSQL561_CI = 149;\nexports.UCS2_UNICODE_520_CI = 150;\nexports.UCS2_VIETNAMESE_CI = 151;\nexports.UCS2_GENERAL_MYSQL500_CI = 159;\nexports.UTF32_UNICODE_CI = 160;\nexports.UTF32_ICELANDIC_CI = 161;\nexports.UTF32_LATVIAN_CI = 162;\nexports.UTF32_ROMANIAN_CI = 163;\nexports.UTF32_SLOVENIAN_CI = 164;\nexports.UTF32_POLISH_CI = 165;\nexports.UTF32_ESTONIAN_CI = 166;\nexports.UTF32_SPANISH_CI = 167;\nexports.UTF32_SWEDISH_CI = 168;\nexports.UTF32_TURKISH_CI = 169;\nexports.UTF32_CZECH_CI = 170;\nexports.UTF32_DANISH_CI = 171;\nexports.UTF32_LITHUANIAN_CI = 172;\nexports.UTF32_SLOVAK_CI = 173;\nexports.UTF32_SPANISH2_CI = 174;\nexports.UTF32_ROMAN_CI = 175;\nexports.UTF32_PERSIAN_CI = 176;\nexports.UTF32_ESPERANTO_CI = 177;\nexports.UTF32_HUNGARIAN_CI = 178;\nexports.UTF32_SINHALA_CI = 179;\nexports.UTF32_GERMAN2_CI = 180;\nexports.UTF32_CROATIAN_MYSQL561_CI = 181;\nexports.UTF32_UNICODE_520_CI = 182;\nexports.UTF32_VIETNAMESE_CI = 183;\nexports.UTF8_UNICODE_CI = 192;\nexports.UTF8_ICELANDIC_CI = 193;\nexports.UTF8_LATVIAN_CI = 194;\nexports.UTF8_ROMANIAN_CI = 195;\nexports.UTF8_SLOVENIAN_CI = 196;\nexports.UTF8_POLISH_CI = 197;\nexports.UTF8_ESTONIAN_CI = 198;\nexports.UTF8_SPANISH_CI = 199;\nexports.UTF8_SWEDISH_CI = 200;\nexports.UTF8_TURKISH_CI = 201;\nexports.UTF8_CZECH_CI = 202;\nexports.UTF8_DANISH_CI = 203;\nexports.UTF8_LITHUANIAN_CI = 204;\nexports.UTF8_SLOVAK_CI = 205;\nexports.UTF8_SPANISH2_CI = 206;\nexports.UTF8_ROMAN_CI = 207;\nexports.UTF8_PERSIAN_CI = 208;\nexports.UTF8_ESPERANTO_CI = 209;\nexports.UTF8_HUNGARIAN_CI = 210;\nexports.UTF8_SINHALA_CI = 211;\nexports.UTF8_GERMAN2_CI = 212;\nexports.UTF8_CROATIAN_MYSQL561_CI = 213;\nexports.UTF8_UNICODE_520_CI = 214;\nexports.UTF8_VIETNAMESE_CI = 215;\nexports.UTF8_GENERAL_MYSQL500_CI = 223;\nexports.UTF8MB4_UNICODE_CI = 224;\nexports.UTF8MB4_ICELANDIC_CI = 225;\nexports.UTF8MB4_LATVIAN_CI = 226;\nexports.UTF8MB4_ROMANIAN_CI = 227;\nexports.UTF8MB4_SLOVENIAN_CI = 228;\nexports.UTF8MB4_POLISH_CI = 229;\nexports.UTF8MB4_ESTONIAN_CI = 230;\nexports.UTF8MB4_SPANISH_CI = 231;\nexports.UTF8MB4_SWEDISH_CI = 232;\nexports.UTF8MB4_TURKISH_CI = 233;\nexports.UTF8MB4_CZECH_CI = 234;\nexports.UTF8MB4_DANISH_CI = 235;\nexports.UTF8MB4_LITHUANIAN_CI = 236;\nexports.UTF8MB4_SLOVAK_CI = 237;\nexports.UTF8MB4_SPANISH2_CI = 238;\nexports.UTF8MB4_ROMAN_CI = 239;\nexports.UTF8MB4_PERSIAN_CI = 240;\nexports.UTF8MB4_ESPERANTO_CI = 241;\nexports.UTF8MB4_HUNGARIAN_CI = 242;\nexports.UTF8MB4_SINHALA_CI = 243;\nexports.UTF8MB4_GERMAN2_CI = 244;\nexports.UTF8MB4_CROATIAN_MYSQL561_CI = 245;\nexports.UTF8MB4_UNICODE_520_CI = 246;\nexports.UTF8MB4_VIETNAMESE_CI = 247;\nexports.UTF8_GENERAL50_CI = 253;\n\n// short aliases\nexports.ARMSCII8 = exports.ARMSCII8_GENERAL_CI;\nexports.ASCII = exports.ASCII_GENERAL_CI;\nexports.BIG5 = exports.BIG5_CHINESE_CI;\nexports.BINARY = exports.BINARY;\nexports.CP1250 = exports.CP1250_GENERAL_CI;\nexports.CP1251 = exports.CP1251_GENERAL_CI;\nexports.CP1256 = exports.CP1256_GENERAL_CI;\nexports.CP1257 = exports.CP1257_GENERAL_CI;\nexports.CP866 = exports.CP866_GENERAL_CI;\nexports.CP850 = exports.CP850_GENERAL_CI;\nexports.CP852 = exports.CP852_GENERAL_CI;\nexports.CP932 = exports.CP932_JAPANESE_CI;\nexports.DEC8 = exports.DEC8_SWEDISH_CI;\nexports.EUCJPMS = exports.EUCJPMS_JAPANESE_CI;\nexports.EUCKR = exports.EUCKR_KOREAN_CI;\nexports.GB2312 = exports.GB2312_CHINESE_CI;\nexports.GBK = exports.GBK_CHINESE_CI;\nexports.GEOSTD8 = exports.GEOSTD8_GENERAL_CI;\nexports.GREEK = exports.GREEK_GENERAL_CI;\nexports.HEBREW = exports.HEBREW_GENERAL_CI;\nexports.HP8 = exports.HP8_ENGLISH_CI;\nexports.KEYBCS2 = exports.KEYBCS2_GENERAL_CI;\nexports.KOI8R = exports.KOI8R_GENERAL_CI;\nexports.KOI8U = exports.KOI8U_GENERAL_CI;\nexports.LATIN1 = exports.LATIN1_SWEDISH_CI;\nexports.LATIN2 = exports.LATIN2_GENERAL_CI;\nexports.LATIN5 = exports.LATIN5_TURKISH_CI;\nexports.LATIN7 = exports.LATIN7_GENERAL_CI;\nexports.MACCE = exports.MACCE_GENERAL_CI;\nexports.MACROMAN = exports.MACROMAN_GENERAL_CI;\nexports.SJIS = exports.SJIS_JAPANESE_CI;\nexports.SWE7 = exports.SWE7_SWEDISH_CI;\nexports.TIS620 = exports.TIS620_THAI_CI;\nexports.UCS2 = exports.UCS2_GENERAL_CI;\nexports.UJIS = exports.UJIS_JAPANESE_CI;\nexports.UTF16 = exports.UTF16_GENERAL_CI;\nexports.UTF16LE = exports.UTF16LE_GENERAL_CI;\nexports.UTF8 = exports.UTF8_GENERAL_CI;\nexports.UTF8MB4 = exports.UTF8MB4_GENERAL_CI;\nexports.UTF32 = exports.UTF32_GENERAL_CI;\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isScheduler(value) {\n return value && typeof value.schedule === 'function';\n}\n//# sourceMappingURL=isScheduler.js.map\n","/** PURE_IMPORTS_START _Observable,_util_subscribeToArray,_scheduled_scheduleArray PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { subscribeToArray } from '../util/subscribeToArray';\nimport { scheduleArray } from '../scheduled/scheduleArray';\nexport function fromArray(input, scheduler) {\n if (!scheduler) {\n return new Observable(subscribeToArray(input));\n }\n else {\n return scheduleArray(input, scheduler);\n }\n}\n//# sourceMappingURL=fromArray.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var subscribeToArray = function (array) {\n return function (subscriber) {\n for (var i = 0, len = array.length; i < len && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n };\n};\n//# sourceMappingURL=subscribeToArray.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });\n//# sourceMappingURL=isArrayLike.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isPromise(value) {\n return !!value && typeof value.subscribe !== 'function' && typeof value.then === 'function';\n}\n//# sourceMappingURL=isPromise.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function identity(x) {\n return x;\n}\n//# sourceMappingURL=identity.js.map\n","import _ from \"lodash\";\nexport function removeFromSet(set, value) {\n return _.reject(set, (v) => _.isEqual(v, value));\n}\n// This function updates item(s) in an array and returns a new array. The item\n// to update can either be passed directly to `oldValue` and we'll use deep\n// comparison to check for it. Alternatively, clients can pass a function as the\n// second argument that checks for the item(s) to update.\nexport function updateFromSet(set, oldValue, newValue) {\n return _.map(set, (value) => {\n if (typeof oldValue === \"function\") {\n if (oldValue(value)) {\n return newValue;\n }\n }\n else if (_.isEqual(value, oldValue)) {\n return newValue;\n }\n return value;\n });\n}\n","// See https://docs.singlestore.com/sql-reference/v6.0/datatypes/.\nexport const DATA_TYPE_TO_CATEGORY = {\n bool: \"number\",\n bit: \"number\",\n tinyint: \"number\",\n smallint: \"number\",\n mediumint: \"number\",\n int: \"number\",\n bigint: \"number\",\n double: \"number\",\n float: \"number\",\n decimal: \"number\",\n date: \"datetime\",\n time: \"datetime\",\n datetime: \"datetime\",\n year: \"datetime\",\n timestamp: \"datetime\",\n char: \"string\",\n binary: \"string\",\n varchar: \"string\",\n varbinary: \"string\",\n longtext: \"string\",\n longblob: \"string\",\n mediumblob: \"string\",\n blob: \"string\",\n tinyblob: \"string\",\n mediumtext: \"string\",\n text: \"string\",\n tinytext: \"string\",\n json: \"json\",\n geographypoint: \"geospatial\",\n geography: \"geospatial\",\n geospatial: \"geospatial\",\n enum: \"enum\",\n};\nexport const DATA_TYPES = Object.keys(DATA_TYPE_TO_CATEGORY);\n","import * as React from \"react\";\nimport \"./loading-bar.scss\";\nexport function LoadingBar(props) {\n const { width } = props;\n return (React.createElement(\"div\", { className: \"single-common-components-loading-bar\", style: { width } }));\n}\n","const isFeatureEnabled = (featureName) => {\n return (Array.isArray(window.ENABLED_FEATURES) &&\n window.ENABLED_FEATURES.includes(featureName));\n};\nexport const isCreateClusterPageAvailable = isFeatureEnabled(\"create-cluster\") && !window.MANAGED_SERVICE;\n","import * as React from \"react\";\nimport { Loading } from \"../loading/loading\";\nimport \"./fullscreen-loading.scss\";\n// Display loading centered in a fullscreen page\nexport class FullscreenLoading extends React.Component {\n render() {\n return (React.createElement(\"div\", { className: \"single-common-components-fullscreen-loading\" },\n React.createElement(Loading, { size: \"large\" })));\n }\n}\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","/**\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\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n var prototype = Component.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component.displayName || Component.name;\n var newApiName =\n typeof Component.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component;\n}\n\nexport { polyfill };\n","/** PURE_IMPORTS_START _subscribeToArray,_subscribeToPromise,_subscribeToIterable,_subscribeToObservable,_isArrayLike,_isPromise,_isObject,_symbol_iterator,_symbol_observable PURE_IMPORTS_END */\nimport { subscribeToArray } from './subscribeToArray';\nimport { subscribeToPromise } from './subscribeToPromise';\nimport { subscribeToIterable } from './subscribeToIterable';\nimport { subscribeToObservable } from './subscribeToObservable';\nimport { isArrayLike } from './isArrayLike';\nimport { isPromise } from './isPromise';\nimport { isObject } from './isObject';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport var subscribeTo = function (result) {\n if (!!result && typeof result[Symbol_observable] === 'function') {\n return subscribeToObservable(result);\n }\n else if (isArrayLike(result)) {\n return subscribeToArray(result);\n }\n else if (isPromise(result)) {\n return subscribeToPromise(result);\n }\n else if (!!result && typeof result[Symbol_iterator] === 'function') {\n return subscribeToIterable(result);\n }\n else {\n var value = isObject(result) ? 'an invalid object' : \"'\" + result + \"'\";\n var msg = \"You provided \" + value + \" where a stream was expected.\"\n + ' You can provide an Observable, Promise, Array, or Iterable.';\n throw new TypeError(msg);\n }\n};\n//# sourceMappingURL=subscribeTo.js.map\n","/** PURE_IMPORTS_START _symbol_observable PURE_IMPORTS_END */\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport var subscribeToObservable = function (obj) {\n return function (subscriber) {\n var obs = obj[Symbol_observable]();\n if (typeof obs.subscribe !== 'function') {\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n }\n else {\n return obs.subscribe(subscriber);\n }\n };\n};\n//# sourceMappingURL=subscribeToObservable.js.map\n","/** PURE_IMPORTS_START _hostReportError PURE_IMPORTS_END */\nimport { hostReportError } from './hostReportError';\nexport var subscribeToPromise = function (promise) {\n return function (subscriber) {\n promise.then(function (value) {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function (err) { return subscriber.error(err); })\n .then(null, hostReportError);\n return subscriber;\n };\n};\n//# sourceMappingURL=subscribeToPromise.js.map\n","/** PURE_IMPORTS_START _symbol_iterator PURE_IMPORTS_END */\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nexport var subscribeToIterable = function (iterable) {\n return function (subscriber) {\n var iterator = iterable[Symbol_iterator]();\n do {\n var item = iterator.next();\n if (item.done) {\n subscriber.complete();\n break;\n }\n subscriber.next(item.value);\n if (subscriber.closed) {\n break;\n }\n } while (true);\n if (typeof iterator.return === 'function') {\n subscriber.add(function () {\n if (iterator.return) {\n iterator.return();\n }\n });\n }\n return subscriber;\n };\n};\n//# sourceMappingURL=subscribeToIterable.js.map\n","import * as React from \"react\";\nimport { Button } from \"../button/button\";\nimport { ExternalLink } from \"../external-link/external-link\";\nimport { Modal } from \"../modal/modal\";\nimport \"./feedback-modal.scss\";\nexport const FeedbackModal = ({ status, onClose }) => (React.createElement(Modal, { className: \"feedback-modal\", active: status === \"OPEN\", onClose: onClose, innerContentPadding: true, actions: React.createElement(Button, { large: true, primary: true, externalLink: {\n name: \"forums\",\n }, icon: {\n icon: \"comments\",\n size: \"sm\",\n className: \"btn-icon\",\n } }, \"Send feedback in Community Forums\") },\n React.createElement(\"div\", { className: \"feedback-modal-inner\" },\n React.createElement(\"div\", { className: \"title\" }, \"Send Feedback\"),\n React.createElement(\"div\", { className: \"description\" },\n \"Send feedback, issue reports or feature ideas to the community forums, or if you have Premium Edition, submit a\",\n \" \",\n React.createElement(ExternalLink, { name: \"memsql-support\", category: \"feedback-modal\" }, \"support request\"),\n \".\"))));\n","import { servicesLocator } from \"@single-js/common/services/services-locator\";\nimport * as React from \"react\";\nimport { FeedbackModal } from \"./feedback-modal\";\nconst initialProviderValue = {\n // We are forced to define a default value for our context. Since we set\n // the context value using the `value` prop this function does not get\n // executed ever\n changeFeedbackModalStatus: () => {\n servicesLocator\n .getLogger()\n .logError(new Error(\"Called changeFeedbackModalStatus without having the FeedbackModalProvider mounted\"));\n },\n};\nexport const FeedbackModalContext = React.createContext(initialProviderValue);\nexport class FeedbackModalProvider extends React.Component {\n constructor() {\n super(...arguments);\n this.state = {\n status: \"CLOSED\",\n };\n this.handleChangeStatus = (status) => {\n this.setState({\n status,\n });\n };\n }\n render() {\n const { status } = this.state;\n const { children } = this.props;\n return (React.createElement(FeedbackModalContext.Provider, { value: {\n changeFeedbackModalStatus: this.handleChangeStatus,\n } },\n React.createElement(FeedbackModal, { status: status, onClose: () => {\n this.handleChangeStatus(\"CLOSED\");\n } }),\n children));\n }\n}\n","import * as tslib_1 from \"tslib\";\nimport { getGlobalObject, isThenable, normalize, SyncPromise } from '@sentry/utils';\nimport { Span } from './span';\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nvar Scope = /** @class */ (function () {\n function Scope() {\n /** Flag if notifiying is happening. */\n this._notifyingListeners = false;\n /** Callback for client to receive scope changes. */\n this._scopeListeners = [];\n /** Callback list that will be called after {@link applyToEvent}. */\n this._eventProcessors = [];\n /** Array of breadcrumbs. */\n this._breadcrumbs = [];\n /** User */\n this._user = {};\n /** Tags */\n this._tags = {};\n /** Extra */\n this._extra = {};\n /** Contexts */\n this._context = {};\n }\n /**\n * Add internal on change listener. Used for sub SDKs that need to store the scope.\n * @hidden\n */\n Scope.prototype.addScopeListener = function (callback) {\n this._scopeListeners.push(callback);\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.addEventProcessor = function (callback) {\n this._eventProcessors.push(callback);\n return this;\n };\n /**\n * This will be called on every set call.\n */\n Scope.prototype._notifyScopeListeners = function () {\n var _this = this;\n if (!this._notifyingListeners) {\n this._notifyingListeners = true;\n setTimeout(function () {\n _this._scopeListeners.forEach(function (callback) {\n callback(_this);\n });\n _this._notifyingListeners = false;\n });\n }\n };\n /**\n * This will be called after {@link applyToEvent} is finished.\n */\n Scope.prototype._notifyEventProcessors = function (processors, event, hint, index) {\n var _this = this;\n if (index === void 0) { index = 0; }\n return new SyncPromise(function (resolve, reject) {\n var processor = processors[index];\n // tslint:disable-next-line:strict-type-predicates\n if (event === null || typeof processor !== 'function') {\n resolve(event);\n }\n else {\n var result = processor(tslib_1.__assign({}, event), hint);\n if (isThenable(result)) {\n result\n .then(function (final) { return _this._notifyEventProcessors(processors, final, hint, index + 1).then(resolve); })\n .catch(reject);\n }\n else {\n _this._notifyEventProcessors(processors, result, hint, index + 1)\n .then(resolve)\n .catch(reject);\n }\n }\n });\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setUser = function (user) {\n this._user = normalize(user);\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setTags = function (tags) {\n this._tags = tslib_1.__assign({}, this._tags, normalize(tags));\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setTag = function (key, value) {\n var _a;\n this._tags = tslib_1.__assign({}, this._tags, (_a = {}, _a[key] = normalize(value), _a));\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setExtras = function (extra) {\n this._extra = tslib_1.__assign({}, this._extra, normalize(extra));\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setExtra = function (key, extra) {\n var _a;\n this._extra = tslib_1.__assign({}, this._extra, (_a = {}, _a[key] = normalize(extra), _a));\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setFingerprint = function (fingerprint) {\n this._fingerprint = normalize(fingerprint);\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setLevel = function (level) {\n this._level = normalize(level);\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setTransaction = function (transaction) {\n this._transaction = transaction;\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setContext = function (name, context) {\n this._context[name] = context ? normalize(context) : undefined;\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setSpan = function (span) {\n this._span = span;\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.startSpan = function (parentSpan) {\n var span = new Span();\n span.setParent(parentSpan);\n this.setSpan(span);\n return span;\n };\n /**\n * Internal getter for Span, used in Hub.\n * @hidden\n */\n Scope.prototype.getSpan = function () {\n return this._span;\n };\n /**\n * Inherit values from the parent scope.\n * @param scope to clone.\n */\n Scope.clone = function (scope) {\n var newScope = new Scope();\n Object.assign(newScope, scope, {\n _scopeListeners: [],\n });\n if (scope) {\n newScope._breadcrumbs = tslib_1.__spread(scope._breadcrumbs);\n newScope._tags = tslib_1.__assign({}, scope._tags);\n newScope._extra = tslib_1.__assign({}, scope._extra);\n newScope._context = tslib_1.__assign({}, scope._context);\n newScope._user = scope._user;\n newScope._level = scope._level;\n newScope._span = scope._span;\n newScope._transaction = scope._transaction;\n newScope._fingerprint = scope._fingerprint;\n newScope._eventProcessors = tslib_1.__spread(scope._eventProcessors);\n }\n return newScope;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.clear = function () {\n this._breadcrumbs = [];\n this._tags = {};\n this._extra = {};\n this._user = {};\n this._context = {};\n this._level = undefined;\n this._transaction = undefined;\n this._fingerprint = undefined;\n this._span = undefined;\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.addBreadcrumb = function (breadcrumb, maxBreadcrumbs) {\n var timestamp = new Date().getTime() / 1000;\n var mergedBreadcrumb = tslib_1.__assign({ timestamp: timestamp }, breadcrumb);\n this._breadcrumbs =\n maxBreadcrumbs !== undefined && maxBreadcrumbs >= 0\n ? tslib_1.__spread(this._breadcrumbs, [normalize(mergedBreadcrumb)]).slice(-maxBreadcrumbs)\n : tslib_1.__spread(this._breadcrumbs, [normalize(mergedBreadcrumb)]);\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.clearBreadcrumbs = function () {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n };\n /**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\n Scope.prototype._applyFingerprint = function (event) {\n // Make sure it's an array first and we actually have something in place\n event.fingerprint = event.fingerprint\n ? Array.isArray(event.fingerprint)\n ? event.fingerprint\n : [event.fingerprint]\n : [];\n // If we have something on the scope, then merge it with event\n if (this._fingerprint) {\n event.fingerprint = event.fingerprint.concat(this._fingerprint);\n }\n // If we have no data at all, remove empty array default\n if (event.fingerprint && !event.fingerprint.length) {\n delete event.fingerprint;\n }\n };\n /**\n * Applies the current context and fingerprint to the event.\n * Note that breadcrumbs will be added by the client.\n * Also if the event has already breadcrumbs on it, we do not merge them.\n * @param event Event\n * @param hint May contain additional informartion about the original exception.\n * @hidden\n */\n Scope.prototype.applyToEvent = function (event, hint) {\n if (this._extra && Object.keys(this._extra).length) {\n event.extra = tslib_1.__assign({}, this._extra, event.extra);\n }\n if (this._tags && Object.keys(this._tags).length) {\n event.tags = tslib_1.__assign({}, this._tags, event.tags);\n }\n if (this._user && Object.keys(this._user).length) {\n event.user = tslib_1.__assign({}, this._user, event.user);\n }\n if (this._context && Object.keys(this._context).length) {\n event.contexts = tslib_1.__assign({}, this._context, event.contexts);\n }\n if (this._level) {\n event.level = this._level;\n }\n if (this._transaction) {\n event.transaction = this._transaction;\n }\n if (this._span) {\n event.contexts = event.contexts || {};\n event.contexts.trace = this._span;\n }\n this._applyFingerprint(event);\n event.breadcrumbs = tslib_1.__spread((event.breadcrumbs || []), this._breadcrumbs);\n event.breadcrumbs = event.breadcrumbs.length > 0 ? event.breadcrumbs : undefined;\n return this._notifyEventProcessors(tslib_1.__spread(getGlobalEventProcessors(), this._eventProcessors), event, hint);\n };\n return Scope;\n}());\nexport { Scope };\n/**\n * Retruns the global event processors.\n */\nfunction getGlobalEventProcessors() {\n var global = getGlobalObject();\n global.__SENTRY__ = global.__SENTRY__ || {};\n global.__SENTRY__.globalEventProcessors = global.__SENTRY__.globalEventProcessors || [];\n return global.__SENTRY__.globalEventProcessors;\n}\n/**\n * Add a EventProcessor to be kept globally.\n * @param callback EventProcessor to add\n */\nexport function addGlobalEventProcessor(callback) {\n getGlobalEventProcessors().push(callback);\n}\n//# sourceMappingURL=scope.js.map","module.exports = require(\"sqlstring\");\n","var isHotReloading = function isHotReloading() {\n var castModule = module;\n return !!(typeof castModule !== 'undefined' && castModule.hot && typeof castModule.hot.status === 'function' && castModule.hot.status() === 'apply');\n};\n\nexport default isHotReloading;","export const mvChangeFilters = (payload) => ({\n type: \"MV_CHANGE_FILTERS\",\n error: false,\n payload,\n});\nexport const mvChangeActivityType = (payload) => ({\n type: \"MV_CHANGE_ACTIVITY_TYPE\",\n error: false,\n payload,\n});\nexport const mvChangeDatabase = (payload) => ({\n type: \"MV_CHANGE_DATABASE\",\n error: false,\n payload,\n});\nexport const mvSortQueries = (payload) => ({\n type: \"MV_SORT_QUERIES\",\n error: false,\n payload,\n});\nexport const mvSortNodes = (payload) => ({\n type: \"MV_SORT_NODES\",\n error: false,\n payload,\n});\nexport const mvChangeStatsColumns = (payload) => ({\n type: \"MV_CHANGE_STATS_COLUMNS\",\n error: false,\n payload,\n});\nexport const cancelMvRecording = () => ({\n type: \"MV_CANCEL_RECORDING\",\n error: false,\n payload: {},\n});\nexport const mvFull = (payload) => ({\n type: \"MV_FULL\",\n error: false,\n payload: {\n loading: false,\n data: payload,\n },\n});\nexport const changeMvHistoricalDropdown = (payload) => ({\n type: \"MV_HISTORICAL_CHANGE_DROPDOWN\",\n error: false,\n payload,\n});\nexport const clearMvData = () => ({\n type: \"MV_CLEAR_DATA\",\n error: false,\n payload: {},\n});\n","var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n","import _ from \"lodash\";\nimport { LEError, LELoading, LESuccess } from \"../util/loading-error\";\nimport { Version } from \"../util/version\";\nimport BigNumber from \"../vendor/bignumber.js/bignumber\";\n// This `replacer` function can be passed to any `JSON.stringify` call so that\n// we properly serialize JavaScript Date objects. (Studio internal classes are\n// properly serialized in their toJSON methods. Unfortunately, Date objects\n// already have a toJSON method that just converts them to a string; if we just\n// used that directly, we would not be able to distinguish Dates from strings\n// that happen to look like Dates.)\nexport function jsonReplacer(key, value) {\n // The value of `value` is already after toJSON has been called.\n // Fortunately you can get the raw object with this[key].\n const rawValue = this[key];\n if (rawValue instanceof Date) {\n return {\n __type__: \"Date\",\n __val__: rawValue.toJSON(), // returns just a string\n };\n }\n return value;\n}\n// This `reviver` function can be passed to any `JSON.parse` call so that we\n// properly parse BigNumbers and other Studio internal classes, as well as\n// Dates.\nexport function jsonReviver(_key, value) {\n if (_.isObject(value) && \"__type__\" in value) {\n switch (value.__type__) {\n case \"BigNumber\":\n return new BigNumber(value.__val__);\n case \"Version\":\n return new Version(value.__val__);\n case \"Date\":\n return new Date(value.__val__);\n case \"LESuccess\":\n return new LESuccess(value.__val__);\n case \"LELoading\":\n return new LELoading();\n case \"LEError\":\n return new LEError();\n }\n }\n return value;\n}\n","var getDayOfYear = require('../get_day_of_year/index.js')\nvar getISOWeek = require('../get_iso_week/index.js')\nvar getISOYear = require('../get_iso_year/index.js')\nvar parse = require('../parse/index.js')\nvar isValid = require('../is_valid/index.js')\nvar enLocale = require('../locale/en/index.js')\n\n/**\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format.\n *\n * Accepted tokens:\n * | Unit | Token | Result examples |\n * |-------------------------|-------|----------------------------------|\n * | Month | M | 1, 2, ..., 12 |\n * | | Mo | 1st, 2nd, ..., 12th |\n * | | MM | 01, 02, ..., 12 |\n * | | MMM | Jan, Feb, ..., Dec |\n * | | MMMM | January, February, ..., December |\n * | Quarter | Q | 1, 2, 3, 4 |\n * | | Qo | 1st, 2nd, 3rd, 4th |\n * | Day of month | D | 1, 2, ..., 31 |\n * | | Do | 1st, 2nd, ..., 31st |\n * | | DD | 01, 02, ..., 31 |\n * | Day of year | DDD | 1, 2, ..., 366 |\n * | | DDDo | 1st, 2nd, ..., 366th |\n * | | DDDD | 001, 002, ..., 366 |\n * | Day of week | d | 0, 1, ..., 6 |\n * | | do | 0th, 1st, ..., 6th |\n * | | dd | Su, Mo, ..., Sa |\n * | | ddd | Sun, Mon, ..., Sat |\n * | | dddd | Sunday, Monday, ..., Saturday |\n * | Day of ISO week | E | 1, 2, ..., 7 |\n * | ISO week | W | 1, 2, ..., 53 |\n * | | Wo | 1st, 2nd, ..., 53rd |\n * | | WW | 01, 02, ..., 53 |\n * | Year | YY | 00, 01, ..., 99 |\n * | | YYYY | 1900, 1901, ..., 2099 |\n * | ISO week-numbering year | GG | 00, 01, ..., 99 |\n * | | GGGG | 1900, 1901, ..., 2099 |\n * | AM/PM | A | AM, PM |\n * | | a | am, pm |\n * | | aa | a.m., p.m. |\n * | Hour | H | 0, 1, ... 23 |\n * | | HH | 00, 01, ... 23 |\n * | | h | 1, 2, ..., 12 |\n * | | hh | 01, 02, ..., 12 |\n * | Minute | m | 0, 1, ..., 59 |\n * | | mm | 00, 01, ..., 59 |\n * | Second | s | 0, 1, ..., 59 |\n * | | ss | 00, 01, ..., 59 |\n * | 1/10 of second | S | 0, 1, ..., 9 |\n * | 1/100 of second | SS | 00, 01, ..., 99 |\n * | Millisecond | SSS | 000, 001, ..., 999 |\n * | Timezone | Z | -01:00, +00:00, ... +12:00 |\n * | | ZZ | -0100, +0000, ..., +1200 |\n * | Seconds timestamp | X | 512969520 |\n * | Milliseconds timestamp | x | 512969520900 |\n *\n * The characters wrapped in square brackets are escaped.\n *\n * The result may vary by locale.\n *\n * @param {Date|String|Number} date - the original date\n * @param {String} [format='YYYY-MM-DDTHH:mm:ss.SSSZ'] - the string of tokens\n * @param {Object} [options] - the object with options\n * @param {Object} [options.locale=enLocale] - the locale object\n * @returns {String} the formatted date string\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(\n * new Date(2014, 1, 11),\n * 'MM/DD/YYYY'\n * )\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * var eoLocale = require('date-fns/locale/eo')\n * var result = format(\n * new Date(2014, 6, 2),\n * 'Do [de] MMMM YYYY',\n * {locale: eoLocale}\n * )\n * //=> '2-a de julio 2014'\n */\nfunction format (dirtyDate, dirtyFormatStr, dirtyOptions) {\n var formatStr = dirtyFormatStr ? String(dirtyFormatStr) : 'YYYY-MM-DDTHH:mm:ss.SSSZ'\n var options = dirtyOptions || {}\n\n var locale = options.locale\n var localeFormatters = enLocale.format.formatters\n var formattingTokensRegExp = enLocale.format.formattingTokensRegExp\n if (locale && locale.format && locale.format.formatters) {\n localeFormatters = locale.format.formatters\n\n if (locale.format.formattingTokensRegExp) {\n formattingTokensRegExp = locale.format.formattingTokensRegExp\n }\n }\n\n var date = parse(dirtyDate)\n\n if (!isValid(date)) {\n return 'Invalid Date'\n }\n\n var formatFn = buildFormatFn(formatStr, localeFormatters, formattingTokensRegExp)\n\n return formatFn(date)\n}\n\nvar formatters = {\n // Month: 1, 2, ..., 12\n 'M': function (date) {\n return date.getMonth() + 1\n },\n\n // Month: 01, 02, ..., 12\n 'MM': function (date) {\n return addLeadingZeros(date.getMonth() + 1, 2)\n },\n\n // Quarter: 1, 2, 3, 4\n 'Q': function (date) {\n return Math.ceil((date.getMonth() + 1) / 3)\n },\n\n // Day of month: 1, 2, ..., 31\n 'D': function (date) {\n return date.getDate()\n },\n\n // Day of month: 01, 02, ..., 31\n 'DD': function (date) {\n return addLeadingZeros(date.getDate(), 2)\n },\n\n // Day of year: 1, 2, ..., 366\n 'DDD': function (date) {\n return getDayOfYear(date)\n },\n\n // Day of year: 001, 002, ..., 366\n 'DDDD': function (date) {\n return addLeadingZeros(getDayOfYear(date), 3)\n },\n\n // Day of week: 0, 1, ..., 6\n 'd': function (date) {\n return date.getDay()\n },\n\n // Day of ISO week: 1, 2, ..., 7\n 'E': function (date) {\n return date.getDay() || 7\n },\n\n // ISO week: 1, 2, ..., 53\n 'W': function (date) {\n return getISOWeek(date)\n },\n\n // ISO week: 01, 02, ..., 53\n 'WW': function (date) {\n return addLeadingZeros(getISOWeek(date), 2)\n },\n\n // Year: 00, 01, ..., 99\n 'YY': function (date) {\n return addLeadingZeros(date.getFullYear(), 4).substr(2)\n },\n\n // Year: 1900, 1901, ..., 2099\n 'YYYY': function (date) {\n return addLeadingZeros(date.getFullYear(), 4)\n },\n\n // ISO week-numbering year: 00, 01, ..., 99\n 'GG': function (date) {\n return String(getISOYear(date)).substr(2)\n },\n\n // ISO week-numbering year: 1900, 1901, ..., 2099\n 'GGGG': function (date) {\n return getISOYear(date)\n },\n\n // Hour: 0, 1, ... 23\n 'H': function (date) {\n return date.getHours()\n },\n\n // Hour: 00, 01, ..., 23\n 'HH': function (date) {\n return addLeadingZeros(date.getHours(), 2)\n },\n\n // Hour: 1, 2, ..., 12\n 'h': function (date) {\n var hours = date.getHours()\n if (hours === 0) {\n return 12\n } else if (hours > 12) {\n return hours % 12\n } else {\n return hours\n }\n },\n\n // Hour: 01, 02, ..., 12\n 'hh': function (date) {\n return addLeadingZeros(formatters['h'](date), 2)\n },\n\n // Minute: 0, 1, ..., 59\n 'm': function (date) {\n return date.getMinutes()\n },\n\n // Minute: 00, 01, ..., 59\n 'mm': function (date) {\n return addLeadingZeros(date.getMinutes(), 2)\n },\n\n // Second: 0, 1, ..., 59\n 's': function (date) {\n return date.getSeconds()\n },\n\n // Second: 00, 01, ..., 59\n 'ss': function (date) {\n return addLeadingZeros(date.getSeconds(), 2)\n },\n\n // 1/10 of second: 0, 1, ..., 9\n 'S': function (date) {\n return Math.floor(date.getMilliseconds() / 100)\n },\n\n // 1/100 of second: 00, 01, ..., 99\n 'SS': function (date) {\n return addLeadingZeros(Math.floor(date.getMilliseconds() / 10), 2)\n },\n\n // Millisecond: 000, 001, ..., 999\n 'SSS': function (date) {\n return addLeadingZeros(date.getMilliseconds(), 3)\n },\n\n // Timezone: -01:00, +00:00, ... +12:00\n 'Z': function (date) {\n return formatTimezone(date.getTimezoneOffset(), ':')\n },\n\n // Timezone: -0100, +0000, ... +1200\n 'ZZ': function (date) {\n return formatTimezone(date.getTimezoneOffset())\n },\n\n // Seconds timestamp: 512969520\n 'X': function (date) {\n return Math.floor(date.getTime() / 1000)\n },\n\n // Milliseconds timestamp: 512969520900\n 'x': function (date) {\n return date.getTime()\n }\n}\n\nfunction buildFormatFn (formatStr, localeFormatters, formattingTokensRegExp) {\n var array = formatStr.match(formattingTokensRegExp)\n var length = array.length\n\n var i\n var formatter\n for (i = 0; i < length; i++) {\n formatter = localeFormatters[array[i]] || formatters[array[i]]\n if (formatter) {\n array[i] = formatter\n } else {\n array[i] = removeFormattingTokens(array[i])\n }\n }\n\n return function (date) {\n var output = ''\n for (var i = 0; i < length; i++) {\n if (array[i] instanceof Function) {\n output += array[i](date, formatters)\n } else {\n output += array[i]\n }\n }\n return output\n }\n}\n\nfunction removeFormattingTokens (input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|]$/g, '')\n }\n return input.replace(/\\\\/g, '')\n}\n\nfunction formatTimezone (offset, delimeter) {\n delimeter = delimeter || ''\n var sign = offset > 0 ? '-' : '+'\n var absOffset = Math.abs(offset)\n var hours = Math.floor(absOffset / 60)\n var minutes = absOffset % 60\n return sign + addLeadingZeros(hours, 2) + delimeter + addLeadingZeros(minutes, 2)\n}\n\nfunction addLeadingZeros (number, targetLength) {\n var output = Math.abs(number).toString()\n while (output.length < targetLength) {\n output = '0' + output\n }\n return output\n}\n\nmodule.exports = format\n","import { allTextVariants, commonTypographyUtilityVariants, } from \"@single-js/common/components/typography/typography-utility-variants\";\nimport { split } from \"@single-js/common/util/object\";\nimport { cva } from \"class-variance-authority\";\nimport React from \"react\";\nimport \"./text.scss\";\n// https://discord.com/channels/752614004387610674/910871187826044978/928263845330427906\nexport const textVariants = {\n ...commonTypographyUtilityVariants(),\n variant: {\n ...allTextVariants(),\n },\n};\nexport const textOwnVariantPropKeys = Object.keys(textVariants);\nexport const text = cva(\"sui-c-text\", {\n variants: textVariants,\n});\nexport const Code = ({ className, ...rest }) => {\n const [variantProps, elementProps] = split(rest, textOwnVariantPropKeys);\n return (React.createElement(\"code\", { className: text({\n variant: \"code-1\",\n ...variantProps,\n class: className,\n }), ...elementProps }));\n};\nexport const Label = ({ className, ...rest }) => {\n const [variantProps, elementProps] = split(rest, textOwnVariantPropKeys);\n return (React.createElement(\"label\", { className: text({\n variant: \"label-2\",\n ...variantProps,\n class: className,\n }), ...elementProps }));\n};\nexport const Legend = ({ className, ...rest }) => {\n const [variantProps, elementProps] = split(rest, textOwnVariantPropKeys);\n return (React.createElement(\"legend\", { className: text({\n variant: \"label-2\",\n ...variantProps,\n class: className,\n }), ...elementProps }));\n};\nexport const Caption = ({ className, ...rest }) => {\n const [variantProps, elementProps] = split(rest, textOwnVariantPropKeys);\n return (React.createElement(\"caption\", { className: text({\n variant: \"label-2\",\n ...variantProps,\n class: className,\n }), ...elementProps }));\n};\nexport const FigureCaption = ({ className, ...rest }) => {\n const [variantProps, elementProps] = split(rest, textOwnVariantPropKeys);\n return (React.createElement(\"figcaption\", { className: text({\n variant: \"label-2\",\n ...variantProps,\n class: className,\n }), ...elementProps }));\n};\nexport const Span = ({ className, ...rest }) => {\n const [variantProps, elementProps] = split(rest, textOwnVariantPropKeys);\n return (React.createElement(\"span\", { className: text({ ...variantProps, class: className }), ...elementProps }));\n};\nexport const Strong = ({ className, ...rest }) => {\n const [variantProps, elementProps] = split(rest, textOwnVariantPropKeys);\n return (React.createElement(\"strong\", { className: text({\n fontWeight: \"bold\",\n ...variantProps,\n class: className,\n }), ...elementProps }));\n};\nexport const Em = ({ className, ...rest }) => {\n const [variantProps, elementProps] = split(rest, textOwnVariantPropKeys);\n return (React.createElement(\"em\", { className: text({\n textStyle: \"italic\",\n ...variantProps,\n class: className,\n }), ...elementProps }));\n};\nexport const Bold = ({ className, ...rest }) => {\n const [variantProps, elementProps] = split(rest, textOwnVariantPropKeys);\n return (React.createElement(\"b\", { className: text({\n fontWeight: \"bold\",\n ...variantProps,\n class: className,\n }), ...elementProps }));\n};\n","// This really needs to be the first script to be imported so everything\n// else assumes this configuration.\n// It also needs to be inside its own script, because ES6 imports will always be\n// moved to the top of the file and be executed first.\nif (process.env.NODE_ENV !== \"development\") {\n __webpack_public_path__ = `${window.BASE_URL}dist/`;\n}\nelse {\n // On development all the assets are served on the root by\n // webpack-dev-server, only production serve static files under dist\n __webpack_public_path__ = `${window.BASE_URL}`;\n}\n","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","'use strict'\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n var M = ARRAY16\n for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n var a = this._a\n var b = this._b\n var c = this._c\n var d = this._d\n\n a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n this._a = (this._a + a) | 0\n this._b = (this._b + b) | 0\n this._c = (this._c + c) | 0\n this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.allocUnsafe(16)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;","'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n]\n\nvar zr = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n]\n\nvar sl = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n]\n\nvar sr = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n]\n\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16\n for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n var al = this._a | 0\n var bl = this._b | 0\n var cl = this._c | 0\n var dl = this._d | 0\n var el = this._e | 0\n\n var ar = this._a | 0\n var br = this._b | 0\n var cr = this._c | 0\n var dr = this._d | 0\n var er = this._e | 0\n\n // computation\n for (var i = 0; i < 80; i += 1) {\n var tl\n var tr\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n } else { // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n }\n\n al = el\n el = dl\n dl = rotl(cl, 10)\n cl = bl\n bl = tl\n\n ar = er\n er = dr\n dr = rotl(cr, 10)\n cr = br\n br = tr\n }\n\n // update state\n var t = (this._b + cl + dr) | 0\n this._b = (this._c + dl + er) | 0\n this._c = (this._d + el + ar) | 0\n this._d = (this._e + al + br) | 0\n this._e = (this._a + bl + cr) | 0\n this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n buffer.writeInt32LE(this._e, 16)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n","var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// 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 permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/readable.js');\nStream.Writable = require('readable-stream/writable.js');\nStream.Duplex = require('readable-stream/duplex.js');\nStream.Transform = require('readable-stream/transform.js');\nStream.PassThrough = require('readable-stream/passthrough.js');\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// 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 permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n pna.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n pna.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /**/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /**/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n stream.emit('error', err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n pna.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n if (state.corkedRequestsFree) {\n state.corkedRequestsFree.next = corkReq;\n } else {\n state.corkedRequestsFree = corkReq;\n }\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function () {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};","'use strict';\n\nvar assert = require('minimalistic-assert');\n\nfunction Cipher(options) {\n this.options = options;\n\n this.type = this.options.type;\n this.blockSize = 8;\n this._init();\n\n this.buffer = new Array(this.blockSize);\n this.bufferOff = 0;\n}\nmodule.exports = Cipher;\n\nCipher.prototype._init = function _init() {\n // Might be overrided\n};\n\nCipher.prototype.update = function update(data) {\n if (data.length === 0)\n return [];\n\n if (this.type === 'decrypt')\n return this._updateDecrypt(data);\n else\n return this._updateEncrypt(data);\n};\n\nCipher.prototype._buffer = function _buffer(data, off) {\n // Append data to buffer\n var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);\n for (var i = 0; i < min; i++)\n this.buffer[this.bufferOff + i] = data[off + i];\n this.bufferOff += min;\n\n // Shift next\n return min;\n};\n\nCipher.prototype._flushBuffer = function _flushBuffer(out, off) {\n this._update(this.buffer, 0, out, off);\n this.bufferOff = 0;\n return this.blockSize;\n};\n\nCipher.prototype._updateEncrypt = function _updateEncrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = ((this.bufferOff + data.length) / this.blockSize) | 0;\n var out = new Array(count * this.blockSize);\n\n if (this.bufferOff !== 0) {\n inputOff += this._buffer(data, inputOff);\n\n if (this.bufferOff === this.buffer.length)\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Write blocks\n var max = data.length - ((data.length - inputOff) % this.blockSize);\n for (; inputOff < max; inputOff += this.blockSize) {\n this._update(data, inputOff, out, outputOff);\n outputOff += this.blockSize;\n }\n\n // Queue rest\n for (; inputOff < data.length; inputOff++, this.bufferOff++)\n this.buffer[this.bufferOff] = data[inputOff];\n\n return out;\n};\n\nCipher.prototype._updateDecrypt = function _updateDecrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n var out = new Array(count * this.blockSize);\n\n // TODO(indutny): optimize it, this is far from optimal\n for (; count > 0; count--) {\n inputOff += this._buffer(data, inputOff);\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Buffer rest of the input\n inputOff += this._buffer(data, inputOff);\n\n return out;\n};\n\nCipher.prototype.final = function final(buffer) {\n var first;\n if (buffer)\n first = this.update(buffer);\n\n var last;\n if (this.type === 'encrypt')\n last = this._finalEncrypt();\n else\n last = this._finalDecrypt();\n\n if (first)\n return first.concat(last);\n else\n return last;\n};\n\nCipher.prototype._pad = function _pad(buffer, off) {\n if (off === 0)\n return false;\n\n while (off < buffer.length)\n buffer[off++] = 0;\n\n return true;\n};\n\nCipher.prototype._finalEncrypt = function _finalEncrypt() {\n if (!this._pad(this.buffer, this.bufferOff))\n return [];\n\n var out = new Array(this.blockSize);\n this._update(this.buffer, 0, out, 0);\n return out;\n};\n\nCipher.prototype._unpad = function _unpad(buffer) {\n return buffer;\n};\n\nCipher.prototype._finalDecrypt = function _finalDecrypt() {\n assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt');\n var out = new Array(this.blockSize);\n this._flushBuffer(out, 0);\n\n return this._unpad(out);\n};\n","var ciphers = require('./encrypter')\nvar deciphers = require('./decrypter')\nvar modes = require('./modes/list.json')\n\nfunction getCiphers () {\n return Object.keys(modes)\n}\n\nexports.createCipher = exports.Cipher = ciphers.createCipher\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv\nexports.createDecipher = exports.Decipher = deciphers.createDecipher\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","var modeModules = {\n ECB: require('./ecb'),\n CBC: require('./cbc'),\n CFB: require('./cfb'),\n CFB8: require('./cfb8'),\n CFB1: require('./cfb1'),\n OFB: require('./ofb'),\n CTR: require('./ctr'),\n GCM: require('./ctr')\n}\n\nvar modes = require('./list.json')\n\nfor (var key in modes) {\n modes[key].module = modeModules[modes[key].mode]\n}\n\nmodule.exports = modes\n","var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n","var BN = require('bn.js')\nvar randomBytes = require('randombytes')\n\nfunction blind (priv) {\n var r = getr(priv)\n var blinder = r.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed()\n return { blinder: blinder, unblinder: r.invm(priv.modulus) }\n}\n\nfunction getr (priv) {\n var len = priv.modulus.byteLength()\n var r\n do {\n r = new BN(randomBytes(len))\n } while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2))\n return r\n}\n\nfunction crt (msg, priv) {\n var blinds = blind(priv)\n var len = priv.modulus.byteLength()\n var blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus)\n var c1 = blinded.toRed(BN.mont(priv.prime1))\n var c2 = blinded.toRed(BN.mont(priv.prime2))\n var qinv = priv.coefficient\n var p = priv.prime1\n var q = priv.prime2\n var m1 = c1.redPow(priv.exponent1).fromRed()\n var m2 = c2.redPow(priv.exponent2).fromRed()\n var h = m1.isub(m2).imul(qinv).umod(p).imul(q)\n return m2.iadd(h).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, 'be', len)\n}\ncrt.getr = getr\n\nmodule.exports = crt\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","/* eslint-disable node/no-deprecated-api */\n\n'use strict'\n\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n if (!buffer.hasOwnProperty(key)) continue\n if (key === 'SlowBuffer' || key === 'Buffer') continue\n safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n if (!Buffer.hasOwnProperty(key)) continue\n if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n Safer.from = function (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n }\n if (value && typeof value.length === 'undefined') {\n throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n }\n return Buffer(value, encodingOrOffset, length)\n }\n}\n\nif (!Safer.alloc) {\n Safer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n }\n if (size < 0 || size >= 2 * (1 << 30)) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n var buf = Buffer(size)\n if (!fill || fill.length === 0) {\n buf.fill(0)\n } else if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n return buf\n }\n}\n\nif (!safer.kStringMaxLength) {\n try {\n safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n } catch (e) {\n // we can't determine kStringMaxLength in environments where process.binding\n // is unsupported, so let's not set it\n }\n}\n\nif (!safer.constants) {\n safer.constants = {\n MAX_LENGTH: safer.kMaxLength\n }\n if (safer.kStringMaxLength) {\n safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n }\n}\n\nmodule.exports = safer\n","'use strict';\n\nconst Reporter = require('../base/reporter').Reporter;\nconst EncoderBuffer = require('../base/buffer').EncoderBuffer;\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst assert = require('minimalistic-assert');\n\n// Supported tags\nconst tags = [\n 'seq', 'seqof', 'set', 'setof', 'objid', 'bool',\n 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc',\n 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',\n 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'\n];\n\n// Public methods list\nconst methods = [\n 'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',\n 'any', 'contains'\n].concat(tags);\n\n// Overrided methods list\nconst overrided = [\n '_peekTag', '_decodeTag', '_use',\n '_decodeStr', '_decodeObjid', '_decodeTime',\n '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',\n\n '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime',\n '_encodeNull', '_encodeInt', '_encodeBool'\n];\n\nfunction Node(enc, parent, name) {\n const state = {};\n this._baseState = state;\n\n state.name = name;\n state.enc = enc;\n\n state.parent = parent || null;\n state.children = null;\n\n // State\n state.tag = null;\n state.args = null;\n state.reverseArgs = null;\n state.choice = null;\n state.optional = false;\n state.any = false;\n state.obj = false;\n state.use = null;\n state.useDecoder = null;\n state.key = null;\n state['default'] = null;\n state.explicit = null;\n state.implicit = null;\n state.contains = null;\n\n // Should create new instance on each method\n if (!state.parent) {\n state.children = [];\n this._wrap();\n }\n}\nmodule.exports = Node;\n\nconst stateProps = [\n 'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',\n 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',\n 'implicit', 'contains'\n];\n\nNode.prototype.clone = function clone() {\n const state = this._baseState;\n const cstate = {};\n stateProps.forEach(function(prop) {\n cstate[prop] = state[prop];\n });\n const res = new this.constructor(cstate.parent);\n res._baseState = cstate;\n return res;\n};\n\nNode.prototype._wrap = function wrap() {\n const state = this._baseState;\n methods.forEach(function(method) {\n this[method] = function _wrappedMethod() {\n const clone = new this.constructor(this);\n state.children.push(clone);\n return clone[method].apply(clone, arguments);\n };\n }, this);\n};\n\nNode.prototype._init = function init(body) {\n const state = this._baseState;\n\n assert(state.parent === null);\n body.call(this);\n\n // Filter children\n state.children = state.children.filter(function(child) {\n return child._baseState.parent === this;\n }, this);\n assert.equal(state.children.length, 1, 'Root node can have only one child');\n};\n\nNode.prototype._useArgs = function useArgs(args) {\n const state = this._baseState;\n\n // Filter children and args\n const children = args.filter(function(arg) {\n return arg instanceof this.constructor;\n }, this);\n args = args.filter(function(arg) {\n return !(arg instanceof this.constructor);\n }, this);\n\n if (children.length !== 0) {\n assert(state.children === null);\n state.children = children;\n\n // Replace parent to maintain backward link\n children.forEach(function(child) {\n child._baseState.parent = this;\n }, this);\n }\n if (args.length !== 0) {\n assert(state.args === null);\n state.args = args;\n state.reverseArgs = args.map(function(arg) {\n if (typeof arg !== 'object' || arg.constructor !== Object)\n return arg;\n\n const res = {};\n Object.keys(arg).forEach(function(key) {\n if (key == (key | 0))\n key |= 0;\n const value = arg[key];\n res[value] = key;\n });\n return res;\n });\n }\n};\n\n//\n// Overrided methods\n//\n\noverrided.forEach(function(method) {\n Node.prototype[method] = function _overrided() {\n const state = this._baseState;\n throw new Error(method + ' not implemented for encoding: ' + state.enc);\n };\n});\n\n//\n// Public methods\n//\n\ntags.forEach(function(tag) {\n Node.prototype[tag] = function _tagMethod() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n assert(state.tag === null);\n state.tag = tag;\n\n this._useArgs(args);\n\n return this;\n };\n});\n\nNode.prototype.use = function use(item) {\n assert(item);\n const state = this._baseState;\n\n assert(state.use === null);\n state.use = item;\n\n return this;\n};\n\nNode.prototype.optional = function optional() {\n const state = this._baseState;\n\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.def = function def(val) {\n const state = this._baseState;\n\n assert(state['default'] === null);\n state['default'] = val;\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.explicit = function explicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.explicit = num;\n\n return this;\n};\n\nNode.prototype.implicit = function implicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.implicit = num;\n\n return this;\n};\n\nNode.prototype.obj = function obj() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n state.obj = true;\n\n if (args.length !== 0)\n this._useArgs(args);\n\n return this;\n};\n\nNode.prototype.key = function key(newKey) {\n const state = this._baseState;\n\n assert(state.key === null);\n state.key = newKey;\n\n return this;\n};\n\nNode.prototype.any = function any() {\n const state = this._baseState;\n\n state.any = true;\n\n return this;\n};\n\nNode.prototype.choice = function choice(obj) {\n const state = this._baseState;\n\n assert(state.choice === null);\n state.choice = obj;\n this._useArgs(Object.keys(obj).map(function(key) {\n return obj[key];\n }));\n\n return this;\n};\n\nNode.prototype.contains = function contains(item) {\n const state = this._baseState;\n\n assert(state.use === null);\n state.contains = item;\n\n return this;\n};\n\n//\n// Decoding\n//\n\nNode.prototype._decode = function decode(input, options) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return input.wrapResult(state.children[0]._decode(input, options));\n\n let result = state['default'];\n let present = true;\n\n let prevKey = null;\n if (state.key !== null)\n prevKey = input.enterKey(state.key);\n\n // Check if tag is there\n if (state.optional) {\n let tag = null;\n if (state.explicit !== null)\n tag = state.explicit;\n else if (state.implicit !== null)\n tag = state.implicit;\n else if (state.tag !== null)\n tag = state.tag;\n\n if (tag === null && !state.any) {\n // Trial and Error\n const save = input.save();\n try {\n if (state.choice === null)\n this._decodeGeneric(state.tag, input, options);\n else\n this._decodeChoice(input, options);\n present = true;\n } catch (e) {\n present = false;\n }\n input.restore(save);\n } else {\n present = this._peekTag(input, tag, state.any);\n\n if (input.isError(present))\n return present;\n }\n }\n\n // Push object on stack\n let prevObj;\n if (state.obj && present)\n prevObj = input.enterObject();\n\n if (present) {\n // Unwrap explicit values\n if (state.explicit !== null) {\n const explicit = this._decodeTag(input, state.explicit);\n if (input.isError(explicit))\n return explicit;\n input = explicit;\n }\n\n const start = input.offset;\n\n // Unwrap implicit and normal values\n if (state.use === null && state.choice === null) {\n let save;\n if (state.any)\n save = input.save();\n const body = this._decodeTag(\n input,\n state.implicit !== null ? state.implicit : state.tag,\n state.any\n );\n if (input.isError(body))\n return body;\n\n if (state.any)\n result = input.raw(save);\n else\n input = body;\n }\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), start, input.length, 'tagged');\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), input.offset, input.length, 'content');\n\n // Select proper method for tag\n if (state.any) {\n // no-op\n } else if (state.choice === null) {\n result = this._decodeGeneric(state.tag, input, options);\n } else {\n result = this._decodeChoice(input, options);\n }\n\n if (input.isError(result))\n return result;\n\n // Decode children\n if (!state.any && state.choice === null && state.children !== null) {\n state.children.forEach(function decodeChildren(child) {\n // NOTE: We are ignoring errors here, to let parser continue with other\n // parts of encoded data\n child._decode(input, options);\n });\n }\n\n // Decode contained/encoded by schema, only in bit or octet strings\n if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n const data = new DecoderBuffer(result);\n result = this._getUse(state.contains, input._reporterState.obj)\n ._decode(data, options);\n }\n }\n\n // Pop object\n if (state.obj && present)\n result = input.leaveObject(prevObj);\n\n // Set key\n if (state.key !== null && (result !== null || present === true))\n input.leaveKey(prevKey, state.key, result);\n else if (prevKey !== null)\n input.exitKey(prevKey);\n\n return result;\n};\n\nNode.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n const state = this._baseState;\n\n if (tag === 'seq' || tag === 'set')\n return null;\n if (tag === 'seqof' || tag === 'setof')\n return this._decodeList(input, tag, state.args[0], options);\n else if (/str$/.test(tag))\n return this._decodeStr(input, tag, options);\n else if (tag === 'objid' && state.args)\n return this._decodeObjid(input, state.args[0], state.args[1], options);\n else if (tag === 'objid')\n return this._decodeObjid(input, null, null, options);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._decodeTime(input, tag, options);\n else if (tag === 'null_')\n return this._decodeNull(input, options);\n else if (tag === 'bool')\n return this._decodeBool(input, options);\n else if (tag === 'objDesc')\n return this._decodeStr(input, tag, options);\n else if (tag === 'int' || tag === 'enum')\n return this._decodeInt(input, state.args && state.args[0], options);\n\n if (state.use !== null) {\n return this._getUse(state.use, input._reporterState.obj)\n ._decode(input, options);\n } else {\n return input.error('unknown tag: ' + tag);\n }\n};\n\nNode.prototype._getUse = function _getUse(entity, obj) {\n\n const state = this._baseState;\n // Create altered use decoder if implicit is set\n state.useDecoder = this._use(entity, obj);\n assert(state.useDecoder._baseState.parent === null);\n state.useDecoder = state.useDecoder._baseState.children[0];\n if (state.implicit !== state.useDecoder._baseState.implicit) {\n state.useDecoder = state.useDecoder.clone();\n state.useDecoder._baseState.implicit = state.implicit;\n }\n return state.useDecoder;\n};\n\nNode.prototype._decodeChoice = function decodeChoice(input, options) {\n const state = this._baseState;\n let result = null;\n let match = false;\n\n Object.keys(state.choice).some(function(key) {\n const save = input.save();\n const node = state.choice[key];\n try {\n const value = node._decode(input, options);\n if (input.isError(value))\n return false;\n\n result = { type: key, value: value };\n match = true;\n } catch (e) {\n input.restore(save);\n return false;\n }\n return true;\n }, this);\n\n if (!match)\n return input.error('Choice not matched');\n\n return result;\n};\n\n//\n// Encoding\n//\n\nNode.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n return new EncoderBuffer(data, this.reporter);\n};\n\nNode.prototype._encode = function encode(data, reporter, parent) {\n const state = this._baseState;\n if (state['default'] !== null && state['default'] === data)\n return;\n\n const result = this._encodeValue(data, reporter, parent);\n if (result === undefined)\n return;\n\n if (this._skipDefault(result, reporter, parent))\n return;\n\n return result;\n};\n\nNode.prototype._encodeValue = function encode(data, reporter, parent) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return state.children[0]._encode(data, reporter || new Reporter());\n\n let result = null;\n\n // Set reporter to share it with a child class\n this.reporter = reporter;\n\n // Check if data is there\n if (state.optional && data === undefined) {\n if (state['default'] !== null)\n data = state['default'];\n else\n return;\n }\n\n // Encode children first\n let content = null;\n let primitive = false;\n if (state.any) {\n // Anything that was given is translated to buffer\n result = this._createEncoderBuffer(data);\n } else if (state.choice) {\n result = this._encodeChoice(data, reporter);\n } else if (state.contains) {\n content = this._getUse(state.contains, parent)._encode(data, reporter);\n primitive = true;\n } else if (state.children) {\n content = state.children.map(function(child) {\n if (child._baseState.tag === 'null_')\n return child._encode(null, reporter, data);\n\n if (child._baseState.key === null)\n return reporter.error('Child should have a key');\n const prevKey = reporter.enterKey(child._baseState.key);\n\n if (typeof data !== 'object')\n return reporter.error('Child expected, but input is not object');\n\n const res = child._encode(data[child._baseState.key], reporter, data);\n reporter.leaveKey(prevKey);\n\n return res;\n }, this).filter(function(child) {\n return child;\n });\n content = this._createEncoderBuffer(content);\n } else {\n if (state.tag === 'seqof' || state.tag === 'setof') {\n // TODO(indutny): this should be thrown on DSL level\n if (!(state.args && state.args.length === 1))\n return reporter.error('Too many args for : ' + state.tag);\n\n if (!Array.isArray(data))\n return reporter.error('seqof/setof, but data is not Array');\n\n const child = this.clone();\n child._baseState.implicit = null;\n content = this._createEncoderBuffer(data.map(function(item) {\n const state = this._baseState;\n\n return this._getUse(state.args[0], data)._encode(item, reporter);\n }, child));\n } else if (state.use !== null) {\n result = this._getUse(state.use, parent)._encode(data, reporter);\n } else {\n content = this._encodePrimitive(state.tag, data);\n primitive = true;\n }\n }\n\n // Encode data itself\n if (!state.any && state.choice === null) {\n const tag = state.implicit !== null ? state.implicit : state.tag;\n const cls = state.implicit === null ? 'universal' : 'context';\n\n if (tag === null) {\n if (state.use === null)\n reporter.error('Tag could be omitted only for .use()');\n } else {\n if (state.use === null)\n result = this._encodeComposite(tag, primitive, cls, content);\n }\n }\n\n // Wrap in explicit\n if (state.explicit !== null)\n result = this._encodeComposite(state.explicit, false, 'context', result);\n\n return result;\n};\n\nNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n const state = this._baseState;\n\n const node = state.choice[data.type];\n if (!node) {\n assert(\n false,\n data.type + ' not found in ' +\n JSON.stringify(Object.keys(state.choice)));\n }\n return node._encode(data.value, reporter);\n};\n\nNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n const state = this._baseState;\n\n if (/str$/.test(tag))\n return this._encodeStr(data, tag);\n else if (tag === 'objid' && state.args)\n return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);\n else if (tag === 'objid')\n return this._encodeObjid(data, null, null);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._encodeTime(data, tag);\n else if (tag === 'null_')\n return this._encodeNull();\n else if (tag === 'int' || tag === 'enum')\n return this._encodeInt(data, state.args && state.reverseArgs[0]);\n else if (tag === 'bool')\n return this._encodeBool(data);\n else if (tag === 'objDesc')\n return this._encodeStr(data, tag);\n else\n throw new Error('Unsupported tag: ' + tag);\n};\n\nNode.prototype._isNumstr = function isNumstr(str) {\n return /^[0-9 ]*$/.test(str);\n};\n\nNode.prototype._isPrintstr = function isPrintstr(str) {\n return /^[A-Za-z0-9 '()+,-./:=?]*$/.test(str);\n};\n","'use strict';\n\nconst inherits = require('inherits');\n\nfunction Reporter(options) {\n this._reporterState = {\n obj: null,\n path: [],\n options: options || {},\n errors: []\n };\n}\nexports.Reporter = Reporter;\n\nReporter.prototype.isError = function isError(obj) {\n return obj instanceof ReporterError;\n};\n\nReporter.prototype.save = function save() {\n const state = this._reporterState;\n\n return { obj: state.obj, pathLen: state.path.length };\n};\n\nReporter.prototype.restore = function restore(data) {\n const state = this._reporterState;\n\n state.obj = data.obj;\n state.path = state.path.slice(0, data.pathLen);\n};\n\nReporter.prototype.enterKey = function enterKey(key) {\n return this._reporterState.path.push(key);\n};\n\nReporter.prototype.exitKey = function exitKey(index) {\n const state = this._reporterState;\n\n state.path = state.path.slice(0, index - 1);\n};\n\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n const state = this._reporterState;\n\n this.exitKey(index);\n if (state.obj !== null)\n state.obj[key] = value;\n};\n\nReporter.prototype.path = function path() {\n return this._reporterState.path.join('/');\n};\n\nReporter.prototype.enterObject = function enterObject() {\n const state = this._reporterState;\n\n const prev = state.obj;\n state.obj = {};\n return prev;\n};\n\nReporter.prototype.leaveObject = function leaveObject(prev) {\n const state = this._reporterState;\n\n const now = state.obj;\n state.obj = prev;\n return now;\n};\n\nReporter.prototype.error = function error(msg) {\n let err;\n const state = this._reporterState;\n\n const inherited = msg instanceof ReporterError;\n if (inherited) {\n err = msg;\n } else {\n err = new ReporterError(state.path.map(function(elem) {\n return '[' + JSON.stringify(elem) + ']';\n }).join(''), msg.message || msg, msg.stack);\n }\n\n if (!state.options.partial)\n throw err;\n\n if (!inherited)\n state.errors.push(err);\n\n return err;\n};\n\nReporter.prototype.wrapResult = function wrapResult(result) {\n const state = this._reporterState;\n if (!state.options.partial)\n return result;\n\n return {\n result: this.isError(result) ? null : result,\n errors: state.errors\n };\n};\n\nfunction ReporterError(path, msg) {\n this.path = path;\n this.rethrow(msg);\n}\ninherits(ReporterError, Error);\n\nReporterError.prototype.rethrow = function rethrow(msg) {\n this.message = msg + ' at: ' + (this.path || '(shallow)');\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, ReporterError);\n\n if (!this.stack) {\n try {\n // IE only adds stack when thrown\n throw new Error(this.message);\n } catch (e) {\n this.stack = e.stack;\n }\n }\n return this;\n};\n","'use strict';\n\n// Helper\nfunction reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n}\n\nexports.tagClass = {\n 0: 'universal',\n 1: 'application',\n 2: 'context',\n 3: 'private'\n};\nexports.tagClassByName = reverse(exports.tagClass);\n\nexports.tag = {\n 0x00: 'end',\n 0x01: 'bool',\n 0x02: 'int',\n 0x03: 'bitstr',\n 0x04: 'octstr',\n 0x05: 'null_',\n 0x06: 'objid',\n 0x07: 'objDesc',\n 0x08: 'external',\n 0x09: 'real',\n 0x0a: 'enum',\n 0x0b: 'embed',\n 0x0c: 'utf8str',\n 0x0d: 'relativeOid',\n 0x10: 'seq',\n 0x11: 'set',\n 0x12: 'numstr',\n 0x13: 'printstr',\n 0x14: 't61str',\n 0x15: 'videostr',\n 0x16: 'ia5str',\n 0x17: 'utctime',\n 0x18: 'gentime',\n 0x19: 'graphstr',\n 0x1a: 'iso646str',\n 0x1b: 'genstr',\n 0x1c: 'unistr',\n 0x1d: 'charstr',\n 0x1e: 'bmpstr'\n};\nexports.tagByName = reverse(exports.tag);\n","import { parse as urlParse } from \"url\";\n\nimport Charsets from \"./protocol/constants/charsets\";\nimport ClientConstants from \"./protocol/constants/client\";\n\nexport default function ConnectionConfig(options) {\n if (typeof options === \"string\") {\n options = ConnectionConfig.parseUrl(options);\n }\n\n this.host = options.host || \"localhost\";\n this.port = options.port || 3306;\n this.endpoint = options.endpoint || \"ws\";\n this.baseUrl = options.baseUrl || \"/\";\n this.localAddress = options.localAddress;\n this.socketPath = options.socketPath;\n this.user = options.user || undefined;\n this.user2 = options.user2 || undefined;\n this.password = options.password || undefined;\n this.database = options.database;\n this.connectTimeout =\n options.connectTimeout === undefined\n ? 10 * 1000\n : options.connectTimeout;\n this.insecureAuth = options.insecureAuth || false;\n this.supportBigNumbers = options.supportBigNumbers || false;\n this.bigNumberStrings = options.bigNumberStrings || false;\n this.dateStrings = options.dateStrings || false;\n this.debug = options.debug;\n this.trace = options.trace !== false;\n this.stringifyObjects = options.stringifyObjects || false;\n this.timezone = options.timezone || \"local\";\n this.flags = options.flags || \"\";\n this.queryFormat = options.queryFormat;\n this.pool = options.pool || undefined;\n this.ssl = options.ssl || false;\n this.multipleStatements = options.multipleStatements || false;\n this.typeCast = options.typeCast === undefined ? true : options.typeCast;\n\n if (this.timezone[0] === \" \") {\n // \"+\" is a url encoded char for space so it\n // gets translated to space when giving a\n // connection string..\n this.timezone = \"+\" + this.timezone.substr(1);\n }\n\n this.maxPacketSize = 0;\n this.charsetNumber = options.charset\n ? ConnectionConfig.getCharsetNumber(options.charset)\n : options.charsetNumber || Charsets.UTF8_GENERAL_CI;\n\n // Set the client flags\n let defaultFlags = ConnectionConfig.getDefaultFlags(options);\n this.clientFlags = ConnectionConfig.mergeFlags(defaultFlags, options.flags);\n}\n\nConnectionConfig.mergeFlags = function mergeFlags(defaultFlags, userFlags) {\n let allFlags = ConnectionConfig.parseFlagList(defaultFlags);\n let newFlags = ConnectionConfig.parseFlagList(userFlags);\n\n // Merge the new flags\n for (let flag in newFlags) {\n if (allFlags[flag] !== false) {\n allFlags[flag] = newFlags[flag];\n }\n }\n\n // Build flags\n let flags = 0x0;\n for (let flag in allFlags) {\n if (allFlags[flag]) {\n // TODO: Throw here on some future release\n flags |= ClientConstants[\"CLIENT_\" + flag] || 0x0;\n }\n }\n\n return flags;\n};\n\nConnectionConfig.getCharsetNumber = function getCharsetNumber(charset) {\n let num = Charsets[charset.toUpperCase()];\n\n if (num === undefined) {\n throw new TypeError(\"Unknown charset '\" + charset + \"'\");\n }\n\n return num;\n};\n\nConnectionConfig.getDefaultFlags = function getDefaultFlags(options) {\n let defaultFlags = [\n \"-COMPRESS\", // Compression protocol *NOT* supported\n \"-CONNECT_ATTRS\", // Does *NOT* send connection attributes in Protocol::HandshakeResponse41\n \"+CONNECT_WITH_DB\", // One can specify db on connect in Handshake Response Packet\n \"+FOUND_ROWS\", // Send found rows instead of affected rows\n \"+IGNORE_SIGPIPE\", // Don't issue SIGPIPE if network failures\n \"+IGNORE_SPACE\", // Let the parser ignore spaces before '('\n \"+LOCAL_FILES\", // Can use LOAD DATA LOCAL\n \"+LONG_FLAG\", // Longer flags in Protocol::ColumnDefinition320\n \"+LONG_PASSWORD\", // Use the improved version of Old Password Authentication\n \"+MULTI_RESULTS\", // Can handle multiple resultsets for COM_QUERY\n \"+ODBC\", // Special handling of ODBC behaviour\n \"+PLUGIN_AUTH\",\n \"+PROTOCOL_41\", // Uses the 4.1 protocol\n \"+PS_MULTI_RESULTS\", // Can handle multiple resultsets for COM_STMT_EXECUTE\n \"+RESERVED\", // Unused\n \"+SECURE_CONNECTION\", // Supports Authentication::Native41\n \"+TRANSACTIONS\", // Expects status flags\n ];\n\n if (options && options.multipleStatements) {\n // May send multiple statements per COM_QUERY and COM_STMT_PREPARE\n defaultFlags.push(\"+MULTI_STATEMENTS\");\n }\n\n return defaultFlags;\n};\n\nConnectionConfig.parseFlagList = function parseFlagList(flagList) {\n let allFlags = Object.create(null);\n\n if (!flagList) {\n return allFlags;\n }\n\n let flags = !Array.isArray(flagList)\n ? String(flagList || \"\")\n .toUpperCase()\n .split(/\\s*,+\\s*/)\n : flagList;\n\n for (let i = 0; i < flags.length; i++) {\n let flag = flags[i];\n let offset = 1;\n let state = flag[0];\n\n if (state === undefined) {\n // TODO: throw here on some future release\n continue;\n }\n\n if (state !== \"-\" && state !== \"+\") {\n offset = 0;\n state = \"+\";\n }\n\n allFlags[flag.substr(offset)] = state === \"+\";\n }\n\n return allFlags;\n};\n\nConnectionConfig.parseUrl = function (url) {\n url = urlParse(url, true);\n\n let options = {\n host: url.hostname,\n port: url.port,\n database: url.pathname.substr(1),\n };\n\n if (url.auth) {\n let auth = url.auth.split(\":\");\n options.user = auth.shift();\n options.password = auth.join(\":\");\n }\n\n if (url.query) {\n for (let key in url.query) {\n let value = url.query[key];\n\n try {\n // Try to parse this as a JSON expression first\n options[key] = JSON.parse(value);\n } catch (err) {\n // Otherwise assume it is a plain string\n options[key] = value;\n }\n }\n }\n\n return options;\n};\n","// This function clears any selection the user might have on anything in the\n// document - it's used while the user is dragging the sidebar's size in order\n// to prevent the user from highlighting things while they drag.\nexport function globalDeselect() {\n if (document.getSelection) {\n const selection = document.getSelection();\n if (selection) {\n // Some older browsers do not have selection.empty()\n // yet and only have selection.removeAllRanges instead.\n if (selection.empty) {\n selection.empty();\n }\n else if (selection.removeAllRanges) {\n selection.removeAllRanges();\n }\n }\n }\n else {\n try {\n const selection = window.getSelection();\n if (selection) {\n selection.removeAllRanges();\n }\n }\n catch (e) { }\n }\n}\n","/**\n * @category Common Helpers\n * @summary Is the given argument an instance of Date?\n *\n * @description\n * Is the given argument an instance of Date?\n *\n * @param {*} argument - the argument to check\n * @returns {Boolean} the given argument is an instance of Date\n *\n * @example\n * // Is 'mayonnaise' a Date?\n * var result = isDate('mayonnaise')\n * //=> false\n */\nfunction isDate (argument) {\n return argument instanceof Date\n}\n\nmodule.exports = isDate\n","var parse = require('../parse/index.js')\n\n/**\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the number of days in a month\n *\n * @example\n * // How many days are in February 2000?\n * var result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\nfunction getDaysInMonth (dirtyDate) {\n var date = parse(dirtyDate)\n var year = date.getFullYear()\n var monthIndex = date.getMonth()\n var lastDayOfMonth = new Date(0)\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0)\n lastDayOfMonth.setHours(0, 0, 0, 0)\n return lastDayOfMonth.getDate()\n}\n\nmodule.exports = getDaysInMonth\n","var addDays = require('../add_days/index.js')\n\n/**\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of week to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be added\n * @returns {Date} the new date with the weeks added\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * var result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\nfunction addWeeks (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n var days = amount * 7\n return addDays(dirtyDate, days)\n}\n\nmodule.exports = addWeeks\n","var parse = require('../parse/index.js')\n\n/**\n * @category Common Helpers\n * @summary Compare the two dates reverse chronologically and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return -1 if the first date is after the second,\n * 1 if the first date is before the second or 0 if dates are equal.\n *\n * @param {Date|String|Number} dateLeft - the first date to compare\n * @param {Date|String|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989 reverse chronologically:\n * var result = compareDesc(\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * )\n * //=> 1\n *\n * @example\n * // Sort the array of dates in reverse chronological order:\n * var result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareDesc)\n * //=> [\n * // Sun Jul 02 1995 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Wed Feb 11 1987 00:00:00\n * // ]\n */\nfunction compareDesc (dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft)\n var timeLeft = dateLeft.getTime()\n var dateRight = parse(dirtyDateRight)\n var timeRight = dateRight.getTime()\n\n if (timeLeft > timeRight) {\n return -1\n } else if (timeLeft < timeRight) {\n return 1\n } else {\n return 0\n }\n}\n\nmodule.exports = compareDesc\n","var parse = require('../parse/index.js')\nvar differenceInCalendarMonths = require('../difference_in_calendar_months/index.js')\nvar compareAsc = require('../compare_asc/index.js')\n\n/**\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @description\n * Get the number of full months between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of full months\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * var result = differenceInMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 7\n */\nfunction differenceInMonths (dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft)\n var dateRight = parse(dirtyDateRight)\n\n var sign = compareAsc(dateLeft, dateRight)\n var difference = Math.abs(differenceInCalendarMonths(dateLeft, dateRight))\n dateLeft.setMonth(dateLeft.getMonth() - sign * difference)\n\n // Math.abs(diff in full months - diff in calendar months) === 1 if last calendar month is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastMonthNotFull = compareAsc(dateLeft, dateRight) === -sign\n return sign * (difference - isLastMonthNotFull)\n}\n\nmodule.exports = differenceInMonths\n","var differenceInMilliseconds = require('../difference_in_milliseconds/index.js')\n\n/**\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of seconds\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * var result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\nfunction differenceInSeconds (dirtyDateLeft, dirtyDateRight) {\n var diff = differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) / 1000\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff)\n}\n\nmodule.exports = differenceInSeconds\n","var buildDistanceInWordsLocale = require('./build_distance_in_words_locale/index.js')\nvar buildFormatLocale = require('./build_format_locale/index.js')\n\n/**\n * @category Locales\n * @summary English locale.\n */\nmodule.exports = {\n distanceInWords: buildDistanceInWordsLocale(),\n format: buildFormatLocale()\n}\n","var parse = require('../parse/index.js')\n\n/**\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of a day\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * var result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nfunction endOfDay (dirtyDate) {\n var date = parse(dirtyDate)\n date.setHours(23, 59, 59, 999)\n return date\n}\n\nmodule.exports = endOfDay\n","var parse = require('../parse/index.js')\nvar startOfISOWeek = require('../start_of_iso_week/index.js')\nvar startOfISOYear = require('../start_of_iso_year/index.js')\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n/**\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * var result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nfunction getISOWeek (dirtyDate) {\n var date = parse(dirtyDate)\n var diff = startOfISOWeek(date).getTime() - startOfISOYear(date).getTime()\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1\n}\n\nmodule.exports = getISOWeek\n","var startOfWeek = require('../start_of_week/index.js')\n\n/**\n * @category Week Helpers\n * @summary Are the given dates in the same week?\n *\n * @description\n * Are the given dates in the same week?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @param {Object} [options] - the object with options\n * @param {Number} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Boolean} the dates are in the same week\n *\n * @example\n * // Are 31 August 2014 and 4 September 2014 in the same week?\n * var result = isSameWeek(\n * new Date(2014, 7, 31),\n * new Date(2014, 8, 4)\n * )\n * //=> true\n *\n * @example\n * // If week starts with Monday,\n * // are 31 August 2014 and 4 September 2014 in the same week?\n * var result = isSameWeek(\n * new Date(2014, 7, 31),\n * new Date(2014, 8, 4),\n * {weekStartsOn: 1}\n * )\n * //=> false\n */\nfunction isSameWeek (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n var dateLeftStartOfWeek = startOfWeek(dirtyDateLeft, dirtyOptions)\n var dateRightStartOfWeek = startOfWeek(dirtyDateRight, dirtyOptions)\n\n return dateLeftStartOfWeek.getTime() === dateRightStartOfWeek.getTime()\n}\n\nmodule.exports = isSameWeek\n","var makeString = require('./helper/makeString');\n\nmodule.exports = function capitalize(str, lowercaseRest) {\n str = makeString(str);\n var remainingChars = !lowercaseRest ? str.slice(1) : str.slice(1).toLowerCase();\n\n return str.charAt(0).toUpperCase() + remainingChars;\n};\n","var escapeRegExp = require('./escapeRegExp');\n\nmodule.exports = function defaultToWhiteSpace(characters) {\n if (characters == null)\n return '\\\\s';\n else if (characters.source)\n return characters.source;\n else\n return '[' + escapeRegExp(characters) + ']';\n};\n","var makeString = require('./helper/makeString');\n\nmodule.exports = function chars(str) {\n return makeString(str).split('');\n};\n","var makeString = require('./helper/makeString');\nvar defaultToWhiteSpace = require('./helper/defaultToWhiteSpace');\nvar nativeTrimRight = String.prototype.trimRight;\n\nmodule.exports = function rtrim(str, characters) {\n str = makeString(str);\n if (!characters && nativeTrimRight) return nativeTrimRight.call(str);\n characters = defaultToWhiteSpace(characters);\n return str.replace(new RegExp(characters + '+$'), '');\n};\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","\n\n// currently used to initiate the velocity style object to 0\n'use strict';\n\nexports.__esModule = true;\nexports['default'] = mapToZero;\n\nfunction mapToZero(obj) {\n var ret = {};\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n ret[key] = 0;\n }\n }\n return ret;\n}\n\nmodule.exports = exports['default'];","\n\n// stepper is used a lot. Saves allocation to return the same array wrapper.\n// This is fine and danger-free against mutations because the callsite\n// immediately destructures it and gets the numbers inside without passing the\n\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = stepper;\n\nvar reusedTuple = [0, 0];\n\nfunction stepper(secondPerFrame, x, v, destX, k, b, precision) {\n // Spring stiffness, in kg / s^2\n\n // for animations, destX is really spring length (spring at rest). initial\n // position is considered as the stretched/compressed position of a spring\n var Fspring = -k * (x - destX);\n\n // Damping, in kg / s\n var Fdamper = -b * v;\n\n // usually we put mass here, but for animation purposes, specifying mass is a\n // bit redundant. you could simply adjust k and b accordingly\n // let a = (Fspring + Fdamper) / mass;\n var a = Fspring + Fdamper;\n\n var newV = v + a * secondPerFrame;\n var newX = x + newV * secondPerFrame;\n\n if (Math.abs(newV) < precision && Math.abs(newX - destX) < precision) {\n reusedTuple[0] = destX;\n reusedTuple[1] = 0;\n return reusedTuple;\n }\n\n reusedTuple[0] = newX;\n reusedTuple[1] = newV;\n return reusedTuple;\n}\n\nmodule.exports = exports[\"default\"];\n// array reference around.","// Generated by CoffeeScript 1.7.1\n(function() {\n var getNanoSeconds, hrtime, loadTime;\n\n if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n module.exports = function() {\n return performance.now();\n };\n } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n module.exports = function() {\n return (getNanoSeconds() - loadTime) / 1e6;\n };\n hrtime = process.hrtime;\n getNanoSeconds = function() {\n var hr;\n hr = hrtime();\n return hr[0] * 1e9 + hr[1];\n };\n loadTime = getNanoSeconds();\n } else if (Date.now) {\n module.exports = function() {\n return Date.now() - loadTime;\n };\n loadTime = Date.now();\n } else {\n module.exports = function() {\n return new Date().getTime() - loadTime;\n };\n loadTime = new Date().getTime();\n }\n\n}).call(this);\n","\n\n// usage assumption: currentStyle values have already been rendered but it says\n// nothing of whether currentStyle is stale (see unreadPropStyle)\n'use strict';\n\nexports.__esModule = true;\nexports['default'] = shouldStopAnimation;\n\nfunction shouldStopAnimation(currentStyle, style, currentVelocity) {\n for (var key in style) {\n if (!Object.prototype.hasOwnProperty.call(style, key)) {\n continue;\n }\n\n if (currentVelocity[key] !== 0) {\n return false;\n }\n\n var styleValue = typeof style[key] === 'number' ? style[key] : style[key].val;\n // stepper will have already taken care of rounding precision errors, so\n // won't have such thing as 0.9999 !=== 1\n if (currentStyle[key] !== styleValue) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = exports['default'];","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","const LevelMap = {\n success: 1,\n warning: 2,\n error: 3,\n};\nexport const getWorseLevel = (level1, level2) => LevelMap[level1] > LevelMap[level2] ? level1 : level2;\n","import { Icon } from \"@single-js/common/components/icon/icon\";\nimport { humanizeNodePartitionInstanceStatus, } from \"data/models\";\nimport * as React from \"react\";\nimport { getWorseLevel } from \"view/util/level\";\nimport \"./topology.scss\";\nfunction getNodePartitionInstanceStatusIconName(status) {\n switch (status) {\n case \"PARTITIONS_ONLINE\":\n return \"check-circle\";\n case \"PARTITIONS_UNKNOWN\":\n case \"PARTITIONS_OFFLINE_RECOVERING\":\n return \"exclamation-circle\";\n case \"PARTITIONS_OFFLINE\":\n return \"exclamation-triangle\";\n }\n}\nfunction getNodePartitionInstanceStatusIcon(node) {\n const iconStatusLevel = getNodePartitionInstanceStatusLevel(node);\n let state = undefined;\n if (iconStatusLevel === \"warning\") {\n state = \"warn\";\n }\n else if (iconStatusLevel === \"error\" || iconStatusLevel === \"success\") {\n state = iconStatusLevel;\n }\n return (React.createElement(Icon, { icon: getNodePartitionInstanceStatusIconName(node.partitionInstanceStatus), iconType: \"regular\", rightMargin: true, state: state }));\n}\nexport function formatNodePartitionInstanceStatus(node) {\n const className = `status-${getNodePartitionInstanceStatusLevel(node)}`;\n return (React.createElement(\"div\", { className: className },\n getNodePartitionInstanceStatusIcon(node),\n humanizeNodePartitionInstanceStatus(node)));\n}\nexport const getNodeStateLevel = (node) => {\n switch (node.state) {\n case \"online\":\n return \"success\";\n case \"offline\":\n return \"error\";\n case \"attaching\":\n case \"detaching\":\n default:\n return \"warning\";\n }\n};\nexport const getNodePartitionInstanceStatusLevel = (node) => {\n switch (node.partitionInstanceStatus) {\n case \"PARTITIONS_ONLINE\":\n return \"success\";\n case \"PARTITIONS_UNKNOWN\":\n case \"PARTITIONS_OFFLINE_RECOVERING\":\n return \"warning\";\n case \"PARTITIONS_OFFLINE\":\n return \"error\";\n }\n};\nexport const getOverallNodeStateLevel = (node) => getWorseLevel(getNodeStateLevel(node), getNodePartitionInstanceStatusLevel(node));\n","import { NewVector } from \"../../../util/vector\";\n// Fraction of the height of a full node taken up by a table scan; also fraction\n// by which height shrinks without a table scan.\nexport const TABLE_SCAN_FRACTION = 0.25;\nexport const executorInstanceToDimensions = (data) => {\n const isTableScan = data.meta.tableName && data.meta.isTerminal;\n const heightMultiplier = isTableScan ? 1 : 1 - TABLE_SCAN_FRACTION;\n return NewVector(228, 120 * heightMultiplier);\n};\nexport const getSpacing = () => {\n return {\n singleEdgeHeight: 10,\n bracketHeight: 20,\n horizontalGap: 20,\n };\n};\n","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import React from 'react';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport { isValidElementType } from 'react-is';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\n\n/* eslint-disable import/prefer-default-export */\nfunction invariant(condition, message) {\n if (condition) return;\n var error = new Error(\"loadable: \" + message);\n error.framesToPop = 1;\n error.name = 'Invariant Violation';\n throw error;\n}\nfunction warn(message) {\n // eslint-disable-next-line no-console\n console.warn(\"loadable: \" + message);\n}\n\nvar Context = /*#__PURE__*/\nReact.createContext();\n\nvar LOADABLE_REQUIRED_CHUNKS_KEY = '__LOADABLE_REQUIRED_CHUNKS__';\nfunction getRequiredChunkKey(namespace) {\n return \"\" + namespace + LOADABLE_REQUIRED_CHUNKS_KEY;\n}\n\nvar sharedInternals = /*#__PURE__*/Object.freeze({\n __proto__: null,\n getRequiredChunkKey: getRequiredChunkKey,\n invariant: invariant,\n Context: Context\n});\n\nvar LOADABLE_SHARED = {\n initialChunks: {}\n};\n\nfunction resolveConstructor(ctor) {\n if (typeof ctor === 'function') {\n return {\n requireAsync: ctor\n };\n }\n\n return ctor;\n}\n\nvar withChunkExtractor = function withChunkExtractor(Component) {\n return function (props) {\n return React.createElement(Context.Consumer, null, function (extractor) {\n return React.createElement(Component, Object.assign({\n __chunkExtractor: extractor\n }, props));\n });\n };\n};\n\nvar identity = function identity(v) {\n return v;\n};\n\nfunction createLoadable(_ref) {\n var _ref$defaultResolveCo = _ref.defaultResolveComponent,\n defaultResolveComponent = _ref$defaultResolveCo === void 0 ? identity : _ref$defaultResolveCo,\n _render = _ref.render,\n onLoad = _ref.onLoad;\n\n function loadable(loadableConstructor, options) {\n if (options === void 0) {\n options = {};\n }\n\n var ctor = resolveConstructor(loadableConstructor);\n var cache = {};\n\n function _getCacheKey(props) {\n if (options.cacheKey) {\n return options.cacheKey(props);\n }\n\n if (ctor.resolve) {\n return ctor.resolve(props);\n }\n\n return null;\n }\n\n function resolve(module, props, Loadable) {\n var Component = options.resolveComponent ? options.resolveComponent(module, props) : defaultResolveComponent(module);\n\n if (options.resolveComponent && !isValidElementType(Component)) {\n throw new Error(\"resolveComponent returned something that is not a React component!\");\n }\n\n hoistNonReactStatics(Loadable, Component, {\n preload: true\n });\n return Component;\n }\n\n var InnerLoadable =\n /*#__PURE__*/\n function (_React$Component) {\n _inheritsLoose(InnerLoadable, _React$Component);\n\n InnerLoadable.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n var cacheKey = _getCacheKey(props);\n\n return _extends({}, state, {\n cacheKey: cacheKey,\n loading: state.loading || state.cacheKey !== cacheKey\n });\n };\n\n function InnerLoadable(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.state = {\n result: null,\n error: null,\n loading: true,\n cacheKey: _getCacheKey(props)\n };\n _this.promise = null;\n invariant(!props.__chunkExtractor || ctor.requireSync, 'SSR requires `@loadable/babel-plugin`, please install it'); // Server-side\n\n if (props.__chunkExtractor) {\n // This module has been marked with no SSR\n if (options.ssr === false) {\n return _assertThisInitialized(_this);\n } // We run load function, we assume that it won't fail and that it\n // triggers a synchronous loading of the module\n\n\n ctor.requireAsync(props)[\"catch\"](function () {}); // So we can require now the module synchronously\n\n _this.loadSync();\n\n props.__chunkExtractor.addChunk(ctor.chunkName(props));\n\n return _assertThisInitialized(_this);\n } // Client-side with `isReady` method present (SSR probably)\n // If module is already loaded, we use a synchronous loading\n // Only perform this synchronous loading if the component has not\n // been marked with no SSR, else we risk hydration mismatches\n\n\n if (options.ssr !== false && ( // is ready - was loaded in this session\n ctor.isReady && ctor.isReady(props) || // is ready - was loaded during SSR process\n ctor.chunkName && LOADABLE_SHARED.initialChunks[ctor.chunkName(props)])) {\n _this.loadSync();\n }\n\n return _this;\n }\n\n var _proto = InnerLoadable.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true;\n\n if (this.state.loading) {\n this.loadAsync();\n } else if (!this.state.error) {\n this.triggerOnLoad();\n }\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n // Component is reloaded if the cacheKey has changed\n if (prevState.cacheKey !== this.state.cacheKey) {\n this.promise = null;\n this.loadAsync();\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n if (this.mounted) {\n this.setState(nextState, callback);\n }\n };\n\n _proto.triggerOnLoad = function triggerOnLoad() {\n var _this2 = this;\n\n if (onLoad) {\n setTimeout(function () {\n onLoad(_this2.state.result, _this2.props);\n });\n }\n };\n\n _proto.loadSync = function loadSync() {\n if (!this.state.loading) return;\n\n try {\n var loadedModule = ctor.requireSync(this.props);\n var result = resolve(loadedModule, this.props, Loadable);\n this.state.result = result;\n this.state.loading = false;\n } catch (error) {\n this.state.error = error;\n }\n };\n\n _proto.getCacheKey = function getCacheKey() {\n return _getCacheKey(this.props) || JSON.stringify(this.props);\n };\n\n _proto.getCache = function getCache() {\n return cache[this.getCacheKey()];\n };\n\n _proto.setCache = function setCache(value) {\n cache[this.getCacheKey()] = value;\n };\n\n _proto.loadAsync = function loadAsync() {\n var _this3 = this;\n\n if (!this.promise) {\n var _this$props = this.props,\n __chunkExtractor = _this$props.__chunkExtractor,\n forwardedRef = _this$props.forwardedRef,\n props = _objectWithoutPropertiesLoose(_this$props, [\"__chunkExtractor\", \"forwardedRef\"]);\n\n this.promise = ctor.requireAsync(props).then(function (loadedModule) {\n var result = resolve(loadedModule, _this3.props, Loadable);\n\n if (options.suspense) {\n _this3.setCache(result);\n }\n\n _this3.safeSetState({\n result: resolve(loadedModule, _this3.props, Loadable),\n loading: false\n }, function () {\n return _this3.triggerOnLoad();\n });\n })[\"catch\"](function (error) {\n _this3.safeSetState({\n error: error,\n loading: false\n });\n });\n }\n\n return this.promise;\n };\n\n _proto.render = function render() {\n var _this$props2 = this.props,\n forwardedRef = _this$props2.forwardedRef,\n propFallback = _this$props2.fallback,\n __chunkExtractor = _this$props2.__chunkExtractor,\n props = _objectWithoutPropertiesLoose(_this$props2, [\"forwardedRef\", \"fallback\", \"__chunkExtractor\"]);\n\n var _this$state = this.state,\n error = _this$state.error,\n loading = _this$state.loading,\n result = _this$state.result;\n\n if (options.suspense) {\n var cachedResult = this.getCache();\n if (!cachedResult) throw this.loadAsync();\n return _render({\n loading: false,\n fallback: null,\n result: cachedResult,\n options: options,\n props: _extends({}, props, {\n ref: forwardedRef\n })\n });\n }\n\n if (error) {\n throw error;\n }\n\n var fallback = propFallback || options.fallback || null;\n\n if (loading) {\n return fallback;\n }\n\n return _render({\n loading: loading,\n fallback: fallback,\n result: result,\n options: options,\n props: _extends({}, props, {\n ref: forwardedRef\n })\n });\n };\n\n return InnerLoadable;\n }(React.Component);\n\n var EnhancedInnerLoadable = withChunkExtractor(InnerLoadable);\n var Loadable = React.forwardRef(function (props, ref) {\n return React.createElement(EnhancedInnerLoadable, Object.assign({\n forwardedRef: ref\n }, props));\n }); // In future, preload could use ``\n\n Loadable.preload = function (props) {\n ctor.requireAsync(props);\n };\n\n Loadable.load = function (props) {\n return ctor.requireAsync(props);\n };\n\n return Loadable;\n }\n\n function lazy(ctor, options) {\n return loadable(ctor, _extends({}, options, {\n suspense: true\n }));\n }\n\n return {\n loadable: loadable,\n lazy: lazy\n };\n}\n\nfunction defaultResolveComponent(loadedModule) {\n // eslint-disable-next-line no-underscore-dangle\n return loadedModule.__esModule ? loadedModule[\"default\"] : loadedModule[\"default\"] || loadedModule;\n}\n\n/* eslint-disable no-use-before-define, react/no-multi-comp */\n\nvar _createLoadable =\n/*#__PURE__*/\ncreateLoadable({\n defaultResolveComponent: defaultResolveComponent,\n render: function render(_ref) {\n var Component = _ref.result,\n props = _ref.props;\n return React.createElement(Component, props);\n }\n}),\n loadable = _createLoadable.loadable,\n lazy = _createLoadable.lazy;\n\n/* eslint-disable no-use-before-define, react/no-multi-comp */\n\nvar _createLoadable$1 =\n/*#__PURE__*/\ncreateLoadable({\n onLoad: function onLoad(result, props) {\n if (result && props.forwardedRef) {\n if (typeof props.forwardedRef === 'function') {\n props.forwardedRef(result);\n } else {\n props.forwardedRef.current = result;\n }\n }\n },\n render: function render(_ref) {\n var result = _ref.result,\n loading = _ref.loading,\n props = _ref.props;\n\n if (!loading && props.children) {\n return props.children(result);\n }\n\n return null;\n }\n}),\n loadable$1 = _createLoadable$1.loadable,\n lazy$1 = _createLoadable$1.lazy;\n\n/* eslint-disable no-underscore-dangle, camelcase */\nvar BROWSER = typeof window !== 'undefined';\nfunction loadableReady(done, _temp) {\n if (done === void 0) {\n done = function done() {};\n }\n\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$namespace = _ref.namespace,\n namespace = _ref$namespace === void 0 ? '' : _ref$namespace;\n\n if (!BROWSER) {\n warn('`loadableReady()` must be called in browser only');\n done();\n return Promise.resolve();\n }\n\n var requiredChunks = null;\n\n if (BROWSER) {\n var id = getRequiredChunkKey(namespace);\n var dataElement = document.getElementById(id);\n\n if (dataElement) {\n requiredChunks = JSON.parse(dataElement.textContent);\n var extElement = document.getElementById(id + \"_ext\");\n\n if (extElement) {\n var _JSON$parse = JSON.parse(extElement.textContent),\n namedChunks = _JSON$parse.namedChunks;\n\n namedChunks.forEach(function (chunkName) {\n LOADABLE_SHARED.initialChunks[chunkName] = true;\n });\n } else {\n // version mismatch\n throw new Error('loadable-component: @loabable/server does not match @loadable/component');\n }\n }\n }\n\n if (!requiredChunks) {\n warn('`loadableReady()` requires state, please use `getScriptTags` or `getScriptElements` server-side');\n done();\n return Promise.resolve();\n }\n\n var resolved = false;\n return new Promise(function (resolve) {\n window.__LOADABLE_LOADED_CHUNKS__ = window.__LOADABLE_LOADED_CHUNKS__ || [];\n var loadedChunks = window.__LOADABLE_LOADED_CHUNKS__;\n var originalPush = loadedChunks.push.bind(loadedChunks);\n\n function checkReadyState() {\n if (requiredChunks.every(function (chunk) {\n return loadedChunks.some(function (_ref2) {\n var chunks = _ref2[0];\n return chunks.indexOf(chunk) > -1;\n });\n })) {\n if (!resolved) {\n resolved = true;\n resolve();\n done();\n }\n }\n }\n\n loadedChunks.push = function () {\n originalPush.apply(void 0, arguments);\n checkReadyState();\n };\n\n checkReadyState();\n });\n}\n\n/* eslint-disable no-underscore-dangle */\nvar loadable$2 = loadable;\nloadable$2.lib = loadable$1;\nvar lazy$2 = lazy;\nlazy$2.lib = lazy$1;\nvar __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = sharedInternals;\n\nexport default loadable$2;\nexport { __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, lazy$2 as lazy, loadableReady };\n","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version v4.2.4+314e4831\n */\n\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.ES6Promise = factory());\n}(this, (function () { 'use strict';\n\nfunction objectOrFunction(x) {\n var type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n}\n\nfunction isFunction(x) {\n return typeof x === 'function';\n}\n\n\n\nvar _isArray = void 0;\nif (Array.isArray) {\n _isArray = Array.isArray;\n} else {\n _isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n}\n\nvar isArray = _isArray;\n\nvar len = 0;\nvar vertxNext = void 0;\nvar customSchedulerFn = void 0;\n\nvar asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n};\n\nfunction setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nfunction setAsap(asapFn) {\n asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n}\n\n// vertx\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n var vertx = Function('return this')().require('vertx');\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}\n\nfunction then(onFulfillment, onRejection) {\n var parent = this;\n\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n\n if (_state) {\n var callback = arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nfunction resolve$1(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n resolve(promise, object);\n return promise;\n}\n\nvar PROMISE_ID = Math.random().toString(36).substring(2);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nvar TRY_CATCH_ERROR = { error: null };\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction getThen(promise) {\n try {\n return promise.then;\n } catch (error) {\n TRY_CATCH_ERROR.error = error;\n return TRY_CATCH_ERROR;\n }\n}\n\nfunction tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {\n try {\n then$$1.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then$$1) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then$$1, thenable, function (value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then$$1) {\n if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then$$1 === TRY_CATCH_ERROR) {\n reject(promise, TRY_CATCH_ERROR.error);\n TRY_CATCH_ERROR.error = null;\n } else if (then$$1 === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then$$1)) {\n handleForeignThenable(promise, maybeThenable, then$$1);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n handleMaybeThenable(promise, value, getThen(value));\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = void 0,\n callback = void 0,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction tryCatch(callback, detail) {\n try {\n return callback(detail);\n } catch (e) {\n TRY_CATCH_ERROR.error = e;\n return TRY_CATCH_ERROR;\n }\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = void 0,\n error = void 0,\n succeeded = void 0,\n failed = void 0;\n\n if (hasCallback) {\n value = tryCatch(callback, detail);\n\n if (value === TRY_CATCH_ERROR) {\n failed = true;\n error = value.error;\n value.error = null;\n } else {\n succeeded = true;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n succeeded = true;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (failed) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n}\n\nvar id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n}\n\nvar Enumerator = function () {\n function Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate(input);\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n }\n\n Enumerator.prototype._enumerate = function _enumerate(input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n\n Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n var c = this._instanceConstructor;\n var resolve$$1 = c.resolve;\n\n\n if (resolve$$1 === resolve$1) {\n var _then = getThen(entry);\n\n if (_then === then && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise$1) {\n var promise = new c(noop);\n handleMaybeThenable(promise, entry, _then);\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve$$1) {\n return resolve$$1(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve$$1(entry), i);\n }\n };\n\n Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n var promise = this.promise;\n\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n };\n\n Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n var enumerator = this;\n\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n };\n\n return Enumerator;\n}();\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nfunction all(entries) {\n return new Enumerator(this, entries).promise;\n}\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nfunction race(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nfunction reject$1(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n reject(promise, reason);\n return promise;\n}\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {Function} resolver\n Useful for tooling.\n @constructor\n*/\n\nvar Promise$1 = function () {\n function Promise(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n }\n }\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n Chaining\n --------\n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n Assimilation\n ------------\n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n If the assimliated promise rejects, then the downstream promise will also reject.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n Simple Example\n --------------\n Synchronous Example\n ```javascript\n let result;\n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n Advanced Example\n --------------\n Synchronous Example\n ```javascript\n let author, books;\n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n function foundBooks(books) {\n }\n function failure(reason) {\n }\n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n\n\n Promise.prototype.catch = function _catch(onRejection) {\n return this.then(null, onRejection);\n };\n\n /**\n `finally` will be invoked regardless of the promise's fate just as native\n try/catch/finally behaves\n \n Synchronous example:\n \n ```js\n findAuthor() {\n if (Math.random() > 0.5) {\n throw new Error();\n }\n return new Author();\n }\n \n try {\n return findAuthor(); // succeed or fail\n } catch(error) {\n return findOtherAuther();\n } finally {\n // always runs\n // doesn't affect the return value\n }\n ```\n \n Asynchronous example:\n \n ```js\n findAuthor().catch(function(reason){\n return findOtherAuther();\n }).finally(function(){\n // author was either found, or not\n });\n ```\n \n @method finally\n @param {Function} callback\n @return {Promise}\n */\n\n\n Promise.prototype.finally = function _finally(callback) {\n var promise = this;\n var constructor = promise.constructor;\n\n return promise.then(function (value) {\n return constructor.resolve(callback()).then(function () {\n return value;\n });\n }, function (reason) {\n return constructor.resolve(callback()).then(function () {\n throw reason;\n });\n });\n };\n\n return Promise;\n}();\n\nPromise$1.prototype.then = then;\nPromise$1.all = all;\nPromise$1.race = race;\nPromise$1.resolve = resolve$1;\nPromise$1.reject = reject$1;\nPromise$1._setScheduler = setScheduler;\nPromise$1._setAsap = setAsap;\nPromise$1._asap = asap;\n\n/*global self*/\nfunction polyfill() {\n var local = void 0;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {\n // silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise$1;\n}\n\n// Strange compat..\nPromise$1.polyfill = polyfill;\nPromise$1.Promise = Promise$1;\n\nreturn Promise$1;\n\n})));\n\n\n\n//# sourceMappingURL=es6-promise.map\n","import { consoleSandbox, getGlobalObject } from './misc';\n// TODO: Implement different loggers for different environments\nvar global = getGlobalObject();\n/** Prefix for logging strings */\nvar PREFIX = 'Sentry Logger ';\n/** JSDoc */\nvar Logger = /** @class */ (function () {\n /** JSDoc */\n function Logger() {\n this._enabled = false;\n }\n /** JSDoc */\n Logger.prototype.disable = function () {\n this._enabled = false;\n };\n /** JSDoc */\n Logger.prototype.enable = function () {\n this._enabled = true;\n };\n /** JSDoc */\n Logger.prototype.log = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (!this._enabled) {\n return;\n }\n consoleSandbox(function () {\n global.console.log(PREFIX + \"[Log]: \" + args.join(' ')); // tslint:disable-line:no-console\n });\n };\n /** JSDoc */\n Logger.prototype.warn = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (!this._enabled) {\n return;\n }\n consoleSandbox(function () {\n global.console.warn(PREFIX + \"[Warn]: \" + args.join(' ')); // tslint:disable-line:no-console\n });\n };\n /** JSDoc */\n Logger.prototype.error = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (!this._enabled) {\n return;\n }\n consoleSandbox(function () {\n global.console.error(PREFIX + \"[Error]: \" + args.join(' ')); // tslint:disable-line:no-console\n });\n };\n return Logger;\n}());\n// Ensure we only have a single logger instance, even if multiple versions of @sentry/utils are being used\nglobal.__SENTRY__ = global.__SENTRY__ || {};\nvar logger = global.__SENTRY__.logger || (global.__SENTRY__.logger = new Logger());\nexport { logger };\n//# sourceMappingURL=logger.js.map","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n","var baseAssignValue = require('./_baseAssignValue'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n}\n\nmodule.exports = mapValues;\n","import format from \"date-fns/format\";\nimport { saveAs } from \"file-saver\";\n// This function is a helper utility to save text files in MemSQL Studio.\n// It uses the `save-as` polyfill to save a file onto the browser's host.\n// It also creates the file with with a consistently formatted name.\nexport default function saveData({ data, baseName, extension = \"json\", }) {\n const blob = new Blob([data], {\n type: \"text/plain;charset=utf-8\",\n });\n const fileName = `${baseName}-${format(new Date(), \"yyyy-MM-dd'T'HHmmss\")}.${extension}`;\n saveAs(blob, fileName);\n}\n","import classnames from \"classnames\";\nimport _ from \"lodash\";\nimport * as React from \"react\";\nimport \"./inline-bar.scss\";\nexport class InlineBar extends React.Component {\n render() {\n const { entries, size, className, squaredCorners } = this.props;\n const classes = classnames(\"single-common-components-inline-bar\", size, className, {\n \"squared-corners\": squaredCorners,\n });\n return (React.createElement(\"div\", { className: classes }, _.map(entries, (entry, index) => (React.createElement(\"div\", { className: \"entry\", key: index, style: {\n width: `${entry.value * 100}%`,\n background: entry.fill,\n border: entry.border\n ? `1px solid ${entry.border}`\n : undefined,\n } })))));\n }\n}\nInlineBar.defaultProps = {\n size: \"medium\",\n};\n","import { nullableToMaybe } from \"@single-js/common/util/nullable\";\nimport { multiSelect, select } from \"@single-js/common/util/query\";\nimport { Version } from \"@single-js/common/util/version\";\nimport BigNumber from \"@single-js/common/vendor/bignumber.js/bignumber\";\nimport { buildClusterStatisticsAction, } from \"data/actions/cluster-metadata\";\nimport { differenceInSeconds } from \"date-fns\";\nimport _ from \"lodash\";\nimport { from, merge, of } from \"rxjs\";\nimport { logError } from \"util/logging\";\nimport { SQL_CLUSTER_THROUGHPUT, SQL_CLUSTER_THROUGHPUT_ENABLED, SQL_DISTRIBUTED_DATABASES, SQL_DISTRIBUTED_PARTITIONS, SQL_MV_CLUSTER_STATUS, } from \"worker/api/cluster-metadata-queries\";\nimport { makeActionCreator } from \"worker/api/helpers\";\nimport { buildNodes, fetchTopologyData } from \"worker/api/topology\";\nimport { fetchMemsqlVersion } from \"worker/api/version-query\";\nconst SQL_STATISTICS_HA = `\n SHOW VARIABLES LIKE 'redundancy_level'\n`;\nfunction fetchClusterStatistics(conn) {\n return select(conn, SQL_STATISTICS_HA).then((sqlClusterHA) => {\n if (sqlClusterHA.length !== 1) {\n throw new Error(\"The SQL Statistics HA query should only return one row\");\n }\n return {\n haEnabled: Number(sqlClusterHA[0].Value) >= 2, // boolean\n };\n });\n}\nexport const queryClusterStatistics = makeActionCreator({\n name: \"queryClusterStatistics\",\n handle: (ctx) => {\n const $loading = of({\n type: \"CLUSTER_STATISTICS\",\n error: false,\n payload: { loading: true },\n });\n const $compute = from(ctx.manager\n .getPooledConnection()\n .then((conn) => fetchClusterStatistics(conn)\n .then(buildClusterStatisticsAction)\n .catch((err) => {\n logError(err);\n return {\n type: \"CLUSTER_STATISTICS\",\n error: true,\n payload: err.message,\n };\n })\n .finally(() => conn.release()))\n .catch((err) => {\n return {\n type: \"CLUSTER_STATISTICS\",\n error: true,\n payload: err.message,\n };\n }));\n return merge($loading, $compute);\n },\n});\nconst createMemsqlVersionAction = (data) => {\n return {\n type: \"MEMSQL_VERSION\",\n error: false,\n payload: {\n loading: false,\n data,\n },\n };\n};\n// This action is *only* being dispatched on app load by `ClusterLayout`\n// component.\nexport const queryMemsqlVersion = makeActionCreator({\n name: \"queryMemsqlVersion\",\n handle: (ctx) => {\n const $loading = of({\n type: \"MEMSQL_VERSION\",\n error: false,\n payload: { loading: true },\n });\n const $compute = from(ctx.manager\n .getPooledConnection()\n .then((conn) => fetchMemsqlVersion(conn)\n .then(createMemsqlVersionAction)\n .catch((err) => {\n logError(err);\n return {\n type: \"MEMSQL_VERSION\",\n error: true,\n payload: {\n message: err.message,\n },\n };\n })\n .finally(() => conn.release()))\n .catch((err) => {\n return {\n type: \"MEMSQL_VERSION\",\n error: true,\n payload: {\n message: err.message,\n },\n };\n }));\n return merge($loading, $compute);\n },\n});\n// For MemSQL versions >= 7, all reference partitions are\n// asynchronously replicated. For MemSQL versions\n// >= 6.5 AND < 7, all reference partitions are synchronously\n// replicated.\nfunction areRefPartitionsSyncReplicated(version) {\n return version.lt(new Version([7, 0, 0]));\n}\nfunction fetchPartitionData(conn) {\n return multiSelect(conn, { sql: SQL_MV_CLUSTER_STATUS }, { sql: SQL_DISTRIBUTED_PARTITIONS }, { sql: SQL_DISTRIBUTED_DATABASES });\n}\nexport function getMemsqlPartitionsData({ sqlClusterStatus, sqlDistributedPartitions, sqlDistributedDatabases, nodes, version, }) {\n // Create partition objects.\n const partitions = [];\n _.forEach(sqlDistributedDatabases, ({ databaseName, numPartitions, drReplica, syncReplicated }) => {\n partitions.push({\n kind: \"reference\",\n databaseName,\n drReplica: drReplica.eq(1),\n syncReplicated: areRefPartitionsSyncReplicated(version),\n });\n for (let ordinal = new BigNumber(0); ordinal.lt(numPartitions); ordinal = ordinal.plus(1)) {\n partitions.push({\n kind: \"data\",\n databaseName,\n ordinal,\n drReplica: drReplica.eq(1),\n syncReplicated: syncReplicated.eq(1),\n });\n }\n });\n // This object maps partition hashes (`db_ordinal.host.port`) to the\n // partition status row in MV_CLUSTER_STATUS.\n const clusterStatus = {};\n _.forEach(sqlClusterStatus, (partition) => {\n const partitionHash = [\n partition.databaseName,\n partition.host,\n partition.port,\n ].join(\".\");\n clusterStatus[partitionHash] = partition;\n });\n const partitionInstances = [];\n function getPartitionState(partitionStatus) {\n if (partitionStatus) {\n if (partitionStatus.state === null) {\n return \"unknown\";\n }\n else {\n return partitionStatus.state;\n }\n }\n else {\n return \"offline\";\n }\n }\n // Create data partition instance objects.\n _.forEach(sqlDistributedPartitions, ({ databaseName, ordinal, host, port, role, isOffline, syncState }) => {\n if (host === null) {\n throw new Error(\"Host should not be null in information_schema.distributed_databases\");\n }\n if (port === null) {\n throw new Error(\"Port should not be null in information_schema.distributed_databases\");\n }\n const partitionHash = [\n `${databaseName}_${ordinal}`,\n host,\n port,\n ].join(\".\");\n const database = _.find(sqlDistributedDatabases, { databaseName });\n let drReplica;\n if (database) {\n drReplica = database.drReplica.eq(1);\n }\n // Try to find this partition instance in MV_CLUSTER_STATUS.\n const partitionStatus = clusterStatus[partitionHash];\n let parsedRole;\n if (isOffline && isOffline.eq(1)) {\n switch (role) {\n case \"Master\":\n parsedRole = \"detached master\";\n break;\n case \"Slave\":\n parsedRole = \"detached slave\";\n break;\n default:\n parsedRole = nullableToMaybe(role);\n }\n }\n else {\n switch (role) {\n case \"Master\":\n parsedRole = \"master\";\n break;\n case \"Slave\":\n parsedRole = \"slave\";\n break;\n default:\n parsedRole = nullableToMaybe(role);\n }\n }\n partitionInstances.push({\n ordinal,\n databaseName,\n host,\n port,\n position: partitionStatus\n ? nullableToMaybe(partitionStatus.position)\n : undefined,\n role: parsedRole,\n state: getPartitionState(partitionStatus),\n details: (partitionStatus && partitionStatus.details) || \"\",\n syncState: syncState || undefined,\n drReplica,\n });\n });\n // Create reference partition instance objects.\n _.forEach(sqlDistributedDatabases, ({ databaseName, drReplica }) => {\n _.forEach(nodes, (node) => {\n const partitionHash = [databaseName, node.host, node.port].join(\".\");\n const partitionStatus = clusterStatus[partitionHash];\n function getPartitionRole() {\n if (node.role === \"MASTER_AGGREGATOR\") {\n return \"master\";\n }\n else {\n if (node.state === \"online\") {\n return \"slave\";\n }\n else {\n return \"detached slave\";\n }\n }\n }\n partitionInstances.push({\n databaseName,\n host: node.host,\n port: node.port,\n ordinal: undefined,\n role: getPartitionRole(),\n position: partitionStatus\n ? nullableToMaybe(partitionStatus.position)\n : undefined,\n state: getPartitionState(partitionStatus),\n details: (partitionStatus && partitionStatus.details) || \"\",\n syncState: areRefPartitionsSyncReplicated(version)\n ? \"sync\"\n : \"async\",\n drReplica: drReplica.eq(1),\n });\n });\n });\n return {\n partitions,\n partitionInstances,\n };\n}\nexport const queryPartitionData = makeActionCreator({\n name: \"queryPartitionData\",\n handle: (ctx) => {\n const $loading = of({\n type: \"MEMSQL_PARTITIONS\",\n error: false,\n payload: { loading: true },\n });\n const startDate = new Date();\n const $compute = from(ctx.manager\n .getPooledConnection()\n .then((conn) => Promise.all([conn, fetchMemsqlVersion(conn)])\n .then(([conn, version]) => Promise.all([\n conn,\n version,\n fetchTopologyData(conn),\n ]))\n .then(([conn, version, [rawLeaves, rawAggregators]]) => Promise.all([\n conn,\n version,\n buildNodes([rawLeaves, rawAggregators]),\n ]))\n .then(([conn, version, nodes]) => Promise.all([\n version,\n fetchPartitionData(conn),\n nodes,\n ]))\n .then(([version, [sqlClusterStatus, sqlDistributedPartitions, sqlDistributedDatabases,], nodes,]) => getMemsqlPartitionsData({\n sqlClusterStatus,\n sqlDistributedPartitions,\n sqlDistributedDatabases,\n nodes,\n version,\n }))\n .then((partitionsPayload) => ({\n type: \"MEMSQL_PARTITIONS\",\n error: false,\n payload: {\n loading: false,\n data: {\n ...partitionsPayload,\n deltaTimeS: differenceInSeconds(new Date(), startDate),\n },\n },\n }))\n .finally(() => conn.release())\n .catch((err) => {\n logError(err);\n return {\n type: \"MEMSQL_PARTITIONS\",\n error: true,\n payload: err.message,\n };\n }))\n .catch((err) => {\n return {\n type: \"MEMSQL_PARTITIONS\",\n error: true,\n payload: err.message,\n };\n }));\n return merge($loading, $compute);\n },\n});\nexport function mapSQLRowsThroughput(sqlRowsThroughputProps) {\n if (sqlRowsThroughputProps && sqlRowsThroughputProps.length > 0) {\n const properties = {\n rowsAffectedByWrites: new BigNumber(0),\n rowsReturnedByReads: new BigNumber(0),\n // We can assume the readTime from the first result, since they are all the same\n readTime: sqlRowsThroughputProps[0].readTime,\n };\n sqlRowsThroughputProps.forEach((sqlProp) => {\n if (sqlProp.variableName === \"Rows_returned_by_reads\") {\n properties.rowsReturnedByReads = sqlProp.variableValue;\n }\n else if (sqlProp.variableName === \"Rows_affected_by_writes\") {\n properties.rowsAffectedByWrites = sqlProp.variableValue;\n }\n });\n return properties;\n }\n}\nfunction fetchRowsThroughput(conn) {\n return select(conn, SQL_CLUSTER_THROUGHPUT).then(mapSQLRowsThroughput);\n}\nconst createRowsThroughputAction = (data) => {\n return {\n type: \"ROWS_THROUGHPUT\",\n error: false,\n payload: {\n loading: false,\n data,\n },\n };\n};\nexport const queryRowsThroughput = makeActionCreator({\n name: \"queryRowsThroughput\",\n handle: (ctx) => {\n return from(ctx.manager\n .getPooledConnection()\n .then((conn) => fetchRowsThroughput(conn)\n .then((data) => {\n if (data) {\n return createRowsThroughputAction(data);\n }\n else {\n const errorMessage = \"Unable to parse rows throughput metrics in MV_GLOBAL_STATUS\";\n const errorAction = {\n type: \"ROWS_THROUGHPUT\",\n error: true,\n payload: errorMessage,\n };\n logError(new Error(errorMessage));\n return errorAction;\n }\n })\n .catch((err) => {\n logError(err);\n return {\n type: \"ROWS_THROUGHPUT\",\n error: true,\n payload: err.message,\n };\n })\n .finally(() => conn.release()))\n .catch((err) => {\n return {\n type: \"ROWS_THROUGHPUT\",\n error: true,\n payload: err.message,\n };\n }));\n },\n});\n// Only engines after 6.5 support this new feature. After 6.5 being deprecated\n// on studio, we can safely remove this code and all the checks related to the\n// isRowsTroughputEnabled\nexport const isRowsThroughputEnabled = makeActionCreator({\n name: \"isRowsThroughputEnabled\",\n handle(ctx) {\n return ctx.manager\n .getPooledConnection()\n .then((conn) => select(conn, SQL_CLUSTER_THROUGHPUT_ENABLED)\n .then((rows) => {\n if (rows.length !== 1) {\n throw new Error(\"The Rows Throughput Enabled query should only return one row\");\n }\n return {\n type: \"ROWS_THROUGHPUT_ENABLED\",\n error: false,\n payload: rows[0].isRowsTroughputEnabled.eq(1),\n };\n })\n .catch((err) => {\n logError(err);\n return {\n type: \"ROWS_THROUGHPUT_ENABLED\",\n error: false,\n payload: false,\n };\n })\n .finally(() => conn.release()))\n .catch(() => {\n // If we can't grab a connection from the pool, we assume that the\n // feature is disabled and we don't log this to Sentry since there's\n // nothing we can do about it.\n return {\n type: \"ROWS_THROUGHPUT_ENABLED\",\n error: false,\n payload: false,\n };\n });\n },\n});\n","export const SQL_DISTRIBUTED_PARTITIONS = `\n SELECT\n HOST AS host,\n PORT AS port,\n DATABASE_NAME AS databaseName,\n ORDINAL AS ordinal,\n ROLE AS role,\n IS_OFFLINE AS isOffline,\n STATE AS syncState\n FROM\n INFORMATION_SCHEMA.DISTRIBUTED_PARTITIONS\n`;\nexport const SQL_MV_CLUSTER_STATUS = `\n SELECT\n HOST AS host,\n PORT AS port,\n DATABASE_NAME AS databaseName,\n ROLE AS role,\n POSITION AS position,\n STATE AS state,\n \"METADATA ROLE\" AS metadataRole,\n DETAILS AS details\n FROM\n INFORMATION_SCHEMA.MV_CLUSTER_STATUS\n`;\nexport const SQL_DISTRIBUTED_DATABASES = `\n SELECT\n DATABASE_NAME AS databaseName,\n NUM_PARTITIONS AS numPartitions,\n REMOTE_NAME != \"\" AS drReplica,\n IS_SYNC AS syncReplicated\n FROM\n INFORMATION_SCHEMA.DISTRIBUTED_DATABASES\n`;\n// We only need to count the metrics from the agreggators. The rows will always\n// pass through an aggregator, so a row will be counted once in the leaf and\n// once in the aggregator.\nexport const SQL_CLUSTER_THROUGHPUT = `\n SELECT \n VARIABLE_NAME AS variableName, \n SUM(cast(VARIABLE_VALUE as UNSIGNED)) AS variableValue, \n NOW(6) AS readTime\n FROM\n INFORMATION_SCHEMA.MV_GLOBAL_STATUS \n WHERE \n (\n variable_name = 'Rows_affected_by_writes' OR\n variable_name = 'Rows_returned_by_reads'\n ) AND \n (\n NODE_TYPE = 'MA' OR\n NODE_TYPE = 'CA'\n )\n GROUP BY\n VARIABLE_NAME;\n`;\n// The table MV_GLOBAL_STATUS was added on 7.0. We can remove this check whenever\n// we no longer support versions bellow 7 in studio\nexport const SQL_CLUSTER_THROUGHPUT_ENABLED = `\n SELECT \n count(*) AS isRowsTroughputEnabled\n FROM \n INFORMATION_SCHEMA.COLUMNS\n WHERE \n TABLE_NAME = 'MV_GLOBAL_STATUS' AND \n COLUMN_NAME = 'NODE_TYPE';\n`;\n","import { selectError, selectLastUpdate, selectLoadingOrInitial, selectPayload, } from \"@single-js/common/util/loading-state-machine\";\nimport { selectRoute } from \"data/selectors/routes\";\nimport { selectNodes } from \"data/selectors/topology\";\nimport _ from \"lodash\";\nimport { createSelector } from \"reselect\";\nimport { ALL_HOSTS_COLUMNS } from \"view/hosts/columns-info\";\nimport { ALL_HOST_PAGE_COLUMNS } from \"view/topology/columns-info\";\nexport const selectHostsLoading = (s) => selectLoadingOrInitial(s.hosts.hosts) ||\n selectLoadingOrInitial(s.topology.topology);\nexport const selectHostsLastUpdate = (s) => _.max([\n selectLastUpdate(s.hosts.hosts),\n selectLastUpdate(s.topology.topology),\n]);\nexport const selectHostsError = (s) => selectError(s.hosts.hosts) ||\n selectError(s.topology.topology);\nexport const selectHosts = (s) => {\n const hostsPayload = selectPayload(s.hosts.hosts);\n if (hostsPayload) {\n return hostsPayload.hosts;\n }\n};\nexport const selectHostsSort = (s) => s.hosts.hostsSort;\nexport const selectHostNodesSort = (s) => s.hosts.hostNodesSort;\nexport const deriveHosts = createSelector(selectHosts, selectNodes, (hosts, allNodes) => {\n if (hosts) {\n return _.map(hosts, (host) => {\n let nodes = [];\n if (allNodes) {\n nodes = _.filter(allNodes, (node) => node.host === host.address);\n }\n return { ...host, nodes };\n });\n }\n});\nexport const selectSortedHosts = createSelector(deriveHosts, selectHostsSort, (hosts, sort) => {\n if (sort && hosts) {\n const { direction, columnId } = sort;\n const columnInfo = _.find(ALL_HOSTS_COLUMNS, (col) => col.id === columnId);\n if (!columnInfo) {\n throw new Error(`Expected column ${columnId} to be defined while sorting hosts`);\n }\n return _.orderBy(hosts, [columnInfo.getValue], direction);\n }\n else if (hosts) {\n return hosts;\n }\n});\nexport const selectCurrentHostAddress = (s) => selectRoute(s).params.hostId;\nexport const selectCurrentHost = createSelector(deriveHosts, selectCurrentHostAddress, (hosts, hostAddress) => {\n if (hosts && hostAddress) {\n return _.find(hosts, (host) => host.address === hostAddress);\n }\n});\nexport const selectSortedHostNodes = createSelector(selectCurrentHost, selectHostNodesSort, (host, sort) => {\n if (host) {\n if (sort) {\n const { direction, columnId } = sort;\n const columnInfo = _.find(ALL_HOST_PAGE_COLUMNS, (col) => col.id === columnId);\n if (!columnInfo) {\n throw new Error(`Expected column ${columnId} to be defined while sorting hosts' nodes`);\n }\n return _.orderBy(host.nodes, [columnInfo.getValue], direction);\n }\n else {\n return host.nodes;\n }\n }\n});\nexport function selectIsPhysicalMonitoringEnabled(s) {\n return s.hosts.physicalMonitoringEnabled;\n}\n","import { split } from \"@single-js/common/util/object\";\nimport { cva } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { commonTypographyUtilityVariants } from \"./typography-utility-variants\";\nimport \"./heading.scss\";\n// https://webaim.org/techniques/semanticstructure/#headings\nexport const headingVariants = {\n variant: {\n \"uppercase-heading-1\": \"sui-c-heading--variant-uppercase-heading-1\",\n \"uppercase-heading-2\": \"sui-c-heading--variant-uppercase-heading-2\",\n \"heading-1\": \"sui-c-heading--variant-heading-1\",\n \"heading-2\": \"sui-c-heading--variant-heading-2\",\n \"heading-3\": \"sui-c-heading--variant-heading-3\",\n \"heading-4\": \"sui-c-heading--variant-heading-4\",\n \"heading-5\": \"sui-c-heading--variant-heading-5\",\n \"heading-6\": \"sui-c-heading--variant-heading-6\",\n },\n ...commonTypographyUtilityVariants(),\n};\nexport const headingVariantPropKeys = Object.keys(headingVariants);\nexport const heading = cva(\"sui-c-heading\", {\n variants: headingVariants,\n defaultVariants: {\n variant: \"heading-1\",\n },\n});\nconst Heading = React.forwardRef((props, forwardedRef) => {\n const { children, className, as: Comp, ...rest } = props;\n const [variantProps, elementProps] = split(rest, headingVariantPropKeys);\n const commonProps = {\n className: heading({ ...variantProps, class: className }),\n children,\n ...elementProps,\n };\n return React.createElement(Comp, { ref: forwardedRef, ...commonProps });\n});\nconst createHeadingComponent = (as) => React.forwardRef((props, forwardedRef) => {\n return React.createElement(Heading, { as: as, ref: forwardedRef, ...props });\n});\nexport const H1 = createHeadingComponent(\"h1\");\nexport const H2 = createHeadingComponent(\"h2\");\nexport const H3 = createHeadingComponent(\"h3\");\nexport const H4 = createHeadingComponent(\"h4\");\nexport const H5 = createHeadingComponent(\"h5\");\nexport const H6 = createHeadingComponent(\"h6\");\n","import { Version } from \"@single-js/common/util/version\";\nimport SqlString from \"sqlstring\";\nconst SQL_EXCLUDE_SYSTEM_DATABASES = (dbColumn) => SqlString.format(`WHERE ${SqlString.escapeId(dbColumn)} NOT IN (?)`, [\n [\"cluster\", \"memsql\"],\n]);\n// We need to exclude system tables that are hidden in the output of:\n// `SHOW TABLES IN information_schema EXTENDED`.\nconst SQL_EXCLUDE_SYSTEM_TABLES = (dbColumn, tableColumn) => {\n const escapedDb = SqlString.escapeId(dbColumn);\n const escapedTable = SqlString.escapeId(tableColumn);\n return SqlString.format(`WHERE ${escapedDb} != ? AND ${escapedTable} != ?`, [\"INFORMATION_SCHEMA\", \"PERFORMANCE_METRICS\"]);\n};\nexport const SQL_STRUCTURE_DATABASES = `\n SELECT\n SCHEMA_NAME as databaseName\n FROM\n INFORMATION_SCHEMA.SCHEMATA\n ${SQL_EXCLUDE_SYSTEM_DATABASES(\"SCHEMA_NAME\")}\n AND SCHEMA_NAME LIKE ?\n ORDER BY\n SCHEMA_NAME ASC\n`;\nexport const SQL_TABLES_COUNT = `\n SELECT \n TABLE_SCHEMA as databaseName,\n count(*) as count\n FROM \n INFORMATION_SCHEMA.TABLES \n GROUP BY \n TABLE_SCHEMA \n`;\n// We neeed to create an empty statistics object for the\n// `information_schema` database and then join it with\n// the rest of the database statistics' objects, while\n// making sure it is properly sorted.\nexport const SQL_STATISTICS_DATABASE = `\n SELECT * FROM (\n SELECT\n 'information_schema' AS databaseName,\n 0 AS partitionCount,\n NULL AS syncRepl,\n \"\" AS remoteName\n UNION ALL\n SELECT\n DATABASE_NAME as databaseName,\n NUM_PARTITIONS AS partitionCount,\n IS_SYNC AS syncRepl,\n REMOTE_NAME AS remoteName\n FROM\n INFORMATION_SCHEMA.DISTRIBUTED_DATABASES\n ) dummy\n ORDER BY\n databaseName ASC;\n`;\nexport const SQL_STRUCTURE_SHOW_TABLES = `\n SHOW TABLES IN ? EXTENDED\n`;\n// In order to get the table structure of the schema in a single query against\n// information_schema, the cluster needs to be on version 6.7.11 of MemSQL or\n// higher. Before that, we need to run `SHOW TABLES EXTENDED` against each\n// database to get all the information we need.\nexport const SQL_STRUCTURE_TABLES_SINGLE_QUERY_MIN_VERSION = new Version([\n 6,\n 7,\n 11,\n]);\nexport const SQL_STRUCTURE_TABLES_SINGLE_QUERY = `\n SELECT\n t.table_schema AS databaseName,\n t.table_name AS tableName,\n ANY_VALUE(t.table_type) AS tableType,\n IFNULL(ANY_VALUE(s.partition_type) != \"Reference\", FALSE) AS isSharded,\n ANY_VALUE(s.storage_type) AS tableStorage\n FROM\n information_schema.tables AS t\n LEFT JOIN information_schema.table_statistics AS s\n ON t.table_schema = s.database_name AND t.table_name = s.table_name\n WHERE t.table_schema like ?\n GROUP BY\n t.table_schema,\n t.table_name;\n`;\nexport const SQL_STRUCTURE_COLUMNS = `\n SELECT\n CONCAT(TABLE_SCHEMA, '.', TABLE_NAME, '.', COLUMN_NAME) AS columnId,\n TABLE_SCHEMA AS databaseName,\n TABLE_NAME AS tableName,\n COLUMN_NAME AS columnName,\n DATA_TYPE AS dataType,\n COLUMN_TYPE AS subType,\n ORDINAL_POSITION AS ordinalPosition,\n CASE\n WHEN extra LIKE '%computed%' THEN true\n ELSE false\n END as computed,\n COLUMN_DEFAULT as defaultValueSQL,\n IS_NULLABLE = \"YES\" as isNullable,\n CASE\n WHEN extra LIKE '%auto_increment%' THEN true\n ELSE false\n END as autoIncrement\n FROM\n INFORMATION_SCHEMA.COLUMNS\n ${SQL_EXCLUDE_SYSTEM_TABLES(\"TABLE_SCHEMA\", \"TABLE_NAME\")}\n AND TABLE_SCHEMA LIKE ?\n ORDER BY\n columnId ASC\n`;\nexport const SQL_STATISTICS_COLUMNS_COLUMNAR = `\n SELECT\n CONCAT(DATABASE_NAME, '.', TABLE_NAME, '.', COLUMN_NAME) AS columnId,\n SUM(COMPRESSED_SIZE) AS compressedSize,\n SUM(UNCOMPRESSED_SIZE) AS uncompressedSize\n FROM\n INFORMATION_SCHEMA.COLUMNAR_SEGMENTS\n GROUP BY\n DATABASE_NAME,\n TABLE_NAME,\n COLUMN_NAME\n ORDER BY\n columnId ASC\n`;\nexport const SQL_STATISTICS_COLUMNS_MEMORY = `\n SELECT\n CONCAT(DATABASE_NAME, '.', TABLE_NAME, '.', COLUMN_NAME) AS columnId,\n COALESCE(SUM(MEMORY_USE), 0) as memoryUse\n FROM\n INFORMATION_SCHEMA.COLUMN_STATISTICS\n ${SQL_EXCLUDE_SYSTEM_DATABASES(\"DATABASE_NAME\")}\n GROUP BY\n DATABASE_NAME,\n TABLE_NAME,\n COLUMN_NAME\n ORDER BY\n columnId ASC\n`;\nexport const SQL_STATISTICS_TABLE = `\n SELECT\n CONCAT(DATABASE_NAME, '.', TABLE_NAME) AS tableId,\n COUNT(*) AS numReplicas,\n SUM(IFNULL(MEMORY_USE, 0)) AS memoryUse,\n SUM(CASE WHEN PARTITION_TYPE != 'Slave' THEN IFNULL(ROWS, 0) ELSE 0 END) AS rowCount\n FROM\n INFORMATION_SCHEMA.TABLE_STATISTICS\n ${SQL_EXCLUDE_SYSTEM_DATABASES(\"DATABASE_NAME\")}\n GROUP BY\n DATABASE_NAME,\n TABLE_NAME\n ORDER BY\n tableId ASC\n`;\nexport const SQL_STATISTICS_INDEXES = `\n SELECT\n TABLE_SCHEMA as databaseName,\n STATISTICS.TABLE_NAME AS tableName,\n STATISTICS.INDEX_NAME AS indexName,\n SUM(MEMORY_USE) AS memoryUse,\n INDEX_TYPE AS indexType,\n COLUMN_NAME AS columnName,\n ANY_VALUE(NON_UNIQUE) AS nonUnique\n FROM\n information_schema.STATISTICS,\n information_schema.INDEX_STATISTICS\n WHERE\n STATISTICS.TABLE_SCHEMA = INDEX_STATISTICS.DATABASE_NAME\n AND STATISTICS.TABLE_NAME = INDEX_STATISTICS.TABLE_NAME\n AND STATISTICS.INDEX_NAME = INDEX_STATISTICS.INDEX_NAME\n GROUP BY\n STATISTICS.TABLE_SCHEMA,\n STATISTICS.TABLE_NAME,\n STATISTICS.INDEX_NAME,\n STATISTICS.COLUMN_NAME,\n STATISTICS.INDEX_TYPE\n ORDER BY\n ANY_VALUE(SEQ_IN_INDEX) ASC\n`;\nexport const SQL_STATISTICS_INDEXES_COLUMNAR = `\n SELECT\n DATABASE_NAME AS databaseName,\n TABLE_NAME AS tableName,\n INDEX_NAME AS indexName,\n SUM(COMPRESSED_SIZE) AS totalSize\n FROM\n INFORMATION_SCHEMA.MV_COLUMNAR_SEGMENT_INDEX\n GROUP BY\n DATABASE_NAME,\n TABLE_NAME,\n INDEX_NAME\n`;\nexport const SQL_STATISTICS_HA = `\n SHOW VARIABLES LIKE 'redundancy_level'\n`;\n/** The following queries are the queries used for the SCHEMA_SUMMARY action. **/\nexport const SQL_MEMORY_USAGE = `\n SELECT\n IFNULL(SUM(mv.VARIABLE_VALUE - mv2.VARIABLE_VALUE), 0) * 1024 * 1024 AS memoryUsageB\n FROM\n INFORMATION_SCHEMA.MV_GLOBAL_STATUS mv\n INNER JOIN\n INFORMATION_SCHEMA.MV_GLOBAL_STATUS mv2\n ON\n mv.NODE_ID = mv2.NODE_ID\n WHERE\n mv.VARIABLE_NAME = 'Total_server_memory' AND\n mv2.VARIABLE_NAME = 'Buffer_manager_cached_memory' AND\n mv.NODE_TYPE = 'LEAF';\n`;\nexport const SQL_AVAILABLE_MEMORY = `\n SELECT\n SUM(MAX_MEMORY_MB) * 1024 * 1024 AS availableMemoryB\n FROM (\n SELECT\n MAX(MAX_MEMORY_MB) AS MAX_MEMORY_MB\n FROM\n INFORMATION_SCHEMA.MV_NODES\n WHERE\n TYPE='LEAF'\n GROUP BY\n IP_ADDR\n );\n`;\n// In order to get the total available memory, we look for the SUM of\n// CGROUP_TOTAL_B across all individual hosts where nodes are running. However,\n// if CGROUP_TOTAL_B is larger than 2^62 or CGROUP_TOTAL_B=-1, then we ignore it\n// since that means that cgroup is just not configured for that specific node.\n// This query will probably not work very well if there's multiple nodes on the\n// same host with different cgroup configurations for each node, since if that's\n// the case, we take the _maximum_ per-node value for that host.\nexport const SQL_TOTAL_MEMORY = `\n SELECT\n SUM(totalMemoryB) AS totalMemoryB\n FROM (\n SELECT\n MAX(\n IF(\n CGROUP_TOTAL_B > POW(2, 62) OR CGROUP_TOTAL_B = -1,\n HOST_TOTAL_B,\n CGROUP_TOTAL_B\n )\n ) AS totalMemoryB\n FROM\n INFORMATION_SCHEMA.MV_SYSINFO_MEM\n WHERE\n TYPE='LEAF'\n GROUP BY\n IP_ADDR\n );\n`;\nexport const SQL_DATABASE_DISK_USAGE = `\n SELECT\n DATABASE_NAME AS databaseName,\n SUM(COMPRESSED_SIZE) AS diskUsage\n FROM\n INFORMATION_SCHEMA.COLUMNAR_SEGMENTS\n GROUP BY\n DATABASE_NAME\n ORDER BY\n diskUsage DESC;\n`;\nexport const SQL_DISK_USAGE = `\n WITH\n mv_query AS (\n SELECT\n MAX(MOUNT_USED_B) AS diskUsageB\n FROM\n INFORMATION_SCHEMA.MV_SYSINFO_DISK\n WHERE\n TYPE = 'LEAF'\n GROUP BY\n IP_ADDR\n )\n SELECT\n SUM(diskUsageB) AS diskUsageB\n FROM\n mv_query;\n`;\nexport const SQL_TOTAL_DISK = `\n WITH\n mv_query AS (\n SELECT\n MAX(MOUNT_TOTAL_B) AS diskTotalB\n FROM\n INFORMATION_SCHEMA.MV_SYSINFO_DISK\n WHERE\n TYPE = 'LEAF'\n GROUP BY\n IP_ADDR\n )\n SELECT\n SUM(diskTotalB) AS diskTotalB\n FROM\n mv_query;\n`;\nexport const SQL_TABLE_LIKE_SAMPLE = `\n SELECT\n *\n FROM\n ??.??\n LIMIT\n 10\n`;\nexport const SQL_STRUCTURE_FUNCTIONS = `\n SHOW FUNCTIONS IN ?\n`;\nexport const SQL_STRUCTURE_AGGREGATES = `\n SHOW AGGREGATES IN ?\n`;\nexport const SQL_STRUCTURE_STORED_PROCEDURES = `\n SHOW PROCEDURES IN ?\n`;\nexport const SQL_DATABASE_NAMES = `\n SELECT\n DATABASE_NAME AS databaseName\n FROM\n INFORMATION_SCHEMA.DISTRIBUTED_DATABASES\n`;\n","import qualifiedName from \"memsql/qualified-name\";\nexport default function ({ databaseName, tableName, kind }) {\n let showCreateCommand;\n if ((kind === \"VIEW\" && databaseName === \"information_schema\") ||\n kind === \"TABLE\") {\n // The engine considiers MemSQL system views to be tables for some\n // things but views for some others; it happens that for running\n // SHOW CREATE to see column types, system views are like tables.\n showCreateCommand = \"SHOW CREATE TABLE\";\n }\n else {\n showCreateCommand = \"SHOW CREATE VIEW\";\n }\n return `${showCreateCommand} ${qualifiedName({\n databaseName,\n name: tableName,\n })} \\\\G`;\n}\n","import { logFocusError, } from \"@single-js/common/core/sql/actions\";\nimport { LELoading, LESuccess, } from \"@single-js/common/util/loading-error\";\nimport { nullableToMaybe } from \"@single-js/common/util/nullable\";\nimport { mapMultiSelectErrorResult, multiSelectParallel, multiSelectParallelWithErrors, multiSelectWithErrors, select, } from \"@single-js/common/util/query\";\nimport { SQLIdent, stripSlashG } from \"@single-js/common/util/sql-query\";\nimport { rawResultToArray } from \"@single-js/common/util/sql-results\";\nimport BigNumber from \"@single-js/common/vendor/bignumber.js/bignumber\";\nimport { differenceInSeconds } from \"date-fns\";\nimport _ from \"lodash\";\nimport { genFunctionId, genTableId } from \"memsql/db-object-id\";\nimport getShowCreateTableQuery from \"memsql/get-show-create-table-query\";\nimport { from, merge, Observable, of } from \"rxjs\";\nimport { logError } from \"util/logging\";\nimport * as logging from \"util/logging\";\nimport { makeActionCreator } from \"worker/api/helpers\";\nimport { SQL_AVAILABLE_MEMORY, SQL_DATABASE_DISK_USAGE, SQL_DATABASE_NAMES, SQL_DISK_USAGE, SQL_MEMORY_USAGE, SQL_STATISTICS_COLUMNS_COLUMNAR, SQL_STATISTICS_COLUMNS_MEMORY, SQL_STATISTICS_DATABASE, SQL_STATISTICS_HA, SQL_STATISTICS_INDEXES, SQL_STATISTICS_INDEXES_COLUMNAR, SQL_STATISTICS_TABLE, SQL_STRUCTURE_AGGREGATES, SQL_STRUCTURE_COLUMNS, SQL_STRUCTURE_DATABASES, SQL_STRUCTURE_FUNCTIONS, SQL_STRUCTURE_SHOW_TABLES, SQL_STRUCTURE_STORED_PROCEDURES, SQL_STRUCTURE_TABLES_SINGLE_QUERY, SQL_STRUCTURE_TABLES_SINGLE_QUERY_MIN_VERSION, SQL_TABLE_LIKE_SAMPLE, SQL_TABLES_COUNT, SQL_TOTAL_DISK, SQL_TOTAL_MEMORY, } from \"worker/api/schema-queries\";\nimport { fetchMemsqlVersion } from \"worker/api/version-query\";\nfunction sortTables(tables) {\n return _.orderBy(tables, [(table) => table.tableId], \"asc\");\n}\nconst createStructureUpdateAction = (data) => {\n return {\n type: \"SCHEMA_STRUCTURE_UPDATE\",\n error: false,\n payload: data,\n };\n};\nconst createDatabasesStructureAction = (data) => {\n return {\n type: \"DATABASES_STRUCTURE\",\n error: false,\n payload: {\n loading: false,\n data,\n },\n };\n};\nconst getTableType = (value) => {\n switch (value) {\n case \"BASE TABLE\":\n return \"BASE\";\n case \"TEMPORARY TABLE\":\n return \"TEMPORARY\";\n default:\n return \"UNKNOWN\";\n }\n};\nconst getTableStorage = (value) => {\n switch (value) {\n case \"INMEMORY_ROWSTORE\":\n return value;\n case \"COLUMNSTORE\":\n return value;\n default:\n return \"UNKNOWN\";\n }\n};\nfunction parseSqlStructureTable({ databaseName, tableName, isSharded, tableType, tableStorage, }) {\n const id = genTableId({\n databaseName,\n tableName,\n });\n if (tableType === \"VIEW\" || tableType === \"SYSTEM VIEW\") {\n return {\n tableId: id,\n tableName,\n databaseName,\n kind: \"VIEW\",\n };\n }\n return {\n tableId: id,\n databaseName,\n tableName,\n kind: \"TABLE\",\n isSharded,\n tableType: getTableType(tableType),\n tableStorage: getTableStorage(tableStorage),\n };\n}\nfunction parseTableShowTables(databaseName, row) {\n // the table name column is called \"Tables_in_${databaseName}\"\n const tableName = row[`Tables_in_${databaseName}`];\n return parseSqlStructureTable({\n databaseName,\n tableName,\n isSharded: Boolean(row.distributed),\n tableType: row.Table_type,\n tableStorage: row.Storage_type,\n });\n}\nfunction parseTableSingleQuery({ databaseName, tableName, tableType, isSharded, tableStorage, }) {\n return parseSqlStructureTable({\n databaseName,\n tableName,\n tableType,\n isSharded: isSharded.gt(0),\n tableStorage: nullableToMaybe(tableStorage),\n });\n}\nconst queryTables = ({ conn, databaseName, }) => ([databases, columns]) => {\n // On newer versions of memSQL, we can obtain the information we want for\n // all tables in a single query joining two INFORMATION_SCHEMA tables. On\n // older versions, we have to run a separate query for each database.\n // We check the version instead of doing feature detection because this is\n // a performance optimization and querying INFORMATION_SCHEMA tables to do\n // the feature detection is too expensive, but querying the version is\n // cheap.\n return fetchMemsqlVersion(conn)\n .then((version) => {\n let queryFilter = \"%\";\n if (databaseName) {\n queryFilter = databaseName;\n }\n if (version.ge(SQL_STRUCTURE_TABLES_SINGLE_QUERY_MIN_VERSION)) {\n return select(conn, SQL_STRUCTURE_TABLES_SINGLE_QUERY, [\n queryFilter,\n ]).then((sqlStructureTables) => {\n return _.map(sqlStructureTables, parseTableSingleQuery);\n });\n }\n else {\n const tableQueries = _.map(databases, (db) => ({\n sql: SQL_STRUCTURE_SHOW_TABLES,\n params: [SQLIdent(db.databaseName)],\n }));\n return multiSelectWithErrors(conn, ...tableQueries).then((results) => _.flatMap(results, (rows, idx) => {\n if (_.isError(rows)) {\n if (rows.code === \"ER_DBACCESS_DENIED_ERROR\") {\n return [];\n }\n else {\n throw rows;\n }\n }\n return _.map(rows, (row) => parseTableShowTables(databases[idx].databaseName, row));\n }));\n }\n })\n .then((tables) => [columns, tables]);\n};\nconst queryFunctions = (conn) => ({ databaseNames, }) => {\n const functionQueries = _.map(databaseNames, (databaseName) => ({\n sql: SQL_STRUCTURE_FUNCTIONS,\n params: [SQLIdent(databaseName)],\n }));\n return multiSelectWithErrors(conn, ...functionQueries).then((resultSets) => {\n const userDefinedFunctions = [];\n // `resultSets` is an array of result sets, and each result set is an\n // array of rows.\n _.each(resultSets, (rows, idx) => {\n if (_.isError(rows)) {\n if (rows.code === \"ER_DBACCESS_DENIED_ERROR\") {\n return;\n }\n else {\n throw rows;\n }\n }\n for (let i = 0; i < rows.length; i++) {\n const r = rows[i];\n // the table name column is called \"Functions_in_${databaseName}\"\n const databaseName = databaseNames[idx];\n const name = r[`Functions_in_${databaseName}`];\n const functionId = genFunctionId({\n databaseName,\n functionName: name,\n });\n const definer = r.Definer;\n switch (r[\"Function Type\"]) {\n case \"User Defined Function\": {\n userDefinedFunctions.push({\n kind: \"USER_DEFINED_FUNCTION\",\n databaseName,\n name,\n type: \"SCALAR_VALUED_FUNCTION\",\n functionId,\n definer,\n });\n break;\n }\n case \"Table Valued Function\": {\n userDefinedFunctions.push({\n kind: \"USER_DEFINED_FUNCTION\",\n databaseName,\n name,\n type: \"TABLE_VALUED_FUNCTION\",\n functionId,\n definer,\n });\n break;\n }\n case \"Stored Procedure\": {\n // Ignore stored procedures shown in the output of SHOW\n // FUNCTIONS since we grab those from SHOW STORED\n // PROCEDURES. Only version of MemSQL older than 6.7.11\n // show Stored Procedures in the output of SHOW\n // FUNCTIONS.\n break;\n }\n default: {\n logError(new Error(`Found a function with unknown type: ${r[\"Function Type\"]}`));\n }\n }\n }\n });\n return userDefinedFunctions;\n });\n};\nconst queryAggregates = (conn) => ({ databaseNames, }) => {\n const aggregateQueries = _.map(databaseNames, (databaseName) => ({\n sql: SQL_STRUCTURE_AGGREGATES,\n params: [SQLIdent(databaseName)],\n }));\n return multiSelectWithErrors(conn, ...aggregateQueries).then((resultSets) => {\n return _.flatMap(resultSets, (rows, idx) => {\n if (_.isError(rows)) {\n if (rows.code === \"ER_DBACCESS_DENIED_ERROR\") {\n return [];\n }\n else {\n throw rows;\n }\n }\n return _.map(rows, (row) => {\n const databaseName = databaseNames[idx];\n // the table name column is called \"Aggregates_in_${databaseName}\"\n const name = row[`Aggregates_in_${databaseName}`];\n const functionId = genTableId({\n databaseName,\n tableName: name,\n });\n return {\n kind: \"USER_DEFINED_AGGREGATE\",\n functionId,\n databaseName,\n name,\n };\n });\n });\n });\n};\nconst queryStoredProcedures = (conn) => ({ databaseNames, }) => {\n const storedProcedureQueries = _.map(databaseNames, (databaseName) => ({\n sql: SQL_STRUCTURE_STORED_PROCEDURES,\n params: [SQLIdent(databaseName)],\n }));\n return multiSelectWithErrors(conn, ...storedProcedureQueries).then((resultSets) => {\n return _.flatMap(resultSets, (rows, idx) => {\n if (_.isError(rows)) {\n if (rows.code === \"ER_DBACCESS_DENIED_ERROR\") {\n return [];\n }\n else {\n throw rows;\n }\n }\n const storedProcedures = [];\n _.each(rows, (row) => {\n const databaseName = databaseNames[idx];\n // the table name column is called \"Procedures_in_${databaseName}\" or\n // \"Functions_in_${databaseName}\" depending on the MemSQL version\n const name = row[`Procedures_in_${databaseName}`] ||\n row[`Functions_in_${databaseName}`];\n // On versions prior to 6.7.11, SHOW PROCEDURES can\n // actually return UDFs so we need to check if the\n // \"Function Type\" column exists and if it does, we\n // need to disregard this row if its type is not\n // \"Stored Procedure\".\n if (row[\"Function Type\"] &&\n row[\"Function Type\"] !== \"Stored Procedure\") {\n return;\n }\n const functionId = genTableId({\n databaseName,\n tableName: name,\n });\n storedProcedures.push({\n kind: \"STORED_PROCEDURE\",\n databaseName,\n definer: row.Definer,\n name,\n functionId,\n });\n });\n return storedProcedures;\n });\n });\n};\nfunction fetchSchemaStructure({ getConnection, databaseName, }) {\n let queryFilter = \"%\";\n if (databaseName) {\n queryFilter = databaseName;\n }\n return multiSelectParallel({\n getConnection,\n queries: [\n { sql: SQL_STRUCTURE_DATABASES, params: [queryFilter] },\n { sql: SQL_STRUCTURE_COLUMNS, params: [queryFilter] },\n ],\n })\n .then((results) => {\n return Promise.all([getConnection(), results]);\n })\n .then(([conn, results]) => {\n return queryTables({ conn, databaseName })(results)\n .then(([sqlColumns, tableLikes,]) => {\n const views = _.filter(tableLikes, (tableLike) => tableLike.kind === \"VIEW\");\n const tables = _.filter(tableLikes, (tableLike) => tableLike.kind === \"TABLE\");\n const columns = [];\n const viewColumns = [];\n // Loop through columns and split view columns from regular columns.\n for (let i = 0; i < sqlColumns.length; i++) {\n const column = sqlColumns[i];\n const view = _.find(views, (view) => view.tableName === column.tableName &&\n view.databaseName ===\n column.databaseName);\n if (view) {\n // view column\n viewColumns.push({\n databaseName: column.databaseName,\n tableName: view.tableName,\n columnName: column.columnName,\n columnId: column.columnId,\n kind: \"VIEW_COLUMN\",\n subType: column.subType,\n dataType: column.dataType,\n // We cast ordinal position to number since it will never exceed 2^53.\n ordinalPosition: column.ordinalPosition.toNumber(),\n isNullable: column.isNullable.eq(1),\n autoIncrement: column.autoIncrement.eq(1),\n });\n }\n else {\n // regular column\n const table = _.find(tables, (table) => table.tableName ===\n column.tableName &&\n table.databaseName ===\n column.databaseName);\n if (!table) {\n // We found a column for which there is neither a\n // view nor a table. This means that either:\n // - this column corresponds to a table that was\n // deleted while the Schema Explorer was issuing\n // - this column corresponds to a TVF function since\n // MemSQL will add TVF function columns to\n // `information_schema.columns` and TVF functions\n // as tables in `information_schema.tables` but\n // not to `SHOW TABLES IN <> EXTENDED` which is\n // what Studio uses to read the list of tables and\n // views. In either case, we want to ignore this\n // column and just keep going without pushing\n // anything into either the `columns` or\n // `viewColumns` arrays.\n continue;\n }\n columns.push({\n databaseName: column.databaseName,\n tableName: column.tableName,\n columnName: column.columnName,\n columnId: column.columnId,\n kind: \"TABLE_COLUMN\",\n dataType: column.dataType,\n // We cast ordinal position to number since it will never exceed 2^53.\n ordinalPosition: column.ordinalPosition.toNumber(),\n subType: column.subType,\n computed: column.computed.eq(1),\n defaultValueSQL: nullableToMaybe(column.defaultValueSQL),\n columnStorage: table.tableStorage,\n isNullable: column.isNullable.eq(1),\n autoIncrement: column.autoIncrement.eq(1),\n });\n }\n }\n // Structure tables and views by indexing them per database\n let allTablesPerDatabase = {};\n let allViewsPerDatabase = {};\n const tablesSorted = sortTables(tables);\n const [databases] = results;\n databases.forEach((database) => {\n const { databaseName } = database;\n const tablesPerDatabase = tablesSorted.filter((table) => table.databaseName === databaseName);\n allTablesPerDatabase = {\n ...allTablesPerDatabase,\n [databaseName]: new LESuccess(tablesPerDatabase),\n };\n const viewsPerDatabase = views.filter((view) => view.databaseName === databaseName);\n allViewsPerDatabase = {\n ...allViewsPerDatabase,\n [databaseName]: new LESuccess(viewsPerDatabase),\n };\n });\n return {\n tables: allTablesPerDatabase,\n views: allViewsPerDatabase,\n columns: new LESuccess(columns),\n viewColumns: new LESuccess(viewColumns),\n aggregates: new LELoading(),\n userDefinedFunctions: new LELoading(),\n storedProcedures: new LELoading(),\n };\n })\n .finally(() => {\n conn.release();\n });\n });\n}\nfunction fetchDatabasesStructure(getConnection) {\n return multiSelectParallel({\n getConnection,\n queries: [{ sql: SQL_TABLES_COUNT }, { sql: SQL_STATISTICS_DATABASE }],\n }).then((results) => {\n const [tableCountRows, databaseStats] = results;\n const databases = databaseStats.map((result) => {\n const row = tableCountRows.find((row) => row.databaseName === result.databaseName);\n let tableCount = 0;\n if (row) {\n tableCount = row.count.toNumber();\n }\n const statisticsData = databaseStats.find((row) => row.databaseName === result.databaseName);\n let statistics = undefined;\n if (statisticsData) {\n let syncRepl;\n if (statisticsData.syncRepl !== null) {\n syncRepl = statisticsData.syncRepl.gt(0);\n }\n statistics = {\n partitionCount: new LESuccess(statisticsData.partitionCount),\n syncRepl,\n remoteName: statisticsData.remoteName || undefined,\n };\n }\n return {\n kind: \"DATABASE\",\n databaseName: result.databaseName,\n statistics,\n tableCount,\n };\n });\n return {\n databases: new LESuccess(databases),\n };\n });\n}\nfunction fetchAndEmitSchemaStructure({ observer, getConnection, databaseName, }) {\n return fetchSchemaStructure({ getConnection, databaseName })\n .then((structure) => {\n return createStructureUpdateAction(structure);\n })\n .then((structureAction) => {\n observer.next(structureAction);\n });\n}\nfunction fetchAndEmitDatabasesStructure({ observer, getConnection, }) {\n return fetchDatabasesStructure(getConnection)\n .then((structure) => {\n return structure;\n })\n .then((databasesStructure) => {\n if (!databasesStructure.databases.isSuccess()) {\n throw new Error(\"Expected databases to be loaded\");\n }\n observer.next(createDatabasesStructureAction(databasesStructure));\n return databasesStructure.databases.value.map((database) => database.databaseName);\n });\n}\nexport const queryDatabasesStructure = makeActionCreator({\n name: \"queryDatabasesStructure\",\n handle: (ctx) => {\n const $loading = of({\n type: \"DATABASES_STRUCTURE\",\n error: false,\n payload: { loading: true },\n });\n const $compute = Observable.create((observer) => {\n return fetchAndEmitDatabasesStructure({\n observer,\n getConnection: () => ctx.manager.getPooledConnection(),\n }).finally(() => {\n observer.complete();\n });\n });\n return merge($loading, $compute);\n },\n});\nexport const queryDatabaseStructure = makeActionCreator({\n name: \"queryDatabaseStructure\",\n handle: (ctx, { databaseName }) => {\n const $compute = Observable.create((observer) => {\n return fetchAndEmitSchemaStructure({\n observer,\n getConnection: () => ctx.manager.getPooledConnection(),\n databaseName,\n }).finally(() => {\n observer.complete();\n });\n });\n return $compute;\n },\n});\nexport const queryStructure = makeActionCreator({\n name: \"queryStructure\",\n handle: (ctx) => {\n const $loading = of({\n type: \"SCHEMA_STRUCTURE\",\n error: false,\n payload: { loading: true },\n });\n const $compute = Observable.create((observer) => {\n return fetchAndEmitDatabasesStructure({\n observer,\n getConnection: () => ctx.manager.getPooledConnection(),\n })\n .then((databaseNames) => {\n return fetchAndEmitSchemaStructure({\n observer,\n getConnection: () => ctx.manager.getPooledConnection(),\n })\n .then(() => {\n return fetchAndEmitExtraSchemaStructure({\n observer,\n getConnection: () => ctx.manager.getPooledConnection(),\n databaseNames,\n });\n })\n .catch((err) => {\n observer.next({\n type: \"SCHEMA_STRUCTURE\",\n error: true,\n payload: {\n message: err.message,\n },\n });\n });\n })\n .finally(() => {\n observer.complete();\n });\n });\n return merge($loading, $compute);\n },\n});\nfunction fetchClusterStatistics(conn) {\n return select(conn, SQL_STATISTICS_HA).then((sqlClusterHA) => {\n if (sqlClusterHA.length !== 1) {\n throw new Error(\"This query should only return one row\");\n }\n return {\n haEnabled: Number(sqlClusterHA[0].Value) >= 2, // boolean\n };\n });\n}\nconst createClusterStatisticsAction = (data) => {\n return {\n type: \"CLUSTER_STATISTICS\",\n error: false,\n payload: {\n loading: false,\n data,\n },\n };\n};\n// See PLAT-508 for more details.\nconst filterIndexes = (sqlIndexesStats, sqlColumnarIndexesStats) => {\n let indexes = {};\n for (let i = 0; i < sqlIndexesStats.length; i++) {\n const index = sqlIndexesStats[i];\n const hashedIndex = [\n index.databaseName,\n index.tableName,\n index.indexName,\n index.indexType,\n index.nonUnique,\n ].join(\".\");\n const savedIndex = indexes[hashedIndex];\n const columnarIndex = sqlColumnarIndexesStats.filter((sqlColumnarIndex) => index.databaseName === sqlColumnarIndex.databaseName &&\n index.tableName === sqlColumnarIndex.tableName &&\n index.indexName === sqlColumnarIndex.indexName);\n let diskUse = undefined;\n if (columnarIndex.length > 1) {\n // This is not supposed to happen. For the combination databaseName,\n // tableName, indexName only one entrance should be found in the\n // table MV_COLUMNAR_SEGMENT_INDEX\n logError(new Error(`Multiple entries were found for a column hash index with the following combination: databaseName, tableName, indexName`));\n }\n else if (columnarIndex.length === 1) {\n diskUse = columnarIndex[0].totalSize;\n }\n if (savedIndex) {\n savedIndex.columnNames.push(index.columnName);\n }\n else {\n indexes[hashedIndex] = {\n kind: \"INDEX\",\n indexId: hashedIndex,\n databaseName: index.databaseName,\n tableName: index.tableName,\n indexName: index.indexName,\n memoryUse: index.memoryUse,\n diskUse,\n indexType: index.indexType,\n columnNames: [index.columnName],\n // if non unique is false, then unique is true\n unique: index.nonUnique.isZero(),\n };\n }\n }\n // SHARD indices can appear in information_schema.STATISTICS with the\n // same name as a different index; if this is the case, they actually\n // are just an alias for the other index, and therefore the SHARD\n // index's memory use should be 0.\n indexes = _.mapValues(indexes, (index) => {\n if (index.indexType === \"SHARD\") {\n if (_.find(indexes, (otherIndex) => otherIndex.databaseName === index.databaseName &&\n otherIndex.tableName === index.tableName &&\n otherIndex.indexName === index.indexName &&\n otherIndex.indexType !== index.indexType)) {\n return {\n ...index,\n memoryUse: new BigNumber(0),\n };\n }\n }\n return index;\n });\n return _.values(indexes);\n};\nfunction createColumnarSegmentsAction(sqlColumnarStatistics) {\n return {\n type: \"SCHEMA_COLUMNAR_SEGMENTS\",\n error: false,\n payload: sqlColumnarStatistics,\n };\n}\nfunction createColumnStatisticsAction(sqlColumnStatistics) {\n return {\n type: \"SCHEMA_COLUMN_STATISTICS\",\n error: false,\n payload: sqlColumnStatistics,\n };\n}\nconst createStatisticsAction = (sqlTableMemoryStats, startDate) => {\n return {\n type: \"SCHEMA_STATISTICS\",\n error: false,\n payload: {\n loading: false,\n data: {\n tableStats: sortTables(sqlTableMemoryStats),\n indexes: new LELoading(),\n deltaTimeS: differenceInSeconds(new Date(), startDate),\n },\n },\n };\n};\nfunction fetchAndEmitExtraSchemaStructure({ observer, getConnection, databaseNames, }) {\n const functionsPromise = getConnection().then((conn) => queryFunctions(conn)({ databaseNames })\n .then((userDefinedFunctions) => {\n observer.next({\n type: \"SCHEMA_STRUCTURE_UPDATE\",\n error: false,\n payload: {\n userDefinedFunctions: new LESuccess(userDefinedFunctions),\n },\n });\n })\n .finally(() => {\n conn.release();\n }));\n const storedProceduresPromise = getConnection().then((conn) => queryStoredProcedures(conn)({ databaseNames })\n .then((storedProcedures) => {\n observer.next({\n type: \"SCHEMA_STRUCTURE_UPDATE\",\n error: false,\n payload: {\n storedProcedures: new LESuccess(storedProcedures),\n },\n });\n })\n .finally(() => {\n conn.release();\n }));\n const aggregatesPromise = getConnection().then((conn) => queryAggregates(conn)({ databaseNames })\n .then((aggregates) => {\n observer.next({\n type: \"SCHEMA_STRUCTURE_UPDATE\",\n error: false,\n payload: {\n aggregates: new LESuccess(aggregates),\n },\n });\n })\n .finally(() => {\n conn.release();\n }));\n return Promise.all([\n functionsPromise,\n storedProceduresPromise,\n aggregatesPromise,\n ]);\n}\nfunction fetchAndEmitSchemaStatistics({ conn, observer, startDate, }) {\n return select(conn, SQL_STATISTICS_TABLE).then((results) => {\n // Map all the results into the real result and\n // throw an exception if an error happened. The last\n // result SQLStatisticsIndexColumnar has a special\n // threatment when the table doesn't exist, so we\n // can support engines < 7.0.\n const mappedResults = mapMultiSelectErrorResult(results);\n observer.next(createStatisticsAction(mappedResults, startDate));\n });\n}\nfunction fetchAndEmitExtraSchemaStatistics({ observer, getConnection, }) {\n return multiSelectParallelWithErrors({\n getConnection,\n queries: [\n {\n sql: SQL_STATISTICS_COLUMNS_COLUMNAR,\n },\n {\n sql: SQL_STATISTICS_COLUMNS_MEMORY,\n },\n { sql: SQL_STATISTICS_INDEXES },\n { sql: SQL_STATISTICS_INDEXES_COLUMNAR },\n ],\n }).then(([columnarSegments, columnStatistics, sqlIndexesStats, sqlColumnarIndexesStats,]) => {\n if (columnarSegments instanceof Error) {\n observer.next(logFocusError(`An error occured while querying information_schema.columnar_segments: ${columnarSegments.message}`));\n observer.next({\n type: \"SCHEMA_COLUMNAR_SEGMENTS\",\n error: true,\n payload: columnarSegments.message,\n });\n }\n else {\n observer.next(createColumnarSegmentsAction(columnarSegments));\n }\n if (columnStatistics instanceof Error) {\n observer.next(logFocusError(`An error occured while querying information_schema.column_statistics: ${columnStatistics.message}`));\n observer.next({\n type: \"SCHEMA_COLUMN_STATISTICS\",\n error: true,\n payload: columnStatistics.message,\n });\n }\n else {\n observer.next(createColumnStatisticsAction(columnStatistics));\n }\n if (sqlIndexesStats instanceof Error) {\n logging.log(\"error\", \"An error occurred while loading SQL_STATISTICS_INDEXES\", sqlIndexesStats);\n observer.next({\n type: \"INDEXES\",\n error: true,\n payload: `An error occurred while loading the indexes data: ${sqlIndexesStats}`,\n });\n }\n else if (sqlColumnarIndexesStats instanceof Error) {\n if (\"code\" in sqlColumnarIndexesStats &&\n sqlColumnarIndexesStats.code === \"ER_NO_SUCH_TABLE\") {\n // If `sqlColumnarIndexesStats` fails with ER_NO_SUCH_TABLE,\n // we assume there's no columnstore secondary indexes since\n // the table that tracks this didn't exist in older MemSQL\n // versions.\n logging.log(\"debug\", \"Grabbing information about columnstore secondary indexes failed because the table doesn't exist.\");\n observer.next({\n type: \"INDEXES\",\n error: false,\n payload: filterIndexes(sqlIndexesStats, []),\n });\n }\n else {\n logging.log(\"error\", \"An error occurred while loading SQL_STATISTICS_INDEXES_COLUMNAR\", sqlColumnarIndexesStats);\n observer.next({\n type: \"INDEXES\",\n error: true,\n payload: `An error occurred while loading the indexes data: ${sqlColumnarIndexesStats}`,\n });\n }\n }\n else {\n observer.next({\n type: \"INDEXES\",\n error: false,\n payload: filterIndexes(sqlIndexesStats, sqlColumnarIndexesStats),\n });\n }\n });\n}\nexport const querySchemaStatistics = makeActionCreator({\n name: \"querySchemaStatistics\",\n handle(ctx) {\n const $loadingClusterStatistics = of({\n type: \"CLUSTER_STATISTICS\",\n error: false,\n payload: { loading: true },\n });\n const $loadingSchemaStatistics = of({\n type: \"SCHEMA_STATISTICS\",\n error: false,\n payload: { loading: true },\n });\n const startDate = new Date();\n const $compute = Observable.create((observer) => {\n ctx.manager\n .getPooledConnection()\n .then((conn) => fetchClusterStatistics(conn)\n .then(createClusterStatisticsAction)\n .then((out) => {\n observer.next(out);\n })\n .then(() => {\n return fetchAndEmitDatabasesStructure({\n observer,\n getConnection: () => ctx.manager.getPooledConnection(),\n });\n })\n .then((databaseNames) => {\n return fetchAndEmitSchemaStructure({\n observer,\n getConnection: () => ctx.manager.getPooledConnection(),\n }).then(() => {\n return Promise.all([\n fetchAndEmitExtraSchemaStructure({\n observer,\n getConnection: () => ctx.manager.getPooledConnection(),\n databaseNames,\n }),\n fetchAndEmitSchemaStatistics({\n observer,\n startDate,\n conn,\n }).then(() => {\n return fetchAndEmitExtraSchemaStatistics({\n getConnection: () => ctx.manager.getPooledConnection(),\n observer,\n });\n }),\n ]);\n });\n })\n .catch((err) => {\n observer.next({\n type: \"SCHEMA_STATISTICS\",\n error: true,\n payload: {\n message: err.message,\n },\n });\n })\n .finally(() => {\n return conn.release();\n }))\n .catch((err) => {\n observer.next({\n type: \"SCHEMA_STATISTICS\",\n error: true,\n payload: {\n message: err.message,\n },\n });\n })\n .finally(() => observer.complete());\n });\n return merge($loadingClusterStatistics, $loadingSchemaStatistics, $compute);\n },\n});\nconst createSchemaSummaryAction = ([sqlDatabasesDiskUsage, sqlMemoryUsage, sqlAvailableMemory, sqlTotalMemory, sqlDiskUsage, sqlTotalDisk, sqlDatabaseNames,], startDate) => {\n if (sqlMemoryUsage.length !== 1) {\n throw new Error(\"Expected query to fetch memory usage to be a single row.\");\n }\n if (sqlAvailableMemory.length !== 1) {\n throw new Error(\"Expected query to fetch memory available to be a single row.\");\n }\n if (sqlTotalMemory.length !== 1) {\n throw new Error(\"Expected query to fetch total memory to be a single row.\");\n }\n if (sqlDiskUsage.length !== 1) {\n throw new Error(\"Expected query to fetch disk usage to be a single row.\");\n }\n if (sqlTotalDisk.length !== 1) {\n throw new Error(\"Expected query to fetch total disk available to be a single row.\");\n }\n const topDiskDatabases = _(sqlDatabasesDiskUsage)\n .take(3)\n .filter((d) => d.diskUsage.gt(0))\n .map((d) => ({\n name: d.databaseName,\n diskUsage: d.diskUsage,\n }))\n .value();\n if (sqlMemoryUsage[0].memoryUsageB === null) {\n return {\n type: \"SCHEMA_SUMMARY\",\n error: true,\n payload: \"An error occurred while calculating memory usage\",\n };\n }\n if (sqlAvailableMemory[0].availableMemoryB === null) {\n return {\n type: \"SCHEMA_SUMMARY\",\n error: true,\n payload: \"An error occurred while calculating available memory\",\n };\n }\n if (sqlTotalMemory[0].totalMemoryB === null) {\n return {\n type: \"SCHEMA_SUMMARY\",\n error: true,\n payload: \"An error occurred while calculating total memory\",\n };\n }\n if (sqlDiskUsage[0].diskUsageB === null) {\n return {\n type: \"SCHEMA_SUMMARY\",\n error: true,\n payload: \"An error occurred while calculating disk usage\",\n };\n }\n if (sqlTotalDisk[0].diskTotalB === null) {\n return {\n type: \"SCHEMA_SUMMARY\",\n error: true,\n payload: \"An error occurred while calculating total disk\",\n };\n }\n return {\n type: \"SCHEMA_SUMMARY\",\n error: false,\n payload: {\n loading: false,\n data: {\n memoryUsage: new BigNumber(sqlMemoryUsage[0].memoryUsageB),\n memoryAvailable: sqlAvailableMemory[0].availableMemoryB,\n memoryTotal: sqlTotalMemory[0].totalMemoryB,\n diskUsage: sqlDiskUsage[0].diskUsageB,\n diskTotal: sqlTotalDisk[0].diskTotalB,\n topDiskDatabases,\n databaseNames: _.map(sqlDatabaseNames, ({ databaseName }) => databaseName),\n deltaTimeS: differenceInSeconds(new Date(), startDate),\n },\n },\n };\n};\nexport const querySchemaSummary = makeActionCreator({\n name: \"querySchemaSummary\",\n handle(ctx) {\n const $loadingSummary = of({\n type: \"SCHEMA_SUMMARY\",\n error: false,\n payload: { loading: true },\n });\n const startDate = new Date();\n const $compute = from(multiSelectParallel({\n getConnection: () => ctx.manager.getPooledConnection(),\n queries: [\n { sql: SQL_DATABASE_DISK_USAGE },\n { sql: SQL_MEMORY_USAGE },\n { sql: SQL_AVAILABLE_MEMORY },\n { sql: SQL_TOTAL_MEMORY },\n { sql: SQL_DISK_USAGE },\n { sql: SQL_TOTAL_DISK },\n { sql: SQL_DATABASE_NAMES },\n ],\n })\n .then((results) => createSchemaSummaryAction(results, startDate))\n .catch((err) => {\n return {\n type: \"SCHEMA_SUMMARY\",\n error: true,\n payload: err.message,\n };\n }));\n return merge($loadingSummary, $compute);\n },\n});\nexport const queryLightSchemaSummary = makeActionCreator({\n name: \"queryLightSchemaSummary\",\n handle(ctx) {\n const $loadingSummary = of({\n type: \"SCHEMA_SUMMARY\",\n error: false,\n payload: { loading: true },\n });\n const startDate = new Date();\n const $compute = from(multiSelectParallel({\n getConnection: () => ctx.manager.getPooledConnection(),\n queries: [\n { sql: SQL_MEMORY_USAGE },\n { sql: SQL_AVAILABLE_MEMORY },\n { sql: SQL_TOTAL_MEMORY },\n { sql: SQL_DISK_USAGE },\n { sql: SQL_TOTAL_DISK },\n { sql: SQL_DATABASE_NAMES },\n ],\n })\n .then((results) => createSchemaSummaryAction([undefined, ...results], startDate))\n .catch((err) => {\n return {\n type: \"SCHEMA_SUMMARY\",\n error: true,\n payload: err.message,\n };\n }));\n return merge($loadingSummary, $compute);\n },\n});\nexport const queryTableLikeSample = makeActionCreator({\n name: \"queryTableLikeSample\",\n handle(ctx, { databaseName, tableName, }) {\n const $loading = of({\n type: \"TABLE_LIKE_SAMPLE\",\n error: false,\n payload: { loading: true },\n });\n const $compute = from(ctx.manager\n .getPooledConnection()\n .then((conn) => {\n return new Promise((resolve, reject) => conn.query({\n sql: SQL_TABLE_LIKE_SAMPLE,\n nestTables: true,\n values: [databaseName, tableName],\n // We don't want to typecast the output of this query since we\n // just display the results as strings directly to the user.\n typeCast: false,\n }, (error, rows, fields) => {\n if (error) {\n return reject(error);\n }\n else if (!fields) {\n logError(new Error(\"Got back no fields while querying for sample data from a table.\"));\n return reject(new Error(\"An error occured while fetching sample data from this table.\"));\n }\n else {\n return resolve({\n type: \"TABLE_LIKE_SAMPLE\",\n error: false,\n payload: {\n loading: false,\n data: {\n sampleRows: _.map(rows, (row) => rawResultToArray(fields, row)),\n fields,\n },\n },\n });\n }\n }))\n .catch((err) => {\n logError(err);\n return {\n type: \"TABLE_LIKE_SAMPLE\",\n error: true,\n payload: {\n message: err.message,\n },\n };\n })\n .finally(() => conn.release());\n })\n .catch((err) => {\n return {\n type: \"TABLE_LIKE_SAMPLE\",\n error: true,\n payload: {\n message: err.message,\n },\n };\n }));\n return merge($loading, $compute);\n },\n});\nexport const queryShowCreateTableLikeSql = makeActionCreator({\n name: \"queryShowCreateTableLikeSql\",\n handle(ctx, { databaseName, tableName, kind }) {\n const $loading = of({\n type: \"SHOW_CREATE_TABLE_LIKE_SQL\",\n error: false,\n payload: { loading: true },\n });\n const $compute = from(ctx.manager\n .getPooledConnection()\n .then((conn) => {\n return new Promise((resolve, reject) => conn.query({\n sql: stripSlashG(getShowCreateTableQuery({\n databaseName,\n tableName,\n kind,\n })),\n nestTables: true,\n }, (error, rows, fields) => {\n if (error) {\n return reject(error);\n }\n else if (!fields) {\n logError(new Error(\"Got back no fields while querying for show create table.\"));\n return reject(new Error(\"An error occurred while fetching the SHOW CREATE statement.\"));\n }\n else {\n return resolve({\n type: \"SHOW_CREATE_TABLE_LIKE_SQL\",\n error: false,\n payload: {\n loading: false,\n data: {\n rows: _.map(rows, (row) => rawResultToArray(fields, row)),\n fields,\n },\n },\n });\n }\n }))\n .catch((err) => {\n return {\n type: \"SHOW_CREATE_TABLE_LIKE_SQL\",\n error: true,\n payload: { message: err.message },\n };\n })\n .finally(() => conn.release());\n })\n .catch((err) => {\n return {\n type: \"SHOW_CREATE_TABLE_LIKE_SQL\",\n error: true,\n payload: { message: err.message },\n };\n }));\n return merge($loading, $compute);\n },\n});\n","import { staticQueryGroup } from \"../connection/worker-connection\";\nimport { CONNECTION_ID } from \"../query-editor/reducers-query-editor\";\nimport { createExplainQueryGroupRepr, createProfileQueryGroupRepr, } from \"./worker-explain\";\nexport const explainViewportTransform = (payload) => ({\n type: \"EXPLAIN_VIEWPORT_TRANSFORM\",\n error: false,\n payload,\n});\nexport const EXPLAIN_TABS = [\n \"Actual\",\n \"Estimated\",\n \"Difference\",\n];\nexport const changeExplainTab = (payload) => ({\n type: \"CHANGE_EXPLAIN_TAB\",\n error: false,\n payload,\n});\nexport const explainQuery = ({ query }) => {\n return (dispatch) => {\n dispatch({\n type: \"EXPLAIN_LAYOUT\",\n error: false,\n payload: {\n loading: true,\n },\n });\n dispatch(staticQueryGroup({\n id: CONNECTION_ID,\n queryGroup: createExplainQueryGroupRepr({ query }),\n }));\n };\n};\nexport const profileQuery = ({ query }) => {\n return (dispatch) => {\n dispatch({\n type: \"EXPLAIN_LAYOUT\",\n error: false,\n payload: {\n loading: true,\n },\n });\n dispatch(staticQueryGroup({\n id: CONNECTION_ID,\n queryGroup: createProfileQueryGroupRepr({ query }),\n }));\n };\n};\nexport const expandSection = (payload) => ({\n type: \"EXPAND_EXPLAIN_SECTION\",\n error: false,\n payload,\n});\nexport const collapseSection = (payload) => ({\n type: \"COLLAPSE_EXPLAIN_SECTION\",\n error: false,\n payload,\n});\n","import { newlineCharacter, replaceAllNewlineByPlatformNewline, } from \"@single-js/common/util/platform\";\nimport stringifyCsv from \"csv-stringify/lib/es5/sync\";\nimport _ from \"lodash\";\nimport { servicesLocator } from \"../../../services/services-locator\";\nimport { getEditorFromConfig, readSingleStorageConfig, setSingleStorageConfig, } from \"../../../services/single-storage-config\";\nimport { AbsoluteRange } from \"../../../util/range\";\nimport saveData from \"../../../util/save-data\";\nimport { extractQueries } from \"../../../util/sql-query\";\nimport { initQueryExecutor, staticQueryGroup, } from \"../connection/worker-connection\";\nimport { selectActiveQueryRange, selectEditorCanRunQuery, selectResultsToExport, } from \"./selectors-page-editor\";\nconst updateLocalStorageBuffer = _.debounce((buffer, connectionId, defaultConnectedClusterId) => {\n setSingleStorageConfig((oldConfig) => {\n const { editorId, editor } = getEditorFromConfig(oldConfig, connectionId, defaultConnectedClusterId);\n editor.buffer = buffer;\n return {\n editors: {\n ...oldConfig.editors,\n [editorId]: editor,\n },\n };\n });\n}, 1000);\nexport const editBuffer = (payload) => {\n return (dispatch, getState) => {\n const { connectionId } = getState().queryEditor;\n const { config } = getState().connection.state;\n let defaultConnectedClusterId;\n if (config) {\n defaultConnectedClusterId = config.clusterId;\n }\n updateLocalStorageBuffer(payload.buffer, connectionId, defaultConnectedClusterId);\n dispatch({\n type: \"QUERY_EDITOR_EDIT_BUFFER\",\n error: false,\n payload,\n });\n };\n};\nexport const appendText = (options) => {\n return (dispatch, getState) => {\n const { /* router, */ queryEditor } = getState();\n // if the amount of spacing added before and after the appended text is\n // changed, please update the calculations in view/common/sql-editor\n // updateSelectionAndFocus regarding highlighting the text\n const currBuffer = queryEditor.buffer;\n const spacing = currBuffer\n ? `${newlineCharacter}${newlineCharacter}`\n : \"\";\n const newBuffer = currBuffer.concat(spacing, replaceAllNewlineByPlatformNewline(options.text), newlineCharacter);\n const start = currBuffer.length + spacing.length;\n const end = currBuffer.length + spacing.length + options.text.length;\n dispatch({\n type: \"QUERY_EDITOR_APPEND_AND_FOCUS\",\n error: false,\n payload: {\n focus: queryEditor.focus + 1,\n buffer: newBuffer,\n cursorInfo: {\n index: start,\n selectedRange: new AbsoluteRange(start, end),\n },\n },\n });\n };\n};\nconst updateLocalStorageCursorInfo = _.debounce((cursorInfo, connectionId, defaultConnectedClusterId) => {\n setSingleStorageConfig((oldConfig) => {\n const { editorId, editor } = getEditorFromConfig(oldConfig, connectionId, defaultConnectedClusterId);\n editor.editorPosition.cursorInfo = cursorInfo;\n return {\n editors: {\n ...oldConfig.editors,\n [editorId]: editor,\n },\n };\n });\n}, 1000);\nexport const setCursorInfo = (payload) => {\n return (dispatch, getState) => {\n const { connectionId } = getState().queryEditor;\n const { config } = getState().connection.state;\n let defaultConnectedClusterId;\n if (config) {\n defaultConnectedClusterId = config.clusterId;\n }\n updateLocalStorageCursorInfo(payload, connectionId, defaultConnectedClusterId);\n dispatch({\n type: \"QUERY_EDITOR_CURSOR_INFO\",\n error: false,\n payload,\n });\n };\n};\nconst updateLocalStorageFirstVisibleLine = (firstVisibleLine, connectionId, defaultConnectedClusterId) => {\n setSingleStorageConfig((oldConfig) => {\n const { editorId, editor } = getEditorFromConfig(oldConfig, connectionId, defaultConnectedClusterId);\n editor.editorPosition.firstVisibleLine = firstVisibleLine;\n return {\n editors: {\n ...oldConfig.editors,\n [editorId]: editor,\n },\n };\n });\n};\nexport const setFirstVisibleLine = (payload) => {\n return (dispatch, getState) => {\n const { connectionId } = getState().queryEditor;\n const { config } = getState().connection.state;\n let defaultConnectedClusterId;\n if (config) {\n defaultConnectedClusterId = config.clusterId;\n }\n updateLocalStorageFirstVisibleLine(payload.line, connectionId, defaultConnectedClusterId);\n dispatch({\n type: \"QUERY_EDITOR_FIRST_VISIBLE_LINE\",\n error: false,\n payload,\n });\n };\n};\nexport const sortResults = (payload) => ({\n type: \"QUERY_EDITOR_SORT\",\n error: false,\n payload,\n});\nexport const runQuery = () => {\n return (dispatch, getState) => {\n const state = getState();\n const { buffer, connectionId } = state.queryEditor;\n const activeQueryRange = selectActiveQueryRange(state);\n const canRunQuery = selectEditorCanRunQuery(state);\n if (!canRunQuery) {\n return;\n }\n if (!activeQueryRange) {\n servicesLocator\n .getLogger()\n .logError(new Error(\"activeQueryRange has to be defined if canRunQuery is true.\"));\n return;\n }\n const { range, userSelected } = activeQueryRange;\n const queryText = range.extract(buffer);\n let queryTexts;\n if (userSelected) {\n queryTexts = extractQueries(queryText);\n }\n else {\n // A procedure might actually be a single query, and the parser\n // that parses the entire query editor contents into queries has\n // the context to figure out that it is a single query, but\n // parsing only the text of the procedure itself without context\n // may turn it into multiple queries. Thus, we don't want to\n // re-parse the text of individual parsed queries. Note that\n // this will still fail if the user manually selects the text of\n // a stored procedure, unfortunately.\n queryTexts = [queryText];\n }\n const queryGroup = {\n queries: queryTexts.map((query) => ({\n text: query,\n values: [],\n })),\n onError: \"PAUSE\",\n };\n dispatch(staticQueryGroup({ id: connectionId, queryGroup }));\n };\n};\nexport const saveResultsAsCSV = () => {\n return (dispatch, getState) => {\n const state = getState();\n const results = selectResultsToExport(state);\n if (results) {\n const csv = stringifyCsv([\n results.fields.map((field) => field.name),\n ...results.rows,\n ]);\n saveData({ data: csv, baseName: \"results\", extension: \"csv\" });\n servicesLocator\n .getAnalytics()\n .track(\"export-query-editor-results-csv\");\n }\n else {\n throw new Error(\"Expected results to be of type rows and to have been fully loaded.\");\n }\n };\n};\nexport const changeEditorHeight = (payload) => ({\n type: \"QUERY_EDITOR_CHANGE_EDITOR_HEIGHT\",\n error: false,\n payload,\n});\nexport const changeEditorWidth = (payload) => ({\n type: \"QUERY_EDITOR_CHANGE_EDITOR_WIDTH\",\n error: false,\n payload,\n});\nexport const closeEditorTab = (payload) => ({\n type: \"QUERY_EDITOR_CLOSE_TAB\",\n error: false,\n payload,\n});\nexport const closeAllEditorTabs = () => ({\n type: \"QUERY_EDITOR_CLOSE_ALL_TABS\",\n error: false,\n payload: {},\n});\nexport const changeEditorActiveTab = (payload) => ({\n type: \"QUERY_EDITOR_CHANGE_ACTIVE_RESULTS_TAB\",\n error: false,\n payload,\n});\nexport const changeEditorActiveLogsTab = () => ({\n type: \"QUERY_EDITOR_CHANGE_LOGS_TAB\",\n error: false,\n payload: {},\n});\nexport const initQueryEditorQueryExecutor = (connectionConfig = undefined) => {\n return (dispatch, getState) => {\n const { connectionId, perQueryRowLimit } = getState().queryEditor;\n const { config } = getState().connection.state;\n let defaultConnectedClusterId;\n if (config) {\n defaultConnectedClusterId = config.clusterId;\n }\n const { editor } = getEditorFromConfig(readSingleStorageConfig(), connectionId, defaultConnectedClusterId);\n const localStorageDatabase = editor.selectedDatabase;\n dispatch(initQueryExecutor({\n id: connectionId,\n loggerType: \"errorsOnly\",\n database: localStorageDatabase,\n initialQueryRowLimit: perQueryRowLimit,\n connectionConfig,\n }));\n };\n};\n","import _ from \"lodash\";\nimport { createSelector } from \"reselect\";\nimport { selectError, selectPayload, } from \"../../../util/loading-state-machine\";\nexport const selectExplainLayout = (s) => {\n const payload = selectPayload(s.explain.payload);\n if (payload) {\n return payload.layout;\n }\n};\nexport const selectExplainRawJSON = (s) => {\n const payload = selectPayload(s.explain.payload);\n if (payload) {\n return payload.rawJSON;\n }\n};\nexport const selectExplainLayoutLoading = (s) => s.explain.payload.loading;\nexport const selectExplainLayoutError = (s) => {\n const error = selectError(s.explain.payload);\n return error ? error.message : undefined;\n};\nexport const selectExplainNodes = createSelector(selectExplainLayout, (layout) => {\n if (layout) {\n return _.map(layout.layout.nodes, (node) => node.data);\n }\n});\nexport const selectLayout = (s) => {\n const payload = selectPayload(s.explain.payload);\n if (payload) {\n return payload.layout.layout;\n }\n};\nexport const selectExplainLayoutWarnings = (s) => {\n const explain = selectPayload(s.explain.payload);\n if (explain) {\n return explain.warnings;\n }\n};\nexport const selectExplainSource = (s) => {\n const explain = selectPayload(s.explain.payload);\n if (explain) {\n return explain.source;\n }\n};\nexport const selectExplainSourceType = (s) => {\n const explain = selectPayload(s.explain.payload);\n if (explain) {\n return explain.sourceType;\n }\n};\nexport const selectPlanType = (s) => {\n const payload = selectPayload(s.explain.payload);\n if (payload) {\n return payload.layout.planType;\n }\n};\nexport const selectExplainQueryInfo = (s) => {\n const payload = selectPayload(s.explain.payload);\n if (payload) {\n return payload.queryInfo;\n }\n};\nexport const selectActiveExecutorInstance = (s) => {\n const layout = selectLayout(s);\n const selectedIndex = s.explain.selectedIndex;\n if (layout && selectedIndex !== undefined) {\n return layout.nodes[selectedIndex].data;\n }\n};\nexport const selectTotalTimeMsFromQueryInfo = (s) => {\n const payload = selectPayload(s.explain.payload);\n if (payload && payload.queryInfo) {\n return payload.queryInfo.totalRuntime;\n }\n};\nexport const selectNumOperations = createSelector(selectExplainNodes, (nodes) => {\n if (nodes) {\n return nodes.length;\n }\n});\nexport const selectTotalNetworkTraffic = createSelector(selectExplainNodes, (nodes) => {\n if (nodes) {\n return _.sumBy(nodes, (node) => {\n if (node.raw.network_traffic) {\n return node.raw.network_traffic.value;\n }\n });\n }\n});\nexport const selectTotalTimeMs = createSelector(selectTotalTimeMsFromQueryInfo, selectExplainNodes, (totalTime, nodes) => {\n // queryInfo was only introduced on v7.0. To support both scenarios\n // we use totalTime from queryInfo when available, otherwise, we\n // calculate it ourselves.\n if (totalTime !== undefined) {\n return Number(totalTime);\n }\n else if (nodes) {\n // To calculate the total actual exec time, we take the actual\n // total time of each node and add them up. If none of the nodes\n // has actual_total_time set, then we return `undefined` (so as not\n // to show in this value in the User Interface for EXPLAIN outputs).\n let allUndefined = true;\n let totalTimeMs = 0;\n for (let i = 0; i < nodes.length; i++) {\n const nodeTotalTimeMs = nodes[i].metrics.totalTimeMs;\n if (nodeTotalTimeMs !== undefined) {\n allUndefined = false;\n totalTimeMs += nodeTotalTimeMs.value;\n }\n }\n if (allUndefined) {\n return undefined;\n }\n else {\n return totalTimeMs;\n }\n }\n});\nexport const selectTotalMemoryUsage = createSelector(selectExplainNodes, (nodes) => {\n if (nodes) {\n // To calculate the total memory usage, we take the memory\n // usage of each node and add them up. If none of the nodes\n // has memory usage set, then we return `undefined` (so as not\n // to show in this value in the User Interface for EXPLAIN outputs).\n let allUndefined = true;\n let totalMemoryUsage = 0;\n for (let i = 0; i < nodes.length; i++) {\n const nodeMemoryUsage = nodes[i].metrics.memoryUsage;\n if (nodeMemoryUsage !== undefined) {\n allUndefined = false;\n totalMemoryUsage += nodeMemoryUsage.value;\n }\n }\n if (allUndefined) {\n return undefined;\n }\n else {\n return totalMemoryUsage;\n }\n }\n});\nexport const selectClusterInfo = (s) => {\n const payload = selectPayload(s.explain.payload);\n if (payload && payload.clusterInfo) {\n return payload.clusterInfo;\n }\n};\n","import { multiSelect } from \"@single-js/common/util/query\";\nimport { differenceInSeconds } from \"date-fns\";\nimport _ from \"lodash\";\nimport { from, merge, of } from \"rxjs\";\nimport { logError } from \"util/logging\";\nimport { makeActionCreator } from \"worker/api/helpers\";\nconst MEGABYTE_TO_BYTES = 1024 * 1024; // 1 mebibyte in bytes\nconst SECOND_TO_MS = 1000; // 1 second in milliseconds\nconst SQL_STATUS_QUERY = `\n SHOW GLOBAL STATUS\n`;\nconst SQL_SELECT_CURRENT_UTC_DATE = `\n SELECT NOW() as currentDate\n`;\nconst getLicenseType = (type) => {\n const licenseType = _.lowerCase(type);\n switch (licenseType) {\n case \"developer\":\n case \"enterprise\":\n case \"free\":\n case \"standard\":\n return licenseType;\n default:\n return \"unknown\";\n }\n};\n// We export this so we can test it.\nexport const getLicenseInfo = (sqlGlobalStatus, currentDate) => {\n const sqlLicense = _(sqlGlobalStatus)\n .filter((statusRow) => statusRow.Variable_name === \"Maximum_cluster_capacity\" ||\n statusRow.Variable_name === \"Used_cluster_capacity\" ||\n statusRow.Variable_name === \"License_expiration\" ||\n statusRow.Variable_name === \"License_key\" ||\n statusRow.Variable_name === \"License_type\" ||\n statusRow.Variable_name === \"License_version\" ||\n statusRow.Variable_name === \"License\")\n .keyBy(\"Variable_name\")\n .mapValues(\"Value\")\n .value();\n const { Maximum_cluster_capacity, Used_cluster_capacity, License_expiration, License_key: key, License_type: licenseType, License_version, License: license, } = sqlLicense;\n if (Maximum_cluster_capacity === undefined ||\n Used_cluster_capacity === undefined ||\n License_expiration === undefined ||\n licenseType === undefined ||\n key === undefined ||\n License_version === undefined) {\n return undefined;\n }\n const rawMaxCapacity = Number(Maximum_cluster_capacity.split(\" \")[0]); // megabytes\n const rawUsedCapacity = Number(Used_cluster_capacity.split(\" \")[0]); // megabytes\n const version = Number(License_version); // 3, 4, …\n const expiration = Number(License_expiration);\n const unitPricing = _.includes(Used_cluster_capacity, \"unit\");\n let maximumCapacity;\n if (rawMaxCapacity > Number.MAX_SAFE_INTEGER) {\n maximumCapacity = \"unlimited\";\n }\n else {\n if (unitPricing) {\n maximumCapacity = rawMaxCapacity;\n }\n else {\n maximumCapacity = rawMaxCapacity * MEGABYTE_TO_BYTES;\n }\n }\n let usedCapacity;\n if (unitPricing) {\n usedCapacity = rawUsedCapacity;\n }\n else {\n usedCapacity = rawUsedCapacity * MEGABYTE_TO_BYTES;\n }\n let expirationDate;\n let secondsToExpiration = undefined;\n if (expiration === 0) {\n expirationDate = \"unlimited\";\n }\n else {\n expirationDate = new Date(expiration * SECOND_TO_MS);\n secondsToExpiration = differenceInSeconds(expirationDate, currentDate);\n }\n return {\n maximumCapacity,\n usedCapacity,\n unitPricing,\n expiration: expirationDate,\n secondsToExpiration,\n key,\n license,\n type: getLicenseType(licenseType),\n version,\n };\n};\nconst createLicenseAction = (sqlGlobalStatus, currentDateResult) => {\n return {\n type: \"LICENSE_INFO\",\n payload: {\n loading: false,\n data: getLicenseInfo(sqlGlobalStatus, currentDateResult.currentDate),\n },\n error: false,\n };\n};\nexport const queryLicense = makeActionCreator({\n name: \"queryLicense\",\n handle: (ctx) => {\n const $loading = of({\n type: \"LICENSE_INFO\",\n error: false,\n payload: { loading: true },\n });\n const $compute = from(ctx.manager\n .getPooledConnection()\n .then((conn) => multiSelect(conn, { sql: SQL_STATUS_QUERY }, { sql: SQL_SELECT_CURRENT_UTC_DATE })\n .then((results) => {\n const [statusRows, dateRows] = results;\n return createLicenseAction(statusRows, dateRows[0]);\n })\n .catch((err) => {\n logError(err);\n return {\n type: \"LICENSE_INFO\",\n error: true,\n payload: {\n message: err.message,\n },\n };\n })\n .finally(() => conn.release()))\n .catch((err) => {\n return {\n type: \"LICENSE_INFO\",\n error: true,\n payload: {\n message: err.message,\n },\n };\n }));\n return merge($loading, $compute);\n },\n});\n","import * as React from \"react\";\nimport { FeedbackModalContext } from \"./provider\";\nexport function withFeedbackModal(Component) {\n const feedbackModal = class WithFeedbackModal extends React.Component {\n render() {\n return (React.createElement(FeedbackModalContext.Consumer, null, ({ changeFeedbackModalStatus }) => (React.createElement(Component, { changeFeedbackModalStatus: changeFeedbackModalStatus, ...this.props }))));\n }\n };\n return feedbackModal;\n}\n","import BigNumber from \"@single-js/common/vendor/bignumber.js/bignumber\";\nexport default function (a, b) {\n return a.gt(b) ? a.minus(b) : new BigNumber(0);\n}\n","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name closestTo\n * @category Common Helpers\n * @summary Return a date from the array closest to the given date.\n *\n * @description\n * Return a date from the array closest to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now, `closestTo` doesn't throw an exception\n * when the second argument is not an array, and returns Invalid Date instead.\n *\n * @param {Date|Number} dateToCompare - the date to compare with\n * @param {Date[]|Number[]} datesArray - the array to search\n * @returns {Date} the date from the array closest to the given date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Which date is closer to 6 September 2015: 1 January 2000 or 1 January 2030?\n * var dateToCompare = new Date(2015, 8, 6)\n * var result = closestTo(dateToCompare, [\n * new Date(2000, 0, 1),\n * new Date(2030, 0, 1)\n * ])\n * //=> Tue Jan 01 2030 00:00:00\n */\n\nexport default function closestTo(dirtyDateToCompare, dirtyDatesArray) {\n requiredArgs(2, arguments);\n var dateToCompare = toDate(dirtyDateToCompare);\n\n if (isNaN(dateToCompare)) {\n return new Date(NaN);\n }\n\n var timeToCompare = dateToCompare.getTime();\n var datesArray; // `dirtyDatesArray` is undefined or null\n\n if (dirtyDatesArray == null) {\n datesArray = []; // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n } else if (typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray; // If `dirtyDatesArray` is Array-like Object, convert to Array. Otherwise, make it empty Array\n } else {\n datesArray = Array.prototype.slice.call(dirtyDatesArray);\n }\n\n var result;\n var minDistance;\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate);\n\n if (isNaN(currentDate)) {\n result = new Date(NaN);\n minDistance = NaN;\n return;\n }\n\n var distance = Math.abs(timeToCompare - currentDate.getTime());\n\n if (result == null || distance < minDistance) {\n result = currentDate;\n minDistance = distance;\n }\n });\n return result;\n}","import { getMsgStateError } from \"@single-js/common/core/sql/connection/utils\";\nimport { mvFull, } from \"@single-js/common/features/management-views/state/actions-management-views\";\nimport { servicesLocator } from \"@single-js/common/services/services-locator\";\nimport { tuple } from \"@single-js/common/typings/utils\";\nimport monus from \"@single-js/common/util/monus\";\nimport { nullableToMaybe } from \"@single-js/common/util/nullable\";\nimport { getInitialUTCDate } from \"@single-js/common/util/number-formatter\";\nimport { multiSelect, select } from \"@single-js/common/util/query\";\nimport { SQLIdent } from \"@single-js/common/util/sql-query\";\nimport BigNumber from \"@single-js/common/vendor/bignumber.js/bignumber\";\nimport { makeActionCreator } from \"@single-js/common/worker/api/helpers\";\nimport { addMilliseconds, closestTo, differenceInSeconds } from \"date-fns\";\nimport format from \"date-fns/format\";\nimport _ from \"lodash\";\nimport { from, merge, of } from \"rxjs\";\nexport const SQL_GET_READ_ADVANCED_COUNTERS = `\n SHOW VARIABLES LIKE 'read_advanced_counters'\n`;\nexport const SQL_MV_NODES = `\n SELECT\n ID AS nodeId,\n IP_ADDR AS ipAddr,\n PORT AS port,\n (CASE\n WHEN TYPE='MA' THEN 'MASTER_AGGREGATOR'\n WHEN TYPE='CA' THEN 'AGGREGATOR'\n WHEN TYPE='LEAF' THEN 'LEAF'\n END) AS role,\n STATE AS state,\n AVAILABILITY_GROUP AS availabilityGroup,\n NUM_CPUS AS numCpus,\n MAX_MEMORY_MB AS maxMemoryMb,\n MEMORY_USED_MB AS memoryUsedMb\n FROM information_schema.mv_nodes\n`;\n// The first argument is, for example, `monitoring.act_samples`\n// The second argument is, for example, `monitoring.mv_queries`\nconst SQL_MV_ACTIVITIES_TIMESTAMP = `\n SELECT\n activities.NODE_ID AS nodeId,\n activities.ACTIVITY_TYPE AS activityType,\n activities.ACTIVITY_NAME AS activityName,\n activities.AGGREGATOR_ACTIVITY_NAME AS aggregatorActivityName,\n activities.DATABASE_NAME AS databaseName,\n activities.PARTITION_ID AS partitionId,\n queries.QUERY_TEXT AS queryText,\n\n IFNULL(activities.RUN_COUNT, 0) AS runCount,\n IFNULL(activities.SUCCESS_COUNT, 0) AS successCount,\n IFNULL(activities.FAILURE_COUNT, 0) AS failureCount,\n\n IFNULL(activities.CPU_TIME_MS, 0) AS cpuTimeMs,\n IFNULL(activities.CPU_WAIT_TIME_MS, 0) AS cpuWaitTimeMs,\n IFNULL(activities.ELAPSED_TIME_MS, 0) AS elapsedTimeMs,\n\n IFNULL(activities.MEMORY_BS, 0) AS memoryBs,\n IFNULL(activities.MEMORY_MAJOR_FAULTS, 0) AS memoryMajorFaults,\n\n IFNULL(activities.LOCK_TIME_MS, 0) AS lockTimeMs,\n IFNULL(activities.LOCK_ROW_TIME_MS, 0) AS lockRowTimeMs,\n\n IFNULL(activities.LOG_BUFFER_TIME_MS, 0) AS logBufferTimeMs,\n IFNULL(activities.LOG_FLUSH_TIME_MS, 0) AS logFlushTimeMs,\n IFNULL(activities.LOG_BUFFER_WRITE_B, 0) AS logBufferWriteB,\n\n ( IFNULL(activities.NETWORK_LOGICAL_RECV_B, 0) +\n IFNULL(activities.NETWORK_LOGICAL_SEND_B, 0)\n ) AS networkB,\n IFNULL(activities.NETWORK_TIME_MS, 0) AS networkTimeMs,\n IFNULL(activities.NETWORK_LOGICAL_RECV_B, 0) AS networkLogicalRecvB,\n IFNULL(activities.NETWORK_LOGICAL_SEND_B, 0) AS networkLogicalSendB,\n\n ( IFNULL(activities.DISK_LOGICAL_READ_B, 0) +\n IFNULL(activities.DISK_LOGICAL_WRITE_B, 0) +\n IFNULL(activities.LOG_BUFFER_WRITE_B, 0)\n ) AS diskB,\n IFNULL(activities.DISK_TIME_MS, 0) AS diskTimeMs,\n IFNULL(activities.DISK_LOGICAL_READ_B, 0) AS diskLogicalReadB,\n IFNULL(activities.DISK_LOGICAL_WRITE_B, 0) AS diskLogicalWriteB,\n IFNULL(activities.DISK_PHYSICAL_READ_B, 0) AS diskPhysicalReadB,\n IFNULL(activities.DISK_PHYSICAL_WRITE_B, 0) AS diskPhysicalWriteB\n FROM\n ? activities\n LEFT JOIN ? queries\n ON activities.ACTIVITY_NAME = queries.ACTIVITY_NAME AND\n activities.ts = queries.ts\n WHERE\n activities.ts=? AND\n activities.cluster=?\n`;\nexport const SQL_MV_ACTIVITIES_CUMULATIVE = `\n SELECT\n a.NODE_ID AS nodeId,\n a.ACTIVITY_TYPE AS activityType,\n a.ACTIVITY_NAME AS activityName,\n a.AGGREGATOR_ACTIVITY_NAME AS aggregatorActivityName,\n a.DATABASE_NAME AS databaseName,\n a.PARTITION_ID AS partitionId,\n q.QUERY_TEXT AS queryText,\n\n IFNULL(a.RUN_COUNT, 0) AS runCount,\n IFNULL(a.SUCCESS_COUNT, 0) AS successCount,\n IFNULL(a.FAILURE_COUNT, 0) AS failureCount,\n\n IFNULL(a.CPU_TIME_MS, 0) AS cpuTimeMs,\n IFNULL(a.CPU_WAIT_TIME_MS, 0) AS cpuWaitTimeMs,\n IFNULL(a.ELAPSED_TIME_MS, 0) AS elapsedTimeMs,\n\n IFNULL(a.MEMORY_BS, 0) AS memoryBs,\n IFNULL(a.MEMORY_MAJOR_FAULTS, 0) AS memoryMajorFaults,\n\n IFNULL(a.LOCK_TIME_MS, 0) AS lockTimeMs,\n IFNULL(a.LOCK_ROW_TIME_MS, 0) AS lockRowTimeMs,\n\n IFNULL(a.LOG_BUFFER_TIME_MS, 0) AS logBufferTimeMs,\n IFNULL(a.LOG_FLUSH_TIME_MS, 0) AS logFlushTimeMs,\n IFNULL(a.LOG_BUFFER_WRITE_B, 0) AS logBufferWriteB,\n\n ( IFNULL(a.NETWORK_LOGICAL_RECV_B, 0) +\n IFNULL(a.NETWORK_LOGICAL_SEND_B, 0)\n ) AS networkB,\n IFNULL(a.NETWORK_TIME_MS, 0) AS networkTimeMs,\n IFNULL(a.NETWORK_LOGICAL_RECV_B, 0) AS networkLogicalRecvB,\n IFNULL(a.NETWORK_LOGICAL_SEND_B, 0) AS networkLogicalSendB,\n\n ( IFNULL(a.DISK_LOGICAL_READ_B, 0) +\n IFNULL(a.DISK_LOGICAL_WRITE_B, 0) +\n IFNULL(a.LOG_BUFFER_WRITE_B, 0)\n ) AS diskB,\n IFNULL(a.DISK_TIME_MS, 0) AS diskTimeMs,\n IFNULL(a.DISK_LOGICAL_READ_B, 0) AS diskLogicalReadB,\n IFNULL(a.DISK_LOGICAL_WRITE_B, 0) AS diskLogicalWriteB,\n IFNULL(a.DISK_PHYSICAL_READ_B, 0) AS diskPhysicalReadB,\n IFNULL(a.DISK_PHYSICAL_WRITE_B, 0) AS diskPhysicalWriteB\n FROM\n information_schema.mv_activities_extended_cumulative a\n LEFT JOIN information_schema.mv_queries q\n ON a.ACTIVITY_NAME = q.ACTIVITY_NAME\n`;\nconst SQL_MV_ACTIVITIES = `\n SELECT\n a.NODE_ID AS nodeId,\n a.ACTIVITY_TYPE AS activityType,\n a.ACTIVITY_NAME AS activityName,\n a.AGGREGATOR_ACTIVITY_NAME AS aggregatorActivityName,\n a.DATABASE_NAME AS databaseName,\n a.PARTITION_ID AS partitionId,\n q.QUERY_TEXT AS queryText,\n\n IFNULL(a.RUN_COUNT, 0) AS runCount,\n IFNULL(a.SUCCESS_COUNT, 0) AS successCount,\n IFNULL(a.FAILURE_COUNT, 0) AS failureCount,\n\n IFNULL(a.CPU_TIME_MS, 0) AS cpuTimeMs,\n IFNULL(a.CPU_WAIT_TIME_MS, 0) AS cpuWaitTimeMs,\n IFNULL(a.ELAPSED_TIME_MS, 0) AS elapsedTimeMs,\n\n IFNULL(a.MEMORY_BS, 0) AS memoryBs,\n IFNULL(a.MEMORY_MAJOR_FAULTS, 0) AS memoryMajorFaults,\n\n IFNULL(a.LOCK_TIME_MS, 0) AS lockTimeMs,\n IFNULL(a.LOCK_ROW_TIME_MS, 0) AS lockRowTimeMs,\n\n IFNULL(a.LOG_BUFFER_TIME_MS, 0) AS logBufferTimeMs,\n IFNULL(a.LOG_FLUSH_TIME_MS, 0) AS logFlushTimeMs,\n IFNULL(a.LOG_BUFFER_WRITE_B, 0) AS logBufferWriteB,\n\n ( IFNULL(a.NETWORK_LOGICAL_RECV_B, 0) +\n IFNULL(a.NETWORK_LOGICAL_SEND_B, 0)\n ) AS networkB,\n IFNULL(a.NETWORK_TIME_MS, 0) AS networkTimeMs,\n IFNULL(a.NETWORK_LOGICAL_RECV_B, 0) AS networkLogicalRecvB,\n IFNULL(a.NETWORK_LOGICAL_SEND_B, 0) AS networkLogicalSendB,\n\n ( IFNULL(a.DISK_LOGICAL_READ_B, 0) +\n IFNULL(a.DISK_LOGICAL_WRITE_B, 0) +\n IFNULL(a.LOG_BUFFER_WRITE_B, 0)\n ) AS diskB,\n IFNULL(a.DISK_TIME_MS, 0) AS diskTimeMs,\n IFNULL(a.DISK_LOGICAL_READ_B, 0) AS diskLogicalReadB,\n IFNULL(a.DISK_LOGICAL_WRITE_B, 0) AS diskLogicalWriteB,\n IFNULL(a.DISK_PHYSICAL_READ_B, 0) AS diskPhysicalReadB,\n IFNULL(a.DISK_PHYSICAL_WRITE_B, 0) AS diskPhysicalWriteB\n FROM\n information_schema.mv_activities_extended a\n LEFT JOIN information_schema.mv_queries q\n ON a.ACTIVITY_NAME = q.ACTIVITY_NAME\n`;\nconst SQL_GET_TIMESTAMPS = `\n SELECT\n DISTINCT ts\n FROM\n ?\n WHERE\n cluster = ?\n ORDER BY\n ts desc\n`;\nconst SQL_GET_OLDEST_TIMESTAMP = `\n SELECT\n DISTINCT ts\n FROM\n ?\n WHERE\n cluster = ?\n ORDER BY\n ts ASC\n LIMIT 1\n`;\nconst SQL_GET_COLUMNS = `\n SELECT\n TABLE_NAME, COLUMN_NAME, DATA_TYPE\n FROM\n information_schema.columns\n WHERE\n table_schema = ?;\n`;\nconst SQL_GET_NODES_INFO = `\n SELECT\n NODE_ID AS nodeId,\n IP_ADDR AS ipAddr,\n PORT AS port,\n ROLE AS role,\n STATE as state,\n AVAILABILITY_GROUP AS availabilityGroup,\n NUM_CPUS AS numCpus,\n MAX_MEMORY_MB AS maxMemoryMb,\n MEMORY_USED_MB AS memoryUsedMb\n FROM\n ?\n WHERE\n CLUSTER = ? AND\n NODE_ID IS NOT NULL AND\n IP_ADDR IS Not NULL AND\n PORT IS NOT NULL AND\n ROLE IS NOT NULL AND\n STATE IS NOT NULL;\n`;\nconst SQL_SET_DELTA_SLEEP = `\n SET SESSION activities_delta_sleep_s = ?\n`;\nconst FIELD_DECODER = new TextDecoder();\nconst monusStatistics = (left, right) => _.mapValues(right, (value, key) => monus(left[key], value));\nconst actToCumulativeStats = (act) => ({\n cpuTimeMs: act.cpuTimeMs,\n cpuWaitTimeMs: act.cpuWaitTimeMs,\n elapsedTimeMs: act.elapsedTimeMs,\n memoryBs: act.memoryBs,\n memoryMajorFaults: act.memoryMajorFaults,\n lockTimeMs: act.lockTimeMs,\n lockRowTimeMs: act.lockRowTimeMs,\n logBufferTimeMs: act.logBufferTimeMs,\n logFlushTimeMs: act.logFlushTimeMs,\n logBufferWriteB: act.logBufferWriteB,\n networkTimeMs: act.networkTimeMs,\n networkLogicalRecvB: act.networkLogicalRecvB,\n networkLogicalSendB: act.networkLogicalSendB,\n networkB: act.networkB,\n diskTimeMs: act.diskTimeMs,\n diskLogicalReadB: act.diskLogicalReadB,\n diskLogicalWriteB: act.diskLogicalWriteB,\n diskPhysicalReadB: act.diskPhysicalReadB,\n diskPhysicalWriteB: act.diskPhysicalWriteB,\n diskB: act.diskB,\n});\n// If deltaTimeS is 0, any division will just become 0\nfunction deltaStatsToMvStats(stats, deltaTimeS) {\n function divideByDeltaTimeS(val) {\n if (deltaTimeS.isZero()) {\n return new BigNumber(0);\n }\n else {\n return val.dividedBy(deltaTimeS);\n }\n }\n return {\n cpuUsage: divideByDeltaTimeS(stats.cpuTimeMs.dividedBy(1000)),\n cpuTime: stats.cpuTimeMs,\n cpuWaitTime: stats.cpuWaitTimeMs,\n elapsedTimeMs: stats.elapsedTimeMs,\n memoryB: divideByDeltaTimeS(stats.memoryBs),\n memoryMajorFaults: divideByDeltaTimeS(stats.memoryMajorFaults),\n lockTime: stats.lockTimeMs,\n lockRowTime: stats.lockRowTimeMs,\n logBufferTime: stats.logBufferTimeMs,\n logFlushTime: stats.logFlushTimeMs,\n logBufferWriteB: divideByDeltaTimeS(stats.logBufferWriteB),\n networkTime: stats.networkTimeMs,\n networkLogicalRecvB: divideByDeltaTimeS(stats.networkLogicalRecvB),\n networkLogicalSendB: divideByDeltaTimeS(stats.networkLogicalSendB),\n networkB: divideByDeltaTimeS(stats.networkB),\n diskTime: stats.diskTimeMs,\n diskLogicalReadB: divideByDeltaTimeS(stats.diskLogicalReadB),\n diskLogicalWriteB: divideByDeltaTimeS(stats.diskLogicalWriteB),\n diskPhysicalReadB: divideByDeltaTimeS(stats.diskPhysicalReadB),\n diskPhysicalWriteB: divideByDeltaTimeS(stats.diskPhysicalWriteB),\n diskB: divideByDeltaTimeS(stats.diskB),\n };\n}\nfunction generateCumulativeActivities(sqlActivities) {\n const activities = {};\n const makeCumulativeActivity = (act) => {\n const aggregatorActivityName = act.aggregatorActivityName || act.activityName;\n let nodeId;\n if (act.nodeId) {\n nodeId = act.nodeId.toString();\n }\n return {\n kind: \"LOW_LEVEL\",\n // high level fields\n activityName: act.activityName,\n activityType: act.activityType,\n databaseName: nullableToMaybe(act.databaseName),\n queryText: nullableToMaybe(act.queryText),\n runCount: act.runCount,\n successCount: act.successCount,\n failureCount: act.failureCount,\n statistics: actToCumulativeStats(act),\n // low level fields\n nodeId,\n aggregatorActivityName,\n partitionId: act.partitionId === null ? undefined : act.partitionId,\n };\n };\n for (let i = 0; i < sqlActivities.length; i++) {\n const cumulativeActivity = makeCumulativeActivity(sqlActivities[i]);\n activities[hashMvActivity(cumulativeActivity)] = cumulativeActivity;\n }\n return activities;\n}\nconst buildMvFullStartAction = (sqlActivities, requestedStartDate) => {\n const activities = generateCumulativeActivities(sqlActivities);\n return {\n type: \"MV_FULL_START\",\n error: false,\n payload: {\n loading: false,\n data: {\n activities,\n deltaTimeS: differenceInSeconds(new Date(), requestedStartDate),\n },\n },\n };\n};\nexport const hashMvActivity = (mvActivity) => [\n mvActivity.nodeId,\n mvActivity.activityType,\n mvActivity.activityName,\n mvActivity.aggregatorActivityName || mvActivity.activityName,\n mvActivity.databaseName,\n mvActivity.partitionId,\n].join(\".\");\nconst makeLowActivity = (act, statistics) => {\n const aggregatorActivityName = act.aggregatorActivityName || act.activityName;\n let nodeId;\n if (act.nodeId) {\n nodeId = act.nodeId.toString();\n }\n let databaseName = nullableToMaybe(act.databaseName);\n // information_schema is a special database that is\n // case-insensitive, so we only want to show the\n // lower case one\n if (databaseName && databaseName.toLowerCase() === \"information_schema\") {\n databaseName = \"information_schema\";\n }\n return {\n kind: \"LOW_LEVEL\",\n // high level fields\n activityName: act.activityName,\n activityType: act.activityType,\n databaseName,\n queryText: nullableToMaybe(act.queryText),\n runCount: act.runCount,\n successCount: act.successCount,\n failureCount: act.failureCount,\n statistics,\n // low level fields\n nodeId,\n aggregatorActivityName,\n partitionId: act.partitionId === null ? undefined : act.partitionId,\n };\n};\nfunction mvNodeArrayToMap(nodes) {\n const nodesObj = {};\n for (let i = 0; i < nodes.length; i++) {\n const { nodeId } = nodes[i];\n if (nodeId !== undefined) {\n nodesObj[nodeId] = nodes[i];\n }\n }\n return nodesObj;\n}\nconst buildFixedIntervalMvFullAction = ({ nodes, sqlActivities, advancedCounters, deltaTimeS, }) => {\n const activities = _.map(sqlActivities, (sqlActivity) => makeLowActivity(sqlActivity, deltaStatsToMvStats(sqlActivity, new BigNumber(deltaTimeS))));\n const mvFullPayload = {\n repr: {\n nodes: mvNodeArrayToMap(nodes),\n activities,\n advancedCounters: advancedCounters[0].Value === \"ON\",\n },\n deltaTimeS,\n };\n return mvFull(mvFullPayload);\n};\nfunction getDeltaActivities(startActivities, finalSqlActivities, deltaTimeS) {\n const deltaActivities = [];\n _.forEach(finalSqlActivities, (finalAct) => {\n const startAct = startActivities[hashMvActivity(finalAct)];\n // If we find a corresponding activity in the initial snapshot, this activity has\n // been running since before the profile recording started. This means that we need\n // to diff the two activities to make sure that we only show data relevant to the\n // duration of the recording.\n if (startAct) {\n // If this activity was never active during the profiling period,\n // we simply ignore it and don't include it in our Activities list.\n if (finalAct.successCount.eq(startAct.successCount) &&\n finalAct.failureCount.eq(startAct.failureCount) &&\n finalAct.runCount.isZero()) {\n return;\n }\n // We use \"monus\" instead of the more expected \"minus\"\n // operation because counters are not 100% precise. By\n // using \"monus\", we guarantee we get at least sane values\n // (i.e. zero instead of uint64_t(-3)).\n //\n // For an example of a scenario where this might occur:\n // While we are iterating through lmv_tasks, we might see\n // a query and account its CPU time. By the time we get to\n // lmv_finished_tasks, the query has completed so its CPU\n // time has been aggregated into the activity. We now double\n // count time for this query. If we only did this for the\n // begin snapshot but not the end snapshot, we might see\n // counters go backwards.\n //\n // Finally, this code needs to be consistent with the equivalent\n // code in the engine that generates the `mv_activities`\n // table and that code uses `monus`, so we should use it too.\n // We do not change runCount because we want it to be the run count of the\n // final snapshot. This is the same behavior that the engine has.\n finalAct.successCount = monus(finalAct.successCount, startAct.successCount);\n finalAct.failureCount = monus(finalAct.failureCount, startAct.failureCount);\n const statistics = monusStatistics(finalAct, startAct.statistics);\n deltaActivities.push(makeLowActivity(finalAct, deltaStatsToMvStats(statistics, new BigNumber(deltaTimeS))));\n }\n else {\n // This activity was created DURING the profiling, which means\n // that whatever is in the cumulative statistics is what we want\n // to display to our users.\n const deltaTimeS = finalAct.elapsedTimeMs.multipliedBy(1000);\n const cumulativeStats = actToCumulativeStats(finalAct);\n deltaActivities.push(makeLowActivity(finalAct, deltaStatsToMvStats(cumulativeStats, deltaTimeS)));\n }\n });\n return deltaActivities;\n}\nconst buildMvFullAction = (startActivities, startTime, requestedStopDate) => ([nodes, advancedCounters, finalSqlActivities]) => {\n const deltaTimeS = Math.max(differenceInSeconds(new Date(), startTime), 1);\n const deltaActivities = getDeltaActivities(startActivities, finalSqlActivities, deltaTimeS);\n const mvFullPayload = {\n repr: {\n nodes: mvNodeArrayToMap(nodes),\n activities: deltaActivities,\n advancedCounters: advancedCounters[0].Value === \"ON\",\n },\n deltaTimeS: differenceInSeconds(new Date(), requestedStopDate),\n };\n return mvFull(mvFullPayload);\n};\nfunction sqlNodeToMvNode(sqlNode) {\n return {\n nodeId: sqlNode.nodeId.toString(),\n ipAddr: sqlNode.ipAddr,\n port: sqlNode.port,\n role: sqlNode.role,\n state: sqlNode.state,\n availabilityGroup: nullableToMaybe(sqlNode.availabilityGroup),\n numCpus: nullableToMaybe(sqlNode.numCpus),\n maxMemoryMb: nullableToMaybe(sqlNode.maxMemoryMb),\n memoryUsedMb: nullableToMaybe(sqlNode.memoryUsedMb),\n };\n}\nexport const mvFullStart = makeActionCreator({\n name: \"mvFullStart\",\n handle(ctx, { connectionConfig, }) {\n let clusterId = undefined;\n if (connectionConfig) {\n clusterId = connectionConfig.clusterId;\n }\n const $loading = of({\n type: \"MV_FULL_START\",\n error: false,\n payload: {\n loading: true,\n meta: { fixedInterval: false, clusterId },\n },\n });\n const requestedStartDate = new Date();\n const $compute = from(ctx.manager\n .getPooledConnection(connectionConfig)\n .then((conn) => {\n const queryStart = self.performance.now();\n return select(conn, SQL_MV_ACTIVITIES_CUMULATIVE)\n .then((results) => {\n servicesLocator\n .getLogger()\n .log(\"info\", \"The mvFullStartQuery took (ms)\", self.performance.now() - queryStart);\n const buildActionStart = self.performance.now();\n const mvFullStartAction = buildMvFullStartAction(results, requestedStartDate);\n servicesLocator\n .getLogger()\n .log(\"info\", \"Building the mvFullStart action took (ms)\", self.performance.now() - buildActionStart);\n return mvFullStartAction;\n })\n .catch((err) => {\n servicesLocator.getLogger().logError(err);\n const error = getMsgStateError(err);\n return {\n type: \"MV_FULL_START\",\n error: true,\n payload: error,\n };\n })\n .finally(() => conn.release());\n })\n .catch((err) => {\n const error = getMsgStateError(err);\n return {\n type: \"MV_FULL_START\",\n error: true,\n payload: error,\n };\n }));\n return merge($loading, $compute);\n },\n});\nexport const mvHistorical = makeActionCreator({\n name: \"mvHistorical\",\n handle(ctx, { desiredFirstTs, desiredSecondTs, monitoringDatabaseName, monitoringClusterName, }) {\n const $loading = of({\n type: \"MV_HISTORICAL\",\n error: false,\n payload: { loading: true },\n });\n const $compute = from(ctx.monitoringManager\n .getPooledConnection()\n .then((conn) => {\n return select(conn, SQL_GET_TIMESTAMPS, [\n SQLIdent(`${monitoringDatabaseName}.act_samples`),\n monitoringClusterName,\n ])\n .then((rows) => {\n const desiredFirstTsAdjusted = addMilliseconds(getInitialUTCDate(), desiredFirstTs.valueOf());\n const desiredSecondTsAdjusted = addMilliseconds(getInitialUTCDate(), desiredSecondTs.valueOf());\n const firstTs = closestTo(desiredFirstTsAdjusted, rows.map((row) => row.ts));\n const secondTs = closestTo(desiredSecondTsAdjusted, rows.map((row) => row.ts));\n return [firstTs, secondTs];\n })\n .then(([firstTs, secondTs]) => {\n const firstTsString = format(firstTs, \"yyyy-MM-dd HH:mm:ss\");\n const secondTsString = format(secondTs, \"yyyy-MM-dd HH:mm:ss\");\n const queries = [\n {\n sql: SQL_MV_ACTIVITIES_TIMESTAMP,\n params: [\n SQLIdent(`${monitoringDatabaseName}.act_samples`),\n SQLIdent(`${monitoringDatabaseName}.mv_queries`),\n firstTsString,\n monitoringClusterName,\n ],\n },\n {\n sql: SQL_MV_ACTIVITIES_TIMESTAMP,\n params: [\n SQLIdent(`${monitoringDatabaseName}.act_samples`),\n SQLIdent(`${monitoringDatabaseName}.mv_queries`),\n secondTsString,\n monitoringClusterName,\n ],\n },\n {\n sql: SQL_GET_NODES_INFO,\n params: [\n SQLIdent(`${monitoringDatabaseName}.mv_nodes`),\n monitoringClusterName,\n ],\n },\n ];\n return multiSelect(conn, ...queries).then(([firstTsActivities, secondTsActivities, nodesInfo,]) => {\n const deltaTimeS = differenceInSeconds(secondTs, firstTs);\n const deltaActivities = getDeltaActivities(generateCumulativeActivities(firstTsActivities), secondTsActivities, deltaTimeS);\n const nodes = nodesInfo.map(monitoringSqlNodeToMvNode);\n return {\n type: \"MV_HISTORICAL\",\n error: false,\n payload: {\n loading: false,\n data: {\n deltaTimeS,\n activities: deltaActivities,\n nodes: mvNodeArrayToMap(nodes),\n },\n },\n };\n });\n })\n .catch((err) => {\n return {\n type: \"MV_HISTORICAL\",\n error: true,\n payload: {\n message: err.message,\n },\n };\n })\n .finally(() => {\n conn.release();\n });\n })\n .catch((err) => {\n return {\n type: \"MV_HISTORICAL\",\n error: true,\n payload: {\n message: err.message,\n },\n };\n }));\n return merge($loading, $compute);\n },\n});\nexport const mvFullStop = makeActionCreator({\n name: \"mvFullStop\",\n handle(ctx, { startActivities, startTime, // when the MV recording was started\n connectionConfig, }) {\n const $loading = of({\n type: \"MV_FULL\",\n error: false,\n payload: { loading: true },\n });\n // when the user tried to stop MV recording\n const requestedStopDate = new Date();\n const $compute = from(ctx.manager\n .getPooledConnection(connectionConfig)\n .then((conn) => multiSelect(conn, { sql: SQL_MV_NODES }, { sql: SQL_GET_READ_ADVANCED_COUNTERS })\n .then(([nodes, advancedCounters]) => {\n const queryStart = self.performance.now();\n return select(conn, SQL_MV_ACTIVITIES_CUMULATIVE).then((finalSqlActivities) => {\n servicesLocator\n .getLogger()\n .log(\"info\", \"The mvFullStopQuery took (ms)\", self.performance.now() - queryStart);\n return tuple(_.map(nodes, sqlNodeToMvNode), advancedCounters, finalSqlActivities);\n });\n })\n .then((results) => {\n const buildActionStart = self.performance.now();\n const mvFullStopAction = buildMvFullAction(startActivities, startTime, requestedStopDate)(results);\n servicesLocator\n .getLogger()\n .log(\"info\", \"Building the mvFullStop action took (ms)\", self.performance.now() -\n buildActionStart);\n return mvFullStopAction;\n })\n .catch((err) => {\n servicesLocator.getLogger().logError(err);\n const error = getMsgStateError(err);\n return {\n type: \"MV_FULL\",\n error: true,\n payload: error,\n };\n })\n .finally(() => conn.release()))\n .catch((err) => {\n return {\n type: \"MV_FULL\",\n error: true,\n payload: {\n message: err.message,\n },\n };\n }));\n return merge($loading, $compute);\n },\n});\nexport const mvFullFixedInterval = makeActionCreator({\n name: \"mvFullFixedInterval\",\n handle(ctx, { deltaTimeS, connectionConfig, }) {\n let clusterId = undefined;\n if (connectionConfig) {\n clusterId = connectionConfig.clusterId;\n }\n const $loading = of({\n type: \"MV_FULL_START\",\n error: false,\n payload: {\n loading: true,\n meta: { fixedInterval: true, deltaTimeS, clusterId },\n },\n });\n const $compute = from(ctx.manager\n .getPooledConnection(connectionConfig)\n .then((conn) => multiSelect(conn, { sql: SQL_MV_NODES }, { sql: SQL_GET_READ_ADVANCED_COUNTERS }, { sql: SQL_SET_DELTA_SLEEP, params: [deltaTimeS] })\n .then(([nodes, advancedCounters]) => {\n return select(conn, SQL_MV_ACTIVITIES).then((sqlActivities) => {\n return buildFixedIntervalMvFullAction({\n nodes: _.map(nodes, sqlNodeToMvNode),\n advancedCounters,\n sqlActivities,\n deltaTimeS,\n });\n });\n })\n .catch((err) => {\n const error = getMsgStateError(err);\n return {\n type: \"MV_FULL_START\",\n error: true,\n payload: error,\n };\n })\n .finally(() => conn.release()))\n .catch((err) => {\n return {\n type: \"MV_FULL_START\",\n error: true,\n payload: {\n message: err.message,\n },\n };\n }));\n return merge($loading, $compute);\n },\n});\nexport const getMvHistoricalOldestTimestamp = makeActionCreator({\n name: \"getMvHistoricalOldestTimestamp\",\n handle(ctx, { monitoringDatabaseName, monitoringClusterName, }) {\n const $loading = of({\n type: \"MV_INITIAL_TS\",\n error: false,\n payload: {\n loading: true,\n },\n });\n const $compute = from(ctx.monitoringManager\n .getPooledConnection()\n .then((conn) => select(conn, SQL_GET_OLDEST_TIMESTAMP, [\n SQLIdent(`${monitoringDatabaseName}.act_samples`),\n monitoringClusterName,\n ])\n .then((rows) => {\n if (rows.length === 0) {\n return {\n error: true,\n type: \"MV_INITIAL_TS\",\n payload: {\n message: \"Your monitoring database has no content. Please wait a few minutes and reload, or check to make sure your pipeline is running.\",\n },\n };\n }\n return {\n error: false,\n type: \"MV_INITIAL_TS\",\n payload: {\n loading: false,\n data: {\n ts: convertDateToUTC(rows[0].ts),\n },\n },\n };\n })\n .catch((err) => {\n const error = getMsgStateError(err);\n return {\n type: \"MV_INITIAL_TS\",\n error: true,\n payload: error,\n };\n })\n .finally(() => conn.release()))\n .catch((err) => {\n return {\n type: \"MV_INITIAL_TS\",\n error: true,\n payload: {\n message: err.message,\n },\n };\n }));\n return merge($loading, $compute);\n },\n});\nexport const checkMonitoringSchema = makeActionCreator({\n name: \"checkMonitoringSchema\",\n handle(ctx, { monitoringDatabaseName, }) {\n const $loading = of({\n type: \"MV_HISTORICAL_SCHEMA_VALIDATION\",\n error: false,\n payload: {\n loading: true,\n },\n });\n const $compute = from(ctx.monitoringManager\n .getPooledConnection()\n .then((conn) => select(conn, SQL_GET_COLUMNS, [\n monitoringDatabaseName,\n ])\n .then((rows) => {\n return {\n type: \"MV_HISTORICAL_SCHEMA_VALIDATION\",\n error: false,\n payload: {\n loading: false,\n data: compareExpectedSchema(transformToExpectedSchema(rows), EXPECTED_MONITORING_SCHEMA),\n },\n };\n })\n .catch((err) => {\n return {\n type: \"MV_HISTORICAL_SCHEMA_VALIDATION\",\n error: true,\n payload: err.message,\n };\n })\n .finally(() => conn.release()))\n .catch((err) => {\n return {\n type: \"MV_HISTORICAL_SCHEMA_VALIDATION\",\n error: true,\n payload: err.message,\n };\n }));\n return merge($loading, $compute);\n },\n});\nconst EXPECTED_MONITORING_SCHEMA = {\n tables: [\n {\n name: \"act_samples\",\n columns: [\n {\n name: \"ACTIVITY_NAME\",\n datatype: \"varchar\",\n },\n {\n name: \"AGGREGATOR_ACTIVITY_NAME\",\n datatype: \"varchar\",\n },\n {\n name: \"ACTIVITY_TYPE\",\n datatype: \"varchar\",\n },\n {\n name: \"CPU_TIME_MS\",\n datatype: \"bigint\",\n },\n {\n name: \"CPU_WAIT_TIME_MS\",\n datatype: \"bigint\",\n },\n {\n name: \"DATABASE_NAME\",\n datatype: \"varchar\",\n },\n {\n name: \"DISK_B\",\n datatype: \"bigint\",\n },\n {\n name: \"DISK_TIME_MS\",\n datatype: \"bigint\",\n },\n {\n name: \"ELAPSED_TIME_MS\",\n datatype: \"bigint\",\n },\n {\n name: \"FAILURE_COUNT\",\n datatype: \"bigint\",\n },\n {\n name: \"LOCK_TIME_MS\",\n datatype: \"bigint\",\n },\n {\n name: \"MEMORY_BS\",\n datatype: \"bigint\",\n },\n {\n name: \"MEMORY_MAJOR_FAULTS\",\n datatype: \"bigint\",\n },\n {\n name: \"NETWORK_B\",\n datatype: \"bigint\",\n },\n {\n name: \"NETWORK_TIME_MS\",\n datatype: \"bigint\",\n },\n {\n name: \"NODE_ID\",\n datatype: \"smallint\",\n },\n {\n name: \"PARTITION_ID\",\n datatype: \"smallint\",\n },\n {\n name: \"RUN_COUNT\",\n datatype: \"bigint\",\n },\n {\n name: \"SUCCESS_COUNT\",\n datatype: \"bigint\",\n },\n {\n name: \"DISK_LOGICAL_READ_B\",\n datatype: \"bigint\",\n },\n {\n name: \"DISK_LOGICAL_WRITE_B\",\n datatype: \"bigint\",\n },\n {\n name: \"DISK_PHYSICAL_READ_B\",\n datatype: \"bigint\",\n },\n {\n name: \"DISK_PHYSICAL_WRITE_B\",\n datatype: \"bigint\",\n },\n {\n name: \"LOCK_ROW_TIME_MS\",\n datatype: \"bigint\",\n },\n {\n name: \"LOG_FLUSH_TIME_MS\",\n datatype: \"bigint\",\n },\n {\n name: \"LOG_BUFFER_TIME_MS\",\n datatype: \"bigint\",\n },\n {\n name: \"LOG_BUFFER_WRITE_B\",\n datatype: \"bigint\",\n },\n {\n name: \"NETWORK_LOGICAL_RECV_B\",\n datatype: \"bigint\",\n },\n {\n name: \"NETWORK_LOGICAL_SEND_B\",\n datatype: \"bigint\",\n },\n {\n name: \"ts\",\n datatype: \"timestamp\",\n },\n {\n name: \"cluster\",\n datatype: \"varchar\",\n },\n {\n name: \"memsql_tags\",\n datatype: \"json\",\n },\n ],\n },\n {\n name: \"cluster_info\",\n columns: [\n {\n name: \"cluster\",\n datatype: \"varchar\",\n },\n {\n name: \"memsql_tags\",\n datatype: \"json\",\n },\n {\n name: \"status\",\n datatype: \"json\",\n },\n {\n name: \"ts\",\n datatype: \"timestamp\",\n },\n ],\n },\n {\n name: \"db_status\",\n columns: [\n {\n name: \"memsql_tags\",\n datatype: \"json\",\n },\n {\n name: \"keys\",\n datatype: \"json\",\n },\n {\n name: \"values\",\n datatype: \"json\",\n },\n {\n name: \"ts\",\n datatype: \"timestamp\",\n },\n {\n name: \"cluster\",\n datatype: \"tinyblob\",\n },\n {\n name: \"database_name\",\n datatype: \"tinyblob\",\n },\n {\n name: \"role\",\n datatype: \"tinyblob\",\n },\n {\n name: \"num_partitions\",\n datatype: \"smallint\",\n },\n {\n name: \"online\",\n datatype: \"smallint\",\n },\n {\n name: \"offline\",\n datatype: \"smallint\",\n },\n {\n name: \"replicating\",\n datatype: \"smallint\",\n },\n {\n name: \"recovering\",\n datatype: \"smallint\",\n },\n {\n name: \"pending\",\n datatype: \"smallint\",\n },\n {\n name: \"transition\",\n datatype: \"smallint\",\n },\n {\n name: \"unrecoverable\",\n datatype: \"smallint\",\n },\n {\n name: \"ref_db_state\",\n datatype: \"tinyblob\",\n },\n {\n name: \"summary\",\n datatype: \"tinyblob\",\n },\n ],\n },\n {\n name: \"metrics\",\n columns: [\n {\n name: \"labels\",\n datatype: \"json\",\n },\n {\n name: \"name\",\n datatype: \"tinyblob\",\n },\n {\n name: \"memsql_tags\",\n datatype: \"json\",\n },\n {\n name: \"cluster\",\n datatype: \"tinyblob\",\n },\n {\n name: \"host\",\n datatype: \"tinyblob\",\n },\n {\n name: \"port\",\n datatype: \"smallint\",\n },\n {\n name: \"role\",\n datatype: \"tinyblob\",\n },\n {\n name: \"extractor\",\n datatype: \"tinyblob\",\n },\n {\n name: \"subsystem\",\n datatype: \"tinyblob\",\n },\n {\n name: \"job\",\n datatype: \"tinyblob\",\n },\n {\n name: \"value\",\n datatype: \"double\",\n },\n {\n name: \"intval\",\n datatype: \"bigint\",\n },\n {\n name: \"time_sec\",\n datatype: \"bigint\",\n },\n ],\n },\n {\n name: \"mv_events\",\n columns: [\n {\n name: \"memsql_tags\",\n datatype: \"json\",\n },\n {\n name: \"keys\",\n datatype: \"json\",\n },\n {\n name: \"values\",\n datatype: \"json\",\n },\n {\n name: \"ts\",\n datatype: \"timestamp\",\n },\n {\n name: \"event_ts\",\n datatype: \"timestamp\",\n },\n {\n name: \"cluster\",\n datatype: \"tinyblob\",\n },\n {\n name: \"event_type\",\n datatype: \"tinyblob\",\n },\n {\n name: \"origin_node_id\",\n datatype: \"smallint\",\n },\n {\n name: \"ip_addr\",\n datatype: \"tinyblob\",\n },\n {\n name: \"port\",\n datatype: \"smallint\",\n },\n {\n name: \"type\",\n datatype: \"tinyblob\",\n },\n {\n name: \"severity\",\n datatype: \"tinyblob\",\n },\n {\n name: \"details\",\n datatype: \"tinyblob\",\n },\n ],\n },\n {\n name: \"mv_nodes\",\n columns: [\n {\n name: \"memsql_tags\",\n datatype: \"json\",\n },\n {\n name: \"keys\",\n datatype: \"json\",\n },\n {\n name: \"values\",\n datatype: \"json\",\n },\n {\n name: \"ts\",\n datatype: \"timestamp\",\n },\n {\n name: \"cluster\",\n datatype: \"tinyblob\",\n },\n {\n name: \"node_id\",\n datatype: \"smallint\",\n },\n {\n name: \"ip_addr\",\n datatype: \"tinyblob\",\n },\n {\n name: \"port\",\n datatype: \"smallint\",\n },\n {\n name: \"role\",\n datatype: \"tinyblob\",\n },\n {\n name: \"external_host\",\n datatype: \"tinyblob\",\n },\n {\n name: \"external_port\",\n datatype: \"smallint\",\n },\n {\n name: \"state\",\n datatype: \"tinyblob\",\n },\n {\n name: \"availability_group\",\n datatype: \"smallint\",\n },\n {\n name: \"num_cpus\",\n datatype: \"bigint\",\n },\n {\n name: \"max_memory_mb\",\n datatype: \"bigint\",\n },\n {\n name: \"max_table_memory_mb\",\n datatype: \"bigint\",\n },\n {\n name: \"memory_used_mb\",\n datatype: \"bigint\",\n },\n {\n name: \"table_memory_used_mb\",\n datatype: \"bigint\",\n },\n {\n name: \"total_data_disk_mb\",\n datatype: \"bigint\",\n },\n {\n name: \"available_data_disk_mb\",\n datatype: \"bigint\",\n },\n {\n name: \"uptime\",\n datatype: \"bigint\",\n },\n {\n name: \"version\",\n datatype: \"tinyblob\",\n },\n ],\n },\n {\n name: \"mv_queries\",\n columns: [\n {\n name: \"cluster\",\n datatype: \"varchar\",\n },\n {\n name: \"memsql_tags\",\n datatype: \"json\",\n },\n {\n name: \"ts\",\n datatype: \"timestamp\",\n },\n {\n name: \"ACTIVITY_NAME\",\n datatype: \"varchar\",\n },\n {\n name: \"QUERY_TEXT\",\n datatype: \"longtext\",\n },\n {\n name: \"PLAN_WARNINGS\",\n datatype: \"varchar\",\n },\n ],\n },\n {\n name: \"config\",\n columns: [\n {\n name: \"hostport\",\n datatype: \"tinyblob\",\n },\n {\n name: \"retention_period_minutes\",\n datatype: \"int\",\n },\n {\n name: \"purge_frequency_minutes\",\n datatype: \"int\",\n },\n {\n name: \"purge_limit\",\n datatype: \"int\",\n },\n ],\n },\n {\n name: \"ints\",\n columns: [\n {\n name: \"f\",\n datatype: \"int\",\n },\n ],\n },\n {\n name: \"purge_log\",\n columns: [\n {\n name: \"ts\",\n datatype: \"timestamp\",\n },\n {\n name: \"hostport\",\n datatype: \"tinyblob\",\n },\n {\n name: \"rows_deleted\",\n datatype: \"bigint\",\n },\n {\n name: \"status\",\n datatype: \"tinyblob\",\n },\n ],\n },\n ],\n};\n// This function checks to see if the currentSchema has all of the columns and tables that\n// we expect from another given schema. Since it can have more than just those, this\n// function uses lodash method isMatch, which checks if the first argument is a superset\n// of the second argument.\nexport function compareExpectedSchema(currentSchema, expectedSchema) {\n return _.isMatch(currentSchema, expectedSchema);\n}\nexport function transformToExpectedSchema(columns) {\n const schema = {\n tables: [],\n };\n for (let i = 0; i < columns.length; i++) {\n // For each column, check if its table already exists in the schema being created.\n const index = schema.tables.findIndex((table) => table.name === columns[i].TABLE_NAME);\n // If the table doesn't exist, create it, and add the rest of the info for that column.\n // If it does exist, just add the new column info to the table's existing list of columns.\n if (index === -1) {\n schema.tables.push({\n name: columns[i].TABLE_NAME,\n columns: [\n {\n name: columns[i].COLUMN_NAME,\n datatype: columns[i].DATA_TYPE,\n },\n ],\n });\n }\n else {\n schema.tables[index].columns.push({\n name: columns[i].COLUMN_NAME,\n datatype: columns[i].DATA_TYPE,\n });\n }\n }\n return schema;\n}\nfunction monitoringSqlNodeToMvNode(node) {\n let nodeId;\n if (node.nodeId) {\n nodeId = node.nodeId.toString();\n }\n return {\n ...node,\n nodeId,\n ipAddr: FIELD_DECODER.decode(node.ipAddr),\n role: FIELD_DECODER.decode(node.role),\n state: FIELD_DECODER.decode(node.state),\n availabilityGroup: nullableToMaybe(node.availabilityGroup),\n numCpus: nullableToMaybe(node.numCpus),\n maxMemoryMb: nullableToMaybe(node.maxMemoryMb),\n memoryUsedMb: nullableToMaybe(node.memoryUsedMb),\n };\n}\n// Despite the fact that the timestamps in act_samples are stored in UTC, this is not specified, so the query\n// assumes they are formatted in the local time zone and treats them as such. This function forces the query\n// to treat the timestamp returned by SQL_GET_OLDEST_TIMESTAMP as if it were a UTC date, because it is.\nfunction convertDateToUTC(date) {\n const dateUTC = Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n return new Date(dateUTC);\n}\n","// creates a TypeScript tuple from an array of types\nexport const tuple = (...args) => args;\n","export const rootNodeId = \"getting-started\";\n","import { consoleQueryAction, initQueryExecutor, staticQueryGroup, } from \"@single-js/common/core/sql/actions\";\nimport { SQL_SELECT_LIMIT } from \"@single-js/common/worker/net/connection-manager\";\nimport { changeBottomPanelTab } from \"data/actions/bottom-panel\";\nimport { CONNECTION_ID } from \"data/reducers/console\";\nexport const consoleEditQuery = (payload) => ({\n type: \"CONSOLE_EDIT_QUERY\",\n error: false,\n payload,\n});\nexport const consoleShiftQuery = (payload) => ({\n type: \"CONSOLE_SHIFT_QUERY\",\n error: false,\n payload,\n});\n// Opens up the bottom panel's console and runs a query in it.\n// You have to pass in a string rather than a QueryRepr because we need to put\n// the query into the console history.\nexport const consoleRunQuery = ({ query }) => {\n return (dispatch) => {\n dispatch(changeBottomPanelTab({ tab: \"Console\" }));\n dispatch(consoleQueryAction({ query, automated: true }));\n dispatch(staticQueryGroup({\n id: CONNECTION_ID,\n queryGroup: {\n queries: [\n {\n text: query,\n values: [],\n },\n ],\n // These options are duplicated in the TabConsole component\n onError: \"SKIP\",\n },\n }));\n };\n};\nexport const initConsoleQueryExecutor = () => {\n return (dispatch, getState) => {\n const { selectedDatabase } = getState().console;\n dispatch(initQueryExecutor({\n id: CONNECTION_ID,\n loggerType: \"errorsOnly\",\n database: selectedDatabase,\n initialQueryRowLimit: SQL_SELECT_LIMIT,\n }));\n };\n};\n","import { selectLastUpdate, selectLoadingOrInitial, } from \"@single-js/common/util/loading-state-machine\";\nimport { selectLicenseLastUpdate, selectLicenseLoading, } from \"data/selectors/license\";\nimport { selectPipelinesLastUpdate, selectPipelinesLoading, } from \"data/selectors/pipelines\";\nimport { selectSchemaSummaryLastUpdate, selectSchemaSummaryLoading, } from \"data/selectors/schema\";\nimport { selectDerivedNodesLastUpdate, selectDerivedNodesLoading, } from \"data/selectors/topology\";\nimport _ from \"lodash\";\nimport { createSelector } from \"reselect\";\nexport const selectClusterMetadataLoading = (s) => selectLoadingOrInitial(s.clusterMetadata.clusterStatistics);\nconst selectClusterMetadataLastUpdate = (s) => selectLastUpdate(s.clusterMetadata.clusterStatistics);\n// We return `true` if ANY of the stores that ANY of the cards\n// depend on are in the loading state.\nexport const isDashboardLoading = createSelector(selectDerivedNodesLoading, selectClusterMetadataLoading, selectPipelinesLoading, selectSchemaSummaryLoading, selectLicenseLoading, (nodesLoading, clusterMetadataLoading, pipelinesLoading, schemaSummaryLoading, licenseLoading) => {\n return (nodesLoading ||\n clusterMetadataLoading ||\n pipelinesLoading ||\n schemaSummaryLoading ||\n licenseLoading);\n});\n// We look at all of the stores that all of the cards depend on and\n// return the date that is more recent.\nexport const lastDashboardUpdate = createSelector(selectDerivedNodesLastUpdate, selectClusterMetadataLastUpdate, selectPipelinesLastUpdate, selectSchemaSummaryLastUpdate, selectLicenseLastUpdate, (nodesLastUpdate, clusterMetadataLastUpdate, pipelinesLastUpdate, schemaSummaryLastUpdate, licenseLastUpdate) => {\n return _.max([\n nodesLastUpdate,\n clusterMetadataLastUpdate,\n pipelinesLastUpdate,\n schemaSummaryLastUpdate,\n licenseLastUpdate,\n ]);\n});\n","import { Version } from \"@single-js/common/util/version\";\nimport { from, merge, of } from \"rxjs\";\nimport { logError, NonLoggableError } from \"util/logging\";\nimport { makeActionCreator } from \"worker/api/helpers\";\nconst LATEST_URL = \"https://release.memsql.com/production/index/memsqlserver/latest.json\"; //TODO: retitle memsqlserver\nconst LATEST_STUDIO_URL = \"https://release.memsql.com/production/index/memsqlstudio/latest.json\"; //TODO: retitle memsqlstudio\nfunction fetchLatestMemsqlVersion() {\n return fetch(LATEST_URL)\n .then((response) => response.json())\n .then((json) => ({\n version: Version.fromString(json.version),\n }), (res) => {\n throw new NonLoggableError(res);\n });\n}\nfunction fetchLatestStudioVersion() {\n return fetch(LATEST_STUDIO_URL)\n .then((response) => response.json())\n .then((json) => ({\n version: Version.fromString(json.version),\n }), (res) => {\n throw new NonLoggableError(res);\n });\n}\nconst createLatestMemsqlVersionAction = (data) => {\n return {\n type: \"LATEST_MEMSQL_VERSION\",\n error: false,\n payload: {\n loading: false,\n data,\n },\n };\n};\nconst createLatestStudioVersionAction = (data) => {\n return {\n type: \"LATEST_STUDIO_VERSION\",\n error: false,\n payload: {\n loading: false,\n data,\n },\n };\n};\nexport const queryLatestMemsqlVersion = makeActionCreator({\n name: \"queryLatestMemsqlVersion\",\n handle: () => {\n const $loading = of({\n type: \"LATEST_MEMSQL_VERSION\",\n error: false,\n payload: { loading: true },\n });\n const $compute = from(fetchLatestMemsqlVersion()\n .then(createLatestMemsqlVersionAction)\n .catch((err) => {\n logError(err);\n return {\n type: \"LATEST_MEMSQL_VERSION\",\n error: true,\n payload: err.message,\n };\n }));\n return merge($loading, $compute);\n },\n});\nexport const queryLatestStudioVersion = makeActionCreator({\n name: \"queryLatestStudioVersion\",\n handle: () => {\n const $loading = of({\n type: \"LATEST_STUDIO_VERSION\",\n error: false,\n payload: { loading: true },\n });\n const $compute = from(fetchLatestStudioVersion()\n .then(createLatestStudioVersionAction)\n .catch((err) => {\n logError(err);\n return {\n type: \"LATEST_STUDIO_VERSION\",\n error: true,\n payload: err.message,\n };\n }));\n return merge($loading, $compute);\n },\n});\n","import classnames from \"classnames\";\nimport * as React from \"react\";\nimport \"./select.scss\";\nexport class Select extends React.Component {\n render() {\n const { className, children, inputProps, styleType = \"default\", } = this.props;\n const classes = classnames({\n \"single-common-components-select\": true,\n \"button-style-select\": styleType === \"button\",\n }, className);\n return (React.createElement(\"select\", { required: true, className: classes, ...inputProps }, children));\n }\n}\nSelect.defaultProps = {\n inputProps: {},\n};\n","import classnames from \"classnames\";\nimport * as React from \"react\";\nimport \"./simple-modal-body.scss\";\n// Just a component that looks nice as the child of a Modal.\nexport class SimpleModalBody extends React.Component {\n render() {\n const { title, description, children, className } = this.props;\n const classes = classnames(\"single-common-simple-modal-body\", className);\n return (React.createElement(\"div\", { className: classes },\n React.createElement(\"div\", { className: \"title\" }, title),\n React.createElement(\"div\", { className: \"description\" }, description),\n children));\n }\n}\nSimpleModalBody.defaultProps = {\n description: null,\n};\n","const SQL_ORDER_BY = `ORDER BY pipelineId ASC`;\nexport const SQL_PIPELINES_QUERY = `\n SELECT\n CONCAT(DATABASE_NAME, '.', PIPELINE_NAME) AS pipelineId,\n PIPELINES.DATABASE_NAME AS databaseName,\n PIPELINES.PIPELINE_NAME AS pipelineName,\n ANY_VALUE(STATE) AS state,\n ANY_VALUE(CONFIG_JSON::$source_type) AS sourceType\n FROM\n INFORMATION_SCHEMA.PIPELINES\n GROUP BY\n PIPELINES.DATABASE_NAME,\n PIPELINES.PIPELINE_NAME\n ${SQL_ORDER_BY};\n`;\nexport const SQL_PIPELINES_FAILED_BATCHES_QUERY = `\n SELECT\n CONCAT(DATABASE_NAME, '.', PIPELINE_NAME) AS pipelineId,\n COUNT(*) AS numFailedBatches\n FROM\n INFORMATION_SCHEMA.PIPELINES_BATCHES_METADATA\n WHERE\n BATCH_STATE = 'Failed'\n GROUP BY\n DATABASE_NAME,\n PIPELINE_NAME\n ${SQL_ORDER_BY};\n`;\n// We convert the Milliseconds Unix Epoch to a standard seconds Unix epoch\n// so that it can be easily parsed by date-fns.\nexport const SQL_PIPELINES_LAST_BATCH_QUERY = `\n SELECT\n CONCAT(DATABASE_NAME, '.', PIPELINE_NAME) AS pipelineId,\n sub.BATCH_STATE AS lastBatchState,\n FROM_UNIXTIME(sub.BATCH_START_UNIX_TIMESTAMP) AS lastBatchTimestamp,\n IFNULL(sub.BATCH_ROWS_WRITTEN, 0) AS lastBatchRowsWritten\n FROM (\n SELECT\n DATABASE_NAME,\n PIPELINE_NAME,\n BATCH_STATE,\n BATCH_START_UNIX_TIMESTAMP,\n BATCH_ROWS_WRITTEN,\n ROW_NUMBER() OVER (\n PARTITION BY DATABASE_NAME,\n PIPELINE_NAME\n ORDER BY BATCH_START_UNIX_TIMESTAMP DESC\n ) AS r\n FROM\n INFORMATION_SCHEMA.PIPELINES_BATCHES_METADATA\n WHERE\n BATCH_STATE NOT IN ('No Data', 'In Progress', 'Queued')\n ) sub\n WHERE\n r = 1\n ${SQL_ORDER_BY};\n`;\n","import { nullableToMaybe } from \"@single-js/common/util/nullable\";\nimport { multiSelect } from \"@single-js/common/util/query\";\nimport BigNumber from \"@single-js/common/vendor/bignumber.js/bignumber\";\nimport { differenceInSeconds, parse } from \"date-fns\";\nimport _ from \"lodash\";\nimport { from, merge, of } from \"rxjs\";\nimport leftJoin from \"util/joins/left-join\";\nimport outerJoin from \"util/joins/outer-join\";\nimport { logError } from \"util/logging\";\nimport { makeActionCreator } from \"worker/api/helpers\";\nimport { SQL_PIPELINES_FAILED_BATCHES_QUERY, SQL_PIPELINES_LAST_BATCH_QUERY, SQL_PIPELINES_QUERY, } from \"worker/api/pipelines-queries\";\nconst FIELD_DECODER = new TextDecoder();\nconst getPipelineState = (state) => {\n switch (state) {\n case \"Running\":\n case \"Error\":\n case \"Stopped\":\n return state;\n default:\n return \"Unknown\";\n }\n};\nconst getPipelineSourceType = (sourceType) => {\n if (sourceType === null) {\n return \"UNKNOWN\";\n }\n let sourceTypeStr;\n if (sourceType instanceof Uint8Array) {\n sourceTypeStr = FIELD_DECODER.decode(sourceType);\n }\n else {\n sourceTypeStr = sourceType;\n }\n switch (sourceTypeStr) {\n case \"S3\":\n case \"KAFKA\":\n case \"AZURE\":\n case \"FS\":\n case \"HDFS\":\n case \"PROMETHEUS_EXPORTER\":\n return sourceTypeStr;\n default:\n return \"UNKNOWN\";\n }\n};\nconst getBatchState = (batchState) => {\n switch (batchState) {\n case \"Queued\":\n case \"In Progress\":\n case \"Succeeded\":\n case \"No Data\":\n case \"Failed\":\n case \"Canceled\":\n return batchState;\n default:\n return \"Unknown\";\n }\n};\nconst joinPipelinesData = _.curry(outerJoin)((a, b) => {\n if (a.pipelineId < b.pipelineId) {\n return -1;\n }\n else if (a.pipelineId === b.pipelineId) {\n return 0;\n }\n else {\n return 1;\n }\n}, (a, b) => {\n if (a && b) {\n return {\n pipelineId: a.pipelineId,\n numFailedBatches: a.numFailedBatches,\n lastBatchState: getBatchState(b.lastBatchState),\n lastBatchTimestamp: nullableToMaybe(b.lastBatchTimestamp),\n lastBatchRowsWritten: b.lastBatchRowsWritten,\n };\n }\n else if (a) {\n return {\n pipelineId: a.pipelineId,\n numFailedBatches: a.numFailedBatches,\n };\n }\n else if (b) {\n return {\n pipelineId: b.pipelineId,\n lastBatchState: getBatchState(b.lastBatchState),\n lastBatchTimestamp: nullableToMaybe(b.lastBatchTimestamp),\n lastBatchRowsWritten: b.lastBatchRowsWritten,\n };\n }\n});\nconst joinPipelinesWithData = _.curry(leftJoin)((a, b) => {\n if (a.pipelineId < b.pipelineId) {\n return -1;\n }\n else if (a.pipelineId === b.pipelineId) {\n return 0;\n }\n else {\n return 1;\n }\n}, (a, b) => {\n const basePipeline = {\n kind: \"PIPELINE\",\n pipelineId: a.pipelineId,\n pipelineName: a.pipelineName,\n databaseName: a.databaseName,\n state: getPipelineState(a.state),\n sourceType: getPipelineSourceType(a.sourceType),\n numFailedBatches: (b && b.numFailedBatches) || new BigNumber(0),\n };\n if (b && b.lastBatchState && b.lastBatchTimestamp) {\n const { lastBatchState, lastBatchTimestamp } = b;\n return {\n ...basePipeline,\n lastBatch: {\n timestamp: parse(lastBatchTimestamp),\n state: lastBatchState,\n rowsWritten: b.lastBatchRowsWritten,\n },\n };\n }\n return basePipeline;\n});\nconst createPipelinesAction = ([sqlPipelines, sqlPipelinesFailedBatches, sqlPipelinesLastBatch], startDate) => {\n // `pipelinesData` refers to the grouping between information\n // about pipelines' last batches and pipelines' number of failed\n // batches.\n let pipelinesData = joinPipelinesData(sqlPipelinesFailedBatches, // a\n sqlPipelinesLastBatch // b\n );\n // We re-sort both `sqlPipelines` and `pipelinesData` ahead of doing a left\n // join. In theory the sorting from the SQL query should have been persisted\n // so far, but there seems to be an issue with `joinPipelinesData` where\n // the data doesn't come back in the right order. This addresses PLAT-6333.\n sqlPipelines = _.sortBy(sqlPipelines, [(p) => p.pipelineId]);\n pipelinesData = _.sortBy(pipelinesData, [(p) => p.pipelineId]);\n const pipelines = joinPipelinesWithData(sqlPipelines, pipelinesData);\n return {\n type: \"PIPELINES\",\n payload: {\n loading: false,\n data: {\n pipelines,\n deltaTimeS: differenceInSeconds(new Date(), startDate),\n },\n },\n error: false,\n };\n};\nexport const queryPipelines = makeActionCreator({\n name: \"queryPipelines\",\n handle: (ctx) => {\n const $loading = of({\n type: \"PIPELINES\",\n error: false,\n payload: { loading: true },\n });\n const startDate = new Date();\n const $compute = from(ctx.manager\n .getPooledConnection()\n .then((conn) => multiSelect(conn, { sql: SQL_PIPELINES_QUERY }, { sql: SQL_PIPELINES_FAILED_BATCHES_QUERY }, { sql: SQL_PIPELINES_LAST_BATCH_QUERY })\n .then((pipelines) => createPipelinesAction(pipelines, startDate))\n .catch((err) => {\n logError(err);\n return {\n type: \"PIPELINES\",\n error: true,\n payload: {\n message: err.message,\n },\n };\n })\n .finally(() => conn.release()))\n .catch((err) => {\n return {\n type: \"PIPELINES\",\n error: true,\n payload: {\n message: err.message,\n },\n };\n }));\n return merge($loading, $compute);\n },\n});\n","// Performs a 2-way outer join given 2 arrays which are\n// sorted the same way. The resulting array can have\n// elements which are of either of the types that were\n// passed in (T or T2), but also of the \"merged\" type T3.\n// This is because elements are returned whether they can\n// be merged or not.\nexport default function outerJoin(comparator, \n// Both of the arguments to `merge` are optional because\n// it can either take BOTH of them or ONLY one of them\n// (with the other being `undefined`). It will NEVER be\n// called without either of them. If this function\n// ever returns `undefined`, we will not push that to the\n// resulting array.\nmerge, arr1, arr2) {\n const output = [];\n let iterator1 = 0;\n let iterator2 = 0;\n const pushToOutput = (val) => {\n if (val) {\n output.push(val);\n }\n };\n while (iterator1 < arr1.length && iterator2 < arr2.length) {\n const comparison = comparator(arr1[iterator1], arr2[iterator2]);\n if (comparison === 0) {\n pushToOutput(merge(arr1[iterator1], arr2[iterator2]));\n iterator1++;\n iterator2++;\n }\n else {\n if (comparison === -1) {\n pushToOutput(merge(arr1[iterator1], undefined));\n iterator1++;\n }\n else if (comparison === 1) {\n pushToOutput(merge(undefined, arr2[iterator2]));\n iterator2++;\n }\n }\n }\n // We want to keep going even if we reached the end of one\n // of the arrays.\n while (iterator1 < arr1.length) {\n pushToOutput(merge(arr1[iterator1], undefined));\n iterator1++;\n }\n while (iterator2 < arr2.length) {\n pushToOutput(merge(undefined, arr2[iterator2]));\n iterator2++;\n }\n return output;\n}\n","const logMsgCreator = (level) => {\n return (msg, focusTab) => ({\n type: \"LOG_MESSAGE\",\n error: false,\n payload: {\n msg,\n level,\n timestamp: new Date(),\n focusTab,\n },\n });\n};\nexport const logDebug = logMsgCreator(\"debug\");\nexport const logInfo = logMsgCreator(\"info\");\nexport const logWarn = logMsgCreator(\"warn\");\nconst logError = logMsgCreator(\"error\");\nexport const logSilentError = logError;\nexport const logFocusError = (msg) => logError(msg, \"Log\");\nexport const logFocusConnectionError = (msg) => logError(msg, \"Connection\");\n","export const selectCurrentClusterId = (s) => s.connection.state.config ? s.connection.state.config.clusterId : undefined;\n","import { DATA_TYPE_TO_CATEGORY, } from \"@single-js/common/util/data-type\";\nimport _ from \"lodash\";\nconst getDataTypesForCategory = (category) => _(DATA_TYPE_TO_CATEGORY)\n .pickBy((v) => v === category)\n .keys()\n .uniq()\n .value();\nexport const CATEGORY_TO_DATA_TYPE = {\n number: getDataTypesForCategory(\"number\"),\n datetime: getDataTypesForCategory(\"datetime\"),\n string: getDataTypesForCategory(\"string\"),\n json: getDataTypesForCategory(\"json\"),\n geospatial: getDataTypesForCategory(\"geospatial\"),\n};\n// Returns the ID for a given SchemaEntity.\nexport const getSchemaEntityID = (entity) => {\n switch (entity.kind) {\n case \"DATABASE\":\n return entity.databaseName;\n case \"TABLE\":\n case \"VIEW\":\n return entity.tableId;\n case \"USER_DEFINED_FUNCTION\":\n case \"STORED_PROCEDURE\":\n case \"USER_DEFINED_AGGREGATE\":\n return entity.functionId;\n case \"TABLE_COLUMN\":\n case \"VIEW_COLUMN\":\n return entity.columnId;\n case \"INDEX\":\n return entity.indexId;\n }\n};\n// Returns true if they are the same schema entity, false otherwise. We\n// simply compare the entity's IDs which is safe because it is guaranteed\n// that two different types of entities will never have the saame ID.\nexport const compareSchemaEntities = (left, right) => getSchemaEntityID(left) === getSchemaEntityID(right);\n","import { buildClusterStatisticsAction, buildMemsqlPartitionsAction, } from \"data/actions/cluster-metadata\";\nimport { buildTopologyAction } from \"data/actions/topology\";\nexport const schemaSort = (payload) => ({\n type: \"SCHEMA_SORT\",\n error: false,\n payload,\n});\n// This method restores the entire state in the Schema Explorer\n// based on a given SchemaFullPayload object. This action is just\n// a thunk that emits 3 different actions that the Schema Explorer\n// state depends on.\nexport const schemaRestore = (payload) => {\n return (dispatch) => {\n dispatch({\n type: \"SCHEMA_RESTORE\",\n error: false,\n payload,\n });\n dispatch(buildClusterStatisticsAction(payload.clusterStatistics));\n dispatch(buildTopologyAction(payload.topology));\n dispatch(buildMemsqlPartitionsAction(payload.partitions));\n };\n};\nexport const clearTableLikeSample = () => ({\n type: \"CLEAR_TABLE_LIKE_SAMPLE\",\n error: false,\n payload: Object.freeze({}),\n});\nexport const clearShowCreateTableLikeSqlAction = () => ({\n type: \"CLEAR_SHOW_CREATE_TABLE_LIKE_SQL\",\n error: false,\n payload: Object.freeze({}),\n});\n","export const sortEvents = (payload) => ({\n type: \"SORT_EVENTS\",\n error: false,\n payload,\n});\n","export const sortPipelines = (payload) => ({\n type: \"SORT_PIPELINES\",\n error: false,\n payload,\n});\n","export const expandDatabase = (payload) => ({\n type: \"SCHEMA_TREE_EXPAND_DATABASE\",\n error: false,\n payload,\n});\nexport const collapseDatabase = (payload) => ({\n type: \"SCHEMA_TREE_COLLAPSE_DATABASE\",\n error: false,\n payload,\n});\nexport const expandTable = (payload) => ({\n type: \"SCHEMA_TREE_EXPAND_TABLE\",\n error: false,\n payload,\n});\nexport const collapseTable = (payload) => ({\n type: \"SCHEMA_TREE_COLLAPSE_TABLE\",\n error: false,\n payload,\n});\nexport const schemaTreeChangeSearch = (payload) => ({\n type: \"SCHEMA_TREE_CHANGE_SEARCH\",\n error: false,\n payload,\n});\n","export const humanizeNodeRole = (role) => {\n if (role === \"LEAF\") {\n return \"Leaf\";\n }\n else if (role === \"AGGREGATOR\") {\n return \"Child Aggregator\";\n }\n else if (role === \"MASTER_AGGREGATOR\") {\n return \"Master Aggregator\";\n }\n return role;\n};\nexport const abbreviateNodeRole = (role) => {\n if (role === \"LEAF\") {\n return \"L\";\n }\n else if (role === \"AGGREGATOR\") {\n return \"CA\";\n }\n else if (role === \"MASTER_AGGREGATOR\") {\n return \"MA\";\n }\n return role;\n};\n","import classnames from \"classnames\";\nimport * as React from \"react\";\nimport { InlineBar } from \"./inline-bar\";\nimport { LoadingBar } from \"./loading-bar\";\nimport \"./labeled-inline-bar.scss\";\nexport class LabeledInlineBar extends React.Component {\n render() {\n const { entries, label, labelPosition, barClassName } = this.props;\n const classes = classnames(\"single-common-components-labeled-inline-bar\", labelPosition);\n let bar;\n if (entries === \"loading\") {\n bar = React.createElement(LoadingBar, { width: \"100%\" });\n }\n else {\n bar = React.createElement(InlineBar, { entries: entries, className: barClassName });\n }\n return (React.createElement(\"div\", { className: classes },\n bar,\n React.createElement(\"div\", { className: \"label\" }, label)));\n }\n}\nLabeledInlineBar.defaultProps = {\n labelPosition: \"right\",\n};\n","import _ from \"lodash\";\nimport { createSelector } from \"reselect\";\nimport EVENT_COLUMNS from \"view/events/columns-info\";\n// The only things that depend on this selector will automatically\n// query for events, so we consider the `initial` state to be a\n// loading state as well.\nexport const selectEventsLoading = (s) => s.events.state === \"loading\" || s.events.state === \"initial\";\nexport const selectEventsError = (s) => s.events.state === \"error\" ? s.events.error : undefined;\nexport const selectEventsSort = (s) => s.events.state === \"success\" ? s.events.sort : undefined;\nexport const selectEventsLastUpdate = (s) => s.events.state === \"success\" ? s.events.lastUpdate : undefined;\nexport const selectEvents = (s) => s.events.state === \"success\" ? s.events.events : undefined;\nexport const selectSortedEvents = createSelector(selectEvents, selectEventsSort, (events, sort) => {\n if (sort && events) {\n const { direction, columnId } = sort;\n const columnInfo = _.find(EVENT_COLUMNS, (col) => col.id === columnId);\n if (!columnInfo) {\n throw new Error(\"Expected column to be defined.\");\n }\n return _.orderBy(events, [columnInfo.getValue], direction);\n }\n else {\n return events;\n }\n});\n","import { LELoading, LESuccess, } from \"@single-js/common/util/loading-error\";\nimport _ from \"lodash\";\nimport { createSelector } from \"reselect\";\nconst selectDatabases = (state) => state.schema.structure.databases;\nconst selectTables = (state) => state.schema.structure.tables;\nconst selectViews = (state) => state.schema.structure.views;\nconst selectUserDefinedFunctions = (state) => state.schema.structure.userDefinedFunctions;\nconst selectStoredProcedures = (state) => state.schema.structure.storedProcedures;\nconst selectAggregates = (state) => state.schema.structure.aggregates;\nconst selectFunctions = createSelector(selectUserDefinedFunctions, selectStoredProcedures, selectAggregates, (userDefinedFunctions, storedProcedures, aggregates) => {\n let functions = [];\n if (userDefinedFunctions.isSuccess()) {\n functions = functions.concat(userDefinedFunctions.value);\n }\n if (aggregates.isSuccess()) {\n functions = functions.concat(aggregates.value);\n }\n if (storedProcedures.isSuccess()) {\n functions = functions.concat(storedProcedures.value);\n }\n return functions;\n});\nconst selectColumns = (state) => state.schema.structure.columns;\nconst selectSortedColumns = createSelector(selectColumns, (columns) => {\n if (columns.isSuccess()) {\n return new LESuccess(_.orderBy(columns.value, [(col) => col.ordinalPosition], \"asc\"));\n }\n else {\n return columns;\n }\n});\nconst selectViewColumns = (state) => state.schema.structure.viewColumns;\nconst selectSortedViewColumns = createSelector(selectViewColumns, (viewColumns) => {\n if (viewColumns.isSuccess()) {\n return new LESuccess(_.orderBy(viewColumns.value, [(col) => col.ordinalPosition], \"asc\"));\n }\n else {\n return viewColumns;\n }\n});\nconst selectExpandedDatabases = (state) => state.schemaTree.expandedDatabases;\nconst selectExpandedTables = (state) => state.schemaTree.expandedTables;\nconst selectSearchQuery = (state) => state.schemaTree.searchQuery;\nexport const selectSchemaTree = createSelector(selectDatabases, selectTables, selectViews, selectSortedColumns, selectSortedViewColumns, selectFunctions, selectExpandedDatabases, selectExpandedTables, selectSearchQuery, (databases, tables, views, columns, viewColumns, functions, expandedDatabases, expandedTables, searchQuery) => {\n // Escape regex special characters.\n const searchEscaped = _.escapeRegExp(searchQuery);\n const searchRegex = new RegExp(searchEscaped, \"i\");\n // If needsMatch is true, each of the getX functions will only return\n // columns, tables, or functions that either match the regex or have a\n // descendant that matches the regex. Otherwise they will get all\n // descendants.\n const getTableColumns = (databaseName, tableName, { needsMatch }) => {\n if (columns.isSuccess() && viewColumns.isSuccess()) {\n return new LESuccess(_(columns.value)\n .concat(viewColumns.value)\n .filter((c) => c.databaseName === databaseName &&\n c.tableName === tableName &&\n (!needsMatch ||\n Boolean(c.columnName.match(searchRegex))))\n .value());\n }\n else {\n return columns;\n }\n };\n const getDatabaseTables = (databaseName, { needsMatch, fullyExpanded, // if true, get all columns of all tables\n }) => {\n let databaseTables = new LELoading();\n const tablesPerDatabase = tables[databaseName];\n const viewsPerDatabase = views[databaseName];\n if (tablesPerDatabase &&\n tablesPerDatabase.isSuccess() &&\n viewsPerDatabase &&\n viewsPerDatabase.isSuccess()) {\n databaseTables = new LESuccess(_(tablesPerDatabase.value)\n .concat(viewsPerDatabase.value)\n .map((tableLike) => {\n const tableName = tableLike.tableName;\n if (needsMatch) {\n // include the table only if it matches or at least\n // one child column matches\n const tableMatches = tableName.match(searchRegex);\n const columns = getTableColumns(databaseName, tableName, { needsMatch: !tableMatches });\n if (columns.isSuccess() &&\n (tableMatches || columns.value.length)) {\n return {\n tableLike,\n expanded: true,\n columns: columns.value,\n };\n }\n }\n else {\n // include the table with all columns; may or may\n // not be expanded\n const expanded = fullyExpanded ||\n _.some(expandedTables, {\n tableName,\n databaseName,\n });\n const columns = getTableColumns(databaseName, tableName, { needsMatch: false });\n if (columns.isSuccess()) {\n return {\n tableLike,\n expanded,\n columns: columns.value,\n };\n }\n }\n })\n .filter((t) => Boolean(t))\n .orderBy([\n ({ tableLike }) => tableLike.tableName,\n ], \"asc\")\n .value());\n }\n return databaseTables;\n };\n const getDatabaseFunctions = (databaseName, { needsMatch }) => {\n return _(functions)\n .filter((f) => f.databaseName === databaseName &&\n (!needsMatch || Boolean(f.name.match(searchRegex))))\n .map((functionLike) => ({ functionLike }))\n .orderBy([\n ({ functionLike }) => functionLike.kind,\n ({ functionLike }) => functionLike.name,\n ], \"asc\")\n .value();\n };\n let databasesToReturn = new LELoading();\n if (databases.isSuccess()) {\n databasesToReturn = new LESuccess(_(databases.value)\n .map((database) => {\n if (searchQuery) {\n // include the database only if it matches or at\n // least one child table/function matches (tables\n // can match via their columns matching)\n const { databaseName } = database;\n const databaseMatches = Boolean(databaseName.match(searchRegex));\n const tables = getDatabaseTables(database.databaseName, {\n needsMatch: !databaseMatches,\n fullyExpanded: databaseMatches,\n });\n const functions = getDatabaseFunctions(database.databaseName, { needsMatch: !databaseMatches });\n let databaseTables = new LELoading();\n if (tables.isSuccess() &&\n (databaseMatches ||\n tables.value.length ||\n functions.length)) {\n databaseTables = new LESuccess(tables.value);\n }\n return {\n database,\n expanded: true,\n tables: databaseTables,\n functions,\n };\n }\n else {\n // include the database with all tables and\n // functions; may or may not be expanded\n const expanded = _.includes(expandedDatabases, database.databaseName);\n const tables = getDatabaseTables(database.databaseName, {\n needsMatch: false,\n fullyExpanded: false,\n });\n let databaseTables = new LELoading();\n if (tables.isSuccess()) {\n databaseTables = new LESuccess(tables.value);\n }\n return {\n database,\n expanded,\n tables: databaseTables,\n functions: getDatabaseFunctions(database.databaseName, { needsMatch: false }),\n };\n }\n })\n .filter((d) => Boolean(d))\n .value());\n }\n return {\n databases: databasesToReturn,\n };\n});\n","export const selectMemsqlOnline = (s) => Boolean(s.systemStatus.memsqlConnection &&\n s.systemStatus.memsqlConnection.active &&\n s.systemStatus.proxyConnection &&\n s.systemStatus.proxyConnection.active);\n","import assign from \"@single-js/common/util/assign\";\n// Percentage of total document height value:\nexport const DEFAULT_HEIGHT = 0.3;\nconst initialState = {\n height: 0,\n activeTab: \"Console\",\n // We keep track of whether the bottom panel has ever opened so that we\n // highlight the active tab only after the user has opened the panel at\n // least once.\n everOpened: false,\n};\nconst openToDefaultHeightIfClosed = (state) => assign(state, {\n height: state.height === 0 ? DEFAULT_HEIGHT : state.height,\n everOpened: true,\n});\nexport function bottomPanelReducer(state = initialState, action) {\n switch (action.type) {\n case \"CHANGE_BOTTOM_PANEL_HEIGHT\": {\n state = assign(state, {\n height: action.payload.height,\n everOpened: state.everOpened || action.payload.height > 0,\n });\n break;\n }\n case \"CHANGE_BOTTOM_PANEL_TAB\": {\n state = openToDefaultHeightIfClosed(assign(state, {\n activeTab: action.payload.tab,\n }));\n break;\n }\n case \"LOG_MESSAGE\": {\n // If a message that demands user focus is dispatched, open the Tab\n // to the one that needs focusing, and set the height of the bottom\n // panel to the default height if it is not open.\n if (action.payload.focusTab) {\n state = openToDefaultHeightIfClosed({\n ...state,\n activeTab: action.payload.focusTab,\n });\n }\n break;\n }\n }\n return state;\n}\n","export const EXTERNAL_LINKS = {\n training: \"https://training.singlestore.com\",\n troubleshooting: \"https://docs.singlestore.com/troubleshooting\",\n \"about-studio\": \"https://docs.singlestore.com/studio-redir/memsql-studio-overview/\",\n \"advanced-counters\": \"https://docs.singlestore.com/studio-redir/advanced-statistics/\",\n \"create-database\": \"https://docs.singlestore.com/studio-redir/create-database/\",\n \"create-index\": \"https://docs.singlestore.com/studio-redir/create-index/\",\n \"create-view\": \"https://docs.singlestore.com/studio-redir/create-view/\",\n \"create-pipeline\": \"https://docs.singlestore.com/studio-redir/create-pipeline/\",\n \"create-stored-procedure\": \"https://docs.singlestore.com/studio-redir/create-procedure/\",\n \"create-udf\": \"https://docs.singlestore.com/studio-redir/create-udf/\",\n \"create-udaf\": \"https://docs.singlestore.com/studio-redir/create-udaf/\",\n documentation: \"https://docs.singlestore.com/db/\",\n \"lmv-events\": \"https://docs.singlestore.com/studio-redir/lmv-events/\",\n \"release-notes\": \"https://docs.singlestore.com/studio-redir/release-notes/\",\n \"terms-conditions\": \"https://www.singlestore.com/legal\",\n \"memory-management\": \"https://docs.singlestore.com/studio-redir/memory-management\",\n \"memory-management-maximum-memory\": \"https://docs.singlestore.com/studio-redir/maximum-memory\",\n \"pipelines-overview\": \"https://docs.singlestore.com/studio-redir/pipelines-overview\",\n licensing: \"https://docs.singlestore.com/studio-redir/licensing\",\n chrome: \"https://www.google.com/chrome/\",\n firefox: \"https://www.mozilla.org/firefox\",\n \"studio-release-notes\": \"https://docs.singlestore.com/studio-redir/studio-release-notes/\",\n \"license-unit-definition\": \"https://docs.singlestore.com/studio-redir/license-unit-definition\",\n \"upgrade-studio\": \"https://docs.singlestore.com/studio-redir/studio-upgrade\",\n \"pipeline-transforms\": \"https://docs.singlestore.com/studio-redir/pipelines-transforms/\",\n \"pipeline-extractors\": \"https://docs.singlestore.com/studio-redir/pipelines-extractors/\",\n \"parallel-loading\": \"https://docs.singlestore.com/studio-redir/pipelines-parallelized-loading/\",\n \"code-generation\": \"https://docs.singlestore.com/studio-redir/code-generation/\",\n \"tpch-benchmark\": \"http://www.tpc.org/tpc_documents_current_versions/pdf/tpc-h_v2.17.1.pdf\",\n \"database-states\": \"https://docs.singlestore.com/studio-redir/database-states/\",\n \"portal-licenses\": \"https://portal.singlestore.com/organizations/org-id/licenses/\",\n \"managing-high-availability\": \"https://docs.singlestore.com/studio-redir/guides-managing-high-availability/\",\n \"memsql-deploy-setup-cluster\": \"https://docs.singlestore.com/studio-redir/memsql-deploy-setup-cluster\",\n \"memsql-deploy-overview\": \"https://docs.singlestore.com/studio-redir/memsql-deploy-overview\",\n \"memsql-deploy-configure-numa\": \"https://docs.singlestore.com/studio-redir/memsql-deploy-configure-numa\",\n \"add-cluster-to-studio\": \"https://docs.singlestore.com/studio-redir/add-cluster-to-studio\",\n \"studio-memsql-upgrade\": \"https://docs.singlestore.com/studio-memsql-upgrade\",\n \"cluster-advanced-options\": \"https://docs.singlestore.com/studio-redir/memsql-deploy-setup-cluster/#cluster\",\n \"hosts-advanced-options\": \"https://docs.singlestore.com/studio-redir/memsql-deploy-setup-cluster/#host\",\n \"nodes-advanced-options\": \"https://docs.singlestore.com/studio-redir/memsql-deploy-setup-cluster/#node\",\n};\nexport const upgradeClusterLink = (clusterID) => `https://portal.singlestore.com/organizations/org-id/clusters/upgrade?clusterID=${clusterID}`;\n","import { servicesLocator } from \"@single-js/common/services/services-locator\";\nimport * as React from \"react\";\nimport { GeneralError, } from \"../general-error/general-error\";\nimport \"./error-boundary.scss\";\nexport class ErrorBoundary extends React.Component {\n constructor() {\n super(...arguments);\n this.state = {\n error: undefined,\n };\n }\n componentDidCatch(error, info) {\n const { errorsToCatch, name } = this.props;\n let errorType = \"General\";\n if (error.name === \"ChunkLoadError\") {\n errorType = \"ChunkLoadError\";\n }\n if (errorsToCatch.includes(errorType)) {\n this.setState({\n error: errorType,\n });\n servicesLocator.getLogger().logError(error, `\n boundary-name: ${name}\n stack: ${error.stack}\n componentStack: ${info.componentStack}\n `);\n }\n else {\n throw error;\n }\n }\n render() {\n const { generalErrorProps, children } = this.props;\n if (this.state.error !== undefined) {\n let error = generalErrorProps.error;\n if (this.state.error === \"ChunkLoadError\") {\n error =\n \"We couldn't fetch the necessary resources to render this page. This may have happened because Studio server is down, or due to temporary network issues.\";\n }\n return (React.createElement(\"div\", { className: \"components-common-error-boundary\" },\n React.createElement(GeneralError, { errorHeader: generalErrorProps.errorHeader, error: error })));\n }\n else {\n return children;\n }\n }\n}\nErrorBoundary.defaultProps = {\n generalErrorProps: {\n errorHeader: \"An error occurred.\",\n error: \"Please contact the support team.\",\n },\n errorsToCatch: [\"General\", \"ChunkLoadError\"],\n};\n","import { split } from \"@single-js/common/util/object\";\nimport { cva } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { allTextVariants, commonTypographyUtilityVariants, } from \"./typography-utility-variants\";\nimport \"./paragraph.scss\";\nexport const paragraphVariants = {\n ...commonTypographyUtilityVariants(),\n variant: {\n ...allTextVariants(),\n },\n};\nexport const paragraphVariantPropKeys = Object.keys(paragraphVariants);\nexport const paragraph = cva(\"sui-c-paragraph\", {\n variants: paragraphVariants,\n defaultVariants: {\n variant: \"body-1\",\n },\n});\nexport const Paragraph = React.forwardRef((props, forwardedRef) => {\n const { children, className, ...rest } = props;\n const [variantProps, elementProps] = split(rest, [\n ...paragraphVariantPropKeys,\n ]);\n const commonProps = {\n className: paragraph({ ...variantProps, class: className }),\n children,\n ...elementProps,\n };\n return React.createElement(\"p\", { ref: forwardedRef, ...commonProps });\n});\n","import classnames from \"classnames\";\nimport * as React from \"react\";\nimport { Icon } from \"../../components/icon/icon\";\nimport \"./checkbox.scss\";\nexport class Checkbox extends React.Component {\n render() {\n const { inputProps, className } = this.props;\n const { name } = inputProps;\n const classes = classnames(\"single-common-components-checkbox\", className);\n return (React.createElement(\"div\", { className: classes },\n React.createElement(\"input\", { className: \"checkbox-hidden\", type: \"checkbox\", id: name, ...inputProps }),\n React.createElement(\"div\", { className: \"checkbox-styled\" },\n React.createElement(Icon, { icon: \"check\", className: \"check-icon\", iconType: \"regular\", size: \"xs\" }))));\n }\n}\n","import { Icon } from \"@single-js/common/components/icon/icon\";\nimport { Tip } from \"@single-js/common/components/tip/tip\";\nimport { COLORS } from \"@single-js/common/sui/color-map\";\nimport classnames from \"classnames\";\nimport { formatClusterProfile } from \"data/models\";\nimport * as React from \"react\";\nimport \"./profile-icon.scss\";\nconst CLUSTER_PROFILE_COLORS = {\n PRODUCTION: COLORS[\"base-indigo-600\"],\n STAGING: COLORS[\"base-yellow-800\"],\n DEVELOPMENT: COLORS[\"base-purple-800\"],\n};\nconst CLUSTER_PROFILE_ICONS = {\n PRODUCTION: \"bolt\",\n STAGING: \"cogs\",\n DEVELOPMENT: \"flask\",\n};\nexport default class ClusterProfileIcon extends React.Component {\n render() {\n const { profile, description, className, size } = this.props;\n const color = (profile && CLUSTER_PROFILE_COLORS[profile]) ||\n COLORS[\"base-neutral-700\"];\n const icon = (profile && CLUSTER_PROFILE_ICONS[profile]) || \"question\";\n const classes = classnames(\"cluster-profile-icon\", size, className);\n let tooltipText;\n if (description) {\n tooltipText = (React.createElement(\"div\", { className: \"cluster-profile-tooltip-text\" },\n React.createElement(\"div\", { className: \"cluster-profile-tooltip-title\" }, formatClusterProfile(profile)),\n React.createElement(\"div\", { className: \"cluster-profile-tooltip-description\" }, description)));\n }\n else {\n tooltipText = formatClusterProfile(profile);\n }\n return (React.createElement(Tip, { direction: \"e\", tooltip: tooltipText, className: classes, wrapperProps: {\n style: {\n backgroundColor: color,\n },\n } },\n React.createElement(Icon, { className: \"icon\", size: size, icon: icon, fixedWidth: true })));\n }\n}\n","import classnames from \"classnames\";\nimport * as React from \"react\";\nimport \"./node-badge.scss\";\nconst NODE_BADGE_ABBREVIATED = {\n LEAF: \"LEAF\",\n AGGREGATOR: \"CA\",\n MASTER_AGGREGATOR: \"MA\",\n};\nconst NODE_BADGE_CLASS = {\n LEAF: \"leaf\",\n AGGREGATOR: \"aggregator\",\n MASTER_AGGREGATOR: \"master\",\n};\nexport default class NodeBadge extends React.Component {\n render() {\n const { count, role, classname } = this.props;\n const classes = classnames(\"node-badge\", NODE_BADGE_CLASS[role], classname);\n return (React.createElement(\"div\", { className: classes },\n count,\n \" \",\n NODE_BADGE_ABBREVIATED[role]));\n }\n}\n","import { renderLoadingError } from \"@single-js/common/components/render-loading-error/render-loading-error\";\nimport { FakeLinkCell } from \"@single-js/common/components/super-table/super-table\";\nimport NumberFormatter from \"@single-js/common/util/number-formatter\";\nimport { LONG_EM_DASH } from \"@single-js/common/util/symbols\";\nimport { formatHostMemory, getHostDiskUsage, getHostMemoryUsage, } from \"data/models\";\nimport * as React from \"react\";\nimport NodeBadge from \"view/common/node-badge\";\nimport { IconTip } from \"view/common/overrides/icon-tip\";\nimport { RatioMetricCell } from \"view/common/ratio-metric-cell\";\nimport \"./columns-info.scss\";\nconst HOSTS_ADDRESS_COLUMN = {\n id: \"hostAddress\",\n title: \"Host Address\",\n formatter: (host) => (React.createElement(FakeLinkCell, null, host.address)),\n getValue: (host) => host.address,\n};\nconst HOSTS_NODES_COLUMN = {\n id: \"hostNodes\",\n title: \"Nodes\",\n formatter: (host) => {\n let numLeaves = 0;\n let numChildAggs = 0;\n let numMasterAggs = 0;\n for (let i = 0; i < host.nodes.length; i++) {\n if (host.nodes[i].role === \"LEAF\") {\n numLeaves++;\n }\n else if (host.nodes[i].role === \"AGGREGATOR\") {\n numChildAggs++;\n }\n else if (host.nodes[i].role === \"MASTER_AGGREGATOR\") {\n numMasterAggs++;\n }\n }\n let leavesNode;\n let childAggsNode;\n let masterAggsNode;\n if (numLeaves > 0) {\n leavesNode = (React.createElement(NodeBadge, { count: numLeaves, role: \"LEAF\", classname: \"badge\" }));\n }\n if (numChildAggs > 0) {\n childAggsNode = (React.createElement(NodeBadge, { count: numChildAggs, role: \"AGGREGATOR\", classname: \"badge\" }));\n }\n if (numMasterAggs > 0) {\n masterAggsNode = (React.createElement(NodeBadge, { count: numMasterAggs, role: \"MASTER_AGGREGATOR\", classname: \"badge\" }));\n }\n return (React.createElement(\"div\", { className: \"node-badges-cell\" },\n masterAggsNode,\n childAggsNode,\n leavesNode));\n },\n getValue: (host) => {\n let maxNode = -1;\n for (let i = 0; i < host.nodes.length; i++) {\n if (host.nodes[i].role === \"MASTER_AGGREGATOR\") {\n return 2;\n }\n else if (host.nodes[i].role === \"AGGREGATOR\" && maxNode < 1) {\n maxNode = 1;\n }\n else if (host.nodes[i].role === \"LEAF\" && maxNode < 0) {\n maxNode = 0;\n }\n }\n return maxNode;\n },\n};\nconst HOSTS_CPU_COUNT_COLUMN = {\n id: \"hostCpuCount\",\n title: \"CPU Cores\",\n formatter: (host) => host.cpuCount ? host.cpuCount.toNumber() : LONG_EM_DASH,\n getValue: (host) => {\n if (host.cpuCount === undefined) {\n return Number.NEGATIVE_INFINITY;\n }\n else {\n return host.cpuCount.toNumber(); // PLAT-3189\n }\n },\n};\nconst HOSTS_CPU_USAGE_COLUMN = {\n id: \"hostTotalCpuUsage\",\n title: \"Host CPU Usage\",\n sort: \"DISABLED\",\n formatter: (host) => {\n const renderHostCpuUsage = (cpuUsage) => (React.createElement(RatioMetricCell, { labelPosition: \"top\", value: cpuUsage }));\n return renderLoadingError(host.liveMonitoring.totalCpuUsagePercentRate, renderHostCpuUsage, { cell: true });\n },\n getValue: (host) => {\n // If loading, return undefined. If error, return null.\n if (host.liveMonitoring.totalCpuUsagePercentRate.isSuccess()) {\n return host.liveMonitoring.totalCpuUsagePercentRate.value;\n }\n else if (host.liveMonitoring.totalCpuUsagePercentRate.isLoading()) {\n return undefined;\n }\n else {\n return null;\n }\n },\n};\nconst HOSTS_MEMORY_COLUMN = {\n id: \"hostMemory\",\n title: \"System Memory\",\n formatter: formatHostMemory,\n getValue: (host) => {\n if (host.systemMemoryB === undefined) {\n return Number.NEGATIVE_INFINITY;\n }\n else {\n return host.systemMemoryB.toNumber(); // PLAT-3189\n }\n },\n};\nconst HOSTS_MEMORY_USAGE_COLUMN = {\n id: \"hostSystemMemoryUsage\",\n title: (React.createElement(\"div\", null,\n \"Host Memory Usage\",\n React.createElement(IconTip, { link: {\n name: \"memory-management-maximum-memory\",\n category: \"hosts\",\n }, iconProps: { leftMargin: true } }, \"The total value in this column corresponds to the total host memory, of which a percentage is reserved buffer and not usable by SingleStore DB.\"))),\n sort: \"DISABLED\",\n formatter: (host) => {\n const renderHostMemoryUsage = ({ ratio, used, total, }) => {\n const bottomLabel = `${NumberFormatter.formatBytes(used)}/${NumberFormatter.formatBytes(total)}`;\n return (React.createElement(RatioMetricCell, { labelPosition: \"top\", value: ratio, bottomLabel: bottomLabel }));\n };\n return renderLoadingError(getHostMemoryUsage(host), renderHostMemoryUsage, { cell: true });\n },\n getValue: (host) => {\n const { liveMonitoring: { systemUsedMemoryB, systemTotalMemoryB }, } = host;\n if (!systemUsedMemoryB.isLoading() &&\n !systemUsedMemoryB.isError() &&\n !systemTotalMemoryB.isLoading() &&\n !systemTotalMemoryB.isError() &&\n !systemTotalMemoryB.value.isZero()) {\n return systemUsedMemoryB.value\n .dividedBy(systemTotalMemoryB.value)\n .toNumber();\n }\n },\n};\nexport const HOST_DISK_USAGE_TIP = \"Host disk usage displays the used and available disk space aggregated across all mount points being used by all SingleStore DB nodes on this host\";\nconst HOSTS_DISK_USAGE_COLUMN = {\n id: \"hostSystemDiskUsage\",\n title: \"SingleStore DB Disk Usage\",\n sort: \"DISABLED\",\n description: HOST_DISK_USAGE_TIP,\n formatter: (host) => {\n const renderHostDiskUsage = ({ used, total, ratio, }) => {\n const bottomLabel = `${NumberFormatter.formatBytes(used)}/${NumberFormatter.formatBytes(total)}`;\n return (React.createElement(RatioMetricCell, { labelPosition: \"top\", value: ratio, bottomLabel: bottomLabel }));\n };\n return renderLoadingError(getHostDiskUsage(host), renderHostDiskUsage, {\n cell: true,\n });\n },\n getValue: (host) => {\n const { liveMonitoring: { systemUsedDiskB, systemTotalDiskB }, } = host;\n if (!systemUsedDiskB.isLoading() &&\n !systemUsedDiskB.isError() &&\n !systemTotalDiskB.isLoading() &&\n !systemTotalDiskB.isError() &&\n !systemTotalDiskB.value.isZero()) {\n return systemUsedDiskB.value\n .dividedBy(systemTotalDiskB.value)\n .toNumber();\n }\n },\n};\nexport function getHostsColumns(physicalMonitoringEnabled) {\n if (physicalMonitoringEnabled) {\n return [\n HOSTS_ADDRESS_COLUMN,\n HOSTS_NODES_COLUMN,\n HOSTS_CPU_COUNT_COLUMN,\n HOSTS_CPU_USAGE_COLUMN,\n HOSTS_MEMORY_USAGE_COLUMN,\n HOSTS_DISK_USAGE_COLUMN,\n ];\n }\n else {\n return [\n HOSTS_ADDRESS_COLUMN,\n HOSTS_NODES_COLUMN,\n HOSTS_CPU_COUNT_COLUMN,\n HOSTS_MEMORY_COLUMN,\n ];\n }\n}\nexport const ALL_HOSTS_COLUMNS = [\n HOSTS_ADDRESS_COLUMN,\n HOSTS_NODES_COLUMN,\n HOSTS_CPU_USAGE_COLUMN,\n HOSTS_CPU_COUNT_COLUMN,\n HOSTS_MEMORY_COLUMN,\n HOSTS_DISK_USAGE_COLUMN,\n];\n","import { LEError, LELoading, LESuccess, updateLoadingError, } from \"@single-js/common/util/loading-error\";\nimport { multiSelect, select } from \"@single-js/common/util/query\";\nimport { buildHostsAction } from \"data/actions/hosts\";\nimport { getLoadingHostLiveMonitoringMetrics, } from \"data/models\";\nimport _ from \"lodash\";\nimport { from, merge, of } from \"rxjs\";\nimport { logError } from \"util/logging\";\nimport * as logging from \"util/logging\";\nimport { makeActionCreator } from \"worker/api/helpers\";\nimport { SQL_HOSTS_LIVE_CPU, SQL_HOSTS_LIVE_DISK, SQL_HOSTS_LIVE_MEMORY, SQL_HOSTS_LIVE_NETWORK_CUMULATIVE, SQL_HOSTS_PHYSICAL_MONITORING_ENABLED, SQL_HOSTS_QUERY, SQL_NODES_LIVE_DISK_CUMULATIVE, } from \"worker/api/hosts-queries\";\nconst SECOND_IN_NANOSECONDS = 1000000000;\nexport function buildHostsPayload(rawHosts) {\n const hosts = _.map(rawHosts, (rawHost) => ({\n address: rawHost.address,\n cpuCount: rawHost.cpuCount === null ? undefined : rawHost.cpuCount,\n systemMemoryB: rawHost.systemMemoryMib === null\n ? undefined\n : rawHost.systemMemoryMib.multipliedBy(1024 * 1024),\n liveMonitoring: getLoadingHostLiveMonitoringMetrics(),\n }));\n return hosts;\n}\nexport const fetchHostsData = (conn) => {\n return select(conn, SQL_HOSTS_QUERY);\n};\nexport const queryHosts = makeActionCreator({\n name: \"queryHosts\",\n handle: (ctx) => {\n const $loading = of({\n type: \"HOSTS\",\n error: false,\n payload: { loading: true },\n });\n const $compute = from(ctx.manager\n .getPooledConnection()\n .then((conn) => fetchHostsData(conn)\n .then(buildHostsPayload)\n .then((hosts) => buildHostsAction({ hosts }))\n .catch((err) => {\n logError(err);\n return {\n type: \"HOSTS\",\n error: true,\n payload: err.message,\n };\n })\n .finally(() => conn.release()))\n .catch((err) => {\n return {\n type: \"HOSTS\",\n error: true,\n payload: err.message,\n };\n }));\n return merge($loading, $compute);\n },\n});\nfunction buildHostsLiveMonitoringAction({ results: { sqlHostsLiveCPU, sqlHostsLiveMemory, sqlHostsLiveDisk, sqlHostsLiveNetworkCumulative, sqlNodesLiveDiskCumulative, }, previousResults, }) {\n const payload = {};\n // This function updates the payload for a given host IP address.\n function updatePayload(hostAddress, newPartialPayload) {\n payload[hostAddress] = {\n ...payload[hostAddress],\n ...newPartialPayload,\n };\n }\n // Add CPU Usage to each host.\n _.forEach(sqlHostsLiveCPU, (sqlHostsLiveCPURow) => {\n let totalCpuUsagePercentRate = new LELoading();\n if (previousResults) {\n const previousSqlHostsLiveCPURow = _.find(previousResults.sqlHostsLiveCPU, (row) => row.hostIpAddress === sqlHostsLiveCPURow.hostIpAddress);\n if (previousSqlHostsLiveCPURow) {\n if (sqlHostsLiveCPURow.numCpus === null) {\n throw new Error(\"sqlNodesLiveCPURow.numCpus should not be null\");\n }\n if (sqlHostsLiveCPURow.numCpus.isZero()) {\n totalCpuUsagePercentRate = new LEError();\n }\n else {\n totalCpuUsagePercentRate = new LESuccess(sqlHostsLiveCPURow.totalUsedCumulativeNs\n .minus(previousSqlHostsLiveCPURow.totalUsedCumulativeNs)\n .dividedBy(sqlHostsLiveCPURow.timestampNs.minus(previousSqlHostsLiveCPURow.timestampNs))\n .dividedBy(sqlHostsLiveCPURow.numCpus)\n .toNumber());\n }\n }\n else {\n // If there are previous results, but not for this specific\n // host, we have an unknown CPU value.\n logging.log(\"error\", `Found no previous total CPU usage value for host ${sqlHostsLiveCPURow.hostIpAddress}.`);\n totalCpuUsagePercentRate = new LEError();\n }\n }\n updatePayload(sqlHostsLiveCPURow.hostIpAddress, {\n totalCpuUsagePercentRate,\n });\n });\n // Add used and total system memory to each host.\n _.forEach(sqlHostsLiveMemory, (sqlHostsLiveMemoryRow) => {\n updatePayload(sqlHostsLiveMemoryRow.hostIpAddress, {\n systemTotalMemoryB: new LESuccess(sqlHostsLiveMemoryRow.hostTotalMemoryB),\n systemUsedMemoryB: new LESuccess(sqlHostsLiveMemoryRow.hostUsedMemoryB),\n });\n });\n // Add network I/O values to each host.\n _.forEach(sqlHostsLiveNetworkCumulative, (currentNetworkRow) => {\n const { hostIpAddress } = currentNetworkRow;\n if (previousResults) {\n const previousNetworkRow = _.find(previousResults.sqlHostsLiveNetworkCumulative, (row) => row.hostIpAddress === hostIpAddress &&\n row.interfaceName === currentNetworkRow.interfaceName);\n if (previousNetworkRow) {\n if (currentNetworkRow.receivedCumulativeB === null) {\n throw new Error(\"currentNetworkRow.receivedCumulativeB should not be null\");\n }\n if (previousNetworkRow.receivedCumulativeB === null) {\n throw new Error(\"previousNetworkRow.receivedCumulativeB should not be null\");\n }\n if (currentNetworkRow.timestampNs === null) {\n throw new Error(\"currentNetworkRow.timestampNs should not be null\");\n }\n if (previousNetworkRow.timestampNs === null) {\n throw new Error(\"previousNetworkRow.timestampNs should not be null\");\n }\n if (currentNetworkRow.transmittedCumulativeB === null) {\n throw new Error(\"currentNetworkRow.transmittedCumulativeB should not be null\");\n }\n if (previousNetworkRow.transmittedCumulativeB === null) {\n throw new Error(\"previousNetworkRow.transmittedCumulativeB should not be null\");\n }\n // Calculate rate and convert from bytes/ns to bytes/s\n const receivedRate = currentNetworkRow.receivedCumulativeB\n .minus(previousNetworkRow.receivedCumulativeB)\n .dividedBy(currentNetworkRow.timestampNs.minus(previousNetworkRow.timestampNs))\n .multipliedBy(SECOND_IN_NANOSECONDS)\n .toNumber();\n // Calculate rate and convert from bytes/ns to bytes/s\n const transmittedRate = currentNetworkRow.transmittedCumulativeB\n .minus(previousNetworkRow.transmittedCumulativeB)\n .dividedBy(currentNetworkRow.timestampNs.minus(previousNetworkRow.timestampNs))\n .multipliedBy(SECOND_IN_NANOSECONDS)\n .toNumber();\n let netReceivedRateBpS = payload[hostIpAddress].netReceivedRateBpS;\n if (netReceivedRateBpS === undefined ||\n netReceivedRateBpS.isLoading()) {\n netReceivedRateBpS = new LESuccess(0);\n }\n netReceivedRateBpS = updateLoadingError(netReceivedRateBpS, (currentNetReceivedRate) => {\n return new LESuccess(currentNetReceivedRate + receivedRate);\n });\n let netTransmittedRateBpS = payload[hostIpAddress].netTransmittedRateBpS;\n if (netTransmittedRateBpS === undefined ||\n netTransmittedRateBpS.isLoading()) {\n netTransmittedRateBpS = new LESuccess(0);\n }\n netTransmittedRateBpS = updateLoadingError(netTransmittedRateBpS, (currentNetTransmittedRate) => {\n return new LESuccess(currentNetTransmittedRate + transmittedRate);\n });\n updatePayload(hostIpAddress, {\n netReceivedRateBpS,\n netTransmittedRateBpS,\n });\n }\n else {\n // If there are previous results, but not for this specific\n // pair, we have an unknown network I/O value.\n logging.log(\"error\", `Found no previous network value for host ${currentNetworkRow.hostIpAddress} on interface ${currentNetworkRow.interfaceName}.`);\n if (payload[hostIpAddress] !== undefined) {\n payload[hostIpAddress].netReceivedRateBpS = new LEError();\n payload[hostIpAddress].netTransmittedRateBpS = new LEError();\n }\n }\n }\n else {\n payload[hostIpAddress].netReceivedRateBpS = new LELoading();\n payload[hostIpAddress].netTransmittedRateBpS = new LELoading();\n }\n });\n // Add used and total system disk to each host.\n _.forEach(sqlHostsLiveDisk, (hostDiskInfo) => {\n if (hostDiskInfo.totalDiskB === null) {\n throw new Error(\"hostDiskInfo.totalDiskB should not be null\");\n }\n if (hostDiskInfo.usedDiskB === null) {\n throw new Error(\"hostDiskInfo.usedDiskB should not be null\");\n }\n updatePayload(hostDiskInfo.hostIpAddress, {\n systemTotalDiskB: new LESuccess(hostDiskInfo.totalDiskB),\n systemUsedDiskB: new LESuccess(hostDiskInfo.usedDiskB),\n });\n });\n // Add disk I/O rates to each host. The READ_CUMULATIVE_B and\n // WRITE_CUMULATIVE_B columns in MV_SYSINFO_DISK corresponds to how many\n // bytes have been read from disk across all mount points (not just the one\n // specified as MOUNT_POINT) per process (per MemSQL node). So, we simply\n // group by node and ignore mount points altogether.\n _.forEach(sqlNodesLiveDiskCumulative, (currentDiskCumulativeRow) => {\n const { hostIpAddress, port } = currentDiskCumulativeRow;\n if (previousResults) {\n const previousDiskCumulativeRow = _.find(previousResults.sqlNodesLiveDiskCumulative, (row) => row.hostIpAddress === hostIpAddress && row.port.eq(port));\n if (previousDiskCumulativeRow) {\n if (currentDiskCumulativeRow.readCumulativeB === null) {\n throw new Error(\"currentDiskCumulativeRow.readCumulativeB should not be null\");\n }\n if (currentDiskCumulativeRow.writeCumulativeB === null) {\n throw new Error(\"currentDiskCumulativeRow.writeCumulativeB should not be null\");\n }\n if (previousDiskCumulativeRow.readCumulativeB === null) {\n throw new Error(\"previousDiskCumulativeRow.readCumulativeB should not be null\");\n }\n if (previousDiskCumulativeRow.writeCumulativeB === null) {\n throw new Error(\"previousDiskCumulativeRow.writeCumulativeB should not be null\");\n }\n if (currentDiskCumulativeRow.timestampNs === null) {\n throw new Error(\"currentDiskCumulativeRow.timestampNs should not be null\");\n }\n if (previousDiskCumulativeRow.timestampNs === null) {\n throw new Error(\"previousDiskCumulativeRow.timestampNs should not be null\");\n }\n // Calculate rate and convert from bytes/ns to bytes/s\n const readRate = currentDiskCumulativeRow.readCumulativeB\n .minus(previousDiskCumulativeRow.readCumulativeB)\n .dividedBy(currentDiskCumulativeRow.timestampNs.minus(previousDiskCumulativeRow.timestampNs))\n .multipliedBy(SECOND_IN_NANOSECONDS)\n .toNumber();\n // Calculate rate and convert from bytes/ns to bytes/s\n const writeRate = currentDiskCumulativeRow.writeCumulativeB\n .minus(previousDiskCumulativeRow.writeCumulativeB)\n .dividedBy(currentDiskCumulativeRow.timestampNs.minus(previousDiskCumulativeRow.timestampNs))\n .multipliedBy(SECOND_IN_NANOSECONDS)\n .toNumber();\n let diskReadRateBpS = payload[hostIpAddress].diskReadRateBpS;\n if (diskReadRateBpS === undefined ||\n diskReadRateBpS.isLoading()) {\n diskReadRateBpS = new LESuccess(0);\n }\n diskReadRateBpS = updateLoadingError(diskReadRateBpS, (currentDiskReadRate) => {\n return new LESuccess(currentDiskReadRate + readRate);\n });\n let diskWriteRateBpS = payload[hostIpAddress].diskWriteRateBpS;\n if (diskWriteRateBpS === undefined ||\n diskWriteRateBpS.isLoading()) {\n diskWriteRateBpS = new LESuccess(0);\n }\n diskWriteRateBpS = updateLoadingError(diskWriteRateBpS, (currentDiskWriteRate) => {\n return new LESuccess(currentDiskWriteRate + writeRate);\n });\n updatePayload(hostIpAddress, {\n diskReadRateBpS,\n diskWriteRateBpS,\n });\n }\n else {\n // If there are previous results, but not for this specific\n // pair, we have an unknown disk I/O\n // value.\n logging.log(\"error\", `Found no previous cumulative disk usage for host ${currentDiskCumulativeRow.hostIpAddress} on port ${currentDiskCumulativeRow.port}.`);\n if (payload[hostIpAddress] !== undefined) {\n payload[hostIpAddress].diskReadRateBpS = new LEError();\n payload[hostIpAddress].diskWriteRateBpS = new LEError();\n }\n }\n }\n else {\n payload[hostIpAddress].diskReadRateBpS = new LELoading();\n payload[hostIpAddress].diskWriteRateBpS = new LELoading();\n }\n });\n return {\n type: \"HOSTS_LIVE_MONITORING\",\n error: false,\n payload,\n };\n}\nconst HOSTS_LIVE_MONITORING_SAGA_ID = \"hosts-live-monitoring\";\nconst HOSTS_LIVE_MONITORING_SAGA_INTERVAL_MS = 1000;\nexport const hostsLiveMonitoringStart = makeActionCreator({\n name: \"hostsLiveMonitoringStart\",\n handle(ctx) {\n return ctx.sagas.register(HOSTS_LIVE_MONITORING_SAGA_ID, (observer) => {\n let running = true;\n let timeoutId;\n const emit = (action) => running && observer.next(action);\n let previousResults;\n const liveMonitor = () => {\n return ctx.manager\n .getPooledConnection()\n .then((conn) => {\n multiSelect(conn, {\n sql: SQL_HOSTS_LIVE_CPU,\n }, {\n sql: SQL_HOSTS_LIVE_MEMORY,\n }, {\n sql: SQL_HOSTS_LIVE_NETWORK_CUMULATIVE,\n }, {\n sql: SQL_HOSTS_LIVE_DISK,\n }, {\n sql: SQL_NODES_LIVE_DISK_CUMULATIVE,\n })\n .then((results) => {\n const resultsObj = {\n sqlHostsLiveCPU: results[0],\n sqlHostsLiveMemory: results[1],\n sqlHostsLiveNetworkCumulative: results[2],\n sqlHostsLiveDisk: results[3],\n sqlNodesLiveDiskCumulative: results[4],\n };\n emit(buildHostsLiveMonitoringAction({\n previousResults,\n results: resultsObj,\n }));\n previousResults = resultsObj;\n })\n .catch((err) => {\n logError(err);\n emit({\n type: \"HOSTS_LIVE_MONITORING\",\n error: true,\n payload: err.message,\n });\n })\n .finally(() => {\n conn.release();\n });\n })\n .catch((err) => {\n emit({\n type: \"HOSTS_LIVE_MONITORING\",\n error: true,\n payload: err.message,\n });\n })\n .finally(() => {\n if (running) {\n timeoutId = setTimeout(liveMonitor, HOSTS_LIVE_MONITORING_SAGA_INTERVAL_MS);\n }\n });\n };\n liveMonitor();\n return () => {\n running = false;\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n };\n });\n },\n});\nexport const hostsLiveMonitoringStop = makeActionCreator({\n name: \"hostsLiveMonitoringStop\",\n handle(ctx) {\n ctx.sagas.stop(HOSTS_LIVE_MONITORING_SAGA_ID);\n return of({\n type: \"HOSTS_LIVE_MONITORING_STOP\",\n error: false,\n payload: {},\n });\n },\n});\nexport const isPhysicalMonitoringEnabled = makeActionCreator({\n name: \"isPhysicalMonitoringEnabled\",\n handle(ctx) {\n return ctx.manager\n .getPooledConnection()\n .then((conn) => select(conn, SQL_HOSTS_PHYSICAL_MONITORING_ENABLED)\n .then((rows) => {\n if (rows.length !== 1) {\n throw new Error(\"The Physical Monitoring Enabled query should only return one row\");\n }\n return {\n type: \"PHYSICAL_MONITORING_ENABLED\",\n error: false,\n payload: rows[0].isPhysicalMonitoringEnabled.gte(1),\n };\n })\n .catch((err) => {\n logError(err);\n return {\n type: \"PHYSICAL_MONITORING_ENABLED\",\n error: false,\n payload: false,\n };\n })\n .finally(() => conn.release()))\n .catch(() => {\n return {\n type: \"PHYSICAL_MONITORING_ENABLED\",\n error: false,\n payload: false,\n };\n });\n },\n});\n","export const SQL_HOSTS_QUERY = `\n SELECT\n IP_ADDR AS address,\n SYSTEM_CPU_COUNT AS cpuCount,\n SYSTEM_MEMORY_MB AS systemMemoryMib\n FROM\n INFORMATION_SCHEMA.MV_HOSTS_INFORMATION;\n`;\nexport const SQL_HOSTS_LIVE_CPU = `\n SELECT\n ANY_VALUE(totalUsedCumulativeNs) AS totalUsedCumulativeNs,\n ANY_VALUE(hostIpAddress) AS hostIpAddress,\n ANY_VALUE(timestampNs) AS timestampNs,\n ANY_VALUE(numCpus) AS numCpus\n FROM (\n SELECT\n FIRST_VALUE(TOTAL_USED_CUMULATIVE_NS) OVER w AS totalUsedCumulativeNs,\n IP_ADDR AS hostIpAddress,\n FIRST_VALUE(TIMESTAMP_NS) OVER w AS timestampNs,\n NUM_CPUS AS numCpus\n FROM\n INFORMATION_SCHEMA.MV_SYSINFO_CPU WINDOW w AS (PARTITION BY IP_ADDR ORDER BY TIMESTAMP_NS DESC)\n )\n GROUP BY\n hostIpAddress;\n`;\nexport const SQL_HOSTS_LIVE_MEMORY = `\n SELECT\n ANY_VALUE(hostIpAddress) AS hostIpAddress,\n ANY_VALUE(hostUsedMemoryB) AS hostUsedMemoryB,\n ANY_VALUE(hostTotalMemoryB) AS hostTotalMemoryB\n FROM (\n SELECT\n IP_ADDR AS hostIpAddress,\n FIRST_VALUE(HOST_USED_B) OVER w AS hostUsedMemoryB,\n FIRST_VALUE(HOST_TOTAL_B) OVER w AS hostTotalMemoryB\n FROM\n INFORMATION_SCHEMA.MV_SYSINFO_MEM WINDOW w AS (PARTITION BY IP_ADDR ORDER BY TIMESTAMP_NS DESC)\n )\n GROUP BY\n hostIpAddress\n`;\nexport const SQL_HOSTS_LIVE_NETWORK_CUMULATIVE = `\n SELECT\n ANY_VALUE(receivedCumulativeB) AS receivedCumulativeB,\n ANY_VALUE(transmittedCumulativeB) AS transmittedCumulativeB,\n ANY_VALUE(hostIpAddress) AS hostIpAddress,\n ANY_VALUE(timestampNs) AS timestampNs,\n ANY_VALUE(interfaceName) AS interfaceName\n FROM (\n SELECT\n FIRST_VALUE(RECEIVED_CUMULATIVE_B) OVER w AS receivedCumulativeB,\n FIRST_VALUE(TRANSMITTED_CUMULATIVE_B) OVER w AS transmittedCumulativeB,\n IP_ADDR AS hostIpAddress,\n INTERFACE AS interfaceName,\n FIRST_VALUE(TIMESTAMP_NS) OVER w AS timestampNs\n FROM\n INFORMATION_SCHEMA.MV_SYSINFO_NET WINDOW w AS (PARTITION BY IP_ADDR, INTERFACE ORDER BY TIMESTAMP_NS DESC)\n )\n GROUP BY\n hostIpAddress, interfaceName;\n`;\nexport const SQL_HOSTS_LIVE_DISK = `\n SELECT\n hostIpAddress,\n SUM(mountTotalB) AS totalDiskB,\n SUM(mountUsedB) AS usedDiskB\n FROM (\n SELECT\n ANY_VALUE(mountTotalB) AS mountTotalB,\n ANY_VALUE(mountUsedB) AS mountUsedB,\n hostIpAddress,\n mountPoint\n FROM (\n SELECT\n FIRST_VALUE(MOUNT_TOTAL_B) OVER w AS mountTotalB,\n FIRST_VALUE(MOUNT_USED_B) OVER w AS mountUsedB,\n IP_ADDR AS hostIpAddress,\n MOUNT_POINT AS mountPoint\n FROM\n INFORMATION_SCHEMA.MV_SYSINFO_DISK WINDOW w AS (PARTITION BY IP_ADDR, MOUNT_POINT ORDER BY TIMESTAMP_NS DESC)\n )\n GROUP BY\n mountPoint, hostIpAddress\n )\n GROUP BY\n hostIpAddress\n`;\n// The READ_CUMULATIVE_B and WRITE_CUMULATIVE_B columns in MV_SYSINFO_DISK\n// corresponds to how many bytes have been read from disk across all mount\n// points (not just the one specified as MOUNT_POINT) per process (per MemSQL\n// node). So, we simply group by node and ignore mount points altogether. Note\n// that we are still using window functions to make sure we're reading all the\n// data from the same row for each node.\nexport const SQL_NODES_LIVE_DISK_CUMULATIVE = `\n SELECT\n ANY_VALUE(readCumulativeB) AS readCumulativeB,\n ANY_VALUE(writeCumulativeB) AS writeCumulativeB,\n ANY_VALUE(hostIpAddress) AS hostIpAddress,\n ANY_VALUE(port) AS port,\n ANY_VALUE(timestampNs) AS timestampNs\n FROM (\n SELECT\n FIRST_VALUE(READ_CUMULATIVE_B) OVER w AS readCumulativeB,\n FIRST_VALUE(WRITE_CUMULATIVE_B) OVER w AS writeCumulativeB,\n IP_ADDR AS hostIpAddress,\n PORT AS port,\n FIRST_VALUE(TIMESTAMP_NS) OVER w AS timestampNs\n FROM\n INFORMATION_SCHEMA.MV_SYSINFO_DISK WINDOW w AS (PARTITION BY IP_ADDR, PORT ORDER BY TIMESTAMP_NS DESC)\n )\n GROUP BY\n hostIpAddress, port;\n`;\nexport const SQL_HOSTS_PHYSICAL_MONITORING_ENABLED = `\n SELECT\n COUNT(*) AS isPhysicalMonitoringEnabled\n FROM\n INFORMATION_SCHEMA.TABLES\n WHERE\n TABLE_NAME = 'MV_SYSINFO_CPU' AND\n TABLE_SCHEMA = 'information_schema';\n`;\n","import { servicesLocator } from \"../services/services-locator\";\nexport const defer = () => {\n const deferred = {\n promise: new Promise(() => { }),\n resolve: () => {\n servicesLocator\n .getLogger()\n .logError(new Error(\"Initial resolve called in deferred. This should not happen.\"));\n },\n reject: () => {\n servicesLocator\n .getLogger()\n .logError(new Error(\"Initial reject called in deferred. This should not happen.\"));\n },\n };\n deferred.promise = new Promise((resolve, reject) => {\n deferred.resolve = resolve;\n deferred.reject = reject;\n });\n return deferred;\n};\n","import { servicesLocator } from \"@single-js/common/services/services-locator\";\nimport EventEmitter from \"eventemitter3\";\nimport { fromEvent, merge, of } from \"rxjs\";\nimport { defer } from \"../../util/defer\";\nimport { select } from \"../../util/query\";\nconst SQL_KILL_QUERY = `KILL QUERY ?`;\nconst SQL_SET_SELECT_LIMIT = (limit) => `SET SESSION SQL_SELECT_LIMIT = ${limit}`;\nconst SQL_USE_DATABASE = \"USE ?\";\nconst TIME_RECONNECT_STATIC_CONNECTION = 5000; // 5s\nexport default class QueryExecutor extends EventEmitter {\n constructor(staticConnectionFactory, { initialQueryRowLimit, database, }) {\n super();\n this.handleMessage = (msg) => {\n let lastInGroup = this.queryQueue.length === 0;\n switch (msg.kind) {\n case \"state\":\n if (msg.state === \"IDLE\") {\n if (this.cancelled ||\n (this.queryErrored && this.onError === \"STOP\")) {\n this.cancelled = false;\n this.queryQueue = [];\n lastInGroup = true;\n if (this.currentQueryGroupDefer !== undefined) {\n this.currentQueryGroupDefer.resolve(false);\n this.currentQueryGroupDefer = undefined;\n }\n }\n if (lastInGroup) {\n // all done with this group\n // ready to run next group\n this.emitState(\"IDLE\");\n if (this.currentQueryGroupDefer !== undefined) {\n this.currentQueryGroupDefer.resolve(true);\n this.currentQueryGroupDefer = undefined;\n }\n }\n else if (this.queryErrored && this.onError === \"PAUSE\") {\n // last query failed, ask user to decide what to do\n this.emitState(\"PAUSED\");\n }\n else {\n // whenever the static connection becomes IDLE and we\n // have a next query in the current group to run, run it\n this.runNextQuery();\n }\n }\n else if (msg.state === \"TERMINATED\") {\n // unrecoverable error\n this.emitState(\"TERMINATED\", msg.error);\n this.connectStaticConnection({\n reconnect: true,\n perQueryRowLimit: this.currentPerQueryRowLimit,\n database: this.selectedDatabase,\n previousConnectError: msg.error,\n });\n }\n break;\n case \"resultSet\":\n case \"rows\":\n if (this.currentSilencedQuery) {\n throw new Error(\"Expected silent queries not to have resultSets or rows\");\n }\n this.emitMessage({\n kind: \"queryMessage\",\n queryMsg: msg,\n lastInGroup,\n meta: this.currentMeta,\n });\n break;\n case \"queryEnd\": {\n const silencedQuery = this.currentSilencedQuery;\n if (silencedQuery !== undefined) {\n this.currentSilencedQuery = undefined;\n if (this.queryQueue.length === 0 &&\n this.isInitializingQueryExecutorContext) {\n this.isInitializingQueryExecutorContext = false;\n }\n // We hope that silent queries don't fail. If they do fail,\n // which should be rare, we bail out of the current queue of\n // queries since we can't be sure what state we're in any\n // more. Then, we try to report the error as informatively\n // and as consistently with other errors as we can, which\n // means supplying a queryRun message that was previously\n // silenced.\n if (msg.status.state === \"error\") {\n this.queryQueue = [];\n this.emitMessage({\n kind: \"queryRun\",\n query: silencedQuery,\n meta: this.currentMeta,\n });\n this.emitMessage({\n kind: \"queryMessage\",\n queryMsg: msg,\n lastInGroup: true,\n meta: this.currentMeta,\n });\n }\n }\n else {\n this.emitMessage({\n kind: \"queryMessage\",\n queryMsg: msg,\n lastInGroup,\n meta: this.currentMeta,\n });\n }\n if (this.currentRowLimitDefer) {\n if (msg.status.state === \"error\") {\n this.currentRowLimitDefer.reject();\n }\n else {\n this.currentRowLimitDefer.resolve();\n }\n this.currentRowLimitDefer = undefined;\n }\n this.queryErrored = msg.status.state === \"error\";\n break;\n }\n case \"selectedDatabaseChanged\": {\n this.selectedDatabase = msg.database;\n this.emitMessage({\n kind: \"selectedDatabaseChanged\",\n database: msg.database,\n });\n break;\n }\n case \"perQueryRowLimitChanged\": {\n this.currentPerQueryRowLimit = msg.rowLimit;\n this.emitMessage({\n kind: \"perQueryRowLimitChanged\",\n rowLimit: msg.rowLimit,\n });\n }\n }\n };\n this.resetInternalState();\n this.defaultPerQueryRowLimit = initialQueryRowLimit;\n this.staticConnectionFactory = staticConnectionFactory;\n this.connectStaticConnection({\n reconnect: false,\n perQueryRowLimit: initialQueryRowLimit,\n database,\n });\n }\n connectStaticConnection({ reconnect, perQueryRowLimit, database, previousConnectError, }) {\n this.resetInternalState();\n if (reconnect) {\n this.emitState(\"RECONNECTING\", previousConnectError);\n }\n else {\n this.emitState(\"INITIAL_CONNECTING\");\n }\n this.emitMessage({\n kind: \"connectionClusterIdChanged\",\n clusterId: this.staticConnectionFactory.clusterId,\n });\n const reconnectingClusteriId = this.staticConnectionFactory.clusterId;\n const isClusterReconnectingStillSame = () => reconnectingClusteriId === this.staticConnectionFactory.clusterId;\n const tryConnect = () => {\n this.staticConnectionFactory\n .getConnection()\n .then((staticConnection) => {\n if (isClusterReconnectingStillSame()) {\n this.initialize(staticConnection, {\n perQueryRowLimit,\n database,\n });\n }\n })\n .catch((error) => {\n if (isClusterReconnectingStillSame()) {\n servicesLocator\n .getLogger()\n .log(\"error\", \"An error occurred while getting a static connection\" +\n \" from the static connection factory\", error);\n if (!reconnect && this.state === \"INITIAL_CONNECTING\") {\n let err;\n if (\"code\" in error) {\n err = {\n code: error.code,\n message: error.message,\n };\n }\n this.emitState(\"INITIAL_RECONNECTING\", err);\n }\n this.reconnectTimeoutId = setTimeout(() => {\n tryConnect();\n }, TIME_RECONNECT_STATIC_CONNECTION);\n }\n });\n };\n tryConnect();\n }\n resetInternalState() {\n this.queryQueue = [];\n this.queryErrored = false;\n this.currentSilencedQuery = undefined;\n this.cancelled = false;\n this.currentMeta = undefined;\n this.isInitializingQueryExecutorContext = false;\n this.selectedDatabase = undefined;\n this.currentPerQueryRowLimit = this.defaultPerQueryRowLimit;\n // We need to make sure we reset all these initialization configs.\n // They will be set again after the initial query group runs successfully\n this.emitMessage({\n kind: \"selectedDatabaseChanged\",\n database: this.selectedDatabase,\n });\n this.emitMessage({\n kind: \"perQueryRowLimitChanged\",\n rowLimit: this.currentPerQueryRowLimit,\n });\n }\n initialize(staticConnection, { perQueryRowLimit, database, }) {\n this.staticConnection = staticConnection;\n staticConnection.on(\"message\", this.handleMessage);\n if (perQueryRowLimit !== undefined || database !== undefined) {\n this.emitState(\"INITIALIZING\");\n this.runInitialQueryGroup(perQueryRowLimit, database);\n }\n else {\n this.emitState(\"IDLE\");\n }\n }\n resetOldConnection() {\n if (this.staticConnection) {\n // Cleans old connection and saves the connection factory for the new connection\n this.staticConnection.removeAllListeners();\n this.staticConnection.destroy();\n }\n if (this.reconnectTimeoutId) {\n clearTimeout(this.reconnectTimeoutId);\n }\n }\n equalsConnectionFactory(staticConnectionFactory) {\n return (this.staticConnectionFactory.clusterId ===\n staticConnectionFactory.clusterId);\n }\n changeConnectionTarget(staticConnectionFactory) {\n if (this.equalsConnectionFactory(staticConnectionFactory)) {\n // if the connection cluster target is the same, we don't want to reset the old connection and just\n // update the current static connection factory. We keep the existing connection on, but in case of\n // reconnect we want to use the most recent factory.\n this.staticConnectionFactory = staticConnectionFactory;\n }\n else {\n this.resetOldConnection();\n this.staticConnectionFactory = staticConnectionFactory;\n this.connectStaticConnection({\n reconnect: false,\n perQueryRowLimit: this.currentPerQueryRowLimit,\n database: this.selectedDatabase,\n });\n }\n }\n runInitialQueryGroup(rowLimit, database) {\n const initialQueryGroup = {\n queries: [],\n onError: \"SKIP\",\n meta: {\n kind: \"INIT_CONTEXT\",\n },\n };\n if (rowLimit !== undefined) {\n initialQueryGroup.queries.push(querySetRowLimit(rowLimit));\n }\n if (database !== undefined) {\n initialQueryGroup.queries.push(queryUseDatabase(database));\n }\n this.runQueryGroup(initialQueryGroup);\n }\n cancelUsing(connection) {\n this.cancelled = true;\n if (this.staticConnection) {\n return select(connection, SQL_KILL_QUERY, [\n this.staticConnection.connection.threadId,\n ]);\n }\n else {\n return Promise.resolve(true);\n }\n }\n close() {\n if (this.staticConnection) {\n this.staticConnection.close();\n }\n }\n setRowLimit(limit) {\n this.currentRowLimitDefer = defer();\n if (!this.staticConnection) {\n throw new Error(\"Expected static connection to exist when running query in group\");\n }\n if (this.staticConnection.state !== \"IDLE\") {\n throw new Error(\"Expected static connection to be idle when setting row limit\");\n }\n const query = querySetRowLimit(limit);\n this.currentSilencedQuery = query;\n this.staticConnection.runQuery(query);\n return this.currentRowLimitDefer.promise;\n }\n emitMessage(message) {\n // simple wrapper that is typechecked\n this.emit(\"message\", message);\n }\n emitState(state, error) {\n this.state = state;\n this.emitMessage({ kind: \"queryExecutorState\", state, error });\n }\n messageObservable() {\n const initConnectionState$ = of({\n kind: \"queryExecutorState\",\n state: this.state,\n });\n const initConnectionClusterId$ = of({\n kind: \"connectionClusterIdChanged\",\n clusterId: this.staticConnectionFactory.clusterId,\n });\n const info$ = fromEvent(this, \"message\");\n return merge(initConnectionState$, initConnectionClusterId$, info$);\n }\n runNextQuery() {\n if (!this.staticConnection) {\n throw new Error(\"Expected static connection to exist when running query in group\");\n }\n if (this.staticConnection.state !== \"IDLE\") {\n throw new Error(\"Expected static connection to be idle when running query in group\");\n }\n if (this.queryQueue.length <= 0) {\n throw new Error(\"Expected query queue to be nonempty\");\n }\n const [query, ...rest] = this.queryQueue;\n this.queryQueue = rest;\n if (this.isInitializingQueryExecutorContext) {\n this.currentSilencedQuery = query;\n }\n this.queryErrored = false;\n this.emitMessage({\n kind: \"queryRun\",\n query,\n meta: this.currentMeta,\n });\n this.staticConnection.runQuery(query);\n }\n initQueryGroupContext(perRowLimit) {\n if (this.currentPerQueryRowLimit) {\n this.previousContext = {\n perRowLimit: this.currentPerQueryRowLimit,\n };\n }\n return this.setRowLimit(perRowLimit);\n }\n resetQueryGroupContext() {\n if (this.previousContext && this.previousContext.perRowLimit) {\n this.setRowLimit(this.previousContext.perRowLimit);\n this.previousContext = undefined;\n }\n }\n runQueryGroup(group) {\n const runAsyncQueryGroup = () => {\n if (this.state === \"ACTIVE\" ||\n (this.state === \"INITIALIZING\" &&\n this.isInitializingQueryExecutorContext)) {\n // can't run a query group while another one is in progress\n return Promise.resolve(false);\n }\n if (group.meta && group.meta.kind === \"INIT_CONTEXT\") {\n this.isInitializingQueryExecutorContext = true;\n }\n const { queries, onError, meta } = group;\n if (queries.length === 0) {\n // nothing to do\n return Promise.resolve(true);\n }\n if (!this.isInitializingQueryExecutorContext) {\n this.emitState(\"ACTIVE\");\n }\n this.queryQueue = queries;\n this.onError = onError;\n this.queryErrored = false;\n this.cancelled = false;\n this.currentMeta = meta;\n this.runNextQuery();\n this.currentQueryGroupDefer = defer();\n return this.currentQueryGroupDefer.promise;\n };\n if (group.context && group.context.perRowLimit) {\n this.initQueryGroupContext(group.context.perRowLimit)\n .then(() => runAsyncQueryGroup())\n .finally(() => this.resetQueryGroupContext());\n }\n else {\n runAsyncQueryGroup();\n }\n }\n continueQueryGroup(skipErrors) {\n if (this.state !== \"PAUSED\") {\n throw new Error(\"Expected state to be paused\");\n }\n this.onError = skipErrors ? \"SKIP\" : \"PAUSE\";\n this.emitState(\"ACTIVE\");\n this.runNextQuery();\n }\n stopQueryGroup() {\n if (this.state !== \"PAUSED\") {\n throw new Error(\"Expected state to be paused\");\n }\n this.queryQueue = [];\n this.queryErrored = false;\n this.emitState(\"IDLE\");\n }\n}\nconst querySetRowLimit = (limit) => {\n return {\n text: SQL_SET_SELECT_LIMIT(limit),\n values: [],\n };\n};\nconst queryUseDatabase = (database) => {\n return {\n text: SQL_USE_DATABASE,\n values: [database],\n };\n};\nexport const createSelectDatabaseQueryGroupRepr = (database) => ({\n queries: [queryUseDatabase(database)],\n onError: \"STOP\",\n meta: {\n kind: \"SELECT_DATABASE\",\n internal: true,\n },\n});\nexport const createPerQueryRowLimitSelectQueryGroupRepr = (rowLimit) => ({\n queries: [querySetRowLimit(rowLimit)],\n onError: \"STOP\",\n meta: {\n kind: \"SELECT_ROW_LIMIT\",\n internal: true,\n },\n});\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.github.io/ecma262/#sec-isarray\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\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","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name)) {\n if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name];\n else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // Chrome 38 Symbol has incorrect toString conversion\n // eslint-disable-next-line no-undef\n return !String(Symbol());\n});\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","import differenceInMilliseconds from '../differenceInMilliseconds/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name differenceInSeconds\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of seconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * var result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\n\nexport default function differenceInSeconds(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) / 1000;\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff);\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of milliseconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * var result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\n\nexport default function differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getTime() - dateRight.getTime();\n}","let Types = require(\"../constants/types\");\n\nmodule.exports = Field;\nfunction Field(options) {\n options = options || {};\n\n this.parser = options.parser;\n this.packet = options.packet;\n this.db = options.packet.db;\n this.table = options.packet.table;\n this.name = options.packet.name;\n this.type = typeToString(options.packet.type);\n this.length = options.packet.length;\n}\n\nField.prototype._id = \"Field\";\n\nField.prototype.string = function () {\n return this.parser.parseLengthCodedString();\n};\n\nField.prototype.buffer = function () {\n return this.parser.parseLengthCodedBuffer();\n};\n\nField.prototype.geometry = function () {\n return this.parser.parseGeometryValue();\n};\n\nfunction typeToString(t) {\n for (let k in Types) {\n if (Types[k] === t) {\n return k;\n }\n }\n\n return undefined;\n}\n","let Buffer = require(\"buffer\").Buffer;\nlet Crypto = require(\"crypto\");\nlet Auth = exports;\n\nlet NonLoggableError = require(\"../../../util/logging\").NonLoggableError;\n\nfunction auth(authMethodName, data, options) {\n options = options || {};\n\n switch (authMethodName) {\n case \"mysql_native_password\":\n // mysql_native_password only need first 20 bytes scramble.\n return Promise.resolve(\n Auth.token(options.password, data.slice(0, 20))\n );\n\n case \"mysql_clear_password\":\n return Promise.resolve(new Buffer(options.password || \"\"));\n\n case \"auth_gssapi_client\":\n return fetch(`${options.baseUrl}api/kerberos-authentication`, {\n method: \"GET\",\n })\n .then((response) => {\n if (response.ok) {\n return response.text();\n } else {\n throw new NonLoggableError(\n `${response.status}: ${response.statusText}`\n );\n }\n })\n .then((token) => new Buffer(atob(token), \"binary\"));\n\n default:\n return undefined;\n }\n}\nAuth.auth = auth;\n\nfunction sha1(msg) {\n let hash = Crypto.createHash(\"sha1\");\n hash.update(msg, \"binary\");\n return hash.digest(\"binary\");\n}\nAuth.sha1 = sha1;\n\nfunction xor(a, b) {\n a = new Buffer(a, \"binary\");\n b = new Buffer(b, \"binary\");\n let result = new Buffer(a.length);\n for (let i = 0; i < a.length; i++) {\n result[i] = a[i] ^ b[i];\n }\n return result;\n}\nAuth.xor = xor;\n\nAuth.token = function (password, scramble) {\n if (!password) {\n return new Buffer(0);\n }\n\n // password must be in binary format, not utf8\n let stage1 = sha1(new Buffer(password, \"utf8\").toString(\"binary\"));\n let stage2 = sha1(stage1);\n let stage3 = sha1(scramble.toString(\"binary\") + stage2);\n return xor(stage3, stage1);\n};\n\n// This is a port of sql/password.c:hash_password which needs to be used for\n// pre-4.1 passwords.\nAuth.hashPassword = function (password) {\n let nr = [0x5030, 0x5735],\n add = 7,\n nr2 = [0x1234, 0x5671],\n result = new Buffer(8);\n\n if (typeof password === \"string\") {\n password = new Buffer(password);\n }\n\n for (let i = 0; i < password.length; i++) {\n let c = password[i];\n if (c === 32 || c === 9) {\n // skip space in password\n continue;\n }\n\n // nr^= (((nr & 63)+add)*c)+ (nr << 8);\n // nr = xor(nr, add(mul(add(and(nr, 63), add), c), shl(nr, 8)))\n nr = this.xor32(\n nr,\n this.add32(\n this.mul32(this.add32(this.and32(nr, [0, 63]), [0, add]), [\n 0,\n c,\n ]),\n this.shl32(nr, 8)\n )\n );\n\n // nr2+=(nr2 << 8) ^ nr;\n // nr2 = add(nr2, xor(shl(nr2, 8), nr))\n nr2 = this.add32(nr2, this.xor32(this.shl32(nr2, 8), nr));\n\n // add+=tmp;\n add += c;\n }\n\n this.int31Write(result, nr, 0);\n this.int31Write(result, nr2, 4);\n\n return result;\n};\n\nAuth.randomInit = function (seed1, seed2) {\n return {\n max_value: 0x3fffffff,\n max_value_dbl: 0x3fffffff,\n seed1: seed1 % 0x3fffffff,\n seed2: seed2 % 0x3fffffff,\n };\n};\n\nAuth.myRnd = function (r) {\n r.seed1 = (r.seed1 * 3 + r.seed2) % r.max_value;\n r.seed2 = (r.seed1 + r.seed2 + 33) % r.max_value;\n\n return r.seed1 / r.max_value_dbl;\n};\n\nAuth.scramble323 = function (message, password) {\n let to = new Buffer(8),\n hashPass = this.hashPassword(password),\n hashMessage = this.hashPassword(message.slice(0, 8)),\n seed1 = this.int32Read(hashPass, 0) ^ this.int32Read(hashMessage, 0),\n seed2 = this.int32Read(hashPass, 4) ^ this.int32Read(hashMessage, 4),\n r = this.randomInit(seed1, seed2);\n\n for (let i = 0; i < 8; i++) {\n to[i] = Math.floor(this.myRnd(r) * 31) + 64;\n }\n let extra = Math.floor(this.myRnd(r) * 31);\n\n for (let i = 0; i < 8; i++) {\n to[i] ^= extra;\n }\n\n return to;\n};\n\nAuth.xor32 = function (a, b) {\n return [a[0] ^ b[0], a[1] ^ b[1]];\n};\n\nAuth.add32 = function (a, b) {\n let w1 = a[1] + b[1],\n w2 = a[0] + b[0] + ((w1 & 0xffff0000) >> 16);\n\n return [w2 & 0xffff, w1 & 0xffff];\n};\n\nAuth.mul32 = function (a, b) {\n // based on this example of multiplying 32b ints using 16b\n // http://www.dsprelated.com/showmessage/89790/1.php\n let w1 = a[1] * b[1],\n w2 =\n (((a[1] * b[1]) >> 16) & 0xffff) +\n ((a[0] * b[1]) & 0xffff) +\n ((a[1] * b[0]) & 0xffff);\n\n return [w2 & 0xffff, w1 & 0xffff];\n};\n\nAuth.and32 = function (a, b) {\n return [a[0] & b[0], a[1] & b[1]];\n};\n\nAuth.shl32 = function (a, b) {\n // assume b is 16 or less\n let w1 = a[1] << b,\n w2 = (a[0] << b) | ((w1 & 0xffff0000) >> 16);\n\n return [w2 & 0xffff, w1 & 0xffff];\n};\n\nAuth.int31Write = function (buffer, number, offset) {\n buffer[offset] = (number[0] >> 8) & 0x7f;\n buffer[offset + 1] = number[0] & 0xff;\n buffer[offset + 2] = (number[1] >> 8) & 0xff;\n buffer[offset + 3] = number[1] & 0xff;\n};\n\nAuth.int32Read = function (buffer, offset) {\n return (\n (buffer[offset] << 24) +\n (buffer[offset + 1] << 16) +\n (buffer[offset + 2] << 8) +\n buffer[offset + 3]\n );\n};\n","'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('readable-stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer')\n }\n}\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// 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 permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nmodule.exports = Readable;\n/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}","module.exports = require('events').EventEmitter;\n","'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// 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 permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// 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 permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n","var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// 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 permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Readable;\n\n/**/\nvar isArray = require('isarray');\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n pna.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = { hasUnpiped: false };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, unpipeInfo);\n }return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this, unpipeInfo);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n pna.nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n pna.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._readableState.highWaterMark;\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n pna.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","module.exports = require('events').EventEmitter;\n","'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {\n pna.nextTick(emitErrorNT, this, err);\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n pna.nextTick(emitErrorNT, _this, err);\n if (_this._writableState) {\n _this._writableState.errorEmitted = true;\n }\n } else if (cb) {\n cb(err);\n }\n });\n\n return this;\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// 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 permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n\n cb(er);\n\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function') {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n _this2.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\n}","'use strict'\nvar inherits = require('inherits')\nvar Legacy = require('./legacy')\nvar Base = require('cipher-base')\nvar Buffer = require('safe-buffer').Buffer\nvar md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\n\nvar sha = require('sha.js')\n\nvar ZEROS = Buffer.alloc(128)\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n this._alg = alg\n this._key = key\n if (key.length > blocksize) {\n var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n key = hash.update(key).digest()\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n this._hash.update(ipad)\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._hash.digest()\n var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)\n return hash.update(this._opad).update(h).digest()\n}\n\nmodule.exports = function createHmac (alg, key) {\n alg = alg.toLowerCase()\n if (alg === 'rmd160' || alg === 'ripemd160') {\n return new Hmac('rmd160', key)\n }\n if (alg === 'md5') {\n return new Legacy(md5, key)\n }\n return new Hmac(alg, key)\n}\n","var MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest()\n}\n","exports.pbkdf2 = require('./lib/async')\nexports.pbkdf2Sync = require('./lib/sync')\n","var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\n\nmodule.exports = function (iterations, keylen) {\n if (typeof iterations !== 'number') {\n throw new TypeError('Iterations not a number')\n }\n\n if (iterations < 0) {\n throw new TypeError('Bad iterations')\n }\n\n if (typeof keylen !== 'number') {\n throw new TypeError('Key length not a number')\n }\n\n if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */\n throw new TypeError('Bad key length')\n }\n}\n","var defaultEncoding\n/* istanbul ignore next */\nif (global.process && global.process.browser) {\n defaultEncoding = 'utf-8'\n} else if (global.process && global.process.version) {\n var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)\n\n defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'\n} else {\n defaultEncoding = 'utf-8'\n}\nmodule.exports = defaultEncoding\n","var md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar toBuffer = require('./to-buffer')\n\nvar ZEROS = Buffer.alloc(128)\nvar sizes = {\n md5: 16,\n sha1: 20,\n sha224: 28,\n sha256: 32,\n sha384: 48,\n sha512: 64,\n rmd160: 20,\n ripemd160: 20\n}\n\nfunction Hmac (alg, key, saltLen) {\n var hash = getDigest(alg)\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n if (key.length > blocksize) {\n key = hash(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])\n var opad = Buffer.allocUnsafe(blocksize + sizes[alg])\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)\n ipad.copy(ipad1, 0, 0, blocksize)\n this.ipad1 = ipad1\n this.ipad2 = ipad\n this.opad = opad\n this.alg = alg\n this.blocksize = blocksize\n this.hash = hash\n this.size = sizes[alg]\n}\n\nHmac.prototype.run = function (data, ipad) {\n data.copy(ipad, this.blocksize)\n var h = this.hash(ipad)\n h.copy(this.opad, this.blocksize)\n return this.hash(this.opad)\n}\n\nfunction getDigest (alg) {\n function shaFunc (data) {\n return sha(alg).update(data).digest()\n }\n function rmd160Func (data) {\n return new RIPEMD160().update(data).digest()\n }\n\n if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func\n if (alg === 'md5') return md5\n return shaFunc\n}\n\nfunction pbkdf2 (password, salt, iterations, keylen, digest) {\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n\n digest = digest || 'sha1'\n\n var hmac = new Hmac(digest, password, salt.length)\n\n var DK = Buffer.allocUnsafe(keylen)\n var block1 = Buffer.allocUnsafe(salt.length + 4)\n salt.copy(block1, 0, 0, salt.length)\n\n var destPos = 0\n var hLen = sizes[digest]\n var l = Math.ceil(keylen / hLen)\n\n for (var i = 1; i <= l; i++) {\n block1.writeUInt32BE(i, salt.length)\n\n var T = hmac.run(block1, hmac.ipad1)\n var U = T\n\n for (var j = 1; j < iterations; j++) {\n U = hmac.run(U, hmac.ipad2)\n for (var k = 0; k < hLen; k++) T[k] ^= U[k]\n }\n\n T.copy(DK, destPos)\n destPos += hLen\n }\n\n return DK\n}\n\nmodule.exports = pbkdf2\n","var Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (thing, encoding, name) {\n if (Buffer.isBuffer(thing)) {\n return thing\n } else if (typeof thing === 'string') {\n return Buffer.from(thing, encoding)\n } else if (ArrayBuffer.isView(thing)) {\n return Buffer.from(thing.buffer)\n } else {\n throw new TypeError(name + ' must be a string, a Buffer, a typed array or a DataView')\n }\n}\n","'use strict';\n\nexports.readUInt32BE = function readUInt32BE(bytes, off) {\n var res = (bytes[0 + off] << 24) |\n (bytes[1 + off] << 16) |\n (bytes[2 + off] << 8) |\n bytes[3 + off];\n return res >>> 0;\n};\n\nexports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {\n bytes[0 + off] = value >>> 24;\n bytes[1 + off] = (value >>> 16) & 0xff;\n bytes[2 + off] = (value >>> 8) & 0xff;\n bytes[3 + off] = value & 0xff;\n};\n\nexports.ip = function ip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n }\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.rip = function rip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 0; i < 4; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n for (var i = 4; i < 8; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.pc1 = function pc1(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n // 7, 15, 23, 31, 39, 47, 55, 63\n // 6, 14, 22, 30, 39, 47, 55, 63\n // 5, 13, 21, 29, 39, 47, 55, 63\n // 4, 12, 20, 28\n for (var i = 7; i >= 5; i--) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n\n // 1, 9, 17, 25, 33, 41, 49, 57\n // 2, 10, 18, 26, 34, 42, 50, 58\n // 3, 11, 19, 27, 35, 43, 51, 59\n // 36, 44, 52, 60\n for (var i = 1; i <= 3; i++) {\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.r28shl = function r28shl(num, shift) {\n return ((num << shift) & 0xfffffff) | (num >>> (28 - shift));\n};\n\nvar pc2table = [\n // inL => outL\n 14, 11, 17, 4, 27, 23, 25, 0,\n 13, 22, 7, 18, 5, 9, 16, 24,\n 2, 20, 12, 21, 1, 8, 15, 26,\n\n // inR => outR\n 15, 4, 25, 19, 9, 1, 26, 16,\n 5, 11, 23, 8, 12, 7, 17, 0,\n 22, 3, 10, 14, 6, 20, 27, 24\n];\n\nexports.pc2 = function pc2(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n var len = pc2table.length >>> 1;\n for (var i = 0; i < len; i++) {\n outL <<= 1;\n outL |= (inL >>> pc2table[i]) & 0x1;\n }\n for (var i = len; i < pc2table.length; i++) {\n outR <<= 1;\n outR |= (inR >>> pc2table[i]) & 0x1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.expand = function expand(r, out, off) {\n var outL = 0;\n var outR = 0;\n\n outL = ((r & 1) << 5) | (r >>> 27);\n for (var i = 23; i >= 15; i -= 4) {\n outL <<= 6;\n outL |= (r >>> i) & 0x3f;\n }\n for (var i = 11; i >= 3; i -= 4) {\n outR |= (r >>> i) & 0x3f;\n outR <<= 6;\n }\n outR |= ((r & 0x1f) << 1) | (r >>> 31);\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nvar sTable = [\n 14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,\n 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,\n 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,\n 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13,\n\n 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,\n 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,\n 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,\n 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9,\n\n 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,\n 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,\n 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,\n 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12,\n\n 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,\n 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,\n 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,\n 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14,\n\n 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,\n 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,\n 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,\n 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3,\n\n 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,\n 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,\n 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,\n 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13,\n\n 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,\n 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,\n 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,\n 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12,\n\n 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,\n 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,\n 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,\n 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11\n];\n\nexports.substitute = function substitute(inL, inR) {\n var out = 0;\n for (var i = 0; i < 4; i++) {\n var b = (inL >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n for (var i = 0; i < 4; i++) {\n var b = (inR >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[4 * 0x40 + i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n return out >>> 0;\n};\n\nvar permuteTable = [\n 16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22,\n 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7\n];\n\nexports.permute = function permute(num) {\n var out = 0;\n for (var i = 0; i < permuteTable.length; i++) {\n out <<= 1;\n out |= (num >>> permuteTable[i]) & 0x1;\n }\n return out >>> 0;\n};\n\nexports.padSplit = function padSplit(num, size, group) {\n var str = num.toString(2);\n while (str.length < size)\n str = '0' + str;\n\n var out = [];\n for (var i = 0; i < size; i += group)\n out.push(str.slice(i, i + group));\n return out.join(' ');\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar utils = require('./utils');\nvar Cipher = require('./cipher');\n\nfunction DESState() {\n this.tmp = new Array(2);\n this.keys = null;\n}\n\nfunction DES(options) {\n Cipher.call(this, options);\n\n var state = new DESState();\n this._desState = state;\n\n this.deriveKeys(state, options.key);\n}\ninherits(DES, Cipher);\nmodule.exports = DES;\n\nDES.create = function create(options) {\n return new DES(options);\n};\n\nvar shiftTable = [\n 1, 1, 2, 2, 2, 2, 2, 2,\n 1, 2, 2, 2, 2, 2, 2, 1\n];\n\nDES.prototype.deriveKeys = function deriveKeys(state, key) {\n state.keys = new Array(16 * 2);\n\n assert.equal(key.length, this.blockSize, 'Invalid key length');\n\n var kL = utils.readUInt32BE(key, 0);\n var kR = utils.readUInt32BE(key, 4);\n\n utils.pc1(kL, kR, state.tmp, 0);\n kL = state.tmp[0];\n kR = state.tmp[1];\n for (var i = 0; i < state.keys.length; i += 2) {\n var shift = shiftTable[i >>> 1];\n kL = utils.r28shl(kL, shift);\n kR = utils.r28shl(kR, shift);\n utils.pc2(kL, kR, state.keys, i);\n }\n};\n\nDES.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._desState;\n\n var l = utils.readUInt32BE(inp, inOff);\n var r = utils.readUInt32BE(inp, inOff + 4);\n\n // Initial Permutation\n utils.ip(l, r, state.tmp, 0);\n l = state.tmp[0];\n r = state.tmp[1];\n\n if (this.type === 'encrypt')\n this._encrypt(state, l, r, state.tmp, 0);\n else\n this._decrypt(state, l, r, state.tmp, 0);\n\n l = state.tmp[0];\n r = state.tmp[1];\n\n utils.writeUInt32BE(out, l, outOff);\n utils.writeUInt32BE(out, r, outOff + 4);\n};\n\nDES.prototype._pad = function _pad(buffer, off) {\n var value = buffer.length - off;\n for (var i = off; i < buffer.length; i++)\n buffer[i] = value;\n\n return true;\n};\n\nDES.prototype._unpad = function _unpad(buffer) {\n var pad = buffer[buffer.length - 1];\n for (var i = buffer.length - pad; i < buffer.length; i++)\n assert.equal(buffer[i], pad);\n\n return buffer.slice(0, buffer.length - pad);\n};\n\nDES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {\n var l = lStart;\n var r = rStart;\n\n // Apply f() x16 times\n for (var i = 0; i < state.keys.length; i += 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(r, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = r;\n r = (l ^ f) >>> 0;\n l = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(r, l, out, off);\n};\n\nDES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {\n var l = rStart;\n var r = lStart;\n\n // Apply f() x16 times\n for (var i = state.keys.length - 2; i >= 0; i -= 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(l, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = l;\n l = (r ^ f) >>> 0;\n r = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(l, r, out, off);\n};\n","var xor = require('buffer-xor')\nvar Buffer = require('safe-buffer').Buffer\nvar incr32 = require('../incr32')\n\nfunction getBlock (self) {\n var out = self._cipher.encryptBlockRaw(self._prev)\n incr32(self._prev)\n return out\n}\n\nvar blockSize = 16\nexports.encrypt = function (self, chunk) {\n var chunkNum = Math.ceil(chunk.length / blockSize)\n var start = self._cache.length\n self._cache = Buffer.concat([\n self._cache,\n Buffer.allocUnsafe(chunkNum * blockSize)\n ])\n for (var i = 0; i < chunkNum; i++) {\n var out = getBlock(self)\n var offset = start + i * blockSize\n self._cache.writeUInt32BE(out[0], offset + 0)\n self._cache.writeUInt32BE(out[1], offset + 4)\n self._cache.writeUInt32BE(out[2], offset + 8)\n self._cache.writeUInt32BE(out[3], offset + 12)\n }\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","function incr32 (iv) {\n var len = iv.length\n var item\n while (len--) {\n item = iv.readUInt8(len)\n if (item === 255) {\n iv.writeUInt8(0, len)\n } else {\n item++\n iv.writeUInt8(item, len)\n break\n }\n }\n}\nmodule.exports = incr32\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\nvar GHASH = require('./ghash')\nvar xor = require('buffer-xor')\nvar incr32 = require('./incr32')\n\nfunction xorTest (a, b) {\n var out = 0\n if (a.length !== b.length) out++\n\n var len = Math.min(a.length, b.length)\n for (var i = 0; i < len; ++i) {\n out += (a[i] ^ b[i])\n }\n\n return out\n}\n\nfunction calcIv (self, iv, ck) {\n if (iv.length === 12) {\n self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])])\n return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])])\n }\n var ghash = new GHASH(ck)\n var len = iv.length\n var toPad = len % 16\n ghash.update(iv)\n if (toPad) {\n toPad = 16 - toPad\n ghash.update(Buffer.alloc(toPad, 0))\n }\n ghash.update(Buffer.alloc(8, 0))\n var ivBits = len * 8\n var tail = Buffer.alloc(8)\n tail.writeUIntBE(ivBits, 0, 8)\n ghash.update(tail)\n self._finID = ghash.state\n var out = Buffer.from(self._finID)\n incr32(out)\n return out\n}\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n var h = Buffer.alloc(4, 0)\n\n this._cipher = new aes.AES(key)\n var ck = this._cipher.encryptBlock(h)\n this._ghash = new GHASH(ck)\n iv = calcIv(this, iv, ck)\n\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._alen = 0\n this._len = 0\n this._mode = mode\n\n this._authTag = null\n this._called = false\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n if (!this._called && this._alen) {\n var rump = 16 - (this._alen % 16)\n if (rump < 16) {\n rump = Buffer.alloc(rump, 0)\n this._ghash.update(rump)\n }\n }\n\n this._called = true\n var out = this._mode.encrypt(this, chunk)\n if (this._decrypt) {\n this._ghash.update(chunk)\n } else {\n this._ghash.update(out)\n }\n this._len += chunk.length\n return out\n}\n\nStreamCipher.prototype._final = function () {\n if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data')\n\n var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID))\n if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data')\n\n this._authTag = tag\n this._cipher.scrub()\n}\n\nStreamCipher.prototype.getAuthTag = function getAuthTag () {\n if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state')\n\n return this._authTag\n}\n\nStreamCipher.prototype.setAuthTag = function setAuthTag (tag) {\n if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state')\n\n this._authTag = tag\n}\n\nStreamCipher.prototype.setAAD = function setAAD (buf) {\n if (this._called) throw new Error('Attempting to set AAD in unsupported state')\n\n this._ghash.update(buf)\n this._alen += buf.length\n}\n\nmodule.exports = StreamCipher\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\n\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._mode = mode\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n return this._mode.encrypt(this, chunk, this._decrypt)\n}\n\nStreamCipher.prototype._final = function () {\n this._cipher.scrub()\n}\n\nmodule.exports = StreamCipher\n","var randomBytes = require('randombytes');\nmodule.exports = findPrime;\nfindPrime.simpleSieve = simpleSieve;\nfindPrime.fermatTest = fermatTest;\nvar BN = require('bn.js');\nvar TWENTYFOUR = new BN(24);\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar ONE = new BN(1);\nvar TWO = new BN(2);\nvar FIVE = new BN(5);\nvar SIXTEEN = new BN(16);\nvar EIGHT = new BN(8);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar ELEVEN = new BN(11);\nvar FOUR = new BN(4);\nvar TWELVE = new BN(12);\nvar primes = null;\n\nfunction _getPrimes() {\n if (primes !== null)\n return primes;\n\n var limit = 0x100000;\n var res = [];\n res[0] = 2;\n for (var i = 1, k = 3; k < limit; k += 2) {\n var sqrt = Math.ceil(Math.sqrt(k));\n for (var j = 0; j < i && res[j] <= sqrt; j++)\n if (k % res[j] === 0)\n break;\n\n if (i !== j && res[j] <= sqrt)\n continue;\n\n res[i++] = k;\n }\n primes = res;\n return res;\n}\n\nfunction simpleSieve(p) {\n var primes = _getPrimes();\n\n for (var i = 0; i < primes.length; i++)\n if (p.modn(primes[i]) === 0) {\n if (p.cmpn(primes[i]) === 0) {\n return true;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\nfunction fermatTest(p) {\n var red = BN.mont(p);\n return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;\n}\n\nfunction findPrime(bits, gen) {\n if (bits < 16) {\n // this is what openssl does\n if (gen === 2 || gen === 5) {\n return new BN([0x8c, 0x7b]);\n } else {\n return new BN([0x8c, 0x27]);\n }\n }\n gen = new BN(gen);\n\n var num, n2;\n\n while (true) {\n num = new BN(randomBytes(Math.ceil(bits / 8)));\n while (num.bitLength() > bits) {\n num.ishrn(1);\n }\n if (num.isEven()) {\n num.iadd(ONE);\n }\n if (!num.testn(1)) {\n num.iadd(TWO);\n }\n if (!gen.cmp(TWO)) {\n while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {\n num.iadd(FOUR);\n }\n } else if (!gen.cmp(FIVE)) {\n while (num.mod(TEN).cmp(THREE)) {\n num.iadd(FOUR);\n }\n }\n n2 = num.shrn(1);\n if (simpleSieve(n2) && simpleSieve(num) &&\n fermatTest(n2) && fermatTest(num) &&\n millerRabin.test(n2) && millerRabin.test(num)) {\n return num;\n }\n }\n\n}\n","var bn = require('bn.js');\nvar brorand = require('brorand');\n\nfunction MillerRabin(rand) {\n this.rand = rand || new brorand.Rand();\n}\nmodule.exports = MillerRabin;\n\nMillerRabin.create = function create(rand) {\n return new MillerRabin(rand);\n};\n\nMillerRabin.prototype._randbelow = function _randbelow(n) {\n var len = n.bitLength();\n var min_bytes = Math.ceil(len / 8);\n\n // Generage random bytes until a number less than n is found.\n // This ensures that 0..n-1 have an equal probability of being selected.\n do\n var a = new bn(this.rand.generate(min_bytes));\n while (a.cmp(n) >= 0);\n\n return a;\n};\n\nMillerRabin.prototype._randrange = function _randrange(start, stop) {\n // Generate a random number greater than or equal to start and less than stop.\n var size = stop.sub(start);\n return start.add(this._randbelow(size));\n};\n\nMillerRabin.prototype.test = function test(n, k, cb) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n var prime = true;\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n if (cb)\n cb(a);\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return false;\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s)\n return false;\n }\n\n return prime;\n};\n\nMillerRabin.prototype.getDivisor = function getDivisor(n, k) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n\n var g = n.gcd(a);\n if (g.cmpn(1) !== 0)\n return g;\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return x.fromRed().subn(1).gcd(n);\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s) {\n x = x.redSqr();\n return x.fromRed().subn(1).gcd(n);\n }\n }\n\n return false;\n};\n","'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n","'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nconst asn1 = exports;\n\nasn1.bignum = require('bn.js');\n\nasn1.define = require('./asn1/api').define;\nasn1.base = require('./asn1/base');\nasn1.constants = require('./asn1/constants');\nasn1.decoders = require('./asn1/decoders');\nasn1.encoders = require('./asn1/encoders');\n","'use strict';\n\nconst encoders = exports;\n\nencoders.der = require('./der');\nencoders.pem = require('./pem');\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n primitive,\n cls,\n content) {\n const encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n // Short form\n if (content.length < 0x80) {\n const header = Buffer.alloc(2);\n header[0] = encodedTag;\n header[1] = content.length;\n return this._createEncoderBuffer([ header, content ]);\n }\n\n // Long form\n // Count octets required to store length\n let lenOctets = 1;\n for (let i = content.length; i >= 0x100; i >>= 8)\n lenOctets++;\n\n const header = Buffer.alloc(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n\n for (let i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n header[i] = j & 0xff;\n\n return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n if (tag === 'bitstr') {\n return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n } else if (tag === 'bmpstr') {\n const buf = Buffer.alloc(str.length * 2);\n for (let i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\n return this._createEncoderBuffer(buf);\n } else if (tag === 'numstr') {\n if (!this._isNumstr(str)) {\n return this.reporter.error('Encoding of string type: numstr supports ' +\n 'only digits and space');\n }\n return this._createEncoderBuffer(str);\n } else if (tag === 'printstr') {\n if (!this._isPrintstr(str)) {\n return this.reporter.error('Encoding of string type: printstr supports ' +\n 'only latin upper and lower case letters, ' +\n 'digits, space, apostrophe, left and rigth ' +\n 'parenthesis, plus sign, comma, hyphen, ' +\n 'dot, slash, colon, equal sign, ' +\n 'question mark');\n }\n return this._createEncoderBuffer(str);\n } else if (/str$/.test(tag)) {\n return this._createEncoderBuffer(str);\n } else if (tag === 'objDesc') {\n return this._createEncoderBuffer(str);\n } else {\n return this.reporter.error('Encoding of string type: ' + tag +\n ' unsupported');\n }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values)\n return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id))\n return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s.]+/g);\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n } else if (Array.isArray(id)) {\n id = id.slice();\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n }\n\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' +\n 'got: ' + JSON.stringify(id));\n }\n\n if (!relative) {\n if (id[1] >= 40)\n return this.reporter.error('Second objid identifier OOB');\n id.splice(0, 2, id[0] * 40 + id[1]);\n }\n\n // Count number of octets\n let size = 0;\n for (let i = 0; i < id.length; i++) {\n let ident = id[i];\n for (size++; ident >= 0x80; ident >>= 7)\n size++;\n }\n\n const objid = Buffer.alloc(size);\n let offset = objid.length - 1;\n for (let i = id.length - 1; i >= 0; i--) {\n let ident = id[i];\n objid[offset--] = ident & 0x7f;\n while ((ident >>= 7) > 0)\n objid[offset--] = 0x80 | (ident & 0x7f);\n }\n\n return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n if (num < 10)\n return '0' + num;\n else\n return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n let str;\n const date = new Date(time);\n\n if (tag === 'gentime') {\n str = [\n two(date.getUTCFullYear()),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else if (tag === 'utctime') {\n str = [\n two(date.getUTCFullYear() % 100),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else {\n this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n }\n\n return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n if (typeof num === 'string') {\n if (!values)\n return this.reporter.error('String int or enum given, but no values map');\n if (!values.hasOwnProperty(num)) {\n return this.reporter.error('Values map doesn\\'t contain: ' +\n JSON.stringify(num));\n }\n num = values[num];\n }\n\n // Bignum, assume big endian\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n const numArray = num.toArray();\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n num = Buffer.from(numArray);\n }\n\n if (Buffer.isBuffer(num)) {\n let size = num.length;\n if (num.length === 0)\n size++;\n\n const out = Buffer.alloc(size);\n num.copy(out);\n if (num.length === 0)\n out[0] = 0;\n return this._createEncoderBuffer(out);\n }\n\n if (num < 0x80)\n return this._createEncoderBuffer(num);\n\n if (num < 0x100)\n return this._createEncoderBuffer([0, num]);\n\n let size = 1;\n for (let i = num; i >= 0x100; i >>= 8)\n size++;\n\n const out = new Array(size);\n for (let i = out.length - 1; i >= 0; i--) {\n out[i] = num & 0xff;\n num >>= 8;\n }\n if(out[0] & 0x80) {\n out.unshift(0);\n }\n\n return this._createEncoderBuffer(Buffer.from(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n const state = this._baseState;\n let i;\n if (state['default'] === null)\n return false;\n\n const data = dataBuffer.join();\n if (state.defaultBuffer === undefined)\n state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n if (data.length !== state.defaultBuffer.length)\n return false;\n\n for (i=0; i < data.length; i++)\n if (data[i] !== state.defaultBuffer[i])\n return false;\n\n return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n let res;\n\n if (tag === 'seqof')\n tag = 'seq';\n else if (tag === 'setof')\n tag = 'set';\n\n if (der.tagByName.hasOwnProperty(tag))\n res = der.tagByName[tag];\n else if (typeof tag === 'number' && (tag | 0) === tag)\n res = tag;\n else\n return reporter.error('Unknown tag: ' + tag);\n\n if (res >= 0x1f)\n return reporter.error('Multi-octet tag encoding unsupported');\n\n if (!primitive)\n res |= 0x20;\n\n res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n return res;\n}\n","'use strict';\n\nconst decoders = exports;\n\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');\n","'use strict';\n\nconst inherits = require('inherits');\n\nconst bignum = require('bn.js');\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DERDecoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DERDecoder;\n\nDERDecoder.prototype.decode = function decode(data, options) {\n if (!DecoderBuffer.isDecoderBuffer(data)) {\n data = new DecoderBuffer(data, options);\n }\n\n return this.tree._decode(data, options);\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n if (buffer.isEmpty())\n return false;\n\n const state = buffer.save();\n const decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n buffer.restore(state);\n\n return decodedTag.tag === tag || decodedTag.tagStr === tag ||\n (decodedTag.tagStr + 'of') === tag || any;\n};\n\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n const decodedTag = derDecodeTag(buffer,\n 'Failed to decode tag of \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n let len = derDecodeLen(buffer,\n decodedTag.primitive,\n 'Failed to get length of \"' + tag + '\"');\n\n // Failure\n if (buffer.isError(len))\n return len;\n\n if (!any &&\n decodedTag.tag !== tag &&\n decodedTag.tagStr !== tag &&\n decodedTag.tagStr + 'of' !== tag) {\n return buffer.error('Failed to match tag: \"' + tag + '\"');\n }\n\n if (decodedTag.primitive || len !== null)\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n\n // Indefinite length... find END tag\n const state = buffer.save();\n const res = this._skipUntilEnd(\n buffer,\n 'Failed to skip indefinite length body: \"' + this.tag + '\"');\n if (buffer.isError(res))\n return res;\n\n len = buffer.offset - state.offset;\n buffer.restore(state);\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n};\n\nDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n for (;;) {\n const tag = derDecodeTag(buffer, fail);\n if (buffer.isError(tag))\n return tag;\n const len = derDecodeLen(buffer, tag.primitive, fail);\n if (buffer.isError(len))\n return len;\n\n let res;\n if (tag.primitive || len !== null)\n res = buffer.skip(len);\n else\n res = this._skipUntilEnd(buffer, fail);\n\n // Failure\n if (buffer.isError(res))\n return res;\n\n if (tag.tagStr === 'end')\n break;\n }\n};\n\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,\n options) {\n const result = [];\n while (!buffer.isEmpty()) {\n const possibleEnd = this._peekTag(buffer, 'end');\n if (buffer.isError(possibleEnd))\n return possibleEnd;\n\n const res = decoder.decode(buffer, 'der', options);\n if (buffer.isError(res) && possibleEnd)\n break;\n result.push(res);\n }\n return result;\n};\n\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n if (tag === 'bitstr') {\n const unused = buffer.readUInt8();\n if (buffer.isError(unused))\n return unused;\n return { unused: unused, data: buffer.raw() };\n } else if (tag === 'bmpstr') {\n const raw = buffer.raw();\n if (raw.length % 2 === 1)\n return buffer.error('Decoding of string type: bmpstr length mismatch');\n\n let str = '';\n for (let i = 0; i < raw.length / 2; i++) {\n str += String.fromCharCode(raw.readUInt16BE(i * 2));\n }\n return str;\n } else if (tag === 'numstr') {\n const numstr = buffer.raw().toString('ascii');\n if (!this._isNumstr(numstr)) {\n return buffer.error('Decoding of string type: ' +\n 'numstr unsupported characters');\n }\n return numstr;\n } else if (tag === 'octstr') {\n return buffer.raw();\n } else if (tag === 'objDesc') {\n return buffer.raw();\n } else if (tag === 'printstr') {\n const printstr = buffer.raw().toString('ascii');\n if (!this._isPrintstr(printstr)) {\n return buffer.error('Decoding of string type: ' +\n 'printstr unsupported characters');\n }\n return printstr;\n } else if (/str$/.test(tag)) {\n return buffer.raw().toString();\n } else {\n return buffer.error('Decoding of string type: ' + tag + ' unsupported');\n }\n};\n\nDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n let result;\n const identifiers = [];\n let ident = 0;\n let subident = 0;\n while (!buffer.isEmpty()) {\n subident = buffer.readUInt8();\n ident <<= 7;\n ident |= subident & 0x7f;\n if ((subident & 0x80) === 0) {\n identifiers.push(ident);\n ident = 0;\n }\n }\n if (subident & 0x80)\n identifiers.push(ident);\n\n const first = (identifiers[0] / 40) | 0;\n const second = identifiers[0] % 40;\n\n if (relative)\n result = identifiers;\n else\n result = [first, second].concat(identifiers.slice(1));\n\n if (values) {\n let tmp = values[result.join(' ')];\n if (tmp === undefined)\n tmp = values[result.join('.')];\n if (tmp !== undefined)\n result = tmp;\n }\n\n return result;\n};\n\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n const str = buffer.raw().toString();\n\n let year;\n let mon;\n let day;\n let hour;\n let min;\n let sec;\n if (tag === 'gentime') {\n year = str.slice(0, 4) | 0;\n mon = str.slice(4, 6) | 0;\n day = str.slice(6, 8) | 0;\n hour = str.slice(8, 10) | 0;\n min = str.slice(10, 12) | 0;\n sec = str.slice(12, 14) | 0;\n } else if (tag === 'utctime') {\n year = str.slice(0, 2) | 0;\n mon = str.slice(2, 4) | 0;\n day = str.slice(4, 6) | 0;\n hour = str.slice(6, 8) | 0;\n min = str.slice(8, 10) | 0;\n sec = str.slice(10, 12) | 0;\n if (year < 70)\n year = 2000 + year;\n else\n year = 1900 + year;\n } else {\n return buffer.error('Decoding ' + tag + ' time is not supported yet');\n }\n\n return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n};\n\nDERNode.prototype._decodeNull = function decodeNull() {\n return null;\n};\n\nDERNode.prototype._decodeBool = function decodeBool(buffer) {\n const res = buffer.readUInt8();\n if (buffer.isError(res))\n return res;\n else\n return res !== 0;\n};\n\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n // Bigint, return as it is (assume big endian)\n const raw = buffer.raw();\n let res = new bignum(raw);\n\n if (values)\n res = values[res.toString(10)] || res;\n\n return res;\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getDecoder('der').tree;\n};\n\n// Utility methods\n\nfunction derDecodeTag(buf, fail) {\n let tag = buf.readUInt8(fail);\n if (buf.isError(tag))\n return tag;\n\n const cls = der.tagClass[tag >> 6];\n const primitive = (tag & 0x20) === 0;\n\n // Multi-octet tag - load\n if ((tag & 0x1f) === 0x1f) {\n let oct = tag;\n tag = 0;\n while ((oct & 0x80) === 0x80) {\n oct = buf.readUInt8(fail);\n if (buf.isError(oct))\n return oct;\n\n tag <<= 7;\n tag |= oct & 0x7f;\n }\n } else {\n tag &= 0x1f;\n }\n const tagStr = der.tag[tag];\n\n return {\n cls: cls,\n primitive: primitive,\n tag: tag,\n tagStr: tagStr\n };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n let len = buf.readUInt8(fail);\n if (buf.isError(len))\n return len;\n\n // Indefinite form\n if (!primitive && len === 0x80)\n return null;\n\n // Definite form\n if ((len & 0x80) === 0) {\n // Short form\n return len;\n }\n\n // Long form\n const num = len & 0x7f;\n if (num > 4)\n return buf.error('length octect is too long');\n\n len = 0;\n for (let i = 0; i < num; i++) {\n len <<= 8;\n const j = buf.readUInt8(fail);\n if (buf.isError(j))\n return j;\n len |= j;\n }\n\n return len;\n}\n","var createHash = require('create-hash')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (seed, len) {\n var t = Buffer.alloc(0)\n var i = 0\n var c\n while (t.length < len) {\n c = i2ops(i++)\n t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()])\n }\n return t.slice(0, len)\n}\n\nfunction i2ops (c) {\n var out = Buffer.allocUnsafe(4)\n out.writeUInt32BE(c, 0)\n return out\n}\n","module.exports = function xor (a, b) {\n var len = a.length\n var i = -1\n while (++i < len) {\n a[i] ^= b[i]\n }\n return a\n}\n","var BN = require('bn.js')\nvar Buffer = require('safe-buffer').Buffer\n\nfunction withPublic (paddedMsg, key) {\n return Buffer.from(paddedMsg\n .toRed(BN.mont(key.modulus))\n .redPow(new BN(key.publicExponent))\n .fromRed()\n .toArray())\n}\n\nmodule.exports = withPublic\n","import EventEmitter from \"eventemitter3\";\nimport { inherits } from \"util\";\n\nimport { NonLoggableError } from \"../../util/logging\";\nimport PoolConnection from \"./PoolConnection\";\n\ninherits(Pool, EventEmitter);\nexport default function Pool(options) {\n EventEmitter.call(this);\n\n this.poolConfig = {\n queueLimit: options.config.queueLimit,\n acquireTimeout: options.config.acquireTimeout,\n connectionLimit: options.config.connectionLimit,\n waitForConnections: options.config.waitForConnections,\n };\n this._acquiringConnections = [];\n this._allConnections = [];\n this._freeConnections = [];\n this._connectionQueue = []; // Array<{connectionConfig, cb}>\n this._closed = false;\n}\n\nexport function compareConnections(conn1, conn2) {\n return (\n conn1.host === conn2.host &&\n conn1.port === conn2.port &&\n conn1.endpoint === conn2.endpoint\n );\n}\n\nPool.prototype.doesConnectionLimitHasSlots = function () {\n return (\n this.poolConfig.connectionLimit === 0 ||\n this._allConnections.length < this.poolConfig.connectionLimit\n );\n};\n\n// The `cb` callback can be called in 2 ways:\n// - with 3 arguments, the first being null, the second being the connection and\n// the third being a boolean which represents whether this connection was just\n// created\n// - with 1 argument, it being an error\nPool.prototype.getConnection = function (connectionConfig, cb) {\n if (this._closed) {\n let err = new NonLoggableError(\"Pool is closed.\");\n err.code = \"POOL_CLOSED\";\n process.nextTick(function () {\n cb(err);\n });\n return;\n }\n\n let connection;\n let pool = this;\n\n if (this._freeConnections.length > 0) {\n // try to find a free connection of the same cluster as requested\n connection = this._freeConnections.find((connection) => {\n let poolConnectionConfig = connection.getConnectionConfig();\n\n return compareConnections(connectionConfig, poolConnectionConfig);\n });\n\n if (connection) {\n spliceConnection(this._freeConnections, connection);\n this.acquireConnection(connection, connectionConfig, cb);\n return;\n } else {\n // If we reach this point it means we have free connections but we couldn't find a free connection of the\n // same target to be reused.\n //\n // There are 2 options after this point\n // - The connectionLimit pool is not full, so we just move forward with the flow to create a new\n // connection of the right target\n // - The connectionLimit pool is full, but we have free connections of a different target, so we\n // purge the oldest connection to have space for the new one\n if (!this.doesConnectionLimitHasSlots()) {\n this._purgeConnection(this._freeConnections.shift());\n }\n }\n }\n\n if (this.doesConnectionLimitHasSlots()) {\n connection = new PoolConnection(this, {\n config: connectionConfig,\n });\n\n this._acquiringConnections.push(connection);\n this._allConnections.push(connection);\n\n connection.connect(\n { timeout: this.poolConfig.acquireTimeout },\n function onConnect(err) {\n spliceConnection(pool._acquiringConnections, connection);\n\n if (pool._closed) {\n err = new NonLoggableError(\"Pool is closed.\");\n err.code = \"POOL_CLOSED\";\n }\n\n if (err) {\n pool._purgeConnection(connection);\n cb(err);\n return;\n }\n\n pool.emit(\"connection\", connection);\n pool.emit(\"acquire\", connection);\n cb(null, connection, true);\n }\n );\n return;\n }\n\n if (!this.poolConfig.waitForConnections) {\n process.nextTick(function () {\n let err = new NonLoggableError(\"No connections available.\");\n err.code = \"POOL_CONNLIMIT\";\n cb(err);\n });\n return;\n }\n\n this._enqueueCallback(connectionConfig, cb);\n};\n\nPool.prototype.acquireConnection = function acquireConnection(\n connection,\n connectionConfig,\n cb\n) {\n if (connection._pool !== this) {\n throw new Error(\"Connection acquired from wrong pool.\");\n }\n\n let pool = this;\n\n this._acquiringConnections.push(connection);\n\n function onOperationComplete(err) {\n spliceConnection(pool._acquiringConnections, connection);\n\n if (pool._closed) {\n err = new NonLoggableError(\"Pool is closed.\");\n err.code = \"POOL_CLOSED\";\n }\n\n if (err) {\n pool._connectionQueue.unshift({ connectionConfig, cb });\n pool._purgeConnection(connection);\n return;\n }\n\n pool.emit(\"acquire\", connection);\n cb(null, connection, false);\n }\n\n connection.ping(\n { timeout: this.poolConfig.acquireTimeout },\n onOperationComplete\n );\n};\n\nPool.prototype.releaseConnection = function releaseConnection(connection) {\n if (this._acquiringConnections.indexOf(connection) !== -1) {\n // connection is being acquired\n return;\n }\n\n if (connection._pool) {\n if (connection._pool !== this) {\n throw new Error(\"Connection released to wrong pool\");\n }\n\n if (this._freeConnections.indexOf(connection) !== -1) {\n // connection already in free connection pool\n // this won't catch all double-release cases\n throw new Error(\"Connection already released\");\n } else {\n // add connection to end of free queue\n this._freeConnections.push(connection);\n this.emit(\"release\", connection);\n }\n }\n\n if (this._closed) {\n // empty the connection queue\n this._connectionQueue.splice(0).forEach(function ({ cb }) {\n let err = new NonLoggableError(\"Pool is closed.\");\n err.code = \"POOL_CLOSED\";\n process.nextTick(function () {\n cb(err);\n });\n });\n } else if (this._connectionQueue.length) {\n // get connection with next waiting callback\n let nextConnection = this._connectionQueue.shift();\n this.getConnection(nextConnection.connectionConfig, nextConnection.cb);\n }\n};\n\nPool.prototype.end = function (cb) {\n this._closed = true;\n\n if (typeof cb !== \"function\") {\n cb = function (err) {\n if (err) {\n throw err;\n }\n };\n }\n\n let calledBack = false;\n let waitingClose = 0;\n\n function onEnd(err) {\n if (!calledBack && (err || --waitingClose <= 0)) {\n calledBack = true;\n cb(err);\n }\n }\n\n while (this._allConnections.length !== 0) {\n waitingClose++;\n this._purgeConnection(this._allConnections[0], onEnd);\n }\n\n if (waitingClose === 0) {\n process.nextTick(onEnd);\n }\n};\n\nPool.prototype._enqueueCallback = function _enqueueCallback(\n connectionConfig,\n callback\n) {\n if (\n this.poolConfig.queueLimit &&\n this._connectionQueue.length >= this.poolConfig.queueLimit\n ) {\n process.nextTick(function () {\n let err = new NonLoggableError(\"Queue limit reached.\");\n err.code = \"POOL_ENQUEUELIMIT\";\n callback(err);\n });\n return;\n }\n\n // Bind to domain, as dequeue will likely occur in a different domain\n let cb = process.domain ? process.domain.bind(callback) : callback;\n\n this._connectionQueue.push({ connectionConfig, cb });\n this.emit(\"enqueue\");\n};\n\nPool.prototype._purgeConnection = function _purgeConnection(\n connection,\n callback\n) {\n let cb = callback || function () {};\n\n if (connection.state === \"disconnected\") {\n connection.destroy();\n }\n\n this._removeConnection(connection);\n\n if (\n connection.state !== \"disconnected\" &&\n !connection._protocol._quitSequence\n ) {\n connection._realEnd(cb);\n return;\n }\n\n process.nextTick(cb);\n};\n\nPool.prototype._removeConnection = function (connection) {\n connection._pool = null;\n\n // Remove connection from all connections\n spliceConnection(this._allConnections, connection);\n\n // Remove connection from free connections\n spliceConnection(this._freeConnections, connection);\n\n this.releaseConnection(connection);\n};\n\nfunction spliceConnection(array, connection) {\n let index;\n if ((index = array.indexOf(connection)) !== -1) {\n // Remove connection from all connections\n array.splice(index, 1);\n }\n}\n","let ConnectionConfig = require(\"./ConnectionConfig\").default;\n\nmodule.exports = PoolConfig;\nfunction PoolConfig(options) {\n if (typeof options === \"string\") {\n options = ConnectionConfig.parseUrl(options);\n }\n\n this.acquireTimeout =\n options.acquireTimeout === undefined\n ? 10 * 1000\n : Number(options.acquireTimeout);\n this.waitForConnections =\n options.waitForConnections === undefined\n ? true\n : Boolean(options.waitForConnections);\n this.connectionLimit =\n options.connectionLimit === undefined\n ? 10\n : Number(options.connectionLimit);\n this.queueLimit =\n options.queueLimit === undefined ? 0 : Number(options.queueLimit);\n}\n","\"use strict\";\n\nvar stringify = require('.');\n\nvar _require = require('string_decoder'),\n StringDecoder = _require.StringDecoder;\n\nmodule.exports = function (records) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var data = [];\n\n if (Buffer.isBuffer(records)) {\n var decoder = new StringDecoder();\n records = decoder.write(records);\n }\n\n var stringifier = new stringify.Stringifier(options);\n\n stringifier.push = function (record) {\n if (record) {\n data.push(record.toString());\n }\n };\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = records[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var record = _step.value;\n stringifier.write(record);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator[\"return\"] != null) {\n _iterator[\"return\"]();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n stringifier.end();\n return data.join('');\n};","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","import { ERROR_NODE, LOADING_NODE } from \"./render-loading-error\";\n\n// This function will switch on multiple loading error instances and render:\n// * A generic loading state if any of the LE instances is loading\n// * A generic error state if any of the LE instances is in error state\n// * The output of `renderPayload` if all LE instances are in the success state\nexport function renderMultipleLoadingError(dataArr, renderPayload) {\n const values = [];\n\n for (let i = 0; i < dataArr.length; i++) {\n const el = dataArr[i];\n\n if (el.isError()) {\n return ERROR_NODE;\n } else if (el.isLoading()) {\n return LOADING_NODE();\n } else {\n values.push(el.value);\n }\n }\n\n return renderPayload(values);\n}\n","var prefix = require('prefix-style')\nvar toCamelCase = require('to-camel-case')\nvar cache = { 'float': 'cssFloat' }\nvar addPxToStyle = require('add-px-to-style')\n\nfunction style (element, property, value) {\n var camel = cache[property]\n if (typeof camel === 'undefined') {\n camel = detect(property)\n }\n\n // may be false if CSS prop is unsupported\n if (camel) {\n if (value === undefined) {\n return element.style[camel]\n }\n\n element.style[camel] = addPxToStyle(camel, value)\n }\n}\n\nfunction each (element, properties) {\n for (var k in properties) {\n if (properties.hasOwnProperty(k)) {\n style(element, k, properties[k])\n }\n }\n}\n\nfunction detect (cssProp) {\n var camel = toCamelCase(cssProp)\n var result = prefix(camel)\n cache[camel] = cache[cssProp] = cache[result] = result\n return result\n}\n\nfunction set () {\n if (arguments.length === 2) {\n if (typeof arguments[1] === 'string') {\n arguments[0].style.cssText = arguments[1]\n } else {\n each(arguments[0], arguments[1])\n }\n } else {\n style(arguments[0], arguments[1], arguments[2])\n }\n}\n\nmodule.exports = set\nmodule.exports.set = set\n\nmodule.exports.get = function (element, properties) {\n if (Array.isArray(properties)) {\n return properties.reduce(function (obj, prop) {\n obj[prop] = style(element, prop || '')\n return obj\n }, {})\n } else {\n return style(element, properties || '')\n }\n}\n","export const COLUMNSTORE_TIP = \"Columnstore data is highly compressed for more efficient storage. The actual compression amount is determined by both the cardinality and the data types of your columns.\";\nexport const HIGH_AVAILABILITY_TIP = `When enabled, a replica of each data partition is maintained on a different leaf node.`;\nexport const ROW_COUNT_TIP = \"This value may be affected by recent deletions and uncomitted transactions.\";\n","import { LONG_EM_DASH } from \"@single-js/common/util/symbols\";\nimport { format } from \"date-fns\";\nexport function formatBatchTimestamp(batch) {\n if (batch.timestamp) {\n return format(batch.timestamp, \"HH:mm:ss, YYYY/MM/DD\");\n }\n else {\n return LONG_EM_DASH;\n }\n}\n","var addMilliseconds = require('../add_milliseconds/index.js')\n\nvar MILLISECONDS_IN_HOUR = 3600000\n\n/**\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be added\n * @returns {Date} the new date with the hours added\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * var result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\nfunction addHours (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_HOUR)\n}\n\nmodule.exports = addHours\n","var getISOYear = require('../get_iso_year/index.js')\nvar setISOYear = require('../set_iso_year/index.js')\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Add the specified number of ISO week-numbering years to the given date.\n *\n * @description\n * Add the specified number of ISO week-numbering years to the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of ISO week-numbering years to be added\n * @returns {Date} the new date with the ISO week-numbering years added\n *\n * @example\n * // Add 5 ISO week-numbering years to 2 July 2010:\n * var result = addISOYears(new Date(2010, 6, 2), 5)\n * //=> Fri Jun 26 2015 00:00:00\n */\nfunction addISOYears (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n return setISOYear(dirtyDate, getISOYear(dirtyDate) + amount)\n}\n\nmodule.exports = addISOYears\n","var parse = require('../parse/index.js')\nvar startOfISOYear = require('../start_of_iso_year/index.js')\nvar differenceInCalendarDays = require('../difference_in_calendar_days/index.js')\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Set the ISO week-numbering year to the given date.\n *\n * @description\n * Set the ISO week-numbering year to the given date,\n * saving the week number and the weekday number.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} isoYear - the ISO week-numbering year of the new date\n * @returns {Date} the new date with the ISO week-numbering year setted\n *\n * @example\n * // Set ISO week-numbering year 2007 to 29 December 2008:\n * var result = setISOYear(new Date(2008, 11, 29), 2007)\n * //=> Mon Jan 01 2007 00:00:00\n */\nfunction setISOYear (dirtyDate, dirtyISOYear) {\n var date = parse(dirtyDate)\n var isoYear = Number(dirtyISOYear)\n var diff = differenceInCalendarDays(date, startOfISOYear(date))\n var fourthOfJanuary = new Date(0)\n fourthOfJanuary.setFullYear(isoYear, 0, 4)\n fourthOfJanuary.setHours(0, 0, 0, 0)\n date = startOfISOYear(fourthOfJanuary)\n date.setDate(date.getDate() + diff)\n return date\n}\n\nmodule.exports = setISOYear\n","var addMilliseconds = require('../add_milliseconds/index.js')\n\nvar MILLISECONDS_IN_MINUTE = 60000\n\n/**\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be added\n * @returns {Date} the new date with the minutes added\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * var result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\nfunction addMinutes (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE)\n}\n\nmodule.exports = addMinutes\n","var addMonths = require('../add_months/index.js')\n\n/**\n * @category Quarter Helpers\n * @summary Add the specified number of year quarters to the given date.\n *\n * @description\n * Add the specified number of year quarters to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be added\n * @returns {Date} the new date with the quarters added\n *\n * @example\n * // Add 1 quarter to 1 September 2014:\n * var result = addQuarters(new Date(2014, 8, 1), 1)\n * //=> Mon Dec 01 2014 00:00:00\n */\nfunction addQuarters (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n var months = amount * 3\n return addMonths(dirtyDate, months)\n}\n\nmodule.exports = addQuarters\n","var addMilliseconds = require('../add_milliseconds/index.js')\n\n/**\n * @category Second Helpers\n * @summary Add the specified number of seconds to the given date.\n *\n * @description\n * Add the specified number of seconds to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of seconds to be added\n * @returns {Date} the new date with the seconds added\n *\n * @example\n * // Add 30 seconds to 10 July 2014 12:45:00:\n * var result = addSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:45:30\n */\nfunction addSeconds (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n return addMilliseconds(dirtyDate, amount * 1000)\n}\n\nmodule.exports = addSeconds\n","var addMonths = require('../add_months/index.js')\n\n/**\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be added\n * @returns {Date} the new date with the years added\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * var result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nfunction addYears (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n return addMonths(dirtyDate, amount * 12)\n}\n\nmodule.exports = addYears\n","var getISOYear = require('../get_iso_year/index.js')\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of calendar ISO week-numbering years between the given dates.\n *\n * @description\n * Get the number of calendar ISO week-numbering years between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar ISO week-numbering years\n *\n * @example\n * // How many calendar ISO week-numbering years are 1 January 2010 and 1 January 2012?\n * var result = differenceInCalendarISOYears(\n * new Date(2012, 0, 1),\n * new Date(2010, 0, 1)\n * )\n * //=> 2\n */\nfunction differenceInCalendarISOYears (dirtyDateLeft, dirtyDateRight) {\n return getISOYear(dirtyDateLeft) - getISOYear(dirtyDateRight)\n}\n\nmodule.exports = differenceInCalendarISOYears\n","var parse = require('../parse/index.js')\n\n/**\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar months\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * var result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nfunction differenceInCalendarMonths (dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft)\n var dateRight = parse(dirtyDateRight)\n\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear()\n var monthDiff = dateLeft.getMonth() - dateRight.getMonth()\n\n return yearDiff * 12 + monthDiff\n}\n\nmodule.exports = differenceInCalendarMonths\n","var parse = require('../parse/index.js')\n\n/**\n * @category Quarter Helpers\n * @summary Get the year quarter of the given date.\n *\n * @description\n * Get the year quarter of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the quarter\n *\n * @example\n * // Which quarter is 2 July 2014?\n * var result = getQuarter(new Date(2014, 6, 2))\n * //=> 3\n */\nfunction getQuarter (dirtyDate) {\n var date = parse(dirtyDate)\n var quarter = Math.floor(date.getMonth() / 3) + 1\n return quarter\n}\n\nmodule.exports = getQuarter\n","var parse = require('../parse/index.js')\n\n/**\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar years\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * var result = differenceInCalendarYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * )\n * //=> 2\n */\nfunction differenceInCalendarYears (dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft)\n var dateRight = parse(dirtyDateRight)\n\n return dateLeft.getFullYear() - dateRight.getFullYear()\n}\n\nmodule.exports = differenceInCalendarYears\n","var parse = require('../parse/index.js')\nvar differenceInCalendarDays = require('../difference_in_calendar_days/index.js')\nvar compareAsc = require('../compare_asc/index.js')\n\n/**\n * @category Day Helpers\n * @summary Get the number of full days between the given dates.\n *\n * @description\n * Get the number of full days between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of full days\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * var result = differenceInDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 365\n */\nfunction differenceInDays (dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft)\n var dateRight = parse(dirtyDateRight)\n\n var sign = compareAsc(dateLeft, dateRight)\n var difference = Math.abs(differenceInCalendarDays(dateLeft, dateRight))\n dateLeft.setDate(dateLeft.getDate() - sign * difference)\n\n // Math.abs(diff in full days - diff in calendar days) === 1 if last calendar day is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastDayNotFull = compareAsc(dateLeft, dateRight) === -sign\n return sign * (difference - isLastDayNotFull)\n}\n\nmodule.exports = differenceInDays\n","var addISOYears = require('../add_iso_years/index.js')\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Subtract the specified number of ISO week-numbering years from the given date.\n *\n * @description\n * Subtract the specified number of ISO week-numbering years from the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of ISO week-numbering years to be subtracted\n * @returns {Date} the new date with the ISO week-numbering years subtracted\n *\n * @example\n * // Subtract 5 ISO week-numbering years from 1 September 2014:\n * var result = subISOYears(new Date(2014, 8, 1), 5)\n * //=> Mon Aug 31 2009 00:00:00\n */\nfunction subISOYears (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n return addISOYears(dirtyDate, -amount)\n}\n\nmodule.exports = subISOYears\n","var compareDesc = require('../compare_desc/index.js')\nvar parse = require('../parse/index.js')\nvar differenceInSeconds = require('../difference_in_seconds/index.js')\nvar differenceInMonths = require('../difference_in_months/index.js')\nvar enLocale = require('../locale/en/index.js')\n\nvar MINUTES_IN_DAY = 1440\nvar MINUTES_IN_ALMOST_TWO_DAYS = 2520\nvar MINUTES_IN_MONTH = 43200\nvar MINUTES_IN_TWO_MONTHS = 86400\n\n/**\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words.\n *\n * | Distance between dates | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance between dates | Result |\n * |------------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Date|String|Number} date - the other date\n * @param {Object} [options] - the object with options\n * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {Object} [options.locale=enLocale] - the locale object\n * @returns {String} the distance in words\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * var result = distanceInWords(\n * new Date(2014, 6, 2),\n * new Date(2015, 0, 1)\n * )\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00, including seconds?\n * var result = distanceInWords(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0),\n * {includeSeconds: true}\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * var result = distanceInWords(\n * new Date(2016, 0, 1),\n * new Date(2015, 0, 1),\n * {addSuffix: true}\n * )\n * //=> 'about 1 year ago'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * var eoLocale = require('date-fns/locale/eo')\n * var result = distanceInWords(\n * new Date(2016, 7, 1),\n * new Date(2015, 0, 1),\n * {locale: eoLocale}\n * )\n * //=> 'pli ol 1 jaro'\n */\nfunction distanceInWords (dirtyDateToCompare, dirtyDate, dirtyOptions) {\n var options = dirtyOptions || {}\n\n var comparison = compareDesc(dirtyDateToCompare, dirtyDate)\n\n var locale = options.locale\n var localize = enLocale.distanceInWords.localize\n if (locale && locale.distanceInWords && locale.distanceInWords.localize) {\n localize = locale.distanceInWords.localize\n }\n\n var localizeOptions = {\n addSuffix: Boolean(options.addSuffix),\n comparison: comparison\n }\n\n var dateLeft, dateRight\n if (comparison > 0) {\n dateLeft = parse(dirtyDateToCompare)\n dateRight = parse(dirtyDate)\n } else {\n dateLeft = parse(dirtyDate)\n dateRight = parse(dirtyDateToCompare)\n }\n\n var seconds = differenceInSeconds(dateRight, dateLeft)\n var offset = dateRight.getTimezoneOffset() - dateLeft.getTimezoneOffset()\n var minutes = Math.round(seconds / 60) - offset\n var months\n\n // 0 up to 2 mins\n if (minutes < 2) {\n if (options.includeSeconds) {\n if (seconds < 5) {\n return localize('lessThanXSeconds', 5, localizeOptions)\n } else if (seconds < 10) {\n return localize('lessThanXSeconds', 10, localizeOptions)\n } else if (seconds < 20) {\n return localize('lessThanXSeconds', 20, localizeOptions)\n } else if (seconds < 40) {\n return localize('halfAMinute', null, localizeOptions)\n } else if (seconds < 60) {\n return localize('lessThanXMinutes', 1, localizeOptions)\n } else {\n return localize('xMinutes', 1, localizeOptions)\n }\n } else {\n if (minutes === 0) {\n return localize('lessThanXMinutes', 1, localizeOptions)\n } else {\n return localize('xMinutes', minutes, localizeOptions)\n }\n }\n\n // 2 mins up to 0.75 hrs\n } else if (minutes < 45) {\n return localize('xMinutes', minutes, localizeOptions)\n\n // 0.75 hrs up to 1.5 hrs\n } else if (minutes < 90) {\n return localize('aboutXHours', 1, localizeOptions)\n\n // 1.5 hrs up to 24 hrs\n } else if (minutes < MINUTES_IN_DAY) {\n var hours = Math.round(minutes / 60)\n return localize('aboutXHours', hours, localizeOptions)\n\n // 1 day up to 1.75 days\n } else if (minutes < MINUTES_IN_ALMOST_TWO_DAYS) {\n return localize('xDays', 1, localizeOptions)\n\n // 1.75 days up to 30 days\n } else if (minutes < MINUTES_IN_MONTH) {\n var days = Math.round(minutes / MINUTES_IN_DAY)\n return localize('xDays', days, localizeOptions)\n\n // 1 month up to 2 months\n } else if (minutes < MINUTES_IN_TWO_MONTHS) {\n months = Math.round(minutes / MINUTES_IN_MONTH)\n return localize('aboutXMonths', months, localizeOptions)\n }\n\n months = differenceInMonths(dateRight, dateLeft)\n\n // 2 months up to 12 months\n if (months < 12) {\n var nearestMonth = Math.round(minutes / MINUTES_IN_MONTH)\n return localize('xMonths', nearestMonth, localizeOptions)\n\n // 1 year up to max Date\n } else {\n var monthsSinceStartOfYear = months % 12\n var years = Math.floor(months / 12)\n\n // N years up to 1 years 3 months\n if (monthsSinceStartOfYear < 3) {\n return localize('aboutXYears', years, localizeOptions)\n\n // N years 3 months up to N years 9 months\n } else if (monthsSinceStartOfYear < 9) {\n return localize('overXYears', years, localizeOptions)\n\n // N years 9 months up to N year 12 months\n } else {\n return localize('almostXYears', years + 1, localizeOptions)\n }\n }\n}\n\nmodule.exports = distanceInWords\n","var parse = require('../parse/index.js')\n\n/**\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Object} [options] - the object with options\n * @param {Number} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the end of a week\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * var result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * var result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), {weekStartsOn: 1})\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nfunction endOfWeek (dirtyDate, dirtyOptions) {\n var weekStartsOn = dirtyOptions ? (Number(dirtyOptions.weekStartsOn) || 0) : 0\n\n var date = parse(dirtyDate)\n var day = date.getDay()\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn)\n\n date.setDate(date.getDate() + diff)\n date.setHours(23, 59, 59, 999)\n return date\n}\n\nmodule.exports = endOfWeek\n","var parse = require('../parse/index.js')\n\n/**\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of a month\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * var result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nfunction endOfMonth (dirtyDate) {\n var date = parse(dirtyDate)\n var month = date.getMonth()\n date.setFullYear(date.getFullYear(), month + 1, 0)\n date.setHours(23, 59, 59, 999)\n return date\n}\n\nmodule.exports = endOfMonth\n","var parse = require('../parse/index.js')\nvar startOfYear = require('../start_of_year/index.js')\nvar differenceInCalendarDays = require('../difference_in_calendar_days/index.js')\n\n/**\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the day of year\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * var result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nfunction getDayOfYear (dirtyDate) {\n var date = parse(dirtyDate)\n var diff = differenceInCalendarDays(date, startOfYear(date))\n var dayOfYear = diff + 1\n return dayOfYear\n}\n\nmodule.exports = getDayOfYear\n","var parse = require('../parse/index.js')\n\n/**\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * var result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nfunction startOfYear (dirtyDate) {\n var cleanDate = parse(dirtyDate)\n var date = new Date(0)\n date.setFullYear(cleanDate.getFullYear(), 0, 1)\n date.setHours(0, 0, 0, 0)\n return date\n}\n\nmodule.exports = startOfYear\n","var isDate = require('../is_date/index.js')\n\n/**\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {Date} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} argument must be an instance of Date\n *\n * @example\n * // For the valid date:\n * var result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the invalid date:\n * var result = isValid(new Date(''))\n * //=> false\n */\nfunction isValid (dirtyDate) {\n if (isDate(dirtyDate)) {\n return !isNaN(dirtyDate)\n } else {\n throw new TypeError(toString.call(dirtyDate) + ' is not an instance of Date')\n }\n}\n\nmodule.exports = isValid\n","var parse = require('../parse/index.js')\n\n/**\n * @category Year Helpers\n * @summary Is the given date in the leap year?\n *\n * @description\n * Is the given date in the leap year?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in the leap year\n *\n * @example\n * // Is 1 September 2012 in the leap year?\n * var result = isLeapYear(new Date(2012, 8, 1))\n * //=> true\n */\nfunction isLeapYear (dirtyDate) {\n var date = parse(dirtyDate)\n var year = date.getFullYear()\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0\n}\n\nmodule.exports = isLeapYear\n","var parse = require('../parse/index.js')\n\n/**\n * @category Weekday Helpers\n * @summary Get the day of the ISO week of the given date.\n *\n * @description\n * Get the day of the ISO week of the given date,\n * which is 7 for Sunday, 1 for Monday etc.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the day of ISO week\n *\n * @example\n * // Which day of the ISO week is 26 February 2012?\n * var result = getISODay(new Date(2012, 1, 26))\n * //=> 7\n */\nfunction getISODay (dirtyDate) {\n var date = parse(dirtyDate)\n var day = date.getDay()\n\n if (day === 0) {\n day = 7\n }\n\n return day\n}\n\nmodule.exports = getISODay\n","var startOfHour = require('../start_of_hour/index.js')\n\n/**\n * @category Hour Helpers\n * @summary Are the given dates in the same hour?\n *\n * @description\n * Are the given dates in the same hour?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same hour\n *\n * @example\n * // Are 4 September 2014 06:00:00 and 4 September 06:30:00 in the same hour?\n * var result = isSameHour(\n * new Date(2014, 8, 4, 6, 0),\n * new Date(2014, 8, 4, 6, 30)\n * )\n * //=> true\n */\nfunction isSameHour (dirtyDateLeft, dirtyDateRight) {\n var dateLeftStartOfHour = startOfHour(dirtyDateLeft)\n var dateRightStartOfHour = startOfHour(dirtyDateRight)\n\n return dateLeftStartOfHour.getTime() === dateRightStartOfHour.getTime()\n}\n\nmodule.exports = isSameHour\n","var parse = require('../parse/index.js')\n\n/**\n * @category Hour Helpers\n * @summary Return the start of an hour for the given date.\n *\n * @description\n * Return the start of an hour for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of an hour\n *\n * @example\n * // The start of an hour for 2 September 2014 11:55:00:\n * var result = startOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:00:00\n */\nfunction startOfHour (dirtyDate) {\n var date = parse(dirtyDate)\n date.setMinutes(0, 0, 0)\n return date\n}\n\nmodule.exports = startOfHour\n","var isSameWeek = require('../is_same_week/index.js')\n\n/**\n * @category ISO Week Helpers\n * @summary Are the given dates in the same ISO week?\n *\n * @description\n * Are the given dates in the same ISO week?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same ISO week\n *\n * @example\n * // Are 1 September 2014 and 7 September 2014 in the same ISO week?\n * var result = isSameISOWeek(\n * new Date(2014, 8, 1),\n * new Date(2014, 8, 7)\n * )\n * //=> true\n */\nfunction isSameISOWeek (dirtyDateLeft, dirtyDateRight) {\n return isSameWeek(dirtyDateLeft, dirtyDateRight, {weekStartsOn: 1})\n}\n\nmodule.exports = isSameISOWeek\n","var startOfISOYear = require('../start_of_iso_year/index.js')\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Are the given dates in the same ISO week-numbering year?\n *\n * @description\n * Are the given dates in the same ISO week-numbering year?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same ISO week-numbering year\n *\n * @example\n * // Are 29 December 2003 and 2 January 2005 in the same ISO week-numbering year?\n * var result = isSameISOYear(\n * new Date(2003, 11, 29),\n * new Date(2005, 0, 2)\n * )\n * //=> true\n */\nfunction isSameISOYear (dirtyDateLeft, dirtyDateRight) {\n var dateLeftStartOfYear = startOfISOYear(dirtyDateLeft)\n var dateRightStartOfYear = startOfISOYear(dirtyDateRight)\n\n return dateLeftStartOfYear.getTime() === dateRightStartOfYear.getTime()\n}\n\nmodule.exports = isSameISOYear\n","var startOfMinute = require('../start_of_minute/index.js')\n\n/**\n * @category Minute Helpers\n * @summary Are the given dates in the same minute?\n *\n * @description\n * Are the given dates in the same minute?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same minute\n *\n * @example\n * // Are 4 September 2014 06:30:00 and 4 September 2014 06:30:15\n * // in the same minute?\n * var result = isSameMinute(\n * new Date(2014, 8, 4, 6, 30),\n * new Date(2014, 8, 4, 6, 30, 15)\n * )\n * //=> true\n */\nfunction isSameMinute (dirtyDateLeft, dirtyDateRight) {\n var dateLeftStartOfMinute = startOfMinute(dirtyDateLeft)\n var dateRightStartOfMinute = startOfMinute(dirtyDateRight)\n\n return dateLeftStartOfMinute.getTime() === dateRightStartOfMinute.getTime()\n}\n\nmodule.exports = isSameMinute\n","var parse = require('../parse/index.js')\n\n/**\n * @category Minute Helpers\n * @summary Return the start of a minute for the given date.\n *\n * @description\n * Return the start of a minute for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of a minute\n *\n * @example\n * // The start of a minute for 1 December 2014 22:15:45.400:\n * var result = startOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:00\n */\nfunction startOfMinute (dirtyDate) {\n var date = parse(dirtyDate)\n date.setSeconds(0, 0)\n return date\n}\n\nmodule.exports = startOfMinute\n","var parse = require('../parse/index.js')\n\n/**\n * @category Month Helpers\n * @summary Are the given dates in the same month?\n *\n * @description\n * Are the given dates in the same month?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same month\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * var result = isSameMonth(\n * new Date(2014, 8, 2),\n * new Date(2014, 8, 25)\n * )\n * //=> true\n */\nfunction isSameMonth (dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft)\n var dateRight = parse(dirtyDateRight)\n return dateLeft.getFullYear() === dateRight.getFullYear() &&\n dateLeft.getMonth() === dateRight.getMonth()\n}\n\nmodule.exports = isSameMonth\n","var startOfQuarter = require('../start_of_quarter/index.js')\n\n/**\n * @category Quarter Helpers\n * @summary Are the given dates in the same year quarter?\n *\n * @description\n * Are the given dates in the same year quarter?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same quarter\n *\n * @example\n * // Are 1 January 2014 and 8 March 2014 in the same quarter?\n * var result = isSameQuarter(\n * new Date(2014, 0, 1),\n * new Date(2014, 2, 8)\n * )\n * //=> true\n */\nfunction isSameQuarter (dirtyDateLeft, dirtyDateRight) {\n var dateLeftStartOfQuarter = startOfQuarter(dirtyDateLeft)\n var dateRightStartOfQuarter = startOfQuarter(dirtyDateRight)\n\n return dateLeftStartOfQuarter.getTime() === dateRightStartOfQuarter.getTime()\n}\n\nmodule.exports = isSameQuarter\n","var parse = require('../parse/index.js')\n\n/**\n * @category Quarter Helpers\n * @summary Return the start of a year quarter for the given date.\n *\n * @description\n * Return the start of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of a quarter\n *\n * @example\n * // The start of a quarter for 2 September 2014 11:55:00:\n * var result = startOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Jul 01 2014 00:00:00\n */\nfunction startOfQuarter (dirtyDate) {\n var date = parse(dirtyDate)\n var currentMonth = date.getMonth()\n var month = currentMonth - currentMonth % 3\n date.setMonth(month, 1)\n date.setHours(0, 0, 0, 0)\n return date\n}\n\nmodule.exports = startOfQuarter\n","var startOfSecond = require('../start_of_second/index.js')\n\n/**\n * @category Second Helpers\n * @summary Are the given dates in the same second?\n *\n * @description\n * Are the given dates in the same second?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same second\n *\n * @example\n * // Are 4 September 2014 06:30:15.000 and 4 September 2014 06:30.15.500\n * // in the same second?\n * var result = isSameSecond(\n * new Date(2014, 8, 4, 6, 30, 15),\n * new Date(2014, 8, 4, 6, 30, 15, 500)\n * )\n * //=> true\n */\nfunction isSameSecond (dirtyDateLeft, dirtyDateRight) {\n var dateLeftStartOfSecond = startOfSecond(dirtyDateLeft)\n var dateRightStartOfSecond = startOfSecond(dirtyDateRight)\n\n return dateLeftStartOfSecond.getTime() === dateRightStartOfSecond.getTime()\n}\n\nmodule.exports = isSameSecond\n","var parse = require('../parse/index.js')\n\n/**\n * @category Second Helpers\n * @summary Return the start of a second for the given date.\n *\n * @description\n * Return the start of a second for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of a second\n *\n * @example\n * // The start of a second for 1 December 2014 22:15:45.400:\n * var result = startOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.000\n */\nfunction startOfSecond (dirtyDate) {\n var date = parse(dirtyDate)\n date.setMilliseconds(0)\n return date\n}\n\nmodule.exports = startOfSecond\n","var parse = require('../parse/index.js')\n\n/**\n * @category Year Helpers\n * @summary Are the given dates in the same year?\n *\n * @description\n * Are the given dates in the same year?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same year\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same year?\n * var result = isSameYear(\n * new Date(2014, 8, 2),\n * new Date(2014, 8, 25)\n * )\n * //=> true\n */\nfunction isSameYear (dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft)\n var dateRight = parse(dirtyDateRight)\n return dateLeft.getFullYear() === dateRight.getFullYear()\n}\n\nmodule.exports = isSameYear\n","var parse = require('../parse/index.js')\n\n/**\n * @category Week Helpers\n * @summary Return the last day of a week for the given date.\n *\n * @description\n * Return the last day of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Object} [options] - the object with options\n * @param {Number} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the last day of a week\n *\n * @example\n * // The last day of a week for 2 September 2014 11:55:00:\n * var result = lastDayOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the last day of the week for 2 September 2014 11:55:00:\n * var result = lastDayOfWeek(new Date(2014, 8, 2, 11, 55, 0), {weekStartsOn: 1})\n * //=> Sun Sep 07 2014 00:00:00\n */\nfunction lastDayOfWeek (dirtyDate, dirtyOptions) {\n var weekStartsOn = dirtyOptions ? (Number(dirtyOptions.weekStartsOn) || 0) : 0\n\n var date = parse(dirtyDate)\n var day = date.getDay()\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn)\n\n date.setHours(0, 0, 0, 0)\n date.setDate(date.getDate() + diff)\n return date\n}\n\nmodule.exports = lastDayOfWeek\n","var parse = require('../parse/index.js')\nvar getDaysInMonth = require('../get_days_in_month/index.js')\n\n/**\n * @category Month Helpers\n * @summary Set the month to the given date.\n *\n * @description\n * Set the month to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} month - the month of the new date\n * @returns {Date} the new date with the month setted\n *\n * @example\n * // Set February to 1 September 2014:\n * var result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\nfunction setMonth (dirtyDate, dirtyMonth) {\n var date = parse(dirtyDate)\n var month = Number(dirtyMonth)\n var year = date.getFullYear()\n var day = date.getDate()\n\n var dateWithDesiredMonth = new Date(0)\n dateWithDesiredMonth.setFullYear(year, month, 15)\n dateWithDesiredMonth.setHours(0, 0, 0, 0)\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth)\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n date.setMonth(month, Math.min(day, daysInMonth))\n return date\n}\n\nmodule.exports = setMonth\n","var makeString = require('./helper/makeString');\n\nmodule.exports = function isBlank(str) {\n return (/^\\s*$/).test(makeString(str));\n};\n","var makeString = require('./helper/makeString');\n\nmodule.exports = function decapitalize(str) {\n str = makeString(str);\n return str.charAt(0).toLowerCase() + str.slice(1);\n};\n","var makeString = require('./makeString');\n\nmodule.exports = function escapeRegExp(str) {\n return makeString(str).replace(/([.*+?^=!:${}()|[\\]\\/\\\\])/g, '\\\\$1');\n};\n","\nvar makeString = require('./helper/makeString');\n\nvar from = 'ąàáäâãåæăćčĉęèéëêĝĥìíïîĵłľńňòóöőôõðøśșşšŝťțţŭùúüűûñÿýçżźž',\n to = 'aaaaaaaaaccceeeeeghiiiijllnnoooooooossssstttuuuuuunyyczzz';\n\nfrom += from.toUpperCase();\nto += to.toUpperCase();\n\nto = to.split('');\n\n// for tokens requireing multitoken output\nfrom += 'ß';\nto.push('ss');\n\n\nmodule.exports = function cleanDiacritics(str) {\n return makeString(str).replace(/.{1}/g, function(c){\n var index = from.indexOf(c);\n return index === -1 ? c : to[index];\n });\n};\n","var chars = require('./chars');\n\nmodule.exports = function splice(str, i, howmany, substr) {\n var arr = chars(str);\n arr.splice(~~i, ~~howmany, substr);\n return arr.join('');\n};\n","module.exports = function toPositive(number) {\n return number < 0 ? 0 : (+number || 0);\n};\n","var makeString = require('./makeString');\n\nmodule.exports = function adjacent(str, direction) {\n str = makeString(str);\n if (str.length === 0) {\n return '';\n }\n return str.slice(0, -1) + String.fromCharCode(str.charCodeAt(str.length - 1) + direction);\n};\n","var trim = require('./trim');\nvar decap = require('./decapitalize');\n\nmodule.exports = function camelize(str, decapitalize) {\n str = trim(str).replace(/[-_\\s]+(.)?/g, function(match, c) {\n return c ? c.toUpperCase() : '';\n });\n\n if (decapitalize === true) {\n return decap(str);\n } else {\n return str;\n }\n};\n","var trim = require('./trim');\n\nmodule.exports = function underscored(str) {\n return trim(str).replace(/([a-z\\d])([A-Z]+)/g, '$1_$2').replace(/[-\\s]+/g, '_').toLowerCase();\n};\n","var trim = require('./trim');\n\nmodule.exports = function dasherize(str) {\n return trim(str).replace(/([A-Z])/g, '-$1').replace(/[-_\\s]+/g, '-').toLowerCase();\n};\n","module.exports = function strRepeat(str, qty){\n if (qty < 1) return '';\n var result = '';\n while (qty > 0) {\n if (qty & 1) result += str;\n qty >>= 1, str += str;\n }\n return result;\n};\n","/* global window, exports, define */\n\n!function() {\n 'use strict'\n\n var re = {\n not_string: /[^s]/,\n not_bool: /[^t]/,\n not_type: /[^T]/,\n not_primitive: /[^v]/,\n number: /[diefg]/,\n numeric_arg: /[bcdiefguxX]/,\n json: /[j]/,\n not_json: /[^j]/,\n text: /^[^\\x25]+/,\n modulo: /^\\x25{2}/,\n placeholder: /^\\x25(?:([1-9]\\d*)\\$|\\(([^)]+)\\))?(\\+)?(0|'[^$])?(-)?(\\d+)?(?:\\.(\\d+))?([b-gijostTuvxX])/,\n key: /^([a-z_][a-z_\\d]*)/i,\n key_access: /^\\.([a-z_][a-z_\\d]*)/i,\n index_access: /^\\[(\\d+)\\]/,\n sign: /^[+-]/\n }\n\n function sprintf(key) {\n // `arguments` is not an array, but should be fine for this call\n return sprintf_format(sprintf_parse(key), arguments)\n }\n\n function vsprintf(fmt, argv) {\n return sprintf.apply(null, [fmt].concat(argv || []))\n }\n\n function sprintf_format(parse_tree, argv) {\n var cursor = 1, tree_length = parse_tree.length, arg, output = '', i, k, ph, pad, pad_character, pad_length, is_positive, sign\n for (i = 0; i < tree_length; i++) {\n if (typeof parse_tree[i] === 'string') {\n output += parse_tree[i]\n }\n else if (typeof parse_tree[i] === 'object') {\n ph = parse_tree[i] // convenience purposes only\n if (ph.keys) { // keyword argument\n arg = argv[cursor]\n for (k = 0; k < ph.keys.length; k++) {\n if (arg == undefined) {\n throw new Error(sprintf('[sprintf] Cannot access property \"%s\" of undefined value \"%s\"', ph.keys[k], ph.keys[k-1]))\n }\n arg = arg[ph.keys[k]]\n }\n }\n else if (ph.param_no) { // positional argument (explicit)\n arg = argv[ph.param_no]\n }\n else { // positional argument (implicit)\n arg = argv[cursor++]\n }\n\n if (re.not_type.test(ph.type) && re.not_primitive.test(ph.type) && arg instanceof Function) {\n arg = arg()\n }\n\n if (re.numeric_arg.test(ph.type) && (typeof arg !== 'number' && isNaN(arg))) {\n throw new TypeError(sprintf('[sprintf] expecting number but found %T', arg))\n }\n\n if (re.number.test(ph.type)) {\n is_positive = arg >= 0\n }\n\n switch (ph.type) {\n case 'b':\n arg = parseInt(arg, 10).toString(2)\n break\n case 'c':\n arg = String.fromCharCode(parseInt(arg, 10))\n break\n case 'd':\n case 'i':\n arg = parseInt(arg, 10)\n break\n case 'j':\n arg = JSON.stringify(arg, null, ph.width ? parseInt(ph.width) : 0)\n break\n case 'e':\n arg = ph.precision ? parseFloat(arg).toExponential(ph.precision) : parseFloat(arg).toExponential()\n break\n case 'f':\n arg = ph.precision ? parseFloat(arg).toFixed(ph.precision) : parseFloat(arg)\n break\n case 'g':\n arg = ph.precision ? String(Number(arg.toPrecision(ph.precision))) : parseFloat(arg)\n break\n case 'o':\n arg = (parseInt(arg, 10) >>> 0).toString(8)\n break\n case 's':\n arg = String(arg)\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 't':\n arg = String(!!arg)\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'T':\n arg = Object.prototype.toString.call(arg).slice(8, -1).toLowerCase()\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'u':\n arg = parseInt(arg, 10) >>> 0\n break\n case 'v':\n arg = arg.valueOf()\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'x':\n arg = (parseInt(arg, 10) >>> 0).toString(16)\n break\n case 'X':\n arg = (parseInt(arg, 10) >>> 0).toString(16).toUpperCase()\n break\n }\n if (re.json.test(ph.type)) {\n output += arg\n }\n else {\n if (re.number.test(ph.type) && (!is_positive || ph.sign)) {\n sign = is_positive ? '+' : '-'\n arg = arg.toString().replace(re.sign, '')\n }\n else {\n sign = ''\n }\n pad_character = ph.pad_char ? ph.pad_char === '0' ? '0' : ph.pad_char.charAt(1) : ' '\n pad_length = ph.width - (sign + arg).length\n pad = ph.width ? (pad_length > 0 ? pad_character.repeat(pad_length) : '') : ''\n output += ph.align ? sign + arg + pad : (pad_character === '0' ? sign + pad + arg : pad + sign + arg)\n }\n }\n }\n return output\n }\n\n var sprintf_cache = Object.create(null)\n\n function sprintf_parse(fmt) {\n if (sprintf_cache[fmt]) {\n return sprintf_cache[fmt]\n }\n\n var _fmt = fmt, match, parse_tree = [], arg_names = 0\n while (_fmt) {\n if ((match = re.text.exec(_fmt)) !== null) {\n parse_tree.push(match[0])\n }\n else if ((match = re.modulo.exec(_fmt)) !== null) {\n parse_tree.push('%')\n }\n else if ((match = re.placeholder.exec(_fmt)) !== null) {\n if (match[2]) {\n arg_names |= 1\n var field_list = [], replacement_field = match[2], field_match = []\n if ((field_match = re.key.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') {\n if ((field_match = re.key_access.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n }\n else if ((field_match = re.index_access.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n }\n else {\n throw new SyntaxError('[sprintf] failed to parse named argument key')\n }\n }\n }\n else {\n throw new SyntaxError('[sprintf] failed to parse named argument key')\n }\n match[2] = field_list\n }\n else {\n arg_names |= 2\n }\n if (arg_names === 3) {\n throw new Error('[sprintf] mixing positional and named placeholders is not (yet) supported')\n }\n\n parse_tree.push(\n {\n placeholder: match[0],\n param_no: match[1],\n keys: match[2],\n sign: match[3],\n pad_char: match[4],\n align: match[5],\n width: match[6],\n precision: match[7],\n type: match[8]\n }\n )\n }\n else {\n throw new SyntaxError('[sprintf] unexpected placeholder')\n }\n _fmt = _fmt.substring(match[0].length)\n }\n return sprintf_cache[fmt] = parse_tree\n }\n\n /**\n * export to either browser or node.js\n */\n /* eslint-disable quote-props */\n if (typeof exports !== 'undefined') {\n exports['sprintf'] = sprintf\n exports['vsprintf'] = vsprintf\n }\n if (typeof window !== 'undefined') {\n window['sprintf'] = sprintf\n window['vsprintf'] = vsprintf\n\n if (typeof define === 'function' && define['amd']) {\n define(function() {\n return {\n 'sprintf': sprintf,\n 'vsprintf': vsprintf\n }\n })\n }\n }\n /* eslint-enable quote-props */\n}(); // eslint-disable-line\n","var rtrim = require('./rtrim');\n\nmodule.exports = function toSentence(array, separator, lastSeparator, serial) {\n separator = separator || ', ';\n lastSeparator = lastSeparator || ' and ';\n var a = array.slice(),\n lastMember = a.pop();\n\n if (array.length > 2 && serial) lastSeparator = rtrim(separator) + lastSeparator;\n\n return a.length ? a.join(separator) + lastSeparator + lastMember : lastMember;\n};\n","module.exports = function surround(str, wrapper) {\n return [wrapper, str, wrapper].join('');\n};\n","import { Tip } from \"@single-js/common/components/tip/tip\";\nimport format from \"date-fns/format\";\nimport getTime from \"date-fns/get_time\";\nimport * as React from \"react\";\nimport \"./columns-info.scss\";\nconst EVENT_COLUMNS = [\n {\n id: \"eventTime\",\n title: \"Time\",\n formatter: (event) => format(event.eventTime, \"YYYY/MM/DD HH:mm:ss\"),\n getValue: (event) => getTime(event.eventTime),\n },\n {\n id: \"eventSeverity\",\n title: \"Event Level\",\n formatter: (event) => event.eventSeverity,\n getValue: (event) => event.eventSeverity,\n },\n {\n id: \"eventName\",\n title: \"Event Name\",\n formatter: (event) => event.eventType,\n getValue: (event) => event.eventType,\n },\n {\n id: \"eventDetails\",\n title: \"Details\",\n formatter: (event) => (React.createElement(Tip, { tooltip: React.createElement(\"pre\", { className: \"event-details-tooltip\" }, JSON.stringify(event.eventDetails, null, 4)), direction: \"w\", className: \"event-details\" }, JSON.stringify(event.eventDetails))),\n getValue: (event) => JSON.stringify(event.eventDetails),\n },\n];\nexport default EVENT_COLUMNS;\n","import { IconTip as IconTipBase, } from \"@single-js/common/components/icon/icon-tip\";\nimport * as React from \"react\";\nexport const IconTip = (props) => {\n return React.createElement(IconTipBase, { ...props });\n};\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","import { logFocusError, } from \"@single-js/common/core/sql/actions\";\nimport { getMsgStateError } from \"@single-js/common/core/sql/connection/utils\";\nimport { servicesLocator } from \"@single-js/common/services/services-locator\";\nimport { nullableToMaybe } from \"@single-js/common/util/nullable\";\nimport { mapFilter } from \"@single-js/common/util/observable\";\nimport { select } from \"@single-js/common/util/query\";\nimport { makeActionCreator } from \"@single-js/common/worker/api/helpers\";\nimport _ from \"lodash\";\nimport { from, merge, of } from \"rxjs\";\nexport const SQL_ACTIVE_PROCESSES_ENABLED = `\n SELECT\n COUNT(*) AS isActiveProcessesEnabled\n FROM\n INFORMATION_SCHEMA.TABLES\n WHERE\n TABLE_NAME = 'MV_PROCESSLIST' AND\n TABLE_SCHEMA = 'information_schema';\n`;\nexport const isActiveProcessesEnabled = makeActionCreator({\n name: \"isActiveProcessesEnabled\",\n handle(ctx, { connectionConfig, }) {\n return ctx.manager\n .getPooledConnection(connectionConfig)\n .then((conn) => select(conn, SQL_ACTIVE_PROCESSES_ENABLED)\n .then((rows) => {\n if (rows.length !== 1) {\n throw new Error(\"The Active Queries Enabled query should only return one row\");\n }\n return {\n type: \"ACTIVE_PROCESSES_ENABLED\",\n error: false,\n payload: {\n loading: false,\n data: rows[0].isActiveProcessesEnabled.gte(1),\n },\n };\n })\n .catch((err) => {\n servicesLocator.getLogger().logError(err);\n const error = getMsgStateError(err);\n return {\n type: \"ACTIVE_PROCESSES_ENABLED\",\n error: true,\n payload: error,\n };\n })\n .finally(() => conn.release()))\n .catch((err) => {\n const error = getMsgStateError(err);\n return {\n type: \"ACTIVE_PROCESSES_ENABLED\",\n error: true,\n payload: error,\n };\n });\n },\n});\nexport const SQL_ACTIVE_PROCESSES = `\n SELECT\n p.info AS queryText,\n p.id AS processId,\n n.id AS nodeId,\n p.time AS elapsedTime,\n TIMESTAMPADD(SECOND, -p.time, NOW()) AS submitted,\n p.state AS state,\n p.user AS user,\n n.ip_addr AS nodeHost,\n n.port AS nodePort,\n p.db AS databaseName\n FROM\n information_schema.mv_processlist p\n JOIN information_schema.mv_nodes n\n ON p.node_id = n.id\n WHERE\n p.command != \"Sleep\"\n AND n.type != \"LEAF\"\n AND p.id != ?\n`;\nexport const queryActiveProcesses = makeActionCreator({\n name: \"queryActiveProcesses\",\n handle(ctx, { connectionConfig, }) {\n const $compute = from(ctx.manager\n .getPooledConnection(connectionConfig)\n .then((conn) => select(conn, SQL_ACTIVE_PROCESSES, [\n conn.threadId,\n ])\n .then((processes) => ({\n type: \"ACTIVE_PROCESSES\",\n error: false,\n payload: {\n loading: false,\n data: _.map(processes, ({ queryText, processId, nodeId, elapsedTime, submitted, state, user, nodeHost, nodePort, databaseName, }) => ({\n queryText: nullableToMaybe(queryText),\n processId,\n nodeId,\n elapsedTime,\n submitted,\n state: nullableToMaybe(state),\n user,\n nodeHost,\n nodePort,\n databaseName: nullableToMaybe(databaseName),\n })),\n },\n }))\n .catch((err) => {\n servicesLocator.getLogger().logError(err);\n const error = getMsgStateError(err);\n return {\n type: \"ACTIVE_PROCESSES\",\n error: true,\n payload: error,\n };\n })\n .finally(() => conn.release()))\n .catch((err) => {\n const error = getMsgStateError(err);\n return {\n type: \"ACTIVE_PROCESSES\",\n error: true,\n payload: error,\n };\n }));\n const $loading = of({\n type: \"ACTIVE_PROCESSES\",\n error: false,\n payload: {\n loading: true,\n },\n });\n return merge($loading, $compute);\n },\n});\nconst SQL_KILL_QUERY_PROCESS_NODE = `KILL QUERY ? ?`;\nexport const killQuery = makeActionCreator({\n name: \"killQuery\",\n handle(ctx, { nodeId, processId, connectionConfig, }) {\n const getCancelQueryError = (message) => {\n return logFocusError(`An error occurred while canceling the query: ${message}`);\n };\n return from(ctx.manager\n .getPooledConnection(connectionConfig)\n .then((conn) => select(conn, SQL_KILL_QUERY_PROCESS_NODE, [\n processId.toNumber(),\n nodeId.toNumber(),\n ])\n .then(() => undefined) // throw away the useless Rows that select returns, since it's not an action we want to dispatch\n .catch((err) => {\n servicesLocator.getLogger().logError(err);\n return getCancelQueryError(err.message);\n })\n .finally(() => conn.release()))\n .catch((err) => {\n return getCancelQueryError(err.message);\n })).pipe(mapFilter((v) => (v ? v : undefined)));\n },\n});\n","import { select } from \"@single-js/common/util/query\";\nimport { differenceInSeconds } from \"date-fns\";\nimport { from, merge, of } from \"rxjs\";\nimport { logError } from \"util/logging\";\nimport { makeActionCreator } from \"worker/api/helpers\";\n// We default this limit to 1028 which is the maximum size of the events'\n// circular buffer in MemSQL. We are just being careful in case that\n// size ever increases.\nconst SQL_EVENTS_QUERY = (limit = 1028) => `\n SELECT\n EVENT_TIME AS eventTime,\n SEVERITY AS eventSeverity,\n EVENT_TYPE AS eventType,\n DETAILS AS eventDetails\n FROM\n INFORMATION_SCHEMA.LMV_EVENTS\n ORDER BY\n EVENT_TIME DESC\n LIMIT\n ${limit}\n`;\nconst getEventSeverity = (eventSeverity) => {\n switch (eventSeverity) {\n case \"NOTICE\":\n case \"WARNING\":\n case \"ERROR\":\n return eventSeverity;\n default:\n return \"UNKNOWN\";\n }\n};\nconst createEventsAction = (rawEvents, startDate) => {\n const events = [];\n for (let i = 0; i < rawEvents.length; i++) {\n const rawEvent = rawEvents[i];\n let eventDetails;\n try {\n eventDetails = JSON.parse(rawEvent.eventDetails);\n }\n catch (e) {\n return {\n type: \"EVENTS\",\n error: true,\n payload: {\n message: e.message,\n },\n };\n }\n events.push({\n eventTime: rawEvent.eventTime,\n eventSeverity: getEventSeverity(rawEvent.eventSeverity),\n eventType: rawEvent.eventType,\n eventDetails,\n });\n }\n return {\n type: \"EVENTS\",\n payload: {\n loading: false,\n data: {\n events,\n deltaTimeS: differenceInSeconds(new Date(), startDate),\n },\n },\n error: false,\n };\n};\nexport const queryEvents = makeActionCreator({\n name: \"queryEvents\",\n handle: (ctx, { limit }) => {\n const $loading = of({\n type: \"EVENTS\",\n error: false,\n payload: { loading: true },\n });\n const startDate = new Date();\n const $compute = from(ctx.manager\n .getPooledConnection()\n .then((conn) => select(conn, SQL_EVENTS_QUERY(limit))\n .then((events) => createEventsAction(events, startDate))\n .catch((err) => {\n logError(err);\n return {\n type: \"EVENTS\",\n error: true,\n payload: {\n message: err.message,\n },\n };\n })\n .finally(() => conn.release()))\n .catch((err) => {\n return {\n type: \"EVENTS\",\n error: true,\n payload: {\n message: err.message,\n },\n };\n }));\n return merge($loading, $compute);\n },\n});\n","/* humanize.js - v1.8.2 */\n'use strict';\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 ? \"symbol\" : typeof obj; };\n\n/**\n * Copyright 2013-2016 HubSpotDev\n * MIT Licensed\n *\n * @module humanize.js\n */\n\n(function (root, factory) {\n if ((typeof exports === 'undefined' ? 'undefined' : _typeof(exports)) === 'object') {\n module.exports = factory();\n } else if (typeof define === 'function' && define.amd) {\n define([], function () {\n return root.Humanize = factory();\n });\n } else {\n root.Humanize = factory();\n }\n})(this, function () {\n //------------------------------------------------------------------------------\n // Constants\n //------------------------------------------------------------------------------\n\n var TIME_FORMATS = [{\n name: 'second',\n value: 1e3\n }, {\n name: 'minute',\n value: 6e4\n }, {\n name: 'hour',\n value: 36e5\n }, {\n name: 'day',\n value: 864e5\n }, {\n name: 'week',\n value: 6048e5\n }];\n\n var LABELS_FOR_POWERS_OF_KILO = {\n P: Math.pow(2, 50),\n T: Math.pow(2, 40),\n G: Math.pow(2, 30),\n M: Math.pow(2, 20)\n };\n\n //------------------------------------------------------------------------------\n // Helpers\n //------------------------------------------------------------------------------\n\n var exists = function exists(maybe) {\n return typeof maybe !== 'undefined' && maybe !== null;\n };\n\n var isNaN = function isNaN(value) {\n return value !== value;\n }; // eslint-disable-line\n\n var isFiniteNumber = function isFiniteNumber(value) {\n return isFinite(value) && !isNaN(parseFloat(value));\n };\n\n var isArray = function isArray(value) {\n var type = Object.prototype.toString.call(value);\n return type === '[object Array]';\n };\n\n //------------------------------------------------------------------------------\n // Humanize\n //------------------------------------------------------------------------------\n\n var Humanize = {\n\n // Converts a large integer to a friendly text representation.\n\n intword: function intword(number, charWidth) {\n var decimals = arguments.length <= 2 || arguments[2] === undefined ? 2 : arguments[2];\n\n /*\n * This method is deprecated. Please use compactInteger instead.\n * intword will be going away in the next major version.\n */\n return Humanize.compactInteger(number, decimals);\n },\n\n\n // Converts an integer into its most compact representation\n compactInteger: function compactInteger(input) {\n var decimals = arguments.length <= 1 || arguments[1] === undefined ? 0 : arguments[1];\n\n decimals = Math.max(decimals, 0);\n var number = parseInt(input, 10);\n var signString = number < 0 ? '-' : '';\n var unsignedNumber = Math.abs(number);\n var unsignedNumberString = String(unsignedNumber);\n var numberLength = unsignedNumberString.length;\n var numberLengths = [13, 10, 7, 4];\n var bigNumPrefixes = ['T', 'B', 'M', 'k'];\n\n // small numbers\n if (unsignedNumber < 1000) {\n return '' + signString + unsignedNumberString;\n }\n\n // really big numbers\n if (numberLength > numberLengths[0] + 3) {\n return number.toExponential(decimals).replace('e+', 'x10^');\n }\n\n // 999 < unsignedNumber < 999,999,999,999,999\n var length = void 0;\n for (var i = 0; i < numberLengths.length; i++) {\n var _length = numberLengths[i];\n if (numberLength >= _length) {\n length = _length;\n break;\n }\n }\n\n var decimalIndex = numberLength - length + 1;\n var unsignedNumberCharacterArray = unsignedNumberString.split('');\n\n var wholePartArray = unsignedNumberCharacterArray.slice(0, decimalIndex);\n var decimalPartArray = unsignedNumberCharacterArray.slice(decimalIndex, decimalIndex + decimals + 1);\n\n var wholePart = wholePartArray.join('');\n\n // pad decimalPart if necessary\n var decimalPart = decimalPartArray.join('');\n if (decimalPart.length < decimals) {\n decimalPart += '' + Array(decimals - decimalPart.length + 1).join('0');\n }\n\n var output = void 0;\n if (decimals === 0) {\n output = '' + signString + wholePart + bigNumPrefixes[numberLengths.indexOf(length)];\n } else {\n var outputNumber = Number(wholePart + '.' + decimalPart).toFixed(decimals);\n output = '' + signString + outputNumber + bigNumPrefixes[numberLengths.indexOf(length)];\n }\n\n return output;\n },\n\n\n // Converts an integer to a string containing commas every three digits.\n intComma: function intComma(number) {\n var decimals = arguments.length <= 1 || arguments[1] === undefined ? 0 : arguments[1];\n\n return Humanize.formatNumber(number, decimals);\n },\n intcomma: function intcomma() {\n return Humanize.intComma.apply(Humanize, arguments);\n },\n\n\n // Formats the value like a 'human-readable' file size (i.e. '13 KB', '4.1 MB', '102 bytes', etc).\n fileSize: function fileSize(filesize) {\n var precision = arguments.length <= 1 || arguments[1] === undefined ? 2 : arguments[1];\n\n for (var label in LABELS_FOR_POWERS_OF_KILO) {\n if (LABELS_FOR_POWERS_OF_KILO.hasOwnProperty(label)) {\n var minnum = LABELS_FOR_POWERS_OF_KILO[label];\n if (filesize >= minnum) {\n return Humanize.formatNumber(filesize / minnum, precision, '') + ' ' + label + 'B';\n }\n }\n }\n if (filesize >= 1024) {\n return Humanize.formatNumber(filesize / 1024, 0) + ' KB';\n }\n\n return Humanize.formatNumber(filesize, 0) + Humanize.pluralize(filesize, ' byte');\n },\n filesize: function filesize() {\n return Humanize.fileSize.apply(Humanize, arguments);\n },\n\n\n // Formats a number to a human-readable string.\n // Localize by overriding the precision, thousand and decimal arguments.\n formatNumber: function formatNumber(number) {\n var precision = arguments.length <= 1 || arguments[1] === undefined ? 0 : arguments[1];\n var thousand = arguments.length <= 2 || arguments[2] === undefined ? ',' : arguments[2];\n var decimal = arguments.length <= 3 || arguments[3] === undefined ? '.' : arguments[3];\n\n // Create some private utility functions to make the computational\n // code that follows much easier to read.\n var firstComma = function firstComma(_number, _thousand, _position) {\n return _position ? _number.substr(0, _position) + _thousand : '';\n };\n\n var commas = function commas(_number, _thousand, _position) {\n return _number.substr(_position).replace(/(\\d{3})(?=\\d)/g, '$1' + _thousand);\n };\n\n var decimals = function decimals(_number, _decimal, usePrecision) {\n return usePrecision ? _decimal + Humanize.toFixed(Math.abs(_number), usePrecision).split('.')[1] : '';\n };\n\n var usePrecision = Humanize.normalizePrecision(precision);\n\n // Do some calc\n var negative = number < 0 && '-' || '';\n var base = String(parseInt(Humanize.toFixed(Math.abs(number || 0), usePrecision), 10));\n var mod = base.length > 3 ? base.length % 3 : 0;\n\n // Format the number\n return negative + firstComma(base, thousand, mod) + commas(base, thousand, mod) + decimals(number, decimal, usePrecision);\n },\n\n\n // Fixes binary rounding issues (eg. (0.615).toFixed(2) === '0.61')\n toFixed: function toFixed(value, precision) {\n precision = exists(precision) ? precision : Humanize.normalizePrecision(precision, 0);\n var power = Math.pow(10, precision);\n\n // Multiply up by precision, round accurately, then divide and use native toFixed()\n return (Math.round(value * power) / power).toFixed(precision);\n },\n\n\n // Ensures precision value is a positive integer\n normalizePrecision: function normalizePrecision(value, base) {\n value = Math.round(Math.abs(value));\n return isNaN(value) ? base : value;\n },\n\n\n // Converts an integer to its ordinal as a string.\n ordinal: function ordinal(value) {\n var number = parseInt(value, 10);\n\n if (number === 0) {\n return value;\n }\n\n var specialCase = number % 100;\n if ([11, 12, 13].indexOf(specialCase) >= 0) {\n return number + 'th';\n }\n\n var leastSignificant = number % 10;\n\n var end = void 0;\n switch (leastSignificant) {\n case 1:\n end = 'st';\n break;\n case 2:\n end = 'nd';\n break;\n case 3:\n end = 'rd';\n break;\n default:\n end = 'th';\n }\n\n return '' + number + end;\n },\n\n\n // Interprets numbers as occurences. Also accepts an optional array/map of overrides.\n times: function times(value) {\n var overrides = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n if (isFiniteNumber(value) && value >= 0) {\n var number = parseFloat(value);\n var smallTimes = ['never', 'once', 'twice'];\n if (exists(overrides[number])) {\n return String(overrides[number]);\n }\n\n var numberString = exists(smallTimes[number]) && smallTimes[number].toString();\n return numberString || number.toString() + ' times';\n }\n return null;\n },\n\n\n // Returns the plural version of a given word if the value is not 1. The default suffix is 's'.\n pluralize: function pluralize(number, singular, plural) {\n if (!(exists(number) && exists(singular))) {\n return null;\n }\n\n plural = exists(plural) ? plural : singular + 's';\n\n return parseInt(number, 10) === 1 ? singular : plural;\n },\n\n\n // Truncates a string if it is longer than the specified number of characters (inclusive).\n // Truncated strings will end with a translatable ellipsis sequence (\"…\").\n truncate: function truncate(str) {\n var length = arguments.length <= 1 || arguments[1] === undefined ? 100 : arguments[1];\n var ending = arguments.length <= 2 || arguments[2] === undefined ? '...' : arguments[2];\n\n if (str.length > length) {\n return str.substring(0, length - ending.length) + ending;\n }\n return str;\n },\n\n\n // Truncates a string after a certain number of words.\n truncateWords: function truncateWords(string, length) {\n var array = string.split(' ');\n var result = '';\n var i = 0;\n\n while (i < length) {\n if (exists(array[i])) {\n result += array[i] + ' ';\n }\n i++;\n }\n\n if (array.length > length) {\n return result + '...';\n }\n\n return null;\n },\n truncatewords: function truncatewords() {\n return Humanize.truncateWords.apply(Humanize, arguments);\n },\n\n\n // Truncates a number to an upper bound.\n boundedNumber: function boundedNumber(num) {\n var bound = arguments.length <= 1 || arguments[1] === undefined ? 100 : arguments[1];\n var ending = arguments.length <= 2 || arguments[2] === undefined ? '+' : arguments[2];\n\n var result = void 0;\n\n if (isFiniteNumber(num) && isFiniteNumber(bound)) {\n if (num > bound) {\n result = bound + ending;\n }\n }\n\n return (result || num).toString();\n },\n truncatenumber: function truncatenumber() {\n return Humanize.boundedNumber.apply(Humanize, arguments);\n },\n\n\n // Converts a list of items to a human readable string with an optional limit.\n oxford: function oxford(items, limit, limitStr) {\n var numItems = items.length;\n\n var limitIndex = void 0;\n if (numItems < 2) {\n return String(items);\n } else if (numItems === 2) {\n return items.join(' and ');\n } else if (exists(limit) && numItems > limit) {\n var extra = numItems - limit;\n limitIndex = limit;\n limitStr = exists(limitStr) ? limitStr : ', and ' + extra + ' ' + Humanize.pluralize(extra, 'other');\n } else {\n limitIndex = -1;\n limitStr = ', and ' + items[numItems - 1];\n }\n\n return items.slice(0, limitIndex).join(', ') + limitStr;\n },\n\n\n // Converts an object to a definition-like string\n dictionary: function dictionary(object) {\n var joiner = arguments.length <= 1 || arguments[1] === undefined ? ' is ' : arguments[1];\n var separator = arguments.length <= 2 || arguments[2] === undefined ? ', ' : arguments[2];\n\n var result = '';\n\n if (exists(object) && (typeof object === 'undefined' ? 'undefined' : _typeof(object)) === 'object' && !isArray(object)) {\n var defs = [];\n for (var key in object) {\n if (object.hasOwnProperty(key)) {\n var val = object[key];\n defs.push('' + key + joiner + val);\n }\n }\n\n return defs.join(separator);\n }\n\n return result;\n },\n\n\n // Describes how many times an item appears in a list\n frequency: function frequency(list, verb) {\n if (!isArray(list)) {\n return null;\n }\n\n var len = list.length;\n var times = Humanize.times(len);\n\n if (len === 0) {\n return times + ' ' + verb;\n }\n\n return verb + ' ' + times;\n },\n pace: function pace(value, intervalMs) {\n var unit = arguments.length <= 2 || arguments[2] === undefined ? 'time' : arguments[2];\n\n if (value === 0 || intervalMs === 0) {\n // Needs a better string than this...\n return 'No ' + Humanize.pluralize(0, unit);\n }\n\n // Expose these as overridables?\n var prefix = 'Approximately';\n var timeUnit = void 0;\n var relativePace = void 0;\n\n var rate = value / intervalMs;\n for (var i = 0; i < TIME_FORMATS.length; ++i) {\n // assumes sorted list\n var f = TIME_FORMATS[i];\n relativePace = rate * f.value;\n if (relativePace > 1) {\n timeUnit = f.name;\n break;\n }\n }\n\n // Use the last time unit if there is nothing smaller\n if (!timeUnit) {\n prefix = 'Less than';\n relativePace = 1;\n timeUnit = TIME_FORMATS[TIME_FORMATS.length - 1].name;\n }\n\n var roundedPace = Math.round(relativePace);\n unit = Humanize.pluralize(roundedPace, unit);\n\n return prefix + ' ' + roundedPace + ' ' + unit + ' per ' + timeUnit;\n },\n\n\n // Converts newlines to
tags\n nl2br: function nl2br(string) {\n var replacement = arguments.length <= 1 || arguments[1] === undefined ? '
' : arguments[1];\n\n return string.replace(/\\n/g, replacement);\n },\n\n\n // Converts
tags to newlines\n br2nl: function br2nl(string) {\n var replacement = arguments.length <= 1 || arguments[1] === undefined ? '\\r\\n' : arguments[1];\n\n return string.replace(/\\/g, replacement);\n },\n\n\n // Capitalizes first letter in a string\n capitalize: function capitalize(string) {\n var downCaseTail = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1];\n\n return '' + string.charAt(0).toUpperCase() + (downCaseTail ? string.slice(1).toLowerCase() : string.slice(1));\n },\n\n\n // Capitalizes the first letter of each word in a string\n capitalizeAll: function capitalizeAll(string) {\n return string.replace(/(?:^|\\s)\\S/g, function (a) {\n return a.toUpperCase();\n });\n },\n\n\n // Titlecase words in a string.\n titleCase: function titleCase(string) {\n var smallWords = /\\b(a|an|and|at|but|by|de|en|for|if|in|of|on|or|the|to|via|vs?\\.?)\\b/i;\n var internalCaps = /\\S+[A-Z]+\\S*/;\n var splitOnWhiteSpaceRegex = /\\s+/;\n var splitOnHyphensRegex = /-/;\n\n var _doTitleCase = void 0;\n _doTitleCase = function doTitleCase(_string) {\n var hyphenated = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1];\n var firstOrLast = arguments.length <= 2 || arguments[2] === undefined ? true : arguments[2];\n\n var titleCasedArray = [];\n var stringArray = _string.split(hyphenated ? splitOnHyphensRegex : splitOnWhiteSpaceRegex);\n\n for (var index = 0; index < stringArray.length; ++index) {\n var word = stringArray[index];\n if (word.indexOf('-') !== -1) {\n titleCasedArray.push(_doTitleCase(word, true, index === 0 || index === stringArray.length - 1));\n continue;\n }\n\n if (firstOrLast && (index === 0 || index === stringArray.length - 1)) {\n titleCasedArray.push(internalCaps.test(word) ? word : Humanize.capitalize(word));\n continue;\n }\n\n if (internalCaps.test(word)) {\n titleCasedArray.push(word);\n } else if (smallWords.test(word)) {\n titleCasedArray.push(word.toLowerCase());\n } else {\n titleCasedArray.push(Humanize.capitalize(word));\n }\n }\n\n return titleCasedArray.join(hyphenated ? '-' : ' ');\n };\n\n return _doTitleCase(string);\n },\n titlecase: function titlecase() {\n return Humanize.titleCase.apply(Humanize, arguments);\n }\n };\n\n return Humanize;\n});","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Collapse = 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 _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactMotion = require('react-motion');\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 SPRING_PRECISION = 1;\n\nvar WAITING = 'WAITING';\nvar RESIZING = 'RESIZING';\nvar RESTING = 'RESTING';\nvar IDLING = 'IDLING';\n\nvar noop = function noop() {\n return null;\n};\nvar css = {\n collapse: 'ReactCollapse--collapse',\n content: 'ReactCollapse--content'\n};\n\nvar Collapse = exports.Collapse = function (_React$PureComponent) {\n _inherits(Collapse, _React$PureComponent);\n\n function Collapse(props) {\n _classCallCheck(this, Collapse);\n\n var _this = _possibleConstructorReturn(this, (Collapse.__proto__ || Object.getPrototypeOf(Collapse)).call(this, props));\n\n _initialiseProps.call(_this);\n\n _this.state = {\n currentState: IDLING,\n from: 0,\n to: 0\n };\n return _this;\n }\n\n _createClass(Collapse, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _props = this.props,\n isOpened = _props.isOpened,\n forceInitialAnimation = _props.forceInitialAnimation,\n onRest = _props.onRest;\n\n if (isOpened) {\n var to = this.getTo();\n if (forceInitialAnimation) {\n var from = this.wrapper.clientHeight;\n this.setState({ currentState: RESIZING, from: from, to: to });\n } else {\n this.setState({ currentState: IDLING, from: to, to: to });\n }\n }\n onRest();\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n if (nextProps.hasNestedCollapse) {\n // For nested collapses we do not need to change to waiting state\n // and should keep `height:auto`\n // Because children will be animated and height will not jump anyway\n // See https://github.com/nkbt/react-collapse/issues/76 for more details\n if (nextProps.isOpened !== this.props.isOpened) {\n // Still go to WAITING state if own isOpened was changed\n this.setState({ currentState: WAITING });\n }\n } else if (this.state.currentState === IDLING && (nextProps.isOpened || this.props.isOpened)) {\n this.setState({ currentState: WAITING });\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(_, prevState) {\n var _props2 = this.props,\n isOpened = _props2.isOpened,\n onRest = _props2.onRest,\n onMeasure = _props2.onMeasure;\n\n\n if (this.state.currentState === IDLING) {\n onRest();\n return;\n }\n\n if (prevState.to !== this.state.to) {\n onMeasure({ height: this.state.to, width: this.content.clientWidth });\n }\n\n var from = this.wrapper.clientHeight;\n var to = isOpened ? this.getTo() : 0;\n\n if (from !== to) {\n this.setState({ currentState: RESIZING, from: from, to: to });\n return;\n }\n\n if (this.state.currentState === RESTING || this.state.currentState === WAITING) {\n this.setState({ currentState: IDLING, from: from, to: to });\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n cancelAnimationFrame(this.raf);\n }\n }, {\n key: 'render',\n value: function render() {\n return _react2.default.createElement(_reactMotion.Motion, _extends({}, this.getMotionProps(), {\n onRest: this.onRest,\n children: this.renderContent }));\n }\n }]);\n\n return Collapse;\n}(_react2.default.PureComponent);\n\nCollapse.propTypes = {\n isOpened: _propTypes2.default.bool.isRequired,\n springConfig: _propTypes2.default.objectOf(_propTypes2.default.number),\n forceInitialAnimation: _propTypes2.default.bool,\n\n hasNestedCollapse: _propTypes2.default.bool,\n\n fixedHeight: _propTypes2.default.number,\n\n theme: _propTypes2.default.objectOf(_propTypes2.default.string),\n style: _propTypes2.default.object,\n\n onRender: _propTypes2.default.func,\n onRest: _propTypes2.default.func,\n onMeasure: _propTypes2.default.func,\n\n children: _propTypes2.default.node.isRequired\n};\nCollapse.defaultProps = {\n forceInitialAnimation: false,\n hasNestedCollapse: false,\n fixedHeight: -1,\n style: {},\n theme: css,\n onRender: noop,\n onRest: noop,\n onMeasure: noop\n};\n\nvar _initialiseProps = function _initialiseProps() {\n var _this2 = this;\n\n this.onContentRef = function (content) {\n _this2.content = content;\n };\n\n this.onWrapperRef = function (wrapper) {\n _this2.wrapper = wrapper;\n };\n\n this.onRest = function () {\n _this2.raf = requestAnimationFrame(_this2.setResting);\n };\n\n this.setResting = function () {\n _this2.setState({ currentState: RESTING });\n };\n\n this.getTo = function () {\n var fixedHeight = _this2.props.fixedHeight;\n\n return fixedHeight > -1 ? fixedHeight : _this2.content.clientHeight;\n };\n\n this.getWrapperStyle = function (height) {\n if (_this2.state.currentState === IDLING && _this2.state.to) {\n var fixedHeight = _this2.props.fixedHeight;\n\n if (fixedHeight > -1) {\n return { overflow: 'hidden', height: fixedHeight };\n }\n return { height: 'auto' };\n }\n\n if (_this2.state.currentState === WAITING && !_this2.state.to) {\n return { overflow: 'hidden', height: 0 };\n }\n\n return { overflow: 'hidden', height: Math.max(0, height) };\n };\n\n this.getMotionProps = function () {\n var springConfig = _this2.props.springConfig;\n\n\n return _this2.state.currentState === IDLING ? {\n // When completely stable, instantly jump to the position\n defaultStyle: { height: _this2.state.to },\n style: { height: _this2.state.to }\n } : {\n // Otherwise, animate\n defaultStyle: { height: _this2.state.from },\n style: { height: (0, _reactMotion.spring)(_this2.state.to, _extends({ precision: SPRING_PRECISION }, springConfig)) }\n };\n };\n\n this.renderContent = function (_ref) {\n var height = _ref.height;\n\n // eslint-disable-line\n var _props3 = _this2.props,\n _isOpened = _props3.isOpened,\n _springConfig = _props3.springConfig,\n _forceInitialAnimation = _props3.forceInitialAnimation,\n _hasNestedCollapse = _props3.hasNestedCollapse,\n _fixedHeight = _props3.fixedHeight,\n theme = _props3.theme,\n style = _props3.style,\n onRender = _props3.onRender,\n _onRest = _props3.onRest,\n _onMeasure = _props3.onMeasure,\n children = _props3.children,\n props = _objectWithoutProperties(_props3, ['isOpened', 'springConfig', 'forceInitialAnimation', 'hasNestedCollapse', 'fixedHeight', 'theme', 'style', 'onRender', 'onRest', 'onMeasure', 'children']);\n\n var _state = _this2.state,\n from = _state.from,\n to = _state.to;\n\n // DANGEROUS, use with caution, never do setState with it\n\n onRender({ current: height, from: from, to: to });\n\n return _react2.default.createElement(\n 'div',\n _extends({\n ref: _this2.onWrapperRef,\n className: theme.collapse,\n style: _extends({}, _this2.getWrapperStyle(Math.max(0, height)), style)\n }, props),\n _react2.default.createElement(\n 'div',\n { ref: _this2.onContentRef, className: theme.content },\n children\n )\n );\n };\n};","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = {\n noWobble: { stiffness: 170, damping: 26 }, // the default, if nothing provided\n gentle: { stiffness: 120, damping: 14 },\n wobbly: { stiffness: 180, damping: 12 },\n stiff: { stiffness: 210, damping: 20 }\n};\nmodule.exports = exports[\"default\"];","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport React, { createElement, Component } from 'react';\nimport PropTypes from 'prop-types';\nimport prefixName from './util/prefixName';\nimport { withReduxForm, ReduxFormContext } from './ReduxFormContext';\nimport validateComponentProp from './util/validateComponentProp';\n\nvar FormSection =\n/*#__PURE__*/\nfunction (_Component) {\n _inheritsLoose(FormSection, _Component);\n\n function FormSection(props) {\n var _this;\n\n _this = _Component.call(this, props) || this;\n\n if (!props._reduxForm) {\n throw new Error('FormSection must be inside a component decorated with reduxForm()');\n }\n\n return _this;\n }\n\n var _proto = FormSection.prototype;\n\n _proto.render = function render() {\n var _this$props = this.props,\n _reduxForm = _this$props._reduxForm,\n children = _this$props.children,\n name = _this$props.name,\n component = _this$props.component,\n rest = _objectWithoutPropertiesLoose(_this$props, [\"_reduxForm\", \"children\", \"name\", \"component\"]);\n\n if (React.isValidElement(children)) {\n return createElement(ReduxFormContext.Provider, {\n value: _extends({}, this.props._reduxForm, {\n sectionPrefix: prefixName(this.props, name)\n }),\n children: children\n });\n }\n\n return createElement(ReduxFormContext.Provider, {\n value: _extends({}, this.props._reduxForm, {\n sectionPrefix: prefixName(this.props, name)\n }),\n children: createElement(component, _extends({}, rest, {\n children: children\n }))\n });\n };\n\n return FormSection;\n}(Component);\n\nFormSection.propTypes = {\n name: PropTypes.string.isRequired,\n component: validateComponentProp\n};\nFormSection.defaultProps = {\n component: 'div'\n};\nexport default withReduxForm(FormSection);","import classNames from \"classnames\";\nimport * as React from \"react\";\nimport { Tip } from \"../../components/tip/tip\";\nimport \"./radio-button.scss\";\nexport function RadioButton(props) {\n const { className, inputProps, tipProps, cardDisplay } = props;\n const { name, value, checked, disabled } = inputProps;\n const classes = classNames(\"single-common-components-radio-button\", className, {\n disabled,\n checked,\n });\n const id = `${name}-${value}`;\n let labelNode;\n let labelClasses = classNames(\"radio-label-wrapper\", {\n \"card-display\": cardDisplay,\n });\n let checkmark = React.createElement(\"span\", { className: \"radio-checkmark\" });\n if (props.cardDisplay) {\n const { title, description, cardClassName, centerCard } = props;\n let descriptionNode;\n if (description) {\n descriptionNode = (React.createElement(\"div\", { className: \"radio-card-description\" }, description));\n }\n labelNode = (React.createElement(\"div\", { className: \"radio-card-label\" },\n React.createElement(\"div\", { className: \"radio-card-title\" }, title),\n descriptionNode));\n labelClasses = classNames(labelClasses, cardClassName, {\n \"center-radio-card\": centerCard,\n });\n if (centerCard) {\n checkmark = undefined;\n }\n }\n else {\n labelNode = props.label;\n }\n const radioInput = (React.createElement(\"div\", { className: classes },\n React.createElement(\"input\", { id: id, type: \"radio\", className: \"radio-default-input\", ...inputProps }),\n React.createElement(\"label\", { htmlFor: id, className: labelClasses },\n React.createElement(\"div\", { className: \"radio-label-inner\" },\n checkmark,\n labelNode))));\n if (tipProps) {\n return React.createElement(Tip, { ...tipProps }, radioInput);\n }\n else {\n return radioInput;\n }\n}\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","import isPromise from 'is-promise';\n\nvar asyncValidation = function asyncValidation(fn, start, stop, field) {\n start(field);\n var promise = fn();\n\n if (!isPromise(promise)) {\n throw new Error('asyncValidate function passed to reduxForm must return a promise');\n }\n\n var handleErrors = function handleErrors(rejected) {\n return function (errors) {\n if (rejected) {\n if (errors && Object.keys(errors).length) {\n stop(errors);\n return errors;\n } else {\n stop();\n throw new Error('Asynchronous validation promise was rejected without errors.');\n }\n }\n\n stop();\n return Promise.resolve();\n };\n };\n\n return promise.then(handleErrors(false), handleErrors(true));\n};\n\nexport default asyncValidation;","import isEvent from './isEvent';\n\nvar silenceEvent = function silenceEvent(event) {\n var is = isEvent(event);\n\n if (is) {\n event.preventDefault();\n }\n\n return is;\n};\n\nexport default silenceEvent;","import silenceEvent from './silenceEvent';\n\nvar silenceEvents = function silenceEvents(fn) {\n return function (event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return silenceEvent(event) ? fn.apply(void 0, args) : fn.apply(void 0, [event].concat(args));\n };\n};\n\nexport default silenceEvents;","import plain from './structure/plain';\n\nvar toArray = function toArray(value) {\n return Array.isArray(value) ? value : [value];\n};\n\nvar getError = function getError(value, values, props, validators, name) {\n var array = toArray(validators);\n\n for (var i = 0; i < array.length; i++) {\n var error = array[i](value, values, props, name);\n\n if (error) {\n return error;\n }\n }\n};\n\nvar generateValidator = function generateValidator(validators, _ref) {\n var getIn = _ref.getIn;\n return function (values, props) {\n var errors = {};\n Object.keys(validators).forEach(function (name) {\n var value = getIn(values, name);\n var error = getError(value, values, props, validators[name], name);\n\n if (error) {\n errors = plain.setIn(errors, name, error);\n }\n });\n return errors;\n };\n};\n\nexport default generateValidator;","import _extends from \"@babel/runtime/helpers/extends\";\nimport isPromise from 'is-promise';\nimport SubmissionError from './SubmissionError';\n\nvar isSubmissionError = function isSubmissionError(error) {\n return error && error.name === SubmissionError.name;\n};\n\nvar mergeErrors = function mergeErrors(_ref) {\n var asyncErrors = _ref.asyncErrors,\n syncErrors = _ref.syncErrors;\n return asyncErrors && typeof asyncErrors.merge === 'function' ? asyncErrors.merge(syncErrors).toJS() : _extends({}, asyncErrors, syncErrors);\n};\n\nvar handleSubmit = function handleSubmit(submit, props, valid, asyncValidate, fields) {\n var dispatch = props.dispatch,\n onSubmitFail = props.onSubmitFail,\n onSubmitSuccess = props.onSubmitSuccess,\n startSubmit = props.startSubmit,\n stopSubmit = props.stopSubmit,\n setSubmitFailed = props.setSubmitFailed,\n setSubmitSucceeded = props.setSubmitSucceeded,\n syncErrors = props.syncErrors,\n asyncErrors = props.asyncErrors,\n touch = props.touch,\n values = props.values,\n persistentSubmitErrors = props.persistentSubmitErrors;\n touch.apply(void 0, Array.from(fields)); // mark all fields as touched\n\n if (valid || persistentSubmitErrors) {\n var doSubmit = function doSubmit() {\n var result;\n\n try {\n result = submit(values, dispatch, props);\n } catch (submitError) {\n var error = isSubmissionError(submitError) ? submitError.errors : undefined;\n stopSubmit(error);\n setSubmitFailed.apply(void 0, fields);\n\n if (onSubmitFail) {\n onSubmitFail(error, dispatch, submitError, props);\n }\n\n if (error || onSubmitFail) {\n // if you've provided an onSubmitFail callback, don't re-throw the error\n return error;\n } else {\n throw submitError;\n }\n }\n\n if (isPromise(result)) {\n startSubmit();\n return result.then(function (submitResult) {\n stopSubmit();\n setSubmitSucceeded();\n\n if (onSubmitSuccess) {\n onSubmitSuccess(submitResult, dispatch, props);\n }\n\n return submitResult;\n }, function (submitError) {\n var error = isSubmissionError(submitError) ? submitError.errors : undefined;\n stopSubmit(error);\n setSubmitFailed.apply(void 0, fields);\n\n if (onSubmitFail) {\n onSubmitFail(error, dispatch, submitError, props);\n }\n\n if (error || onSubmitFail) {\n // if you've provided an onSubmitFail callback, don't re-throw the error\n return error;\n } else {\n throw submitError;\n }\n });\n } else {\n setSubmitSucceeded();\n\n if (onSubmitSuccess) {\n onSubmitSuccess(result, dispatch, props);\n }\n }\n\n return result;\n };\n\n var asyncValidateResult = asyncValidate && asyncValidate();\n\n if (asyncValidateResult) {\n return asyncValidateResult.then(function (asyncErrors) {\n if (asyncErrors) {\n throw asyncErrors;\n }\n\n return doSubmit();\n }).catch(function (asyncErrors) {\n setSubmitFailed.apply(void 0, fields);\n\n if (onSubmitFail) {\n onSubmitFail(asyncErrors, dispatch, null, props);\n }\n\n return Promise.reject(asyncErrors);\n });\n } else {\n return doSubmit();\n }\n } else {\n setSubmitFailed.apply(void 0, fields);\n var errors = mergeErrors({\n asyncErrors: asyncErrors,\n syncErrors: syncErrors\n });\n\n if (onSubmitFail) {\n onSubmitFail(errors, dispatch, null, props);\n }\n\n return errors;\n }\n};\n\nexport default handleSubmit;","var getErrorKeys = function getErrorKeys(name, type) {\n switch (type) {\n case 'Field':\n return [name, name + \"._error\"];\n\n case 'FieldArray':\n return [name + \"._error\"];\n\n default:\n throw new Error('Unknown field type');\n }\n};\n\nvar createHasError = function createHasError(_ref) {\n var getIn = _ref.getIn;\n\n var hasError = function hasError(field, syncErrors, asyncErrors, submitErrors) {\n if (!syncErrors && !asyncErrors && !submitErrors) {\n return false;\n }\n\n var name = getIn(field, 'name');\n var type = getIn(field, 'type');\n return getErrorKeys(name, type).some(function (key) {\n return getIn(syncErrors, key) || getIn(asyncErrors, key) || getIn(submitErrors, key);\n });\n };\n\n return hasError;\n};\n\nexport default createHasError;","import createHasError from '../hasError';\n\nvar createIsValid = function createIsValid(structure) {\n var getIn = structure.getIn,\n keys = structure.keys;\n var hasError = createHasError(structure);\n return function (form, getFormState, ignoreSubmitErrors) {\n if (ignoreSubmitErrors === void 0) {\n ignoreSubmitErrors = false;\n }\n\n return function (state) {\n var nonNullGetFormState = getFormState || function (state) {\n return getIn(state, 'form');\n };\n\n var formState = nonNullGetFormState(state);\n var syncError = getIn(formState, form + \".syncError\");\n\n if (syncError) {\n return false;\n }\n\n if (!ignoreSubmitErrors) {\n var error = getIn(formState, form + \".error\");\n\n if (error) {\n return false;\n }\n }\n\n var syncErrors = getIn(formState, form + \".syncErrors\");\n var asyncErrors = getIn(formState, form + \".asyncErrors\");\n var submitErrors = ignoreSubmitErrors ? undefined : getIn(formState, form + \".submitErrors\");\n\n if (!syncErrors && !asyncErrors && !submitErrors) {\n return true;\n }\n\n var registeredFields = getIn(formState, form + \".registeredFields\");\n\n if (!registeredFields) {\n return true;\n }\n\n return !keys(registeredFields).filter(function (name) {\n return getIn(registeredFields, \"['\" + name + \"'].count\") > 0;\n }).some(function (name) {\n return hasError(getIn(registeredFields, \"['\" + name + \"']\"), syncErrors, asyncErrors, submitErrors);\n });\n };\n };\n};\n\nexport default createIsValid;","var getDisplayName = function getDisplayName(Comp) {\n return Comp.displayName || Comp.name || 'Component';\n};\n\nexport default getDisplayName;","import _createClass from \"@babel/runtime/helpers/createClass\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nimport _merge from \"lodash/merge\";\nimport _mapValues from \"lodash/mapValues\";\nimport { polyfill } from 'react-lifecycles-compat';\nimport hoistStatics from 'hoist-non-react-statics';\nimport invariant from 'invariant';\nimport isPromise from 'is-promise';\nimport PropTypes from 'prop-types';\nimport React, { createElement } from 'react';\nimport { connect } from 'react-redux';\nimport { bindActionCreators } from 'redux';\nimport importedActions from './actions';\nimport asyncValidation from './asyncValidation';\nimport defaultShouldAsyncValidate from './defaultShouldAsyncValidate';\nimport defaultShouldValidate from './defaultShouldValidate';\nimport defaultShouldError from './defaultShouldError';\nimport defaultShouldWarn from './defaultShouldWarn';\nimport silenceEvent from './events/silenceEvent';\nimport silenceEvents from './events/silenceEvents';\nimport generateValidator from './generateValidator';\nimport handleSubmit from './handleSubmit';\nimport createIsValid from './selectors/isValid';\nimport plain from './structure/plain';\nimport getDisplayName from './util/getDisplayName';\nimport isHotReloading from './util/isHotReloading';\nimport { withReduxForm, ReduxFormContext } from './ReduxFormContext';\n\nvar isClassComponent = function isClassComponent(Component) {\n return Boolean(Component && Component.prototype && typeof Component.prototype.isReactComponent === 'object');\n}; // extract field-specific actions\n\n\nvar arrayInsert = importedActions.arrayInsert,\n arrayMove = importedActions.arrayMove,\n arrayPop = importedActions.arrayPop,\n arrayPush = importedActions.arrayPush,\n arrayRemove = importedActions.arrayRemove,\n arrayRemoveAll = importedActions.arrayRemoveAll,\n arrayShift = importedActions.arrayShift,\n arraySplice = importedActions.arraySplice,\n arraySwap = importedActions.arraySwap,\n arrayUnshift = importedActions.arrayUnshift,\n blur = importedActions.blur,\n change = importedActions.change,\n focus = importedActions.focus,\n formActions = _objectWithoutPropertiesLoose(importedActions, [\"arrayInsert\", \"arrayMove\", \"arrayPop\", \"arrayPush\", \"arrayRemove\", \"arrayRemoveAll\", \"arrayShift\", \"arraySplice\", \"arraySwap\", \"arrayUnshift\", \"blur\", \"change\", \"focus\"]);\n\nvar arrayActions = {\n arrayInsert: arrayInsert,\n arrayMove: arrayMove,\n arrayPop: arrayPop,\n arrayPush: arrayPush,\n arrayRemove: arrayRemove,\n arrayRemoveAll: arrayRemoveAll,\n arrayShift: arrayShift,\n arraySplice: arraySplice,\n arraySwap: arraySwap,\n arrayUnshift: arrayUnshift\n};\nvar propsToNotUpdateFor = [].concat(Object.keys(importedActions), ['array', 'asyncErrors', 'initialValues', 'syncErrors', 'syncWarnings', 'values', 'registeredFields']);\n\nvar checkSubmit = function checkSubmit(submit) {\n if (!submit || typeof submit !== 'function') {\n throw new Error('You must either pass handleSubmit() an onSubmit function or pass onSubmit as a prop');\n }\n\n return submit;\n};\n\n/**\n * The decorator that is the main API to redux-form\n */\nvar createReduxForm = function createReduxForm(structure) {\n var deepEqual = structure.deepEqual,\n empty = structure.empty,\n getIn = structure.getIn,\n setIn = structure.setIn,\n keys = structure.keys,\n fromJS = structure.fromJS;\n var isValid = createIsValid(structure);\n return function (initialConfig) {\n var config = _extends({\n touchOnBlur: true,\n touchOnChange: false,\n persistentSubmitErrors: false,\n destroyOnUnmount: true,\n shouldAsyncValidate: defaultShouldAsyncValidate,\n shouldValidate: defaultShouldValidate,\n shouldError: defaultShouldError,\n shouldWarn: defaultShouldWarn,\n enableReinitialize: false,\n keepDirtyOnReinitialize: false,\n updateUnregisteredFields: false,\n getFormState: function getFormState(state) {\n return getIn(state, 'form');\n },\n pure: true,\n forceUnregisterOnUnmount: false\n }, initialConfig);\n\n return function (WrappedComponent) {\n var Form =\n /*#__PURE__*/\n function (_React$Component) {\n _inheritsLoose(Form, _React$Component);\n\n function Form() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.wrapped = React.createRef();\n _this.destroyed = false;\n _this.fieldCounts = {};\n _this.fieldValidators = {};\n _this.lastFieldValidatorKeys = [];\n _this.fieldWarners = {};\n _this.lastFieldWarnerKeys = [];\n _this.innerOnSubmit = undefined;\n _this.submitPromise = undefined;\n\n _this.getValues = function () {\n return _this.props.values;\n };\n\n _this.isValid = function () {\n return _this.props.valid;\n };\n\n _this.isPristine = function () {\n return _this.props.pristine;\n };\n\n _this.register = function (name, type, getValidator, getWarner) {\n var lastCount = _this.fieldCounts[name];\n var nextCount = (lastCount || 0) + 1;\n _this.fieldCounts[name] = nextCount;\n\n _this.props.registerField(name, type);\n\n if (getValidator) {\n _this.fieldValidators[name] = getValidator;\n }\n\n if (getWarner) {\n _this.fieldWarners[name] = getWarner;\n }\n };\n\n _this.unregister = function (name) {\n var lastCount = _this.fieldCounts[name];\n if (lastCount === 1) delete _this.fieldCounts[name];else if (lastCount != null) _this.fieldCounts[name] = lastCount - 1;\n\n if (!_this.destroyed) {\n var _this$props = _this.props,\n _destroyOnUnmount = _this$props.destroyOnUnmount,\n forceUnregisterOnUnmount = _this$props.forceUnregisterOnUnmount,\n unregisterField = _this$props.unregisterField;\n\n if (_destroyOnUnmount || forceUnregisterOnUnmount) {\n unregisterField(name, _destroyOnUnmount);\n\n if (!_this.fieldCounts[name]) {\n delete _this.fieldValidators[name];\n delete _this.fieldWarners[name];\n _this.lastFieldValidatorKeys = _this.lastFieldValidatorKeys.filter(function (key) {\n return key !== name;\n });\n }\n } else {\n unregisterField(name, false);\n }\n }\n };\n\n _this.getFieldList = function (options) {\n var registeredFields = _this.props.registeredFields;\n var list = [];\n\n if (!registeredFields) {\n return list;\n }\n\n var keySeq = keys(registeredFields);\n\n if (options && options.excludeFieldArray) {\n keySeq = keySeq.filter(function (name) {\n return getIn(registeredFields, \"['\" + name + \"'].type\") !== 'FieldArray';\n });\n }\n\n return fromJS(keySeq.reduce(function (acc, key) {\n acc.push(key);\n return acc;\n }, list));\n };\n\n _this.getValidators = function () {\n var validators = {};\n Object.keys(_this.fieldValidators).forEach(function (name) {\n var validator = _this.fieldValidators[name]();\n\n if (validator) {\n validators[name] = validator;\n }\n });\n return validators;\n };\n\n _this.generateValidator = function () {\n var validators = _this.getValidators();\n\n return Object.keys(validators).length ? generateValidator(validators, structure) : undefined;\n };\n\n _this.getWarners = function () {\n var warners = {};\n Object.keys(_this.fieldWarners).forEach(function (name) {\n var warner = _this.fieldWarners[name]();\n\n if (warner) {\n warners[name] = warner;\n }\n });\n return warners;\n };\n\n _this.generateWarner = function () {\n var warners = _this.getWarners();\n\n return Object.keys(warners).length ? generateValidator(warners, structure) : undefined;\n };\n\n _this.asyncValidate = function (name, value, trigger) {\n var _this$props2 = _this.props,\n asyncBlurFields = _this$props2.asyncBlurFields,\n asyncChangeFields = _this$props2.asyncChangeFields,\n asyncErrors = _this$props2.asyncErrors,\n asyncValidate = _this$props2.asyncValidate,\n dispatch = _this$props2.dispatch,\n initialized = _this$props2.initialized,\n pristine = _this$props2.pristine,\n shouldAsyncValidate = _this$props2.shouldAsyncValidate,\n startAsyncValidation = _this$props2.startAsyncValidation,\n stopAsyncValidation = _this$props2.stopAsyncValidation,\n syncErrors = _this$props2.syncErrors,\n values = _this$props2.values;\n var submitting = !name;\n\n var fieldNeedsValidation = function fieldNeedsValidation() {\n var fieldNeedsValidationForBlur = asyncBlurFields && name && ~asyncBlurFields.indexOf(name.replace(/\\[[0-9]+\\]/g, '[]'));\n var fieldNeedsValidationForChange = asyncChangeFields && name && ~asyncChangeFields.indexOf(name.replace(/\\[[0-9]+\\]/g, '[]'));\n var asyncValidateByDefault = !(asyncBlurFields || asyncChangeFields);\n return submitting || asyncValidateByDefault || (trigger === 'blur' ? fieldNeedsValidationForBlur : fieldNeedsValidationForChange);\n };\n\n if (asyncValidate) {\n var valuesToValidate = submitting ? values : setIn(values, name, value);\n var syncValidationPasses = submitting || !getIn(syncErrors, name);\n\n if (fieldNeedsValidation() && shouldAsyncValidate({\n asyncErrors: asyncErrors,\n initialized: initialized,\n trigger: submitting ? 'submit' : trigger,\n blurredField: name,\n pristine: pristine,\n syncValidationPasses: syncValidationPasses\n })) {\n return asyncValidation(function () {\n return asyncValidate(valuesToValidate, dispatch, _this.props, name);\n }, startAsyncValidation, stopAsyncValidation, name);\n }\n }\n };\n\n _this.submitCompleted = function (result) {\n delete _this.submitPromise;\n return result;\n };\n\n _this.submitFailed = function (error) {\n delete _this.submitPromise;\n throw error;\n };\n\n _this.listenToSubmit = function (promise) {\n if (!isPromise(promise)) {\n return promise;\n }\n\n _this.submitPromise = promise;\n return promise.then(_this.submitCompleted, _this.submitFailed);\n };\n\n _this.submit = function (submitOrEvent) {\n var _this$props3 = _this.props,\n onSubmit = _this$props3.onSubmit,\n blur = _this$props3.blur,\n change = _this$props3.change,\n dispatch = _this$props3.dispatch;\n\n if (!submitOrEvent || silenceEvent(submitOrEvent)) {\n // submitOrEvent is an event: fire submit if not already submitting\n if (!_this.submitPromise) {\n // avoid recursive stack trace if use Form with onSubmit as handleSubmit\n if (_this.innerOnSubmit && _this.innerOnSubmit !== _this.submit) {\n // will call \"submitOrEvent is the submit function\" block below\n return _this.innerOnSubmit();\n } else {\n return _this.listenToSubmit(handleSubmit(checkSubmit(onSubmit), _extends({}, _this.props, bindActionCreators({\n blur: blur,\n change: change\n }, dispatch)), _this.props.validExceptSubmit, _this.asyncValidate, _this.getFieldList({\n excludeFieldArray: true\n })));\n }\n }\n } else {\n // submitOrEvent is the submit function: return deferred submit thunk\n return silenceEvents(function () {\n return !_this.submitPromise && _this.listenToSubmit(handleSubmit(checkSubmit(submitOrEvent), _extends({}, _this.props, bindActionCreators({\n blur: blur,\n change: change\n }, dispatch)), _this.props.validExceptSubmit, _this.asyncValidate, _this.getFieldList({\n excludeFieldArray: true\n })));\n });\n }\n };\n\n _this.reset = function () {\n return _this.props.reset();\n };\n\n return _this;\n }\n\n var _proto = Form.prototype;\n\n _proto.initIfNeeded = function initIfNeeded(nextProps) {\n var enableReinitialize = this.props.enableReinitialize;\n\n if (nextProps) {\n if ((enableReinitialize || !nextProps.initialized) && !deepEqual(this.props.initialValues, nextProps.initialValues)) {\n var _keepDirty = nextProps.initialized && this.props.keepDirtyOnReinitialize;\n\n this.props.initialize(nextProps.initialValues, _keepDirty, {\n keepValues: nextProps.keepValues,\n lastInitialValues: this.props.initialValues,\n updateUnregisteredFields: nextProps.updateUnregisteredFields\n });\n }\n } else if (this.props.initialValues && (!this.props.initialized || enableReinitialize)) {\n this.props.initialize(this.props.initialValues, this.props.keepDirtyOnReinitialize, {\n keepValues: this.props.keepValues,\n updateUnregisteredFields: this.props.updateUnregisteredFields\n });\n }\n };\n\n _proto.updateSyncErrorsIfNeeded = function updateSyncErrorsIfNeeded(nextSyncErrors, nextError, lastSyncErrors) {\n var _this$props4 = this.props,\n error = _this$props4.error,\n updateSyncErrors = _this$props4.updateSyncErrors;\n var noErrors = (!lastSyncErrors || !Object.keys(lastSyncErrors).length) && !error;\n var nextNoErrors = (!nextSyncErrors || !Object.keys(nextSyncErrors).length) && !nextError;\n\n if (!(noErrors && nextNoErrors) && (!plain.deepEqual(lastSyncErrors, nextSyncErrors) || !plain.deepEqual(error, nextError))) {\n updateSyncErrors(nextSyncErrors, nextError);\n }\n };\n\n _proto.clearSubmitPromiseIfNeeded = function clearSubmitPromiseIfNeeded(nextProps) {\n var submitting = this.props.submitting;\n\n if (this.submitPromise && submitting && !nextProps.submitting) {\n delete this.submitPromise;\n }\n };\n\n _proto.submitIfNeeded = function submitIfNeeded(nextProps) {\n var _this$props5 = this.props,\n clearSubmit = _this$props5.clearSubmit,\n triggerSubmit = _this$props5.triggerSubmit;\n\n if (!triggerSubmit && nextProps.triggerSubmit) {\n clearSubmit();\n this.submit();\n }\n };\n\n _proto.shouldErrorFunction = function shouldErrorFunction() {\n var _this$props6 = this.props,\n shouldValidate = _this$props6.shouldValidate,\n shouldError = _this$props6.shouldError;\n var shouldValidateOverridden = shouldValidate !== defaultShouldValidate;\n var shouldErrorOverridden = shouldError !== defaultShouldError;\n return shouldValidateOverridden && !shouldErrorOverridden ? shouldValidate : shouldError;\n };\n\n _proto.validateIfNeeded = function validateIfNeeded(nextProps) {\n var _this$props7 = this.props,\n validate = _this$props7.validate,\n values = _this$props7.values;\n var shouldError = this.shouldErrorFunction();\n var fieldLevelValidate = this.generateValidator();\n\n if (validate || fieldLevelValidate) {\n var initialRender = nextProps === undefined;\n var fieldValidatorKeys = Object.keys(this.getValidators());\n var validateParams = {\n values: values,\n nextProps: nextProps,\n props: this.props,\n initialRender: initialRender,\n lastFieldValidatorKeys: this.lastFieldValidatorKeys,\n fieldValidatorKeys: fieldValidatorKeys,\n structure: structure\n };\n\n if (shouldError(validateParams)) {\n var propsToValidate = initialRender || !nextProps ? this.props : nextProps;\n\n var _merge2 = _merge(validate ? validate(propsToValidate.values, propsToValidate) || {} : {}, fieldLevelValidate ? fieldLevelValidate(propsToValidate.values, propsToValidate) || {} : {}),\n _error = _merge2._error,\n nextSyncErrors = _objectWithoutPropertiesLoose(_merge2, [\"_error\"]);\n\n this.lastFieldValidatorKeys = fieldValidatorKeys;\n this.updateSyncErrorsIfNeeded(nextSyncErrors, _error, propsToValidate.syncErrors);\n }\n } else {\n this.lastFieldValidatorKeys = [];\n }\n };\n\n _proto.updateSyncWarningsIfNeeded = function updateSyncWarningsIfNeeded(nextSyncWarnings, nextWarning, lastSyncWarnings) {\n var _this$props8 = this.props,\n warning = _this$props8.warning,\n syncWarnings = _this$props8.syncWarnings,\n updateSyncWarnings = _this$props8.updateSyncWarnings;\n var noWarnings = (!syncWarnings || !Object.keys(syncWarnings).length) && !warning;\n var nextNoWarnings = (!nextSyncWarnings || !Object.keys(nextSyncWarnings).length) && !nextWarning;\n\n if (!(noWarnings && nextNoWarnings) && (!plain.deepEqual(lastSyncWarnings, nextSyncWarnings) || !plain.deepEqual(warning, nextWarning))) {\n updateSyncWarnings(nextSyncWarnings, nextWarning);\n }\n };\n\n _proto.shouldWarnFunction = function shouldWarnFunction() {\n var _this$props9 = this.props,\n shouldValidate = _this$props9.shouldValidate,\n shouldWarn = _this$props9.shouldWarn;\n var shouldValidateOverridden = shouldValidate !== defaultShouldValidate;\n var shouldWarnOverridden = shouldWarn !== defaultShouldWarn;\n return shouldValidateOverridden && !shouldWarnOverridden ? shouldValidate : shouldWarn;\n };\n\n _proto.warnIfNeeded = function warnIfNeeded(nextProps) {\n var _this$props10 = this.props,\n warn = _this$props10.warn,\n values = _this$props10.values;\n var shouldWarn = this.shouldWarnFunction();\n var fieldLevelWarn = this.generateWarner();\n\n if (warn || fieldLevelWarn) {\n var initialRender = nextProps === undefined;\n var fieldWarnerKeys = Object.keys(this.getWarners());\n var validateParams = {\n values: values,\n nextProps: nextProps,\n props: this.props,\n initialRender: initialRender,\n lastFieldValidatorKeys: this.lastFieldWarnerKeys,\n fieldValidatorKeys: fieldWarnerKeys,\n structure: structure\n };\n\n if (shouldWarn(validateParams)) {\n var propsToWarn = initialRender || !nextProps ? this.props : nextProps;\n\n var _merge3 = _merge(warn ? warn(propsToWarn.values, propsToWarn) : {}, fieldLevelWarn ? fieldLevelWarn(propsToWarn.values, propsToWarn) : {}),\n _warning = _merge3._warning,\n nextSyncWarnings = _objectWithoutPropertiesLoose(_merge3, [\"_warning\"]);\n\n this.lastFieldWarnerKeys = fieldWarnerKeys;\n this.updateSyncWarningsIfNeeded(nextSyncWarnings, _warning, propsToWarn.syncWarnings);\n }\n }\n };\n\n _proto.componentWillMount = function componentWillMount() {\n if (!isHotReloading()) {\n this.initIfNeeded();\n this.validateIfNeeded();\n this.warnIfNeeded();\n }\n\n invariant(this.props.shouldValidate, 'shouldValidate() is deprecated and will be removed in v9.0.0. Use shouldWarn() or shouldError() instead.');\n };\n\n _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n this.initIfNeeded(nextProps);\n this.validateIfNeeded(nextProps);\n this.warnIfNeeded(nextProps);\n this.clearSubmitPromiseIfNeeded(nextProps);\n this.submitIfNeeded(nextProps);\n var onChange = nextProps.onChange,\n values = nextProps.values,\n dispatch = nextProps.dispatch;\n\n if (onChange && !deepEqual(values, this.props.values)) {\n onChange(values, dispatch, nextProps, this.props.values);\n }\n };\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n var _this2 = this;\n\n if (!this.props.pure) return true;\n var _config$immutableProp = config.immutableProps,\n immutableProps = _config$immutableProp === void 0 ? [] : _config$immutableProp; // if we have children, we MUST update in React 16\n // https://twitter.com/erikras/status/915866544558788608\n\n return !!(this.props.children || nextProps.children || Object.keys(nextProps).some(function (prop) {\n // useful to debug rerenders\n // if (!plain.deepEqual(this.props[ prop ], nextProps[ prop ])) {\n // console.info(prop, 'changed', this.props[ prop ], '==>', nextProps[ prop ])\n // }\n if (~immutableProps.indexOf(prop)) {\n return _this2.props[prop] !== nextProps[prop];\n }\n\n return !~propsToNotUpdateFor.indexOf(prop) && !deepEqual(_this2.props[prop], nextProps[prop]);\n }));\n };\n\n _proto.componentDidMount = function componentDidMount() {\n if (!isHotReloading()) {\n this.initIfNeeded(this.props);\n this.validateIfNeeded();\n this.warnIfNeeded();\n }\n\n invariant(this.props.shouldValidate, 'shouldValidate() is deprecated and will be removed in v9.0.0. Use shouldWarn() or shouldError() instead.');\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n var _this$props11 = this.props,\n destroyOnUnmount = _this$props11.destroyOnUnmount,\n destroy = _this$props11.destroy;\n\n if (destroyOnUnmount && !isHotReloading()) {\n this.destroyed = true;\n destroy();\n }\n };\n\n _proto.render = function render() {\n var _ref,\n _this3 = this;\n\n // remove some redux-form config-only props\n\n /* eslint-disable no-unused-vars */\n var _this$props12 = this.props,\n anyTouched = _this$props12.anyTouched,\n array = _this$props12.array,\n arrayInsert = _this$props12.arrayInsert,\n arrayMove = _this$props12.arrayMove,\n arrayPop = _this$props12.arrayPop,\n arrayPush = _this$props12.arrayPush,\n arrayRemove = _this$props12.arrayRemove,\n arrayRemoveAll = _this$props12.arrayRemoveAll,\n arrayShift = _this$props12.arrayShift,\n arraySplice = _this$props12.arraySplice,\n arraySwap = _this$props12.arraySwap,\n arrayUnshift = _this$props12.arrayUnshift,\n asyncErrors = _this$props12.asyncErrors,\n asyncValidate = _this$props12.asyncValidate,\n asyncValidating = _this$props12.asyncValidating,\n blur = _this$props12.blur,\n change = _this$props12.change,\n clearSubmit = _this$props12.clearSubmit,\n destroy = _this$props12.destroy,\n destroyOnUnmount = _this$props12.destroyOnUnmount,\n forceUnregisterOnUnmount = _this$props12.forceUnregisterOnUnmount,\n dirty = _this$props12.dirty,\n dispatch = _this$props12.dispatch,\n enableReinitialize = _this$props12.enableReinitialize,\n error = _this$props12.error,\n focus = _this$props12.focus,\n form = _this$props12.form,\n getFormState = _this$props12.getFormState,\n immutableProps = _this$props12.immutableProps,\n initialize = _this$props12.initialize,\n initialized = _this$props12.initialized,\n initialValues = _this$props12.initialValues,\n invalid = _this$props12.invalid,\n keepDirtyOnReinitialize = _this$props12.keepDirtyOnReinitialize,\n keepValues = _this$props12.keepValues,\n updateUnregisteredFields = _this$props12.updateUnregisteredFields,\n pristine = _this$props12.pristine,\n propNamespace = _this$props12.propNamespace,\n registeredFields = _this$props12.registeredFields,\n registerField = _this$props12.registerField,\n reset = _this$props12.reset,\n resetSection = _this$props12.resetSection,\n setSubmitFailed = _this$props12.setSubmitFailed,\n setSubmitSucceeded = _this$props12.setSubmitSucceeded,\n shouldAsyncValidate = _this$props12.shouldAsyncValidate,\n shouldValidate = _this$props12.shouldValidate,\n shouldError = _this$props12.shouldError,\n shouldWarn = _this$props12.shouldWarn,\n startAsyncValidation = _this$props12.startAsyncValidation,\n startSubmit = _this$props12.startSubmit,\n stopAsyncValidation = _this$props12.stopAsyncValidation,\n stopSubmit = _this$props12.stopSubmit,\n submitting = _this$props12.submitting,\n submitFailed = _this$props12.submitFailed,\n submitSucceeded = _this$props12.submitSucceeded,\n touch = _this$props12.touch,\n touchOnBlur = _this$props12.touchOnBlur,\n touchOnChange = _this$props12.touchOnChange,\n persistentSubmitErrors = _this$props12.persistentSubmitErrors,\n syncErrors = _this$props12.syncErrors,\n syncWarnings = _this$props12.syncWarnings,\n unregisterField = _this$props12.unregisterField,\n untouch = _this$props12.untouch,\n updateSyncErrors = _this$props12.updateSyncErrors,\n updateSyncWarnings = _this$props12.updateSyncWarnings,\n valid = _this$props12.valid,\n validExceptSubmit = _this$props12.validExceptSubmit,\n values = _this$props12.values,\n warning = _this$props12.warning,\n rest = _objectWithoutPropertiesLoose(_this$props12, [\"anyTouched\", \"array\", \"arrayInsert\", \"arrayMove\", \"arrayPop\", \"arrayPush\", \"arrayRemove\", \"arrayRemoveAll\", \"arrayShift\", \"arraySplice\", \"arraySwap\", \"arrayUnshift\", \"asyncErrors\", \"asyncValidate\", \"asyncValidating\", \"blur\", \"change\", \"clearSubmit\", \"destroy\", \"destroyOnUnmount\", \"forceUnregisterOnUnmount\", \"dirty\", \"dispatch\", \"enableReinitialize\", \"error\", \"focus\", \"form\", \"getFormState\", \"immutableProps\", \"initialize\", \"initialized\", \"initialValues\", \"invalid\", \"keepDirtyOnReinitialize\", \"keepValues\", \"updateUnregisteredFields\", \"pristine\", \"propNamespace\", \"registeredFields\", \"registerField\", \"reset\", \"resetSection\", \"setSubmitFailed\", \"setSubmitSucceeded\", \"shouldAsyncValidate\", \"shouldValidate\", \"shouldError\", \"shouldWarn\", \"startAsyncValidation\", \"startSubmit\", \"stopAsyncValidation\", \"stopSubmit\", \"submitting\", \"submitFailed\", \"submitSucceeded\", \"touch\", \"touchOnBlur\", \"touchOnChange\", \"persistentSubmitErrors\", \"syncErrors\", \"syncWarnings\", \"unregisterField\", \"untouch\", \"updateSyncErrors\", \"updateSyncWarnings\", \"valid\", \"validExceptSubmit\", \"values\", \"warning\"]);\n /* eslint-enable no-unused-vars */\n\n\n var reduxFormProps = _extends({\n array: array,\n anyTouched: anyTouched,\n asyncValidate: this.asyncValidate,\n asyncValidating: asyncValidating\n }, bindActionCreators({\n blur: blur,\n change: change\n }, dispatch), {\n clearSubmit: clearSubmit,\n destroy: destroy,\n dirty: dirty,\n dispatch: dispatch,\n error: error,\n form: form,\n handleSubmit: this.submit,\n initialize: initialize,\n initialized: initialized,\n initialValues: initialValues,\n invalid: invalid,\n pristine: pristine,\n reset: reset,\n resetSection: resetSection,\n submitting: submitting,\n submitFailed: submitFailed,\n submitSucceeded: submitSucceeded,\n touch: touch,\n untouch: untouch,\n valid: valid,\n warning: warning\n });\n\n var propsToPass = _extends({}, propNamespace ? (_ref = {}, _ref[propNamespace] = reduxFormProps, _ref) : reduxFormProps, rest);\n\n if (isClassComponent(WrappedComponent)) {\n ;\n propsToPass.ref = this.wrapped;\n }\n\n var _reduxForm = _extends({}, this.props, {\n getFormState: function getFormState(state) {\n return getIn(_this3.props.getFormState(state), _this3.props.form);\n },\n asyncValidate: this.asyncValidate,\n getValues: this.getValues,\n sectionPrefix: undefined,\n register: this.register,\n unregister: this.unregister,\n registerInnerOnSubmit: function registerInnerOnSubmit(innerOnSubmit) {\n return _this3.innerOnSubmit = innerOnSubmit;\n }\n });\n\n return createElement(ReduxFormContext.Provider, {\n value: _reduxForm,\n children: createElement(WrappedComponent, propsToPass)\n });\n };\n\n return Form;\n }(React.Component);\n\n Form.displayName = \"Form(\" + getDisplayName(WrappedComponent) + \")\";\n Form.WrappedComponent = WrappedComponent;\n Form.propTypes = {\n destroyOnUnmount: PropTypes.bool,\n forceUnregisterOnUnmount: PropTypes.bool,\n form: PropTypes.string.isRequired,\n immutableProps: PropTypes.arrayOf(PropTypes.string),\n initialValues: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n getFormState: PropTypes.func,\n onSubmitFail: PropTypes.func,\n onSubmitSuccess: PropTypes.func,\n propNamespace: PropTypes.string,\n validate: PropTypes.func,\n warn: PropTypes.func,\n touchOnBlur: PropTypes.bool,\n touchOnChange: PropTypes.bool,\n triggerSubmit: PropTypes.bool,\n persistentSubmitErrors: PropTypes.bool,\n registeredFields: PropTypes.any\n };\n var connector = connect(function (state, props) {\n var form = props.form,\n getFormState = props.getFormState,\n initialValues = props.initialValues,\n enableReinitialize = props.enableReinitialize,\n keepDirtyOnReinitialize = props.keepDirtyOnReinitialize;\n var formState = getIn(getFormState(state) || empty, form) || empty;\n var stateInitial = getIn(formState, 'initial');\n var initialized = !!stateInitial;\n var shouldUpdateInitialValues = enableReinitialize && initialized && !deepEqual(initialValues, stateInitial);\n var shouldResetValues = shouldUpdateInitialValues && !keepDirtyOnReinitialize;\n var initial = initialValues || stateInitial || empty;\n\n if (!shouldUpdateInitialValues) {\n initial = stateInitial || empty;\n }\n\n var values = getIn(formState, 'values') || initial;\n\n if (shouldResetValues) {\n values = initial;\n }\n\n var pristine = shouldResetValues || deepEqual(initial, values);\n var asyncErrors = getIn(formState, 'asyncErrors');\n var syncErrors = getIn(formState, 'syncErrors') || plain.empty;\n var syncWarnings = getIn(formState, 'syncWarnings') || plain.empty;\n var registeredFields = getIn(formState, 'registeredFields');\n var valid = isValid(form, getFormState, false)(state);\n var validExceptSubmit = isValid(form, getFormState, true)(state);\n var anyTouched = !!getIn(formState, 'anyTouched');\n var submitting = !!getIn(formState, 'submitting');\n var submitFailed = !!getIn(formState, 'submitFailed');\n var submitSucceeded = !!getIn(formState, 'submitSucceeded');\n var error = getIn(formState, 'error');\n var warning = getIn(formState, 'warning');\n var triggerSubmit = getIn(formState, 'triggerSubmit');\n return {\n anyTouched: anyTouched,\n asyncErrors: asyncErrors,\n asyncValidating: getIn(formState, 'asyncValidating') || false,\n dirty: !pristine,\n error: error,\n initialized: initialized,\n invalid: !valid,\n pristine: pristine,\n registeredFields: registeredFields,\n submitting: submitting,\n submitFailed: submitFailed,\n submitSucceeded: submitSucceeded,\n syncErrors: syncErrors,\n syncWarnings: syncWarnings,\n triggerSubmit: triggerSubmit,\n values: values,\n valid: valid,\n validExceptSubmit: validExceptSubmit,\n warning: warning\n };\n }, function (dispatch, initialProps) {\n var bindForm = function bindForm(actionCreator) {\n return actionCreator.bind(null, initialProps.form);\n }; // Bind the first parameter on `props.form`\n\n\n var boundFormACs = _mapValues(formActions, bindForm);\n\n var boundArrayACs = _mapValues(arrayActions, bindForm);\n\n var boundBlur = function boundBlur(field, value) {\n return blur(initialProps.form, field, value, !!initialProps.touchOnBlur);\n };\n\n var boundChange = function boundChange(field, value) {\n return change(initialProps.form, field, value, !!initialProps.touchOnChange, !!initialProps.persistentSubmitErrors);\n };\n\n var boundFocus = bindForm(focus); // Wrap action creators with `dispatch`\n\n var connectedFormACs = bindActionCreators(boundFormACs, dispatch);\n var connectedArrayACs = {\n insert: bindActionCreators(boundArrayACs.arrayInsert, dispatch),\n move: bindActionCreators(boundArrayACs.arrayMove, dispatch),\n pop: bindActionCreators(boundArrayACs.arrayPop, dispatch),\n push: bindActionCreators(boundArrayACs.arrayPush, dispatch),\n remove: bindActionCreators(boundArrayACs.arrayRemove, dispatch),\n removeAll: bindActionCreators(boundArrayACs.arrayRemoveAll, dispatch),\n shift: bindActionCreators(boundArrayACs.arrayShift, dispatch),\n splice: bindActionCreators(boundArrayACs.arraySplice, dispatch),\n swap: bindActionCreators(boundArrayACs.arraySwap, dispatch),\n unshift: bindActionCreators(boundArrayACs.arrayUnshift, dispatch)\n };\n\n var computedActions = _extends({}, connectedFormACs, boundArrayACs, {\n blur: boundBlur,\n change: boundChange,\n array: connectedArrayACs,\n focus: boundFocus,\n dispatch: dispatch\n });\n\n return function () {\n return computedActions;\n };\n }, undefined, {\n forwardRef: true\n });\n var ConnectedForm = hoistStatics(connector(Form), WrappedComponent);\n ConnectedForm.defaultProps = config; // build outer component to expose instance api\n\n var ReduxForm =\n /*#__PURE__*/\n function (_React$Component2) {\n _inheritsLoose(ReduxForm, _React$Component2);\n\n function ReduxForm() {\n var _this4;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n _this4 = _React$Component2.call.apply(_React$Component2, [this].concat(args)) || this;\n _this4.ref = React.createRef();\n return _this4;\n }\n\n var _proto2 = ReduxForm.prototype;\n\n _proto2.submit = function submit() {\n return this.ref.current && this.ref.current.submit();\n };\n\n _proto2.reset = function reset() {\n if (this.ref) {\n this.ref.current.reset();\n }\n };\n\n _proto2.render = function render() {\n var _this$props13 = this.props,\n initialValues = _this$props13.initialValues,\n rest = _objectWithoutPropertiesLoose(_this$props13, [\"initialValues\"]);\n\n return createElement(ConnectedForm, _extends({}, rest, {\n ref: this.ref,\n // convert initialValues if need to\n initialValues: fromJS(initialValues)\n }));\n };\n\n _createClass(ReduxForm, [{\n key: \"valid\",\n get: function get() {\n return !!(this.ref.current && this.ref.current.isValid());\n }\n }, {\n key: \"invalid\",\n get: function get() {\n return !this.valid;\n }\n }, {\n key: \"pristine\",\n get: function get() {\n return !!(this.ref.current && this.ref.current.isPristine());\n }\n }, {\n key: \"dirty\",\n get: function get() {\n return !this.pristine;\n }\n }, {\n key: \"values\",\n get: function get() {\n return this.ref.current ? this.ref.current.getValues() : empty;\n }\n }, {\n key: \"fieldList\",\n get: function get() {\n // mainly provided for testing\n return this.ref.current ? this.ref.current.getFieldList() : [];\n }\n }, {\n key: \"wrappedInstance\",\n get: function get() {\n // for testing\n return this.ref.current && this.ref.current.wrapped.current;\n }\n }]);\n\n return ReduxForm;\n }(React.Component);\n\n polyfill(ReduxForm);\n var WithContext = hoistStatics(withReduxForm(ReduxForm), WrappedComponent);\n WithContext.defaultProps = config;\n return WithContext;\n };\n };\n};\n\nexport default createReduxForm;","import createReduxForm from './createReduxForm';\nimport plain from './structure/plain';\nexport default createReduxForm(plain);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/extends\";\n\nvar processProps = function processProps(type, props, _value, deepEqual) {\n var value = props.value;\n\n if (type === 'checkbox') {\n return _extends({}, props, {\n checked: !!value\n });\n }\n\n if (type === 'radio') {\n return _extends({}, props, {\n checked: deepEqual(value, _value),\n value: _value\n });\n }\n\n if (type === 'select-multiple') {\n return _extends({}, props, {\n value: value || []\n });\n }\n\n if (type === 'file') {\n return _extends({}, props, {\n value: value || undefined\n });\n }\n\n return props;\n};\n\nvar createFieldProps = function createFieldProps(_ref, name, _ref2) {\n var getIn = _ref.getIn,\n toJS = _ref.toJS,\n deepEqual = _ref.deepEqual;\n\n var asyncError = _ref2.asyncError,\n asyncValidating = _ref2.asyncValidating,\n onBlur = _ref2.onBlur,\n onChange = _ref2.onChange,\n onDrop = _ref2.onDrop,\n onDragStart = _ref2.onDragStart,\n dirty = _ref2.dirty,\n dispatch = _ref2.dispatch,\n onFocus = _ref2.onFocus,\n form = _ref2.form,\n format = _ref2.format,\n initial = _ref2.initial,\n parse = _ref2.parse,\n pristine = _ref2.pristine,\n props = _ref2.props,\n state = _ref2.state,\n submitError = _ref2.submitError,\n submitFailed = _ref2.submitFailed,\n submitting = _ref2.submitting,\n syncError = _ref2.syncError,\n syncWarning = _ref2.syncWarning,\n validate = _ref2.validate,\n value = _ref2.value,\n _value = _ref2._value,\n warn = _ref2.warn,\n custom = _objectWithoutPropertiesLoose(_ref2, [\"asyncError\", \"asyncValidating\", \"onBlur\", \"onChange\", \"onDrop\", \"onDragStart\", \"dirty\", \"dispatch\", \"onFocus\", \"form\", \"format\", \"initial\", \"parse\", \"pristine\", \"props\", \"state\", \"submitError\", \"submitFailed\", \"submitting\", \"syncError\", \"syncWarning\", \"validate\", \"value\", \"_value\", \"warn\"]);\n\n var error = syncError || asyncError || submitError;\n var warning = syncWarning;\n\n var formatFieldValue = function formatFieldValue(value, format) {\n if (format === null) {\n return value;\n }\n\n var defaultFormattedValue = value == null ? '' : value;\n return format ? format(value, name) : defaultFormattedValue;\n };\n\n var formattedFieldValue = formatFieldValue(value, format);\n return {\n input: processProps(custom.type, {\n name: name,\n onBlur: onBlur,\n onChange: onChange,\n onDragStart: onDragStart,\n onDrop: onDrop,\n onFocus: onFocus,\n value: formattedFieldValue\n }, _value, deepEqual),\n meta: _extends({}, toJS(state), {\n active: !!(state && getIn(state, 'active')),\n asyncValidating: asyncValidating,\n autofilled: !!(state && getIn(state, 'autofilled')),\n dirty: dirty,\n dispatch: dispatch,\n error: error,\n form: form,\n initial: initial,\n warning: warning,\n invalid: !!error,\n pristine: pristine,\n submitting: !!submitting,\n submitFailed: !!submitFailed,\n touched: !!(state && getIn(state, 'touched')),\n valid: !error,\n visited: !!(state && getIn(state, 'visited'))\n }),\n custom: _extends({}, custom, props)\n };\n};\n\nexport default createFieldProps;","import isEvent from './isEvent';\n\nvar getSelectedValues = function getSelectedValues(options) {\n var result = [];\n\n if (options) {\n for (var index = 0; index < options.length; index++) {\n var option = options[index];\n\n if (option.selected) {\n result.push(option.value);\n }\n }\n }\n\n return result;\n};\n\nvar getValue = function getValue(event, isReactNative) {\n if (isEvent(event)) {\n if (!isReactNative && event.nativeEvent && event.nativeEvent.text !== undefined) {\n return event.nativeEvent.text;\n }\n\n if (isReactNative && event.nativeEvent !== undefined) {\n return event.nativeEvent.text;\n }\n\n var detypedEvent = event;\n var _detypedEvent$target = detypedEvent.target,\n type = _detypedEvent$target.type,\n value = _detypedEvent$target.value,\n checked = _detypedEvent$target.checked,\n files = _detypedEvent$target.files,\n dataTransfer = detypedEvent.dataTransfer;\n\n if (type === 'checkbox') {\n return !!checked;\n }\n\n if (type === 'file') {\n return files || dataTransfer && dataTransfer.files;\n }\n\n if (type === 'select-multiple') {\n return getSelectedValues(event.target.options);\n }\n\n return value;\n }\n\n return event;\n};\n\nexport default getValue;","var isReactNative = typeof window !== 'undefined' && window.navigator && window.navigator.product && window.navigator.product === 'ReactNative';\nexport default isReactNative;","import getValue from './getValue';\nimport isReactNative from '../isReactNative';\n\nvar onChangeValue = function onChangeValue(event, _ref) {\n var name = _ref.name,\n parse = _ref.parse,\n normalize = _ref.normalize;\n // read value from input\n var value = getValue(event, isReactNative); // parse value if we have a parser\n\n if (parse) {\n value = parse(value, name);\n } // normalize value\n\n\n if (normalize) {\n value = normalize(name, value);\n }\n\n return value;\n};\n\nexport default onChangeValue;","export var dataKey = 'text';","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport React, { Component, createElement } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport createFieldProps from './createFieldProps';\nimport onChangeValue from './events/onChangeValue';\nimport { dataKey } from './util/eventConsts';\nimport plain from './structure/plain';\nimport isReactNative from './isReactNative';\nimport validateComponentProp from './util/validateComponentProp';\nimport isEvent from './events/isEvent';\nvar propsToNotUpdateFor = ['_reduxForm'];\n\nvar isObject = function isObject(entity) {\n return entity && typeof entity === 'object';\n};\n\nvar isFunction = function isFunction(entity) {\n return entity && typeof entity === 'function';\n};\n\nvar eventPreventDefault = function eventPreventDefault(event) {\n if (isObject(event) && isFunction(event.preventDefault)) {\n event.preventDefault();\n }\n};\n\nvar eventDataTransferGetData = function eventDataTransferGetData(event, key) {\n if (isObject(event) && isObject(event.dataTransfer) && isFunction(event.dataTransfer.getData)) {\n return event.dataTransfer.getData(key);\n }\n};\n\nvar eventDataTransferSetData = function eventDataTransferSetData(event, key, value) {\n if (isObject(event) && isObject(event.dataTransfer) && isFunction(event.dataTransfer.setData)) {\n event.dataTransfer.setData(key, value);\n }\n};\n\nvar createConnectedField = function createConnectedField(structure) {\n var deepEqual = structure.deepEqual,\n getIn = structure.getIn;\n\n var getSyncError = function getSyncError(syncErrors, name) {\n var error = plain.getIn(syncErrors, name); // Because the error for this field might not be at a level in the error structure where\n // it can be set directly, it might need to be unwrapped from the _error property\n\n return error && error._error ? error._error : error;\n };\n\n var getSyncWarning = function getSyncWarning(syncWarnings, name) {\n var warning = getIn(syncWarnings, name); // Because the warning for this field might not be at a level in the warning structure where\n // it can be set directly, it might need to be unwrapped from the _warning property\n\n return warning && warning._warning ? warning._warning : warning;\n };\n\n var ConnectedField =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(ConnectedField, _Component);\n\n function ConnectedField() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.ref = React.createRef();\n\n _this.isPristine = function () {\n return _this.props.pristine;\n };\n\n _this.getValue = function () {\n return _this.props.value;\n };\n\n _this.handleChange = function (event) {\n var _this$props = _this.props,\n name = _this$props.name,\n dispatch = _this$props.dispatch,\n parse = _this$props.parse,\n normalize = _this$props.normalize,\n onChange = _this$props.onChange,\n _reduxForm = _this$props._reduxForm,\n previousValue = _this$props.value;\n var newValue = onChangeValue(event, {\n name: name,\n parse: parse,\n normalize: normalize\n });\n var defaultPrevented = false;\n\n if (onChange) {\n // Can't seem to find a way to extend Event in React Native,\n // thus I simply avoid adding preventDefault() in a RN environment\n // to prevent the following error:\n // `One of the sources for assign has an enumerable key on the prototype chain`\n // Reference: https://github.com/facebook/react-native/issues/5507\n if (!isReactNative && isEvent(event)) {\n onChange(_extends({}, event, {\n preventDefault: function preventDefault() {\n defaultPrevented = true;\n return eventPreventDefault(event);\n }\n }), newValue, previousValue, name);\n } else {\n defaultPrevented = onChange(event, newValue, previousValue, name);\n }\n }\n\n if (!defaultPrevented) {\n // dispatch change action\n dispatch(_reduxForm.change(name, newValue)); // call post-change callback\n\n if (_reduxForm.asyncValidate) {\n _reduxForm.asyncValidate(name, newValue, 'change');\n }\n }\n };\n\n _this.handleFocus = function (event) {\n var _this$props2 = _this.props,\n name = _this$props2.name,\n dispatch = _this$props2.dispatch,\n onFocus = _this$props2.onFocus,\n _reduxForm = _this$props2._reduxForm;\n var defaultPrevented = false;\n\n if (onFocus) {\n if (!isReactNative) {\n onFocus(_extends({}, event, {\n preventDefault: function preventDefault() {\n defaultPrevented = true;\n return eventPreventDefault(event);\n }\n }), name);\n } else {\n defaultPrevented = onFocus(event, name);\n }\n }\n\n if (!defaultPrevented) {\n dispatch(_reduxForm.focus(name));\n }\n };\n\n _this.handleBlur = function (event) {\n var _this$props3 = _this.props,\n name = _this$props3.name,\n dispatch = _this$props3.dispatch,\n parse = _this$props3.parse,\n normalize = _this$props3.normalize,\n onBlur = _this$props3.onBlur,\n _reduxForm = _this$props3._reduxForm,\n _value = _this$props3._value,\n previousValue = _this$props3.value;\n var newValue = onChangeValue(event, {\n name: name,\n parse: parse,\n normalize: normalize\n }); // for checkbox and radio, if the value property of checkbox or radio equals\n // the value passed by blur event, then fire blur action with previousValue.\n\n if (newValue === _value && _value !== undefined) {\n newValue = previousValue;\n }\n\n var defaultPrevented = false;\n\n if (onBlur) {\n if (!isReactNative) {\n onBlur(_extends({}, event, {\n preventDefault: function preventDefault() {\n defaultPrevented = true;\n return eventPreventDefault(event);\n }\n }), newValue, previousValue, name);\n } else {\n defaultPrevented = onBlur(event, newValue, previousValue, name);\n }\n }\n\n if (!defaultPrevented) {\n // dispatch blur action\n dispatch(_reduxForm.blur(name, newValue)); // call post-blur callback\n\n if (_reduxForm.asyncValidate) {\n _reduxForm.asyncValidate(name, newValue, 'blur');\n }\n }\n };\n\n _this.handleDragStart = function (event) {\n var _this$props4 = _this.props,\n name = _this$props4.name,\n onDragStart = _this$props4.onDragStart,\n value = _this$props4.value;\n eventDataTransferSetData(event, dataKey, value == null ? '' : value);\n\n if (onDragStart) {\n onDragStart(event, name);\n }\n };\n\n _this.handleDrop = function (event) {\n var _this$props5 = _this.props,\n name = _this$props5.name,\n dispatch = _this$props5.dispatch,\n onDrop = _this$props5.onDrop,\n _reduxForm = _this$props5._reduxForm,\n previousValue = _this$props5.value;\n var newValue = eventDataTransferGetData(event, dataKey);\n var defaultPrevented = false;\n\n if (onDrop) {\n onDrop(_extends({}, event, {\n preventDefault: function preventDefault() {\n defaultPrevented = true;\n return eventPreventDefault(event);\n }\n }), newValue, previousValue, name);\n }\n\n if (!defaultPrevented) {\n // dispatch change action\n dispatch(_reduxForm.change(name, newValue));\n eventPreventDefault(event);\n }\n };\n\n return _this;\n }\n\n var _proto = ConnectedField.prototype;\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n var _this2 = this;\n\n var nextPropsKeys = Object.keys(nextProps);\n var thisPropsKeys = Object.keys(this.props); // if we have children, we MUST update in React 16\n // https://twitter.com/erikras/status/915866544558788608\n\n return !!(this.props.children || nextProps.children || nextPropsKeys.length !== thisPropsKeys.length || nextPropsKeys.some(function (prop) {\n if (~(nextProps.immutableProps || []).indexOf(prop)) {\n return _this2.props[prop] !== nextProps[prop];\n }\n\n return !~propsToNotUpdateFor.indexOf(prop) && !deepEqual(_this2.props[prop], nextProps[prop]);\n }));\n };\n\n _proto.getRenderedComponent = function getRenderedComponent() {\n return this.ref.current;\n };\n\n _proto.render = function render() {\n var _this$props6 = this.props,\n component = _this$props6.component,\n forwardRef = _this$props6.forwardRef,\n name = _this$props6.name,\n _reduxForm = _this$props6._reduxForm,\n normalize = _this$props6.normalize,\n onBlur = _this$props6.onBlur,\n onChange = _this$props6.onChange,\n onFocus = _this$props6.onFocus,\n onDragStart = _this$props6.onDragStart,\n onDrop = _this$props6.onDrop,\n immutableProps = _this$props6.immutableProps,\n rest = _objectWithoutPropertiesLoose(_this$props6, [\"component\", \"forwardRef\", \"name\", \"_reduxForm\", \"normalize\", \"onBlur\", \"onChange\", \"onFocus\", \"onDragStart\", \"onDrop\", \"immutableProps\"]);\n\n var _createFieldProps = createFieldProps(structure, name, _extends({}, rest, {\n form: _reduxForm.form,\n onBlur: this.handleBlur,\n onChange: this.handleChange,\n onDrop: this.handleDrop,\n onDragStart: this.handleDragStart,\n onFocus: this.handleFocus\n })),\n custom = _createFieldProps.custom,\n props = _objectWithoutPropertiesLoose(_createFieldProps, [\"custom\"]);\n\n if (forwardRef) {\n custom.ref = this.ref;\n }\n\n if (typeof component === 'string') {\n var input = props.input,\n meta = props.meta; // eslint-disable-line no-unused-vars\n // flatten input into other props\n\n return createElement(component, _extends({}, input, custom));\n } else {\n return createElement(component, _extends({}, props, custom));\n }\n };\n\n return ConnectedField;\n }(Component);\n\n ConnectedField.propTypes = {\n component: validateComponentProp,\n props: PropTypes.object\n };\n var connector = connect(function (state, ownProps) {\n var name = ownProps.name,\n _ownProps$_reduxForm = ownProps._reduxForm,\n initialValues = _ownProps$_reduxForm.initialValues,\n getFormState = _ownProps$_reduxForm.getFormState;\n var formState = getFormState(state);\n var initialState = getIn(formState, \"initial.\" + name);\n var initial = initialState !== undefined ? initialState : initialValues && getIn(initialValues, name);\n var value = getIn(formState, \"values.\" + name);\n var submitting = getIn(formState, 'submitting');\n var syncError = getSyncError(getIn(formState, 'syncErrors'), name);\n var syncWarning = getSyncWarning(getIn(formState, 'syncWarnings'), name);\n var pristine = deepEqual(value, initial);\n return {\n asyncError: getIn(formState, \"asyncErrors.\" + name),\n asyncValidating: getIn(formState, 'asyncValidating') === name,\n dirty: !pristine,\n pristine: pristine,\n state: getIn(formState, \"fields.\" + name),\n submitError: getIn(formState, \"submitErrors.\" + name),\n submitFailed: getIn(formState, 'submitFailed'),\n submitting: submitting,\n syncError: syncError,\n syncWarning: syncWarning,\n initial: initial,\n value: value,\n _value: ownProps.value // save value passed in (for radios)\n\n };\n }, undefined, undefined, {\n forwardRef: true\n });\n return connector(ConnectedField);\n};\n\nexport default createConnectedField;","import _isEqualWith from \"lodash/isEqualWith\";\n\nvar customizer = function customizer(objectValue, otherValue, indexOrkey, object, other, stack) {\n // https://lodash.com/docs/4.17.4#isEqualWith\n if (stack) {\n // Shallow compares\n // For 1st level, stack === undefined.\n // -> Do nothing (and implicitly return undefined so that it goes to compare 2nd level)\n // For 2nd level and up, stack !== undefined.\n // -> Compare by === operator\n return objectValue === otherValue;\n }\n};\n\nvar shallowCompare = function shallowCompare(instance, nextProps, nextState) {\n var propsEqual = _isEqualWith(instance.props, nextProps, customizer);\n\n var stateEqual = _isEqualWith(instance.state, nextState, customizer);\n\n return !propsEqual || !stateEqual;\n};\n\nexport default shallowCompare;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport React, { Component, createElement } from 'react';\nimport { polyfill } from 'react-lifecycles-compat';\nimport PropTypes from 'prop-types';\nimport invariant from 'invariant';\nimport createConnectedField from './ConnectedField';\nimport shallowCompare from './util/shallowCompare';\nimport prefixName from './util/prefixName';\nimport plain from './structure/plain';\nimport { withReduxForm } from './ReduxFormContext';\nimport validateComponentProp from './util/validateComponentProp';\n\nvar createField = function createField(structure) {\n var ConnectedField = createConnectedField(structure);\n var setIn = structure.setIn;\n\n var Field =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(Field, _Component);\n\n function Field(props) {\n var _this;\n\n _this = _Component.call(this, props) || this;\n _this.ref = React.createRef();\n _this.ref = React.createRef();\n\n _this.normalize = function (name, value) {\n var normalize = _this.props.normalize;\n\n if (!normalize) {\n return value;\n }\n\n var previousValues = _this.props._reduxForm.getValues();\n\n var previousValue = _this.value;\n var nextValues = setIn(previousValues, name, value);\n return normalize(value, previousValue, nextValues, previousValues, name);\n };\n\n if (!props._reduxForm) {\n throw new Error('Field must be inside a component decorated with reduxForm()');\n }\n\n return _this;\n }\n\n var _proto = Field.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n var _this2 = this;\n\n this.props._reduxForm.register(this.name, 'Field', function () {\n return _this2.props.validate;\n }, function () {\n return _this2.props.warn;\n });\n };\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps, nextState) {\n return shallowCompare(this, nextProps, nextState);\n };\n\n _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var oldName = prefixName(this.props, this.props.name);\n var newName = prefixName(nextProps, nextProps.name);\n\n if (oldName !== newName || // use deepEqual here because they could be a function or an array of functions\n !plain.deepEqual(this.props.validate, nextProps.validate) || !plain.deepEqual(this.props.warn, nextProps.warn)) {\n // unregister old name\n this.props._reduxForm.unregister(oldName); // register new name\n\n\n this.props._reduxForm.register(newName, 'Field', function () {\n return nextProps.validate;\n }, function () {\n return nextProps.warn;\n });\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.props._reduxForm.unregister(this.name);\n };\n\n _proto.getRenderedComponent = function getRenderedComponent() {\n invariant(this.props.forwardRef, 'If you want to access getRenderedComponent(), ' + 'you must specify a forwardRef prop to Field');\n return this.ref.current ? this.ref.current.getRenderedComponent() : undefined;\n };\n\n _proto.render = function render() {\n return createElement(ConnectedField, _extends({}, this.props, {\n name: this.name,\n normalize: this.normalize,\n ref: this.ref\n }));\n };\n\n _createClass(Field, [{\n key: \"name\",\n get: function get() {\n return prefixName(this.props, this.props.name);\n }\n }, {\n key: \"dirty\",\n get: function get() {\n return !this.pristine;\n }\n }, {\n key: \"pristine\",\n get: function get() {\n return !!(this.ref.current && this.ref.current.isPristine());\n }\n }, {\n key: \"value\",\n get: function get() {\n return this.ref.current && this.ref.current.getValue();\n }\n }]);\n\n return Field;\n }(Component);\n\n Field.propTypes = {\n name: PropTypes.string.isRequired,\n component: validateComponentProp,\n format: PropTypes.func,\n normalize: PropTypes.func,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n onFocus: PropTypes.func,\n onDragStart: PropTypes.func,\n onDrop: PropTypes.func,\n parse: PropTypes.func,\n props: PropTypes.object,\n validate: PropTypes.oneOfType([PropTypes.func, PropTypes.arrayOf(PropTypes.func)]),\n warn: PropTypes.oneOfType([PropTypes.func, PropTypes.arrayOf(PropTypes.func)]),\n forwardRef: PropTypes.bool,\n immutableProps: PropTypes.arrayOf(PropTypes.string),\n _reduxForm: PropTypes.object\n };\n polyfill(Field);\n return withReduxForm(Field);\n};\n\nexport default createField;","import createField from './createField';\nimport plain from './structure/plain';\nexport default createField(plain);","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * var result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\n\nexport default function differenceInCalendarMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n var monthDiff = dateLeft.getMonth() - dateRight.getMonth();\n return yearDiff * 12 + monthDiff;\n}","import toDate from '../toDate/index.js';\nimport differenceInCalendarMonths from '../differenceInCalendarMonths/index.js';\nimport compareAsc from '../compareAsc/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name differenceInMonths\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @description\n * Get the number of full months between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * var result = differenceInMonths(new Date(2014, 8, 1), new Date(2014, 0, 31))\n * //=> 7\n */\n\nexport default function differenceInMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarMonths(dateLeft, dateRight));\n dateLeft.setMonth(dateLeft.getMonth() - sign * difference); // Math.abs(diff in full months - diff in calendar months) === 1 if last calendar month is not full\n // If so, result must be decreased by 1 in absolute value\n\n var isLastMonthNotFull = compareAsc(dateLeft, dateRight) === -sign;\n var result = sign * (difference - isLastMonthNotFull); // Prevent negative zero\n\n return result === 0 ? 0 : result;\n}","import compareAsc from '../compareAsc/index.js';\nimport differenceInMonths from '../differenceInMonths/index.js';\nimport differenceInSeconds from '../differenceInSeconds/index.js';\nimport defaultLocale from '../locale/en-US/index.js';\nimport toDate from '../toDate/index.js';\nimport cloneObject from '../_lib/cloneObject/index.js';\nimport getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\nvar MINUTES_IN_DAY = 1440;\nvar MINUTES_IN_ALMOST_TWO_DAYS = 2520;\nvar MINUTES_IN_MONTH = 43200;\nvar MINUTES_IN_TWO_MONTHS = 86400;\n/**\n * @name formatDistance\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words.\n *\n * | Distance between dates | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance between dates | Result |\n * |------------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `distanceInWords ` to `formatDistance`\n * to make its name consistent with `format` and `formatRelative`.\n *\n * - The order of arguments is swapped to make the function\n * consistent with `differenceIn...` functions.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * distanceInWords(\n * new Date(1986, 3, 4, 10, 32, 0),\n * new Date(1986, 3, 4, 11, 32, 0),\n * { addSuffix: true }\n * ) //=> 'in about 1 hour'\n *\n * // v2.0.0 onward\n *\n * formatDistance(\n * new Date(1986, 3, 4, 11, 32, 0),\n * new Date(1986, 3, 4, 10, 32, 0),\n * { addSuffix: true }\n * ) //=> 'in about 1 hour'\n * ```\n *\n * @param {Date|Number} date - the date\n * @param {Date|Number} baseDate - the date to compare with\n * @param {Object} [options] - an object with options.\n * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `baseDate` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * var result = formatDistance(new Date(2014, 6, 2), new Date(2015, 0, 1))\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00, including seconds?\n * var result = formatDistance(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0),\n * { includeSeconds: true }\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * var result = formatDistance(new Date(2015, 0, 1), new Date(2016, 0, 1), {\n * addSuffix: true\n * })\n * //=> 'about 1 year ago'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = formatDistance(new Date(2016, 7, 1), new Date(2015, 0, 1), {\n * locale: eoLocale\n * })\n * //=> 'pli ol 1 jaro'\n */\n\nexport default function formatDistance(dirtyDate, dirtyBaseDate, dirtyOptions) {\n requiredArgs(2, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale || defaultLocale;\n\n if (!locale.formatDistance) {\n throw new RangeError('locale must contain formatDistance property');\n }\n\n var comparison = compareAsc(dirtyDate, dirtyBaseDate);\n\n if (isNaN(comparison)) {\n throw new RangeError('Invalid time value');\n }\n\n var localizeOptions = cloneObject(options);\n localizeOptions.addSuffix = Boolean(options.addSuffix);\n localizeOptions.comparison = comparison;\n var dateLeft;\n var dateRight;\n\n if (comparison > 0) {\n dateLeft = toDate(dirtyBaseDate);\n dateRight = toDate(dirtyDate);\n } else {\n dateLeft = toDate(dirtyDate);\n dateRight = toDate(dirtyBaseDate);\n }\n\n var seconds = differenceInSeconds(dateRight, dateLeft);\n var offsetInSeconds = (getTimezoneOffsetInMilliseconds(dateRight) - getTimezoneOffsetInMilliseconds(dateLeft)) / 1000;\n var minutes = Math.round((seconds - offsetInSeconds) / 60);\n var months; // 0 up to 2 mins\n\n if (minutes < 2) {\n if (options.includeSeconds) {\n if (seconds < 5) {\n return locale.formatDistance('lessThanXSeconds', 5, localizeOptions);\n } else if (seconds < 10) {\n return locale.formatDistance('lessThanXSeconds', 10, localizeOptions);\n } else if (seconds < 20) {\n return locale.formatDistance('lessThanXSeconds', 20, localizeOptions);\n } else if (seconds < 40) {\n return locale.formatDistance('halfAMinute', null, localizeOptions);\n } else if (seconds < 60) {\n return locale.formatDistance('lessThanXMinutes', 1, localizeOptions);\n } else {\n return locale.formatDistance('xMinutes', 1, localizeOptions);\n }\n } else {\n if (minutes === 0) {\n return locale.formatDistance('lessThanXMinutes', 1, localizeOptions);\n } else {\n return locale.formatDistance('xMinutes', minutes, localizeOptions);\n }\n } // 2 mins up to 0.75 hrs\n\n } else if (minutes < 45) {\n return locale.formatDistance('xMinutes', minutes, localizeOptions); // 0.75 hrs up to 1.5 hrs\n } else if (minutes < 90) {\n return locale.formatDistance('aboutXHours', 1, localizeOptions); // 1.5 hrs up to 24 hrs\n } else if (minutes < MINUTES_IN_DAY) {\n var hours = Math.round(minutes / 60);\n return locale.formatDistance('aboutXHours', hours, localizeOptions); // 1 day up to 1.75 days\n } else if (minutes < MINUTES_IN_ALMOST_TWO_DAYS) {\n return locale.formatDistance('xDays', 1, localizeOptions); // 1.75 days up to 30 days\n } else if (minutes < MINUTES_IN_MONTH) {\n var days = Math.round(minutes / MINUTES_IN_DAY);\n return locale.formatDistance('xDays', days, localizeOptions); // 1 month up to 2 months\n } else if (minutes < MINUTES_IN_TWO_MONTHS) {\n months = Math.round(minutes / MINUTES_IN_MONTH);\n return locale.formatDistance('aboutXMonths', months, localizeOptions);\n }\n\n months = differenceInMonths(dateRight, dateLeft); // 2 months up to 12 months\n\n if (months < 12) {\n var nearestMonth = Math.round(minutes / MINUTES_IN_MONTH);\n return locale.formatDistance('xMonths', nearestMonth, localizeOptions); // 1 year up to max Date\n } else {\n var monthsSinceStartOfYear = months % 12;\n var years = Math.floor(months / 12); // N years up to 1 years 3 months\n\n if (monthsSinceStartOfYear < 3) {\n return locale.formatDistance('aboutXYears', years, localizeOptions); // N years 3 months up to N years 9 months\n } else if (monthsSinceStartOfYear < 9) {\n return locale.formatDistance('overXYears', years, localizeOptions); // N years 9 months up to N year 12 months\n } else {\n return locale.formatDistance('almostXYears', years + 1, localizeOptions);\n }\n }\n}","import { updateFromSet } from \"../../util/set\";\n// The nature of a react component makes it difficult to animate on component\n// unmount. If the component is unmounted, it can not animate on its way out,\n// since it is already unmounted.\n// We bypass this limitation appending a `state` key in the transition element\n// and letting the client of this method apply certain styles according the\n// current state of the element.\n//\n// The cycle of the element follows the ElementAction type unions. Please refer\n// to that type documentation and comments for more details on the transitions\n// lifecycle.\nexport function reduceElementsState(elements, transition) {\n const { element, action } = transition;\n switch (action) {\n case \"add\":\n return elements.concat(element);\n case \"show\":\n case \"hide\":\n return updateFromSet(elements, ({ id }) => id === element.id, {\n ...element,\n state: action === \"show\" ? \"active\" : \"exited\",\n });\n case \"remove\":\n // We can only remove the element if every element has its animation\n // completed to avoid messing up the position of other elements that\n // may be animating. If every element has already finished its\n // animation we clear the entire list\n if (elements.every((t) => t.state === \"exited\")) {\n return [];\n }\n else {\n return elements;\n }\n }\n return elements;\n}\n","import classnames from \"classnames\";\nimport * as React from \"react\";\nimport { Icon } from \"../../components/icon/icon\";\nimport \"./toast.scss\";\nexport class Toast extends React.Component {\n constructor() {\n super(...arguments);\n this.handleClickClose = () => {\n const { hideToast } = this.props;\n hideToast();\n };\n }\n render() {\n const { iconName, style, children, type } = this.props;\n const classes = classnames(\"single-common-components-toast\", {\n [type]: true,\n });\n return (React.createElement(\"div\", { className: classes, style: style },\n React.createElement(Icon, { icon: iconName, className: \"toast-icon\" }),\n React.createElement(\"span\", null, children),\n React.createElement(\"div\", { className: \"close-icon-wrapper\", onClick: this.handleClickClose },\n React.createElement(Icon, { icon: \"times\", className: \"close-icon\" }))));\n }\n}\n","import { servicesLocator } from \"@single-js/common/services/services-locator\";\nimport _ from \"lodash\";\nimport * as React from \"react\";\nimport { zIndex } from \"../../util/z-index\";\nimport { reduceElementsState, } from \"../transition/transition\";\nimport { Toast as ToastComponent } from \"./toast\";\n/* ===== Style Constants and helpers ===== */\nconst OPACITY_TRANSITION_DURATION = 500; // ms\nconst FIRST_TOAST_MARGIN_TOP = 30; // px\nconst TOASTS_INTERVAL = 10; // px\nconst TOAST_HEIGHT = 40; // px\nconst TOAST_Z_INDEX = zIndex.toast;\nconst getToastStyle = (toast, idx) => {\n // Toast final position\n let top = FIRST_TOAST_MARGIN_TOP + idx * (TOAST_HEIGHT + TOASTS_INTERVAL);\n // Toast starting position\n if (toast.state === \"entered\") {\n top -= TOAST_HEIGHT + TOASTS_INTERVAL;\n }\n return {\n // Consequent toasts have less zIndex so they animate properly\n zIndex: TOAST_Z_INDEX - idx,\n top,\n opacity: toast.state === \"active\" ? 1 : 0,\n height: TOAST_HEIGHT,\n transition: \"opacity, top\",\n transitionDuration: `${OPACITY_TRANSITION_DURATION}ms`,\n transitionTimingFunction: \"ease-in-out\",\n };\n};\nconst initialProviderValue = {\n // We are forced to define a default value for our context. Since we set\n // the context value using the `value` prop this function does not get\n // executed ever\n renderToast: () => {\n servicesLocator\n .getLogger()\n .logError(new Error(\"Called renderToast without having the ToastProvider mounted\"));\n },\n};\nexport const ToastContext = React.createContext(initialProviderValue);\nconst reduceToastState = (element, action) => ({ toasts }) => ({\n toasts: reduceElementsState(toasts, {\n action,\n element,\n }),\n});\nexport class ToastProvider extends React.Component {\n constructor() {\n super(...arguments);\n this.showTimeoutIds = {};\n this.hideTimeoutIds = {};\n this.removeTimeoutIds = {};\n this.toastCounter = 0;\n this.state = {\n toasts: [],\n };\n this.addToast = (toast) => {\n this.setState(reduceToastState(toast, \"add\"), () => {\n const timeoutID = window.setTimeout(() => this.showToast(toast), toast.delay);\n this.showTimeoutIds[toast.id] = timeoutID;\n });\n };\n this.showToast = (toast) => {\n this.setState(reduceToastState(toast, \"show\"), () => {\n const timeoutID = window.setTimeout(() => this.hideToast(toast), toast.duration);\n this.showTimeoutIds[toast.id] = undefined;\n this.hideTimeoutIds[toast.id] = timeoutID;\n // removeTimeoutIds[toast.id] is still undefined at this point\n });\n };\n this.hideToast = (toast) => {\n this.setState(reduceToastState(toast, \"hide\"), () => {\n const timeoutID = window.setTimeout(() => this.removeToast(toast), OPACITY_TRANSITION_DURATION);\n if (toast.onHide) {\n toast.onHide();\n }\n // showTimeoutIds[toast.id] is already undefined at this point\n this.hideTimeoutIds[toast.id] = undefined;\n this.removeTimeoutIds[toast.id] = timeoutID;\n });\n };\n this.removeToast = (toast) => {\n this.setState(reduceToastState(toast, \"remove\"), () => {\n // showTimeoutIds[toast.id] is already undefined at this point\n // hideTimeoutIds[toast.id] is already undefined at this point\n this.removeTimeoutIds[toast.id] = undefined;\n });\n };\n // Exposed as the value of the provider\n this.renderToast = (toastOptions) => {\n this.addToast({\n ...toastOptions,\n state: \"entered\",\n id: this.toastCounter++,\n duration: toastOptions.duration || 3000,\n delay: toastOptions.delay || 300,\n onHide: toastOptions.onHide || _.noop,\n });\n };\n }\n componentWillUnmount() {\n // Clear pending timeout ids, in theory this shouldn't be needed since\n // it means the user abandoned the app (via page change or logout),\n // better be safe than sorry though, it also avoids the classic react\n // warning `cannot setState on an unmounted component`\n _.forEach(this.showTimeoutIds, window.clearTimeout);\n _.forEach(this.hideTimeoutIds, window.clearTimeout);\n _.forEach(this.removeTimeoutIds, window.clearTimeout);\n }\n render() {\n const { toasts } = this.state;\n const { children } = this.props;\n const renderedToasts = toasts.map((toast, idx) => (React.createElement(ToastComponent, { key: toast.id, style: getToastStyle(toast, idx), hideToast: () => this.hideToast(toast), ...toast })));\n return (React.createElement(ToastContext.Provider, { value: { renderToast: this.renderToast } },\n renderedToasts,\n children));\n }\n}\n","import _toPath from \"lodash/toPath\";\n\nfunction createDeleteInWithCleanUp(structure) {\n var shouldDeleteDefault = function shouldDeleteDefault(structure) {\n return function (state, path) {\n return structure.getIn(state, path) !== undefined;\n };\n };\n\n var deepEqual = structure.deepEqual,\n empty = structure.empty,\n getIn = structure.getIn,\n deleteIn = structure.deleteIn,\n setIn = structure.setIn;\n return function (shouldDelete) {\n if (shouldDelete === void 0) {\n shouldDelete = shouldDeleteDefault;\n }\n\n var deleteInWithCleanUp = function deleteInWithCleanUp(state, path) {\n if (path[path.length - 1] === ']') {\n // array path\n var pathTokens = _toPath(path);\n\n pathTokens.pop();\n var parent = getIn(state, pathTokens.join('.'));\n return parent ? setIn(state, path) : state;\n }\n\n var result = state;\n\n if (shouldDelete(structure)(state, path)) {\n result = deleteIn(state, path);\n }\n\n var dotIndex = path.lastIndexOf('.');\n\n if (dotIndex > 0) {\n var parentPath = path.substring(0, dotIndex);\n\n if (parentPath[parentPath.length - 1] !== ']') {\n var _parent = getIn(result, parentPath);\n\n if (deepEqual(_parent, empty)) {\n return deleteInWithCleanUp(result, parentPath);\n }\n }\n }\n\n return result;\n };\n\n return deleteInWithCleanUp;\n };\n}\n\nexport default createDeleteInWithCleanUp;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nimport _isFunction from \"lodash/isFunction\";\nimport { ARRAY_INSERT, ARRAY_MOVE, ARRAY_POP, ARRAY_PUSH, ARRAY_REMOVE, ARRAY_REMOVE_ALL, ARRAY_SHIFT, ARRAY_SPLICE, ARRAY_SWAP, ARRAY_UNSHIFT, AUTOFILL, BLUR, CHANGE, CLEAR_ASYNC_ERROR, CLEAR_SUBMIT, CLEAR_SUBMIT_ERRORS, DESTROY, FOCUS, INITIALIZE, prefix, REGISTER_FIELD, RESET, RESET_SECTION, SET_SUBMIT_FAILED, SET_SUBMIT_SUCCEEDED, START_ASYNC_VALIDATION, START_SUBMIT, STOP_ASYNC_VALIDATION, STOP_SUBMIT, SUBMIT, TOUCH, UNREGISTER_FIELD, UNTOUCH, UPDATE_SYNC_ERRORS, CLEAR_FIELDS, UPDATE_SYNC_WARNINGS } from './actionTypes';\nimport createDeleteInWithCleanUp from './deleteInWithCleanUp';\nimport plain from './structure/plain';\n\nvar shouldDelete = function shouldDelete(_ref) {\n var getIn = _ref.getIn;\n return function (state, path) {\n var initialValuesPath = null;\n\n if (/^values/.test(path)) {\n initialValuesPath = path.replace('values', 'initial');\n }\n\n var initialValueComparison = initialValuesPath ? getIn(state, initialValuesPath) === undefined : true;\n return getIn(state, path) !== undefined && initialValueComparison;\n };\n};\n\nvar isReduxFormAction = function isReduxFormAction(action) {\n return action && action.type && action.type.length > prefix.length && action.type.substring(0, prefix.length) === prefix;\n};\n\nfunction createReducer(structure) {\n var _behaviors;\n\n var deepEqual = structure.deepEqual,\n empty = structure.empty,\n forEach = structure.forEach,\n getIn = structure.getIn,\n setIn = structure.setIn,\n deleteIn = structure.deleteIn,\n fromJS = structure.fromJS,\n keys = structure.keys,\n size = structure.size,\n some = structure.some,\n splice = structure.splice;\n var deleteInWithCleanUp = createDeleteInWithCleanUp(structure)(shouldDelete);\n var plainDeleteInWithCleanUp = createDeleteInWithCleanUp(plain)(shouldDelete);\n\n var doSplice = function doSplice(state, key, field, index, removeNum, value, force) {\n var existing = getIn(state, key + \".\" + field);\n return existing || force ? setIn(state, key + \".\" + field, splice(existing, index, removeNum, value)) : state;\n };\n\n var doPlainSplice = function doPlainSplice(state, key, field, index, removeNum, value, force) {\n var slice = getIn(state, key);\n var existing = plain.getIn(slice, field);\n return existing || force ? setIn(state, key, plain.setIn(slice, field, plain.splice(existing, index, removeNum, value))) : state;\n };\n\n var rootKeys = ['values', 'fields', 'submitErrors', 'asyncErrors'];\n\n var arraySplice = function arraySplice(state, field, index, removeNum, value) {\n var result = state;\n var nonValuesValue = value != null ? empty : undefined;\n result = doSplice(result, 'values', field, index, removeNum, value, true);\n result = doSplice(result, 'fields', field, index, removeNum, nonValuesValue);\n result = doPlainSplice(result, 'syncErrors', field, index, removeNum, undefined);\n result = doPlainSplice(result, 'syncWarnings', field, index, removeNum, undefined);\n result = doSplice(result, 'submitErrors', field, index, removeNum, undefined);\n result = doSplice(result, 'asyncErrors', field, index, removeNum, undefined);\n return result;\n };\n\n var behaviors = (_behaviors = {}, _behaviors[ARRAY_INSERT] = function (state, _ref2) {\n var _ref2$meta = _ref2.meta,\n field = _ref2$meta.field,\n index = _ref2$meta.index,\n payload = _ref2.payload;\n return arraySplice(state, field, index, 0, payload);\n }, _behaviors[ARRAY_MOVE] = function (state, _ref3) {\n var _ref3$meta = _ref3.meta,\n field = _ref3$meta.field,\n from = _ref3$meta.from,\n to = _ref3$meta.to;\n var array = getIn(state, \"values.\" + field);\n var length = array ? size(array) : 0;\n var result = state;\n\n if (length) {\n rootKeys.forEach(function (key) {\n var path = key + \".\" + field;\n\n if (getIn(result, path)) {\n var value = getIn(result, path + \"[\" + from + \"]\");\n result = setIn(result, path, splice(getIn(result, path), from, 1)); // remove\n\n result = setIn(result, path, splice(getIn(result, path), to, 0, value)); // insert\n }\n });\n }\n\n return result;\n }, _behaviors[ARRAY_POP] = function (state, _ref4) {\n var field = _ref4.meta.field;\n var array = getIn(state, \"values.\" + field);\n var length = array ? size(array) : 0;\n return length ? arraySplice(state, field, length - 1, 1) : state;\n }, _behaviors[ARRAY_PUSH] = function (state, _ref5) {\n var field = _ref5.meta.field,\n payload = _ref5.payload;\n var array = getIn(state, \"values.\" + field);\n var length = array ? size(array) : 0;\n return arraySplice(state, field, length, 0, payload);\n }, _behaviors[ARRAY_REMOVE] = function (state, _ref6) {\n var _ref6$meta = _ref6.meta,\n field = _ref6$meta.field,\n index = _ref6$meta.index;\n return arraySplice(state, field, index, 1);\n }, _behaviors[ARRAY_REMOVE_ALL] = function (state, _ref7) {\n var field = _ref7.meta.field;\n var array = getIn(state, \"values.\" + field);\n var length = array ? size(array) : 0;\n return length ? arraySplice(state, field, 0, length) : state;\n }, _behaviors[ARRAY_SHIFT] = function (state, _ref8) {\n var field = _ref8.meta.field;\n return arraySplice(state, field, 0, 1);\n }, _behaviors[ARRAY_SPLICE] = function (state, _ref9) {\n var _ref9$meta = _ref9.meta,\n field = _ref9$meta.field,\n index = _ref9$meta.index,\n removeNum = _ref9$meta.removeNum,\n payload = _ref9.payload;\n return arraySplice(state, field, index, removeNum, payload);\n }, _behaviors[ARRAY_SWAP] = function (state, _ref10) {\n var _ref10$meta = _ref10.meta,\n field = _ref10$meta.field,\n indexA = _ref10$meta.indexA,\n indexB = _ref10$meta.indexB;\n var result = state;\n rootKeys.forEach(function (key) {\n var valueA = getIn(result, key + \".\" + field + \"[\" + indexA + \"]\");\n var valueB = getIn(result, key + \".\" + field + \"[\" + indexB + \"]\");\n\n if (valueA !== undefined || valueB !== undefined) {\n result = setIn(result, key + \".\" + field + \"[\" + indexA + \"]\", valueB);\n result = setIn(result, key + \".\" + field + \"[\" + indexB + \"]\", valueA);\n }\n });\n return result;\n }, _behaviors[ARRAY_UNSHIFT] = function (state, _ref11) {\n var field = _ref11.meta.field,\n payload = _ref11.payload;\n return arraySplice(state, field, 0, 0, payload);\n }, _behaviors[AUTOFILL] = function (state, _ref12) {\n var field = _ref12.meta.field,\n payload = _ref12.payload;\n var result = state;\n result = deleteInWithCleanUp(result, \"asyncErrors.\" + field);\n result = deleteInWithCleanUp(result, \"submitErrors.\" + field);\n result = setIn(result, \"fields.\" + field + \".autofilled\", true);\n result = setIn(result, \"values.\" + field, payload);\n return result;\n }, _behaviors[BLUR] = function (state, _ref13) {\n var _ref13$meta = _ref13.meta,\n field = _ref13$meta.field,\n touch = _ref13$meta.touch,\n payload = _ref13.payload;\n var result = state;\n var initial = getIn(result, \"initial.\" + field);\n\n if (initial === undefined && payload === '') {\n result = deleteInWithCleanUp(result, \"values.\" + field);\n } else if (payload !== undefined) {\n result = setIn(result, \"values.\" + field, payload);\n }\n\n if (field === getIn(result, 'active')) {\n result = deleteIn(result, 'active');\n }\n\n result = deleteIn(result, \"fields.\" + field + \".active\");\n\n if (touch) {\n result = setIn(result, \"fields.\" + field + \".touched\", true);\n result = setIn(result, 'anyTouched', true);\n }\n\n return result;\n }, _behaviors[CHANGE] = function (state, _ref14) {\n var _ref14$meta = _ref14.meta,\n field = _ref14$meta.field,\n touch = _ref14$meta.touch,\n persistentSubmitErrors = _ref14$meta.persistentSubmitErrors,\n payload = _ref14.payload;\n var result = state;\n var initial = getIn(result, \"initial.\" + field);\n\n if (initial === undefined && payload === '') {\n result = deleteInWithCleanUp(result, \"values.\" + field);\n } else if (_isFunction(payload)) {\n var fieldCurrentValue = getIn(state, \"values.\" + field);\n result = setIn(result, \"values.\" + field, payload(fieldCurrentValue, state.values));\n } else if (payload !== undefined) {\n result = setIn(result, \"values.\" + field, payload);\n }\n\n result = deleteInWithCleanUp(result, \"asyncErrors.\" + field);\n\n if (!persistentSubmitErrors) {\n result = deleteInWithCleanUp(result, \"submitErrors.\" + field);\n }\n\n result = deleteInWithCleanUp(result, \"fields.\" + field + \".autofilled\");\n\n if (touch) {\n result = setIn(result, \"fields.\" + field + \".touched\", true);\n result = setIn(result, 'anyTouched', true);\n }\n\n return result;\n }, _behaviors[CLEAR_SUBMIT] = function (state) {\n return deleteIn(state, 'triggerSubmit');\n }, _behaviors[CLEAR_SUBMIT_ERRORS] = function (state) {\n var result = state;\n result = deleteInWithCleanUp(result, 'submitErrors');\n result = deleteIn(result, 'error');\n return result;\n }, _behaviors[CLEAR_ASYNC_ERROR] = function (state, _ref15) {\n var field = _ref15.meta.field;\n return deleteIn(state, \"asyncErrors.\" + field);\n }, _behaviors[CLEAR_FIELDS] = function (state, _ref16) {\n var _ref16$meta = _ref16.meta,\n keepTouched = _ref16$meta.keepTouched,\n persistentSubmitErrors = _ref16$meta.persistentSubmitErrors,\n fields = _ref16$meta.fields;\n var result = state;\n fields.forEach(function (field) {\n result = deleteInWithCleanUp(result, \"values.\" + field);\n result = deleteInWithCleanUp(result, \"asyncErrors.\" + field);\n\n if (!persistentSubmitErrors) {\n result = deleteInWithCleanUp(result, \"submitErrors.\" + field);\n }\n\n result = deleteInWithCleanUp(result, \"fields.\" + field + \".autofilled\");\n\n if (!keepTouched) {\n result = deleteIn(result, \"fields.\" + field + \".touched\");\n }\n });\n var anyTouched = some(keys(getIn(result, 'registeredFields')), function (key) {\n return getIn(result, \"fields.\" + key + \".touched\");\n });\n result = anyTouched ? setIn(result, 'anyTouched', true) : deleteIn(result, 'anyTouched');\n return result;\n }, _behaviors[FOCUS] = function (state, _ref17) {\n var field = _ref17.meta.field;\n var result = state;\n var previouslyActive = getIn(state, 'active');\n result = deleteIn(result, \"fields.\" + previouslyActive + \".active\");\n result = setIn(result, \"fields.\" + field + \".visited\", true);\n result = setIn(result, \"fields.\" + field + \".active\", true);\n result = setIn(result, 'active', field);\n return result;\n }, _behaviors[INITIALIZE] = function (state, _ref18) {\n var payload = _ref18.payload,\n _ref18$meta = _ref18.meta,\n keepDirty = _ref18$meta.keepDirty,\n keepSubmitSucceeded = _ref18$meta.keepSubmitSucceeded,\n updateUnregisteredFields = _ref18$meta.updateUnregisteredFields,\n keepValues = _ref18$meta.keepValues;\n var mapData = fromJS(payload);\n var result = empty; // clean all field state\n // persist old warnings, they will get recalculated if the new form values are different from the old values\n\n var warning = getIn(state, 'warning');\n\n if (warning) {\n result = setIn(result, 'warning', warning);\n }\n\n var syncWarnings = getIn(state, 'syncWarnings');\n\n if (syncWarnings) {\n result = setIn(result, 'syncWarnings', syncWarnings);\n } // persist old errors, they will get recalculated if the new form values are different from the old values\n\n\n var error = getIn(state, 'error');\n\n if (error) {\n result = setIn(result, 'error', error);\n }\n\n var syncErrors = getIn(state, 'syncErrors');\n\n if (syncErrors) {\n result = setIn(result, 'syncErrors', syncErrors);\n }\n\n var registeredFields = getIn(state, 'registeredFields');\n\n if (registeredFields) {\n result = setIn(result, 'registeredFields', registeredFields);\n }\n\n var previousValues = getIn(state, 'values');\n var previousInitialValues = getIn(state, 'initial');\n var newInitialValues = mapData;\n var newValues = previousValues;\n\n if (keepDirty && registeredFields) {\n if (!deepEqual(newInitialValues, previousInitialValues)) {\n //\n // Keep the value of dirty fields while updating the value of\n // pristine fields. This way, apps can reinitialize forms while\n // avoiding stomping on user edits.\n //\n // Note 1: The initialize action replaces all initial values\n // regardless of keepDirty.\n //\n // Note 2: When a field is dirty, keepDirty is enabled, and the field\n // value is the same as the new initial value for the field, the\n // initialize action causes the field to become pristine. That effect\n // is what we want.\n //\n var overwritePristineValue = function overwritePristineValue(name) {\n var previousInitialValue = getIn(previousInitialValues, name);\n var previousValue = getIn(previousValues, name);\n\n if (deepEqual(previousValue, previousInitialValue)) {\n // Overwrite the old pristine value with the new pristine value\n var newInitialValue = getIn(newInitialValues, name); // This check prevents any 'setIn' call that would create useless\n // nested objects, since the path to the new field value would\n // evaluate to the same (especially for undefined values)\n\n if (getIn(newValues, name) !== newInitialValue) {\n newValues = setIn(newValues, name, newInitialValue);\n }\n }\n };\n\n if (!updateUnregisteredFields) {\n forEach(keys(registeredFields), function (name) {\n return overwritePristineValue(name);\n });\n }\n\n forEach(keys(newInitialValues), function (name) {\n var previousInitialValue = getIn(previousInitialValues, name);\n\n if (typeof previousInitialValue === 'undefined') {\n // Add new values at the root level.\n var newInitialValue = getIn(newInitialValues, name);\n newValues = setIn(newValues, name, newInitialValue);\n }\n\n if (updateUnregisteredFields) {\n overwritePristineValue(name);\n }\n });\n }\n } else {\n newValues = newInitialValues;\n }\n\n if (keepValues) {\n forEach(keys(previousValues), function (name) {\n var previousValue = getIn(previousValues, name);\n newValues = setIn(newValues, name, previousValue);\n });\n forEach(keys(previousInitialValues), function (name) {\n var previousInitialValue = getIn(previousInitialValues, name);\n newInitialValues = setIn(newInitialValues, name, previousInitialValue);\n });\n }\n\n if (keepSubmitSucceeded && getIn(state, 'submitSucceeded')) {\n result = setIn(result, 'submitSucceeded', true);\n }\n\n result = setIn(result, 'values', newValues);\n result = setIn(result, 'initial', newInitialValues);\n return result;\n }, _behaviors[REGISTER_FIELD] = function (state, _ref19) {\n var _ref19$payload = _ref19.payload,\n name = _ref19$payload.name,\n type = _ref19$payload.type;\n var key = \"registeredFields['\" + name + \"']\";\n var field = getIn(state, key);\n\n if (field) {\n var count = getIn(field, 'count') + 1;\n field = setIn(field, 'count', count);\n } else {\n field = fromJS({\n name: name,\n type: type,\n count: 1\n });\n }\n\n return setIn(state, key, field);\n }, _behaviors[RESET] = function (state) {\n var result = empty;\n var registeredFields = getIn(state, 'registeredFields');\n\n if (registeredFields) {\n result = setIn(result, 'registeredFields', registeredFields);\n }\n\n var values = getIn(state, 'initial');\n\n if (values) {\n result = setIn(result, 'values', values);\n result = setIn(result, 'initial', values);\n }\n\n return result;\n }, _behaviors[RESET_SECTION] = function (state, _ref20) {\n var sections = _ref20.meta.sections;\n var result = state;\n sections.forEach(function (section) {\n result = deleteInWithCleanUp(result, \"asyncErrors.\" + section);\n result = deleteInWithCleanUp(result, \"submitErrors.\" + section);\n result = deleteInWithCleanUp(result, \"fields.\" + section);\n var values = getIn(state, \"initial.\" + section);\n result = values ? setIn(result, \"values.\" + section, values) : deleteInWithCleanUp(result, \"values.\" + section);\n });\n var anyTouched = some(keys(getIn(result, 'registeredFields')), function (key) {\n return getIn(result, \"fields.\" + key + \".touched\");\n });\n result = anyTouched ? setIn(result, 'anyTouched', true) : deleteIn(result, 'anyTouched');\n return result;\n }, _behaviors[SUBMIT] = function (state) {\n return setIn(state, 'triggerSubmit', true);\n }, _behaviors[START_ASYNC_VALIDATION] = function (state, _ref21) {\n var field = _ref21.meta.field;\n return setIn(state, 'asyncValidating', field || true);\n }, _behaviors[START_SUBMIT] = function (state) {\n return setIn(state, 'submitting', true);\n }, _behaviors[STOP_ASYNC_VALIDATION] = function (state, _ref22) {\n var payload = _ref22.payload;\n var result = state;\n result = deleteIn(result, 'asyncValidating');\n\n if (payload && Object.keys(payload).length) {\n var _error = payload._error,\n fieldErrors = _objectWithoutPropertiesLoose(payload, [\"_error\"]);\n\n if (_error) {\n result = setIn(result, 'error', _error);\n }\n\n if (Object.keys(fieldErrors).length) {\n result = setIn(result, 'asyncErrors', fromJS(fieldErrors));\n }\n } else {\n result = deleteIn(result, 'error');\n result = deleteIn(result, 'asyncErrors');\n }\n\n return result;\n }, _behaviors[STOP_SUBMIT] = function (state, _ref23) {\n var payload = _ref23.payload;\n var result = state;\n result = deleteIn(result, 'submitting');\n result = deleteIn(result, 'submitFailed');\n result = deleteIn(result, 'submitSucceeded');\n\n if (payload && Object.keys(payload).length) {\n var _error = payload._error,\n fieldErrors = _objectWithoutPropertiesLoose(payload, [\"_error\"]);\n\n if (_error) {\n result = setIn(result, 'error', _error);\n } else {\n result = deleteIn(result, 'error');\n }\n\n if (Object.keys(fieldErrors).length) {\n result = setIn(result, 'submitErrors', fromJS(fieldErrors));\n } else {\n result = deleteIn(result, 'submitErrors');\n }\n\n result = setIn(result, 'submitFailed', true);\n } else {\n result = deleteIn(result, 'error');\n result = deleteIn(result, 'submitErrors');\n }\n\n return result;\n }, _behaviors[SET_SUBMIT_FAILED] = function (state, _ref24) {\n var fields = _ref24.meta.fields;\n var result = state;\n result = setIn(result, 'submitFailed', true);\n result = deleteIn(result, 'submitSucceeded');\n result = deleteIn(result, 'submitting');\n fields.forEach(function (field) {\n return result = setIn(result, \"fields.\" + field + \".touched\", true);\n });\n\n if (fields.length) {\n result = setIn(result, 'anyTouched', true);\n }\n\n return result;\n }, _behaviors[SET_SUBMIT_SUCCEEDED] = function (state) {\n var result = state;\n result = deleteIn(result, 'submitFailed');\n result = setIn(result, 'submitSucceeded', true);\n return result;\n }, _behaviors[TOUCH] = function (state, _ref25) {\n var fields = _ref25.meta.fields;\n var result = state;\n fields.forEach(function (field) {\n return result = setIn(result, \"fields.\" + field + \".touched\", true);\n });\n result = setIn(result, 'anyTouched', true);\n return result;\n }, _behaviors[UNREGISTER_FIELD] = function (state, _ref26) {\n var _ref26$payload = _ref26.payload,\n name = _ref26$payload.name,\n destroyOnUnmount = _ref26$payload.destroyOnUnmount;\n var result = state;\n var key = \"registeredFields['\" + name + \"']\";\n var field = getIn(result, key);\n\n if (!field) {\n return result;\n }\n\n var count = getIn(field, 'count') - 1;\n\n if (count <= 0 && destroyOnUnmount) {\n // Note: Cannot use deleteWithCleanUp here because of the flat nature of registeredFields\n result = deleteIn(result, key);\n\n if (deepEqual(getIn(result, 'registeredFields'), empty)) {\n result = deleteIn(result, 'registeredFields');\n }\n\n var syncErrors = getIn(result, 'syncErrors');\n\n if (syncErrors) {\n syncErrors = plainDeleteInWithCleanUp(syncErrors, name);\n\n if (plain.deepEqual(syncErrors, plain.empty)) {\n result = deleteIn(result, 'syncErrors');\n } else {\n result = setIn(result, 'syncErrors', syncErrors);\n }\n }\n\n var syncWarnings = getIn(result, 'syncWarnings');\n\n if (syncWarnings) {\n syncWarnings = plainDeleteInWithCleanUp(syncWarnings, name);\n\n if (plain.deepEqual(syncWarnings, plain.empty)) {\n result = deleteIn(result, 'syncWarnings');\n } else {\n result = setIn(result, 'syncWarnings', syncWarnings);\n }\n }\n\n result = deleteInWithCleanUp(result, \"submitErrors.\" + name);\n result = deleteInWithCleanUp(result, \"asyncErrors.\" + name);\n } else {\n field = setIn(field, 'count', count);\n result = setIn(result, key, field);\n }\n\n return result;\n }, _behaviors[UNTOUCH] = function (state, _ref27) {\n var fields = _ref27.meta.fields;\n var result = state;\n fields.forEach(function (field) {\n return result = deleteIn(result, \"fields.\" + field + \".touched\");\n });\n var anyTouched = some(keys(getIn(result, 'registeredFields')), function (key) {\n return getIn(result, \"fields.\" + key + \".touched\");\n });\n result = anyTouched ? setIn(result, 'anyTouched', true) : deleteIn(result, 'anyTouched');\n return result;\n }, _behaviors[UPDATE_SYNC_ERRORS] = function (state, _ref28) {\n var _ref28$payload = _ref28.payload,\n syncErrors = _ref28$payload.syncErrors,\n error = _ref28$payload.error;\n var result = state;\n\n if (error) {\n result = setIn(result, 'error', error);\n result = setIn(result, 'syncError', true);\n } else {\n result = deleteIn(result, 'error');\n result = deleteIn(result, 'syncError');\n }\n\n if (Object.keys(syncErrors).length) {\n result = setIn(result, 'syncErrors', syncErrors);\n } else {\n result = deleteIn(result, 'syncErrors');\n }\n\n return result;\n }, _behaviors[UPDATE_SYNC_WARNINGS] = function (state, _ref29) {\n var _ref29$payload = _ref29.payload,\n syncWarnings = _ref29$payload.syncWarnings,\n warning = _ref29$payload.warning;\n var result = state;\n\n if (warning) {\n result = setIn(result, 'warning', warning);\n } else {\n result = deleteIn(result, 'warning');\n }\n\n if (Object.keys(syncWarnings).length) {\n result = setIn(result, 'syncWarnings', syncWarnings);\n } else {\n result = deleteIn(result, 'syncWarnings');\n }\n\n return result;\n }, _behaviors);\n\n var reducer = function reducer(state, action) {\n if (state === void 0) {\n state = empty;\n }\n\n var behavior = behaviors[action.type];\n return behavior ? behavior(state, action) : state;\n };\n\n var byForm = function byForm(reducer) {\n return function (state, action) {\n if (state === void 0) {\n state = empty;\n }\n\n if (action === void 0) {\n action = {\n type: 'NONE'\n };\n }\n\n var form = action && action.meta && action.meta.form;\n\n if (!form || !isReduxFormAction(action)) {\n return state;\n }\n\n if (action.type === DESTROY && action.meta && action.meta.form) {\n return action.meta.form.reduce(function (result, form) {\n return deleteInWithCleanUp(result, form);\n }, state);\n }\n\n var formState = getIn(state, form);\n var result = reducer(formState, action);\n return result === formState ? state : setIn(state, form, result);\n };\n };\n /**\n * Adds additional functionality to the reducer\n */\n\n\n function decorate(target) {\n target.plugin = function (reducers, config) {\n var _this = this;\n\n if (config === void 0) {\n config = {};\n }\n\n // use 'function' keyword to enable 'this'\n return decorate(function (state, action) {\n if (state === void 0) {\n state = empty;\n }\n\n if (action === void 0) {\n action = {\n type: 'NONE'\n };\n }\n\n var callPlugin = function callPlugin(processed, key) {\n var previousState = getIn(processed, key);\n var nextState = reducers[key](previousState, action, getIn(state, key));\n return nextState !== previousState ? setIn(processed, key, nextState) : processed;\n };\n\n var processed = _this(state, action); // run through redux-form reducer\n\n\n var form = action && action.meta && action.meta.form;\n\n if (form && !config.receiveAllFormActions) {\n // this is an action aimed at forms, so only give it to the specified form's plugin\n return reducers[form] ? callPlugin(processed, form) : processed;\n } else {\n // this is not a form-specific action, so send it to all the plugins\n return Object.keys(reducers).reduce(callPlugin, processed);\n }\n });\n };\n\n return target;\n }\n\n return decorate(byForm(reducer));\n}\n\nexport default createReducer;","import createReducer from './createReducer';\nimport plain from './structure/plain';\nexport default createReducer(plain);","import assign from '../assign/index.js';\nexport default function cloneObject(dirtyObject) {\n return assign({}, dirtyObject);\n}","export default function assign(target, dirtyObject) {\n if (target == null) {\n throw new TypeError('assign requires that input parameter not be null or undefined');\n }\n\n dirtyObject = dirtyObject || {};\n\n for (var property in dirtyObject) {\n if (dirtyObject.hasOwnProperty(property)) {\n target[property] = dirtyObject[property];\n }\n }\n\n return target;\n}","import invariant from 'invariant';\nimport plain from './structure/plain';\n\nvar createFormValueSelector = function createFormValueSelector(_ref) {\n var getIn = _ref.getIn;\n return function (form, getFormState) {\n invariant(form, 'Form value must be specified');\n\n var nonNullGetFormState = getFormState || function (state) {\n return getIn(state, 'form');\n };\n\n return function (state) {\n for (var _len = arguments.length, fields = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n fields[_key - 1] = arguments[_key];\n }\n\n invariant(fields.length, 'No fields specified');\n return fields.length === 1 ? // only selecting one field, so return its value\n getIn(nonNullGetFormState(state), form + \".values.\" + fields[0]) : // selecting many fields, so return an object of field values\n fields.reduce(function (accumulator, field) {\n var value = getIn(nonNullGetFormState(state), form + \".values.\" + field);\n return value === undefined ? accumulator : plain.setIn(accumulator, field, value);\n }, {});\n };\n };\n};\n\nexport default createFormValueSelector;","import createFormValueSelector from './createFormValueSelector';\nimport plain from './structure/plain';\nexport default createFormValueSelector(plain);","var createGetFormSyncErrors = function createGetFormSyncErrors(_ref) {\n var getIn = _ref.getIn,\n empty = _ref.empty;\n return function (form, getFormState) {\n return function (state) {\n var nonNullGetFormState = getFormState || function (state) {\n return getIn(state, 'form');\n };\n\n return getIn(nonNullGetFormState(state), form + \".syncErrors\") || empty;\n };\n };\n};\n\nexport default createGetFormSyncErrors;","import createGetFormSyncErrors from './selectors/getFormSyncErrors';\nimport plain from './structure/plain';\nexport default createGetFormSyncErrors(plain);","var createGetFormMeta = function createGetFormMeta(_ref) {\n var getIn = _ref.getIn,\n empty = _ref.empty;\n return function (form, getFormState) {\n return function (state) {\n var nonNullGetFormState = getFormState || function (state) {\n return getIn(state, 'form');\n };\n\n return getIn(nonNullGetFormState(state), form + \".fields\") || empty;\n };\n };\n};\n\nexport default createGetFormMeta;","import createGetFormMeta from './selectors/getFormMeta';\nimport plain from './structure/plain';\nexport default createGetFormMeta(plain);","var createGetFormError = function createGetFormError(_ref) {\n var getIn = _ref.getIn;\n return function (form, getFormState) {\n return function (state) {\n var nonNullGetFormState = getFormState || function (state) {\n return getIn(state, 'form');\n };\n\n return getIn(nonNullGetFormState(state), form + \".error\");\n };\n };\n};\n\nexport default createGetFormError;","import createGetFormError from './selectors/getFormError';\nimport plain from './structure/plain';\nexport default createGetFormError(plain);","var createIsSubmitting = function createIsSubmitting(_ref) {\n var getIn = _ref.getIn;\n return function (form, getFormState) {\n return function (state) {\n var nonNullGetFormState = getFormState || function (state) {\n return getIn(state, 'form');\n };\n\n return !!getIn(nonNullGetFormState(state), form + \".submitting\");\n };\n };\n};\n\nexport default createIsSubmitting;","import createIsSubmitting from './selectors/isSubmitting';\nimport plain from './structure/plain';\nexport default createIsSubmitting(plain);","var getPrototypeOf = require(\"./getPrototypeOf.js\");\n\nvar setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nvar isNativeFunction = require(\"./isNativeFunction.js\");\n\nvar construct = require(\"./construct.js\");\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _wrapNativeSuper(Class);\n}\n\nmodule.exports = _wrapNativeSuper;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","// tslint:disable:no-unsafe-any\n/**\n * Memo class used for decycle json objects. Uses WeakSet if available otherwise array.\n */\nvar Memo = /** @class */ (function () {\n function Memo() {\n // tslint:disable-next-line\n this._hasWeakSet = typeof WeakSet === 'function';\n this._inner = this._hasWeakSet ? new WeakSet() : [];\n }\n /**\n * Sets obj to remember.\n * @param obj Object to remember\n */\n Memo.prototype.memoize = function (obj) {\n if (this._hasWeakSet) {\n if (this._inner.has(obj)) {\n return true;\n }\n this._inner.add(obj);\n return false;\n }\n // tslint:disable-next-line:prefer-for-of\n for (var i = 0; i < this._inner.length; i++) {\n var value = this._inner[i];\n if (value === obj) {\n return true;\n }\n }\n this._inner.push(obj);\n return false;\n };\n /**\n * Removes object from internal storage.\n * @param obj Object to forget\n */\n Memo.prototype.unmemoize = function (obj) {\n if (this._hasWeakSet) {\n this._inner.delete(obj);\n }\n else {\n for (var i = 0; i < this._inner.length; i++) {\n if (this._inner[i] === obj) {\n this._inner.splice(i, 1);\n break;\n }\n }\n }\n };\n return Memo;\n}());\nexport { Memo };\n//# sourceMappingURL=memo.js.map","import { uuid4 } from '@sentry/utils';\nexport var TRACEPARENT_REGEXP = /^[ \\t]*([0-9a-f]{32})?-?([0-9a-f]{16})?-?([01])?[ \\t]*$/;\n/**\n * Span containg all data about a span\n */\nvar Span = /** @class */ (function () {\n function Span(_traceId, _spanId, _sampled, _parent) {\n if (_traceId === void 0) { _traceId = uuid4(); }\n if (_spanId === void 0) { _spanId = uuid4().substring(16); }\n this._traceId = _traceId;\n this._spanId = _spanId;\n this._sampled = _sampled;\n this._parent = _parent;\n }\n /**\n * Setter for parent\n */\n Span.prototype.setParent = function (parent) {\n this._parent = parent;\n return this;\n };\n /**\n * Setter for sampled\n */\n Span.prototype.setSampled = function (sampled) {\n this._sampled = sampled;\n return this;\n };\n /**\n * Continues a trace\n * @param traceparent Traceparent string\n */\n Span.fromTraceparent = function (traceparent) {\n var matches = traceparent.match(TRACEPARENT_REGEXP);\n if (matches) {\n var sampled = void 0;\n if (matches[3] === '1') {\n sampled = true;\n }\n else if (matches[3] === '0') {\n sampled = false;\n }\n var parent_1 = new Span(matches[1], matches[2], sampled);\n return new Span(matches[1], undefined, sampled, parent_1);\n }\n return undefined;\n };\n /**\n * @inheritDoc\n */\n Span.prototype.toTraceparent = function () {\n var sampled = '';\n if (this._sampled === true) {\n sampled = '-1';\n }\n else if (this._sampled === false) {\n sampled = '-0';\n }\n return this._traceId + \"-\" + this._spanId + sampled;\n };\n /**\n * @inheritDoc\n */\n Span.prototype.toJSON = function () {\n return {\n parent: (this._parent && this._parent.toJSON()) || undefined,\n sampled: this._sampled,\n span_id: this._spanId,\n trace_id: this._traceId,\n };\n };\n return Span;\n}());\nexport { Span };\n//# sourceMappingURL=span.js.map","let Parser = require(\"./Parser\");\nlet Sequences = require(\"./sequences\");\nlet Packets = require(\"./packets\");\nlet Timers = require(\"timers\");\nlet Stream = require(\"stream\").Stream;\nlet inherits = require(\"inherits\");\nlet PacketWriter = require(\"./PacketWriter\");\n\nlet NonLoggableError = require(\"../../../util/logging\").NonLoggableError;\n\nmodule.exports = Protocol;\ninherits(Protocol, Stream);\nfunction Protocol(options) {\n Stream.call(this);\n\n options = options || {};\n\n this.readable = true;\n this.writable = true;\n\n this._config = options.config || {};\n this._connection = options.connection;\n this._callback = null;\n this._fatalError = null;\n this._quitSequence = null;\n this._handshakeSequence = null;\n this._handshaked = false;\n this._ended = false;\n this._destroyed = false;\n this._queue = [];\n this._handshakeInitializationPacket = null;\n\n this._parser = new Parser({\n onError: this.handleParserError.bind(this),\n onPacket: this._parsePacket.bind(this),\n config: this._config,\n });\n}\n\nProtocol.prototype.write = function (buffer) {\n this._parser.write(buffer);\n return true;\n};\n\nProtocol.prototype.handshake = function handshake(options, callback) {\n if (typeof options === \"function\") {\n callback = options;\n options = {};\n }\n\n options = options || {};\n options.config = this._config;\n\n return (this._handshakeSequence = this._enqueue(\n new Sequences.Handshake(options, callback)\n ));\n};\n\nProtocol.prototype.query = function query(options, callback) {\n return this._enqueue(new Sequences.Query(options, callback));\n};\n\nProtocol.prototype.changeUser = function changeUser(options, callback) {\n return this._enqueue(new Sequences.ChangeUser(options, callback));\n};\n\nProtocol.prototype.ping = function ping(options, callback) {\n if (typeof options === \"function\") {\n callback = options;\n options = {};\n }\n\n return this._enqueue(new Sequences.Ping(options, callback));\n};\n\nProtocol.prototype.stats = function stats(options, callback) {\n if (typeof options === \"function\") {\n callback = options;\n options = {};\n }\n\n return this._enqueue(new Sequences.Statistics(options, callback));\n};\n\nProtocol.prototype.quit = function quit(options, callback) {\n if (typeof options === \"function\") {\n callback = options;\n options = {};\n }\n\n let self = this;\n let sequence = this._enqueue(new Sequences.Quit(options, callback));\n\n sequence.on(\"end\", function () {\n self.end();\n });\n\n return (this._quitSequence = sequence);\n};\n\nProtocol.prototype.end = function () {\n if (this._ended) {\n return;\n }\n this._ended = true;\n\n if (\n this._quitSequence &&\n (this._quitSequence._ended || this._queue[0] === this._quitSequence)\n ) {\n this._quitSequence.end();\n this.emit(\"end\");\n return;\n }\n\n let err = new NonLoggableError(\n \"Connection lost: The server closed the connection.\"\n );\n err.fatal = true;\n err.code = \"PROTOCOL_CONNECTION_LOST\";\n\n this._delegateError(err);\n};\n\nProtocol.prototype.pause = function () {\n this._parser.pause();\n // Since there is a file stream in query, we must transmit pause/resume event to current sequence.\n let seq = this._queue[0];\n if (seq && seq.emit) {\n seq.emit(\"pause\");\n }\n};\n\nProtocol.prototype.resume = function () {\n this._parser.resume();\n // Since there is a file stream in query, we must transmit pause/resume event to current sequence.\n let seq = this._queue[0];\n if (seq && seq.emit) {\n seq.emit(\"resume\");\n }\n};\n\nProtocol.prototype._enqueue = function (sequence) {\n if (!this._validateEnqueue(sequence)) {\n return sequence;\n }\n\n if (this._config.trace) {\n // Long stack trace support\n sequence._callSite = sequence._callSite || new Error();\n }\n\n this._queue.push(sequence);\n this.emit(\"enqueue\", sequence);\n\n let self = this;\n sequence\n .on(\"error\", function (err) {\n self._delegateError(err, sequence);\n })\n .on(\"packet\", function (packet) {\n Timers.active(sequence);\n self._emitPacket(packet);\n })\n .on(\"end\", function () {\n self._dequeue(sequence);\n })\n .on(\"timeout\", function () {\n let err = new NonLoggableError(\n sequence._id + \" inactivity timeout\"\n );\n\n err.code = \"PROTOCOL_SEQUENCE_TIMEOUT\";\n err.fatal = true;\n err.timeout = sequence._timeout;\n\n self._delegateError(err, sequence);\n })\n .on(\"start-tls\", function () {\n Timers.active(sequence);\n self._connection._startTLS(function (err) {\n if (err) {\n // SSL negotiation error are fatal\n err.code = \"HANDSHAKE_SSL_ERROR\";\n err.fatal = true;\n sequence.end(err);\n return;\n }\n\n Timers.active(sequence);\n sequence._tlsUpgradeCompleteHandler();\n });\n });\n\n if (this._queue.length === 1) {\n this._parser.resetPacketNumber();\n this._startSequence(sequence);\n }\n\n return sequence;\n};\n\nProtocol.prototype._validateEnqueue = function _validateEnqueue(sequence) {\n let err;\n let prefix = \"Cannot enqueue \" + sequence._id;\n let prefixBefore = prefix + \" before \";\n let prefixAfter = prefix + \" after \";\n\n if (this._fatalError) {\n err = new NonLoggableError(prefixAfter + \"fatal error.\");\n err.code = \"PROTOCOL_ENQUEUE_AFTER_FATAL_ERROR\";\n } else if (this._quitSequence) {\n err = new NonLoggableError(prefixAfter + \"invoking quit.\");\n err.code = \"PROTOCOL_ENQUEUE_AFTER_QUIT\";\n } else if (this._destroyed) {\n err = new NonLoggableError(prefixAfter + \"being destroyed.\");\n err.code = \"PROTOCOL_ENQUEUE_AFTER_DESTROY\";\n } else if (\n this._handshakeSequence &&\n sequence.constructor === Sequences.Handshake\n ) {\n err = new NonLoggableError(\n prefixAfter + \"already enqueuing a Handshake.\"\n );\n err.code = \"PROTOCOL_ENQUEUE_HANDSHAKE_TWICE\";\n } else if (\n !this._handshakeSequence &&\n sequence.constructor === Sequences.ChangeUser\n ) {\n err = new NonLoggableError(prefixBefore + \"a Handshake.\");\n err.code = \"PROTOCOL_ENQUEUE_BEFORE_HANDSHAKE\";\n } else {\n return true;\n }\n\n let self = this;\n err.fatal = false;\n\n // add error handler\n sequence.on(\"error\", function (err) {\n self._delegateError(err, sequence);\n });\n\n process.nextTick(function () {\n sequence.end(err);\n });\n\n return false;\n};\n\nProtocol.prototype._parsePacket = function () {\n let sequence = this._queue[0];\n\n if (!sequence) {\n let err = new NonLoggableError(\n \"Received packet with no active sequence.\"\n );\n err.code = \"PROTOCOL_STRAY_PACKET\";\n err.fatal = true;\n\n this._delegateError(err);\n return;\n }\n\n let Packet = this._determinePacket(sequence);\n\n // This serves to ignore packets that we don't want to handle\n // For instance GSSAPI response packets\n if (!Packet) {\n return undefined;\n }\n\n let packet = new Packet({ protocol41: this._config.protocol41 });\n let packetName = packet._id;\n\n // Special case: Faster dispatch, and parsing done inside sequence\n if (Packet === Packets.RowDataPacket) {\n sequence.RowDataPacket(packet, this._parser, this._connection);\n\n if (this._config.debug) {\n this._debugPacket(true, packet);\n }\n\n return;\n }\n\n if (this._config.debug) {\n this._parsePacketDebug(packet);\n } else {\n packet.parse(this._parser);\n }\n\n if (Packet === Packets.HandshakeInitializationPacket) {\n this._handshakeInitializationPacket = packet;\n }\n\n Timers.active(sequence);\n\n if (!sequence[packetName]) {\n let err = new NonLoggableError(\n \"Received packet in the wrong sequence.\"\n );\n err.code = \"PROTOCOL_INCORRECT_PACKET_SEQUENCE\";\n err.fatal = true;\n\n this._delegateError(err);\n return;\n }\n\n sequence[packetName](packet);\n};\n\nProtocol.prototype._parsePacketDebug = function _parsePacketDebug(packet) {\n try {\n packet.parse(this._parser);\n } finally {\n this._debugPacket(true, packet);\n }\n};\n\nProtocol.prototype._emitPacket = function (packet) {\n let packetWriter = new PacketWriter();\n packet.write(packetWriter);\n this.emit(\"data\", packetWriter.toBuffer(this._parser));\n\n if (this._config.debug) {\n this._debugPacket(false, packet);\n }\n};\n\nProtocol.prototype._determinePacket = function (sequence) {\n let firstByte = this._parser.peak();\n\n if (sequence.determinePacket) {\n let Packet = sequence.determinePacket(firstByte, this._parser);\n if (Packet) {\n return Packet;\n }\n }\n\n switch (firstByte) {\n case 0x00:\n if (!this._handshaked) {\n this._handshaked = true;\n this.emit(\"handshake\", this._handshakeInitializationPacket);\n }\n return Packets.OkPacket;\n\n case 0xfe:\n return Packets.EofPacket;\n\n case 0xff:\n return Packets.ErrorPacket;\n\n case 0x60:\n case 0xa1:\n // This is a GSSAPI response packet. Although gssapi protocol might\n // have multiple rounds of token negotiation, that's not the case\n // for kerberos. Memsql and studio don't support anything apart\n // from kerberos so we should be safe to ignore this. After some\n // tests and since this token is always the same, my guess is\n // the token is some sort of result token.\n // Ignores the packets from: https://github.com/memsql/memsql/blob/4bac92ca66449d7e7a5f4eef1b8089eb4cbfa9b8/frontend/auth_gss.cpp#L289\n return;\n }\n\n throw new Error(\"Could not determine packet, firstByte = \" + firstByte);\n};\n\nProtocol.prototype._dequeue = function (sequence) {\n Timers.unenroll(sequence);\n\n // No point in advancing the queue, we are dead\n if (this._fatalError) {\n return;\n }\n\n this._queue.shift();\n\n sequence = this._queue[0];\n if (!sequence) {\n this.emit(\"drain\");\n return;\n }\n\n this._parser.resetPacketNumber();\n\n this._startSequence(sequence);\n};\n\nProtocol.prototype._startSequence = function (sequence) {\n if (sequence._timeout > 0 && isFinite(sequence._timeout)) {\n Timers.enroll(sequence, sequence._timeout);\n Timers.active(sequence);\n }\n\n if (sequence.constructor === Sequences.ChangeUser) {\n sequence.start(this._handshakeInitializationPacket);\n } else {\n sequence.start();\n }\n};\n\nProtocol.prototype.handleNetworkError = function (err) {\n err.fatal = true;\n\n let sequence = this._queue[0];\n if (sequence) {\n sequence.end(err);\n } else {\n this._delegateError(err);\n }\n};\n\nProtocol.prototype.handleParserError = function handleParserError(err) {\n let sequence = this._queue[0];\n if (sequence) {\n sequence.end(err);\n } else {\n this._delegateError(err);\n }\n};\n\nProtocol.prototype._delegateError = function (err, sequence) {\n // Stop delegating errors after the first fatal error\n if (this._fatalError) {\n return;\n }\n\n if (err.fatal) {\n this._fatalError = err;\n }\n\n if (this._shouldErrorBubbleUp(err, sequence)) {\n // Can't use regular 'error' event here as that always destroys the pipe\n // between socket and protocol which is not what we want (unless the\n // exception was fatal).\n this.emit(\"unhandledError\", err);\n } else if (err.fatal) {\n // Send fatal error to all sequences in the queue\n let queue = this._queue;\n process.nextTick(function () {\n queue.forEach(function (sequence) {\n sequence.end(err);\n });\n queue.length = 0;\n });\n }\n\n // Make sure the stream we are piping to is getting closed\n if (err.fatal) {\n this.emit(\"end\", err);\n }\n};\n\nProtocol.prototype._shouldErrorBubbleUp = function (err, sequence) {\n if (sequence) {\n if (sequence.hasErrorHandler()) {\n return false;\n } else if (!err.fatal) {\n return true;\n }\n }\n\n return err.fatal && !this._hasPendingErrorHandlers();\n};\n\nProtocol.prototype._hasPendingErrorHandlers = function () {\n return this._queue.some(function (sequence) {\n return sequence.hasErrorHandler();\n });\n};\n\nProtocol.prototype.destroy = function () {\n this._destroyed = true;\n this._parser.pause();\n\n if (this._connection.state !== \"disconnected\") {\n if (!this._ended) {\n this.end();\n }\n }\n};\n\nProtocol.prototype._debugPacket = function (incoming, packet) {\n let headline = incoming ? \"<-- \" : \"--> \";\n\n headline = headline + packet._id;\n\n // check for debug packet restriction\n if (\n Array.isArray(this._config.debug) &&\n this._config.debug.indexOf(packet._id) === -1\n ) {\n return;\n }\n\n console.log(headline);\n console.log(packet);\n console.log(\"\");\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// 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 permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar punycode = require('punycode');\nvar util = require('./util');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n continue;\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n util.isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\n }\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host || srcPath.length > 1) &&\n (last === '.' || last === '..') || last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// 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 permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb, null, ret) },\n function(rej) { process.nextTick(callbackifyOnRejected, rej, cb) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","import Connection from \"./Connection\";\n\nexport default class PoolConnection extends Connection {\n constructor(pool, options) {\n super(options);\n\n this._pool = pool;\n\n // When a fatal error occurs the connection's protocol ends, which will cause\n // the connection to end as well, thus we only need to watch for the end event\n // and we will be notified of disconnects.\n this.on(\"end\", this._removeFromPool);\n this.on(\"error\", function (err) {\n if (err.fatal) {\n this._removeFromPool();\n }\n });\n }\n\n release() {\n let pool = this._pool;\n\n if (!pool || pool._closed) {\n return undefined;\n }\n\n return pool.releaseConnection(this);\n }\n\n _realEnd() {\n super.end();\n }\n\n destroy() {\n Connection.prototype.destroy.apply(this, arguments);\n this._removeFromPool(this);\n }\n\n _removeFromPool() {\n if (!this._pool || this._pool._closed) {\n return;\n }\n\n let pool = this._pool;\n this._pool = null;\n\n pool._purgeConnection(this);\n }\n}\n","/** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nexport var EMPTY = /*@__PURE__*/ new Observable(function (subscriber) { return subscriber.complete(); });\nexport function empty(scheduler) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\nfunction emptyScheduled(scheduler) {\n return new Observable(function (subscriber) { return scheduler.schedule(function () { return subscriber.complete(); }); });\n}\n//# sourceMappingURL=empty.js.map\n","(function(a,b){if(\"function\"==typeof define&&define.amd)define([],b);else if(\"undefined\"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(b,c,d){var e=new XMLHttpRequest;e.open(\"GET\",b),e.responseType=\"blob\",e.onload=function(){a(e.response,c,d)},e.onerror=function(){console.error(\"could not download file\")},e.send()}function d(a){var b=new XMLHttpRequest;b.open(\"HEAD\",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof global&&global.global===global?global:void 0,a=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:\"download\"in HTMLAnchorElement.prototype?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(a,b,d,e){if(e=e||open(\"\",\"_blank\"),e&&(e.document.title=e.document.body.innerText=\"downloading...\"),\"string\"==typeof a)return c(a,b,d);var g=\"application/octet-stream\"===a.type,h=/constructor/i.test(f.HTMLElement)||f.safari,i=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((i||g&&h)&&\"object\"==typeof FileReader){var j=new FileReader;j.onloadend=function(){var a=j.result;a=i?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),e?e.location.href=a:location=a,e=null},j.readAsDataURL(a)}else{var k=f.URL||f.webkitURL,l=k.createObjectURL(a);e?e.location=l:location.href=l,e=null,setTimeout(function(){k.revokeObjectURL(l)},4E4)}});f.saveAs=a.saveAs=a,\"undefined\"!=typeof module&&(module.exports=a)});\n\n//# sourceMappingURL=FileSaver.min.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Scrollbars = undefined;\n\nvar _Scrollbars = require('./Scrollbars');\n\nvar _Scrollbars2 = _interopRequireDefault(_Scrollbars);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nexports[\"default\"] = _Scrollbars2[\"default\"];\nexports.Scrollbars = _Scrollbars2[\"default\"];","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\n/* eslint-disable require-jsdoc, valid-jsdoc */\nvar MapShim = (function () {\n if (typeof Map !== 'undefined') {\n return Map;\n }\n\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\n function getIndex(arr, key) {\n var result = -1;\n\n arr.some(function (entry, index) {\n if (entry[0] === key) {\n result = index;\n\n return true;\n }\n\n return false;\n });\n\n return result;\n }\n\n return (function () {\n function anonymous() {\n this.__entries__ = [];\n }\n\n var prototypeAccessors = { size: { configurable: true } };\n\n /**\r\n * @returns {boolean}\r\n */\n prototypeAccessors.size.get = function () {\n return this.__entries__.length;\n };\n\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\n anonymous.prototype.get = function (key) {\n var index = getIndex(this.__entries__, key);\n var entry = this.__entries__[index];\n\n return entry && entry[1];\n };\n\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\n anonymous.prototype.set = function (key, value) {\n var index = getIndex(this.__entries__, key);\n\n if (~index) {\n this.__entries__[index][1] = value;\n } else {\n this.__entries__.push([key, value]);\n }\n };\n\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\n anonymous.prototype.delete = function (key) {\n var entries = this.__entries__;\n var index = getIndex(entries, key);\n\n if (~index) {\n entries.splice(index, 1);\n }\n };\n\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\n anonymous.prototype.has = function (key) {\n return !!~getIndex(this.__entries__, key);\n };\n\n /**\r\n * @returns {void}\r\n */\n anonymous.prototype.clear = function () {\n this.__entries__.splice(0);\n };\n\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\n anonymous.prototype.forEach = function (callback, ctx) {\n var this$1 = this;\n if ( ctx === void 0 ) ctx = null;\n\n for (var i = 0, list = this$1.__entries__; i < list.length; i += 1) {\n var entry = list[i];\n\n callback.call(ctx, entry[1], entry[0]);\n }\n };\n\n Object.defineProperties( anonymous.prototype, prototypeAccessors );\n\n return anonymous;\n }());\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\nvar global$1 = (function () {\n if (typeof global !== 'undefined' && global.Math === Math) {\n return global;\n }\n\n if (typeof self !== 'undefined' && self.Math === Math) {\n return self;\n }\n\n if (typeof window !== 'undefined' && window.Math === Math) {\n return window;\n }\n\n // eslint-disable-next-line no-new-func\n return Function('return this')();\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\nvar requestAnimationFrame$1 = (function () {\n if (typeof requestAnimationFrame === 'function') {\n // It's required to use a bounded function because IE sometimes throws\n // an \"Invalid calling object\" error if rAF is invoked without the global\n // object on the left hand side.\n return requestAnimationFrame.bind(global$1);\n }\n\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\n})();\n\n// Defines minimum timeout before adding a trailing call.\nvar trailingTimeout = 2;\n\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\nvar throttle = function (callback, delay) {\n var leadingCall = false,\n trailingCall = false,\n lastCallTime = 0;\n\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\n function resolvePending() {\n if (leadingCall) {\n leadingCall = false;\n\n callback();\n }\n\n if (trailingCall) {\n proxy();\n }\n }\n\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\n function timeoutCallback() {\n requestAnimationFrame$1(resolvePending);\n }\n\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\n function proxy() {\n var timeStamp = Date.now();\n\n if (leadingCall) {\n // Reject immediately following calls.\n if (timeStamp - lastCallTime < trailingTimeout) {\n return;\n }\n\n // Schedule new call to be in invoked when the pending one is resolved.\n // This is important for \"transitions\" which never actually start\n // immediately so there is a chance that we might miss one if change\n // happens amids the pending invocation.\n trailingCall = true;\n } else {\n leadingCall = true;\n trailingCall = false;\n\n setTimeout(timeoutCallback, delay);\n }\n\n lastCallTime = timeStamp;\n }\n\n return proxy;\n};\n\n// Minimum delay before invoking the update of observers.\nvar REFRESH_DELAY = 20;\n\n// A list of substrings of CSS properties used to find transition events that\n// might affect dimensions of observed elements.\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\n\n// Check if MutationObserver is available.\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\n\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\nvar ResizeObserverController = function() {\n this.connected_ = false;\n this.mutationEventsAdded_ = false;\n this.mutationsObserver_ = null;\n this.observers_ = [];\n\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\n};\n\n/**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\n\n\n/**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\n\n\n/**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\n\n/**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\nResizeObserverController.prototype.addObserver = function (observer) {\n if (!~this.observers_.indexOf(observer)) {\n this.observers_.push(observer);\n }\n\n // Add listeners if they haven't been added yet.\n if (!this.connected_) {\n this.connect_();\n }\n};\n\n/**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\nResizeObserverController.prototype.removeObserver = function (observer) {\n var observers = this.observers_;\n var index = observers.indexOf(observer);\n\n // Remove observer if it's present in registry.\n if (~index) {\n observers.splice(index, 1);\n }\n\n // Remove listeners if controller has no connected observers.\n if (!observers.length && this.connected_) {\n this.disconnect_();\n }\n};\n\n/**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\nResizeObserverController.prototype.refresh = function () {\n var changesDetected = this.updateObservers_();\n\n // Continue running updates if changes have been detected as there might\n // be future ones caused by CSS transitions.\n if (changesDetected) {\n this.refresh();\n }\n};\n\n/**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\nResizeObserverController.prototype.updateObservers_ = function () {\n // Collect observers that have active observations.\n var activeObservers = this.observers_.filter(function (observer) {\n return observer.gatherActive(), observer.hasActive();\n });\n\n // Deliver notifications in a separate cycle in order to avoid any\n // collisions between observers, e.g. when multiple instances of\n // ResizeObserver are tracking the same element and the callback of one\n // of them changes content dimensions of the observed target. Sometimes\n // this may result in notifications being blocked for the rest of observers.\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\n\n return activeObservers.length > 0;\n};\n\n/**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\nResizeObserverController.prototype.connect_ = function () {\n // Do nothing if running in a non-browser environment or if listeners\n // have been already added.\n if (!isBrowser || this.connected_) {\n return;\n }\n\n // Subscription to the \"Transitionend\" event is used as a workaround for\n // delayed transitions. This way it's possible to capture at least the\n // final state of an element.\n document.addEventListener('transitionend', this.onTransitionEnd_);\n\n window.addEventListener('resize', this.refresh);\n\n if (mutationObserverSupported) {\n this.mutationsObserver_ = new MutationObserver(this.refresh);\n\n this.mutationsObserver_.observe(document, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n });\n } else {\n document.addEventListener('DOMSubtreeModified', this.refresh);\n\n this.mutationEventsAdded_ = true;\n }\n\n this.connected_ = true;\n};\n\n/**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\nResizeObserverController.prototype.disconnect_ = function () {\n // Do nothing if running in a non-browser environment or if listeners\n // have been already removed.\n if (!isBrowser || !this.connected_) {\n return;\n }\n\n document.removeEventListener('transitionend', this.onTransitionEnd_);\n window.removeEventListener('resize', this.refresh);\n\n if (this.mutationsObserver_) {\n this.mutationsObserver_.disconnect();\n }\n\n if (this.mutationEventsAdded_) {\n document.removeEventListener('DOMSubtreeModified', this.refresh);\n }\n\n this.mutationsObserver_ = null;\n this.mutationEventsAdded_ = false;\n this.connected_ = false;\n};\n\n/**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\nResizeObserverController.prototype.onTransitionEnd_ = function (ref) {\n var propertyName = ref.propertyName; if ( propertyName === void 0 ) propertyName = '';\n\n // Detect whether transition may affect dimensions of an element.\n var isReflowProperty = transitionKeys.some(function (key) {\n return !!~propertyName.indexOf(key);\n });\n\n if (isReflowProperty) {\n this.refresh();\n }\n};\n\n/**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\nResizeObserverController.getInstance = function () {\n if (!this.instance_) {\n this.instance_ = new ResizeObserverController();\n }\n\n return this.instance_;\n};\n\nResizeObserverController.instance_ = null;\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\nvar defineConfigurable = (function (target, props) {\n for (var i = 0, list = Object.keys(props); i < list.length; i += 1) {\n var key = list[i];\n\n Object.defineProperty(target, key, {\n value: props[key],\n enumerable: false,\n writable: false,\n configurable: true\n });\n }\n\n return target;\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\nvar getWindowOf = (function (target) {\n // Assume that the element is an instance of Node, which means that it\n // has the \"ownerDocument\" property from which we can retrieve a\n // corresponding global object.\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\n\n // Return the local global object if it's not possible extract one from\n // provided element.\n return ownerGlobal || global$1;\n});\n\n// Placeholder of an empty content rectangle.\nvar emptyRect = createRectInit(0, 0, 0, 0);\n\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\nfunction toFloat(value) {\n return parseFloat(value) || 0;\n}\n\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\nfunction getBordersSize(styles) {\n var positions = [], len = arguments.length - 1;\n while ( len-- > 0 ) positions[ len ] = arguments[ len + 1 ];\n\n return positions.reduce(function (size, position) {\n var value = styles['border-' + position + '-width'];\n\n return size + toFloat(value);\n }, 0);\n}\n\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\nfunction getPaddings(styles) {\n var positions = ['top', 'right', 'bottom', 'left'];\n var paddings = {};\n\n for (var i = 0, list = positions; i < list.length; i += 1) {\n var position = list[i];\n\n var value = styles['padding-' + position];\n\n paddings[position] = toFloat(value);\n }\n\n return paddings;\n}\n\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\nfunction getSVGContentRect(target) {\n var bbox = target.getBBox();\n\n return createRectInit(0, 0, bbox.width, bbox.height);\n}\n\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\nfunction getHTMLElementContentRect(target) {\n // Client width & height properties can't be\n // used exclusively as they provide rounded values.\n var clientWidth = target.clientWidth;\n var clientHeight = target.clientHeight;\n\n // By this condition we can catch all non-replaced inline, hidden and\n // detached elements. Though elements with width & height properties less\n // than 0.5 will be discarded as well.\n //\n // Without it we would need to implement separate methods for each of\n // those cases and it's not possible to perform a precise and performance\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\n // gives wrong results for elements with width & height less than 0.5.\n if (!clientWidth && !clientHeight) {\n return emptyRect;\n }\n\n var styles = getWindowOf(target).getComputedStyle(target);\n var paddings = getPaddings(styles);\n var horizPad = paddings.left + paddings.right;\n var vertPad = paddings.top + paddings.bottom;\n\n // Computed styles of width & height are being used because they are the\n // only dimensions available to JS that contain non-rounded values. It could\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\n // affected by CSS transformations let alone paddings, borders and scroll bars.\n var width = toFloat(styles.width),\n height = toFloat(styles.height);\n\n // Width & height include paddings and borders when the 'border-box' box\n // model is applied (except for IE).\n if (styles.boxSizing === 'border-box') {\n // Following conditions are required to handle Internet Explorer which\n // doesn't include paddings and borders to computed CSS dimensions.\n //\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\n // properties then it's either IE, and thus we don't need to subtract\n // anything, or an element merely doesn't have paddings/borders styles.\n if (Math.round(width + horizPad) !== clientWidth) {\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\n }\n\n if (Math.round(height + vertPad) !== clientHeight) {\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\n }\n }\n\n // Following steps can't be applied to the document's root element as its\n // client[Width/Height] properties represent viewport area of the window.\n // Besides, it's as well not necessary as the itself neither has\n // rendered scroll bars nor it can be clipped.\n if (!isDocumentElement(target)) {\n // In some browsers (only in Firefox, actually) CSS width & height\n // include scroll bars size which can be removed at this step as scroll\n // bars are the only difference between rounded dimensions + paddings\n // and \"client\" properties, though that is not always true in Chrome.\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\n\n // Chrome has a rather weird rounding of \"client\" properties.\n // E.g. for an element with content width of 314.2px it sometimes gives\n // the client width of 315px and for the width of 314.7px it may give\n // 314px. And it doesn't happen all the time. So just ignore this delta\n // as a non-relevant.\n if (Math.abs(vertScrollbar) !== 1) {\n width -= vertScrollbar;\n }\n\n if (Math.abs(horizScrollbar) !== 1) {\n height -= horizScrollbar;\n }\n }\n\n return createRectInit(paddings.left, paddings.top, width, height);\n}\n\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\nvar isSVGGraphicsElement = (function () {\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\n // interface.\n if (typeof SVGGraphicsElement !== 'undefined') {\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\n }\n\n // If it's so, then check that element is at least an instance of the\n // SVGElement and that it has the \"getBBox\" method.\n // eslint-disable-next-line no-extra-parens\n return function (target) { return target instanceof getWindowOf(target).SVGElement && typeof target.getBBox === 'function'; };\n})();\n\n/**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\nfunction isDocumentElement(target) {\n return target === getWindowOf(target).document.documentElement;\n}\n\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\nfunction getContentRect(target) {\n if (!isBrowser) {\n return emptyRect;\n }\n\n if (isSVGGraphicsElement(target)) {\n return getSVGContentRect(target);\n }\n\n return getHTMLElementContentRect(target);\n}\n\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\nfunction createReadOnlyRect(ref) {\n var x = ref.x;\n var y = ref.y;\n var width = ref.width;\n var height = ref.height;\n\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\n var rect = Object.create(Constr.prototype);\n\n // Rectangle's properties are not writable and non-enumerable.\n defineConfigurable(rect, {\n x: x, y: y, width: width, height: height,\n top: y,\n right: x + width,\n bottom: height + y,\n left: x\n });\n\n return rect;\n}\n\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\nfunction createRectInit(x, y, width, height) {\n return { x: x, y: y, width: width, height: height };\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\nvar ResizeObservation = function(target) {\n this.broadcastWidth = 0;\n this.broadcastHeight = 0;\n this.contentRect_ = createRectInit(0, 0, 0, 0);\n\n this.target = target;\n};\n\n/**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\n\n\n/**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\n\n\n/**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\nResizeObservation.prototype.isActive = function () {\n var rect = getContentRect(this.target);\n\n this.contentRect_ = rect;\n\n return rect.width !== this.broadcastWidth || rect.height !== this.broadcastHeight;\n};\n\n/**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\nResizeObservation.prototype.broadcastRect = function () {\n var rect = this.contentRect_;\n\n this.broadcastWidth = rect.width;\n this.broadcastHeight = rect.height;\n\n return rect;\n};\n\nvar ResizeObserverEntry = function(target, rectInit) {\n var contentRect = createReadOnlyRect(rectInit);\n\n // According to the specification following properties are not writable\n // and are also not enumerable in the native implementation.\n //\n // Property accessors are not being used as they'd require to define a\n // private WeakMap storage which may cause memory leaks in browsers that\n // don't support this type of collections.\n defineConfigurable(this, { target: target, contentRect: contentRect });\n};\n\nvar ResizeObserverSPI = function(callback, controller, callbackCtx) {\n this.activeObservations_ = [];\n this.observations_ = new MapShim();\n\n if (typeof callback !== 'function') {\n throw new TypeError('The callback provided as parameter 1 is not a function.');\n }\n\n this.callback_ = callback;\n this.controller_ = controller;\n this.callbackCtx_ = callbackCtx;\n};\n\n/**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\n\n\n/**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\n\n\n/**\r\n * Public ResizeObserver instance which will be passed to the callback\r\n * function and used as a value of it's \"this\" binding.\r\n *\r\n * @private {ResizeObserver}\r\n */\n\n/**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\nResizeObserverSPI.prototype.observe = function (target) {\n if (!arguments.length) {\n throw new TypeError('1 argument required, but only 0 present.');\n }\n\n // Do nothing if current environment doesn't have the Element interface.\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\n return;\n }\n\n if (!(target instanceof getWindowOf(target).Element)) {\n throw new TypeError('parameter 1 is not of type \"Element\".');\n }\n\n var observations = this.observations_;\n\n // Do nothing if element is already being observed.\n if (observations.has(target)) {\n return;\n }\n\n observations.set(target, new ResizeObservation(target));\n\n this.controller_.addObserver(this);\n\n // Force the update of observations.\n this.controller_.refresh();\n};\n\n/**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\nResizeObserverSPI.prototype.unobserve = function (target) {\n if (!arguments.length) {\n throw new TypeError('1 argument required, but only 0 present.');\n }\n\n // Do nothing if current environment doesn't have the Element interface.\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\n return;\n }\n\n if (!(target instanceof getWindowOf(target).Element)) {\n throw new TypeError('parameter 1 is not of type \"Element\".');\n }\n\n var observations = this.observations_;\n\n // Do nothing if element is not being observed.\n if (!observations.has(target)) {\n return;\n }\n\n observations.delete(target);\n\n if (!observations.size) {\n this.controller_.removeObserver(this);\n }\n};\n\n/**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\nResizeObserverSPI.prototype.disconnect = function () {\n this.clearActive();\n this.observations_.clear();\n this.controller_.removeObserver(this);\n};\n\n/**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\nResizeObserverSPI.prototype.gatherActive = function () {\n var this$1 = this;\n\n this.clearActive();\n\n this.observations_.forEach(function (observation) {\n if (observation.isActive()) {\n this$1.activeObservations_.push(observation);\n }\n });\n};\n\n/**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\nResizeObserverSPI.prototype.broadcastActive = function () {\n // Do nothing if observer doesn't have active observations.\n if (!this.hasActive()) {\n return;\n }\n\n var ctx = this.callbackCtx_;\n\n // Create ResizeObserverEntry instance for every active observation.\n var entries = this.activeObservations_.map(function (observation) {\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\n });\n\n this.callback_.call(ctx, entries, ctx);\n this.clearActive();\n};\n\n/**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\nResizeObserverSPI.prototype.clearActive = function () {\n this.activeObservations_.splice(0);\n};\n\n/**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\nResizeObserverSPI.prototype.hasActive = function () {\n return this.activeObservations_.length > 0;\n};\n\n// Registry of internal observers. If WeakMap is not available use current shim\n// for the Map collection as it has all required methods and because WeakMap\n// can't be fully polyfilled anyway.\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\n\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\nvar ResizeObserver = function(callback) {\n if (!(this instanceof ResizeObserver)) {\n throw new TypeError('Cannot call a class as a function.');\n }\n if (!arguments.length) {\n throw new TypeError('1 argument required, but only 0 present.');\n }\n\n var controller = ResizeObserverController.getInstance();\n var observer = new ResizeObserverSPI(callback, controller, this);\n\n observers.set(this, observer);\n};\n\n// Expose public methods of ResizeObserver.\n['observe', 'unobserve', 'disconnect'].forEach(function (method) {\n ResizeObserver.prototype[method] = function () {\n return (ref = observers.get(this))[method].apply(ref, arguments);\n var ref;\n };\n});\n\nvar index = (function () {\n // Export existing implementation if available.\n if (typeof global$1.ResizeObserver !== 'undefined') {\n return global$1.ResizeObserver;\n }\n\n return ResizeObserver;\n})();\n\nexport default index;\n","export default function 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\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n","/*\n* Underscore.string\n* (c) 2010 Esa-Matti Suuronen \n* Underscore.string is freely distributable under the terms of the MIT license.\n* Documentation: https://github.com/epeli/underscore.string\n* Some code is borrowed from MooTools and Alexandru Marasteanu.\n* Version '3.3.4'\n* @preserve\n*/\n\n'use strict';\n\nfunction s(value) {\n /* jshint validthis: true */\n if (!(this instanceof s)) return new s(value);\n this._wrapped = value;\n}\n\ns.VERSION = '3.3.4';\n\ns.isBlank = require('./isBlank');\ns.stripTags = require('./stripTags');\ns.capitalize = require('./capitalize');\ns.decapitalize = require('./decapitalize');\ns.chop = require('./chop');\ns.trim = require('./trim');\ns.clean = require('./clean');\ns.cleanDiacritics = require('./cleanDiacritics');\ns.count = require('./count');\ns.chars = require('./chars');\ns.swapCase = require('./swapCase');\ns.escapeHTML = require('./escapeHTML');\ns.unescapeHTML = require('./unescapeHTML');\ns.splice = require('./splice');\ns.insert = require('./insert');\ns.replaceAll = require('./replaceAll');\ns.include = require('./include');\ns.join = require('./join');\ns.lines = require('./lines');\ns.dedent = require('./dedent');\ns.reverse = require('./reverse');\ns.startsWith = require('./startsWith');\ns.endsWith = require('./endsWith');\ns.pred = require('./pred');\ns.succ = require('./succ');\ns.titleize = require('./titleize');\ns.camelize = require('./camelize');\ns.underscored = require('./underscored');\ns.dasherize = require('./dasherize');\ns.classify = require('./classify');\ns.humanize = require('./humanize');\ns.ltrim = require('./ltrim');\ns.rtrim = require('./rtrim');\ns.truncate = require('./truncate');\ns.prune = require('./prune');\ns.words = require('./words');\ns.pad = require('./pad');\ns.lpad = require('./lpad');\ns.rpad = require('./rpad');\ns.lrpad = require('./lrpad');\ns.sprintf = require('./sprintf');\ns.vsprintf = require('./vsprintf');\ns.toNumber = require('./toNumber');\ns.numberFormat = require('./numberFormat');\ns.strRight = require('./strRight');\ns.strRightBack = require('./strRightBack');\ns.strLeft = require('./strLeft');\ns.strLeftBack = require('./strLeftBack');\ns.toSentence = require('./toSentence');\ns.toSentenceSerial = require('./toSentenceSerial');\ns.slugify = require('./slugify');\ns.surround = require('./surround');\ns.quote = require('./quote');\ns.unquote = require('./unquote');\ns.repeat = require('./repeat');\ns.naturalCmp = require('./naturalCmp');\ns.levenshtein = require('./levenshtein');\ns.toBoolean = require('./toBoolean');\ns.exports = require('./exports');\ns.escapeRegExp = require('./helper/escapeRegExp');\ns.wrap = require('./wrap');\ns.map = require('./map');\n\n// Aliases\ns.strip = s.trim;\ns.lstrip = s.ltrim;\ns.rstrip = s.rtrim;\ns.center = s.lrpad;\ns.rjust = s.lpad;\ns.ljust = s.rpad;\ns.contains = s.include;\ns.q = s.quote;\ns.toBool = s.toBoolean;\ns.camelcase = s.camelize;\ns.mapChars = s.map;\n\n\n// Implement chaining\ns.prototype = {\n value: function value() {\n return this._wrapped;\n }\n};\n\nfunction fn2method(key, fn) {\n if (typeof fn !== 'function') return;\n s.prototype[key] = function() {\n var args = [this._wrapped].concat(Array.prototype.slice.call(arguments));\n var res = fn.apply(null, args);\n // if the result is non-string stop the chain and return the value\n return typeof res === 'string' ? new s(res) : res;\n };\n}\n\n// Copy functions to instance methods for chaining\nfor (var key in s) fn2method(key, s[key]);\n\nfn2method('tap', function tap(string, fn) {\n return fn(string);\n});\n\nfunction prototype2method(methodName) {\n fn2method(methodName, function(context) {\n var args = Array.prototype.slice.call(arguments, 1);\n return String.prototype[methodName].apply(context, args);\n });\n}\n\nvar prototypeMethods = [\n 'toUpperCase',\n 'toLowerCase',\n 'split',\n 'replace',\n 'slice',\n 'substring',\n 'substr',\n 'concat'\n];\n\nfor (var method in prototypeMethods) prototype2method(prototypeMethods[method]);\n\n\nmodule.exports = s;\n","\"use strict\";\n\nvar compose = require('redux').compose;\n\nexports.__esModule = true;\nexports.composeWithDevTools = (\n typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ?\n window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ :\n function() {\n if (arguments.length === 0) return undefined;\n if (typeof arguments[0] === 'object') return compose;\n return compose.apply(null, arguments);\n }\n);\n\nexports.devToolsEnhancer = (\n typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION__ ?\n window.__REDUX_DEVTOOLS_EXTENSION__ :\n function() { return function(noop) { return noop; } }\n);\n","'use strict';\nvar strictUriEncode = require('strict-uri-encode');\nvar objectAssign = require('object-assign');\nvar decodeComponent = require('decode-uri-component');\n\nfunction encoderForArrayFormat(opts) {\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, index) {\n\t\t\t\treturn value === null ? [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tindex,\n\t\t\t\t\t']'\n\t\t\t\t].join('') : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tencode(index, opts),\n\t\t\t\t\t']=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[]=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(opts) {\n\tvar result;\n\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t} else if (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction encode(value, opts) {\n\tif (opts.encode) {\n\t\treturn opts.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t} else if (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input)).sort(function (a, b) {\n\t\t\treturn Number(a) - Number(b);\n\t\t}).map(function (key) {\n\t\t\treturn input[key];\n\t\t});\n\t}\n\n\treturn input;\n}\n\nfunction extract(str) {\n\tvar queryStart = str.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\treturn str.slice(queryStart + 1);\n}\n\nfunction parse(str, opts) {\n\topts = objectAssign({arrayFormat: 'none'}, opts);\n\n\tvar formatter = parserForArrayFormat(opts);\n\n\t// Create an object with no prototype\n\t// https://github.com/sindresorhus/query-string/issues/47\n\tvar ret = Object.create(null);\n\n\tif (typeof str !== 'string') {\n\t\treturn ret;\n\t}\n\n\tstr = str.trim().replace(/^[?#&]/, '');\n\n\tif (!str) {\n\t\treturn ret;\n\t}\n\n\tstr.split('&').forEach(function (param) {\n\t\tvar parts = param.replace(/\\+/g, ' ').split('=');\n\t\t// Firefox (pre 40) decodes `%3D` to `=`\n\t\t// https://github.com/sindresorhus/query-string/pull/37\n\t\tvar key = parts.shift();\n\t\tvar val = parts.length > 0 ? parts.join('=') : undefined;\n\n\t\t// missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tval = val === undefined ? null : decodeComponent(val);\n\n\t\tformatter(decodeComponent(key), val, ret);\n\t});\n\n\treturn Object.keys(ret).sort().reduce(function (result, key) {\n\t\tvar val = ret[key];\n\t\tif (Boolean(val) && typeof val === 'object' && !Array.isArray(val)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(val);\n\t\t} else {\n\t\t\tresult[key] = val;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = function (obj, opts) {\n\tvar defaults = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none'\n\t};\n\n\topts = objectAssign(defaults, opts);\n\n\tif (opts.sort === false) {\n\t\topts.sort = function () {};\n\t}\n\n\tvar formatter = encoderForArrayFormat(opts);\n\n\treturn obj ? Object.keys(obj).sort(opts.sort).map(function (key) {\n\t\tvar val = obj[key];\n\n\t\tif (val === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (val === null) {\n\t\t\treturn encode(key, opts);\n\t\t}\n\n\t\tif (Array.isArray(val)) {\n\t\t\tvar result = [];\n\n\t\t\tval.slice().forEach(function (val2) {\n\t\t\t\tif (val2 === undefined) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresult.push(formatter(key, val2, result.length));\n\t\t\t});\n\n\t\t\treturn result.join('&');\n\t\t}\n\n\t\treturn encode(key, opts) + '=' + encode(val, opts);\n\t}).filter(function (x) {\n\t\treturn x.length > 0;\n\t}).join('&') : '';\n};\n\nexports.parseUrl = function (str, opts) {\n\treturn {\n\t\turl: str.split('?')[0] || '',\n\t\tquery: parse(extract(str), opts)\n\t};\n};\n","module.exports = function () {\n return new Worker(__webpack_public_path__ + \"0d408dd1b156d233195f.worker.js\");\n};\n","import { FeedbackModalProvider } from \"@single-js/common/components/feedback-modal/provider\";\nimport { ToastProvider } from \"@single-js/common/components/toast/provider\";\nimport { ThemeProvider } from \"@single-js/common/theme-context\";\nimport * as React from \"react\";\nimport { hot } from \"react-hot-loader\";\nimport { Provider as ReduxProvider } from \"react-redux\";\nimport { RouterProvider } from \"react-router5\";\nimport RouterController from \"view/controllers/router\";\nimport \"./scss/globals.scss\";\nimport \"typeface-inconsolata/index.css\";\nimport \"typeface-lato/index.css\";\nclass App extends React.Component {\n render() {\n const { store, router } = this.props;\n return (React.createElement(ReduxProvider, { store: store },\n React.createElement(RouterProvider, { router: router },\n React.createElement(ThemeProvider, { themePreference: \"light\" },\n React.createElement(ToastProvider, null,\n React.createElement(FeedbackModalProvider, null,\n React.createElement(RouterController, null)))))));\n }\n}\nexport default hot(module)(App);\n","'use strict';\n\nvar _require = require('./Collapse'),\n Collapse = _require.Collapse;\n\nvar _require2 = require('./UnmountClosed'),\n UnmountClosed = _require2.UnmountClosed;\n\nUnmountClosed.Collapse = Collapse;\nUnmountClosed.UnmountClosed = UnmountClosed;\n\nmodule.exports = UnmountClosed;","module.exports = __webpack_public_path__ + \"src/assets/images/banner-logo.svg\";","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./dist/react-hot-loader.production.min.js');\n} else if (process.env.NODE_ENV === 'test') {\n module.exports = require('./dist/react-hot-loader.production.min.js');\n} else if (typeof window === 'undefined') {\n // this is just server environment\n module.exports = require('./dist/react-hot-loader.production.min.js');\n} else if (!module.hot) {\n console.error('React-Hot-Loader: Hot Module Replacement is not enabled');\n module.exports = require('./dist/react-hot-loader.production.min.js');\n} else {\n var evalAllowed = false;\n try {\n eval('evalAllowed = true');\n } catch (e) {\n // eval not allowed due to CSP\n }\n\n // RHL needs setPrototypeOf to operate Component inheritance, and eval to patch methods\n var jsFeaturesPresent = !!Object.setPrototypeOf;\n\n if (!jsFeaturesPresent || !evalAllowed) {\n // we are not in prod mode, but RHL could not be activated\n console.warn('React-Hot-Loader is not supported in this environment.');\n module.exports = require('./dist/react-hot-loader.production.min.js');\n } else {\n module.exports = window.reactHotLoaderGlobal = require('./dist/react-hot-loader.development.js');\n }\n}\n","export const getErrorMessage = (code, message) => {\n if (code === \"PROTOCOL_CONNECTION_LOST\") {\n return \"We are unable to connect to your cluster. Please verify that your cluster is online and accessible and try again.\";\n }\n else if (code === \"ER_ACCESS_DENIED_ERROR\") {\n return \"The credentials are incorrect. Please verify them and try again.\";\n }\n else {\n return `An error occurred: ${message}`;\n }\n};\n","import { Loading } from \"@single-js/common/components/loading/loading\";\nimport { initConnection } from \"@single-js/common/core/sql/connection/worker-connection\";\nimport { selectClusters } from \"data/selectors/clusters\";\nimport { selectRoute } from \"data/selectors/routes\";\nimport _ from \"lodash\";\nimport * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { withRouter } from \"react-router5\";\nimport { getErrorMessage } from \"util/handle-mysql-error\";\nimport { logError } from \"util/logging\";\nimport { getClusters } from \"worker/api/clusters\";\nclass SAMLAssert extends React.Component {\n componentDidMount() {\n this.props.dispatch(getClusters());\n }\n componentDidUpdate() {\n const { router, dispatch, onSubmitSuccess, clusters } = this.props;\n // This is our super hacky way of waiting for the `getClusters` query to\n // return and perform a side-effect when it does come in and populate\n // the Redux state.\n if (clusters === undefined) {\n return;\n }\n const samlLoginAssertion = window.SAML_LOGIN_ASSERTION;\n const samlLoginClusterId = window.SAML_LOGIN_CLUSTER_ID;\n const samlLoginUser = window.SAML_LOGIN_USER;\n const cluster = _.find(clusters, (cluster) => cluster.id === samlLoginClusterId);\n if (!cluster) {\n logError(new Error(`Expected to find cluster with cluster ID \"${samlLoginClusterId}\" in list of clusters`));\n router.navigate(\"connect\");\n return;\n }\n if (samlLoginAssertion && samlLoginClusterId && samlLoginUser) {\n return Promise.resolve(dispatch(initConnection({\n clusterId: samlLoginClusterId,\n user: samlLoginUser,\n password: samlLoginAssertion,\n kind: \"CONNECT_CONFIG\",\n hostname: cluster.hostname,\n port: cluster.port,\n websocket: cluster.websocket,\n websocketSSL: cluster.websocketSSL,\n kerberosAutoLogin: cluster.kerberosAutoLogin,\n monitoring: cluster.monitoring,\n }))).then((action) => {\n if (action.error) {\n router.navigate(\"connect.cluster\", {\n clusterId: samlLoginClusterId,\n initialError: getErrorMessage(action.payload.code, action.payload.message),\n });\n }\n else {\n onSubmitSuccess(samlLoginClusterId);\n }\n });\n }\n else {\n logError(new Error(\"Expected SAML_LOGIN_ASSERTION to exist when the saml-assert route is rendered.\"));\n router.navigate(\"connect\");\n }\n }\n render() {\n return React.createElement(Loading, { size: \"large\" });\n }\n}\nexport default connect((s) => ({\n clusters: selectClusters(s),\n route: selectRoute(s),\n}))(withRouter(SAMLAssert));\n","import { Icon } from \"@single-js/common/components/icon/icon\";\nimport _ from \"lodash\";\nimport * as React from \"react\";\nimport { Collapse } from \"react-collapse\";\nimport { connect } from \"react-redux\";\nclass Section extends React.Component {\n renderFieldValues(values) {\n return _.map(values, (field) => (React.createElement(\"div\", { key: field.name },\n field.label,\n \": \",\n field.value || \"Undefined\")));\n }\n render() {\n const { active, fields, fieldValues: values, handleToggle, title, description, index, error, } = this.props;\n let sectionError;\n let sectionErrorIcon;\n if (error) {\n sectionErrorIcon = (React.createElement(Icon, { className: \"section-error-icon\", icon: \"exclamation-circle\" }));\n if (active) {\n sectionError = React.createElement(\"div\", { className: \"section-error\" }, error);\n }\n }\n return (React.createElement(\"div\", { className: \"collapsable-section\", tabIndex: 0, onFocus: handleToggle },\n React.createElement(\"div\", { className: \"info\", onClick: handleToggle },\n React.createElement(\"div\", { className: \"section-index\" }, index),\n React.createElement(\"div\", { className: \"info-text\" },\n React.createElement(\"div\", { className: \"title\" },\n title,\n \" \",\n sectionErrorIcon),\n React.createElement(\"div\", { className: \"description\" }, description),\n sectionError,\n !active && (React.createElement(\"div\", { className: \"field-values\" }, this.renderFieldValues(values))))),\n React.createElement(Collapse, { isOpened: active }, active && React.createElement(\"div\", null, fields))));\n }\n}\nexport default connect((state, ownProps) => {\n return {\n fieldValues: ownProps.getFieldValues(state, ownProps.sectionName),\n };\n})(Section);\n","import { Form } from \"@single-js/common/components/form/form\";\nimport { Icon } from \"@single-js/common/components/icon/icon\";\nimport { Loading } from \"@single-js/common/components/loading/loading\";\nimport _ from \"lodash\";\nimport * as React from \"react\";\nimport { FormSection } from \"redux-form\";\nimport Section from \"view/common/collapsable-form/section\";\nimport \"./index.scss\";\nexport default class CollapsableForm extends React.Component {\n constructor(props) {\n super(props);\n this.handleSectionChange = (index) => {\n if (this.state.activeSection === index) {\n return;\n }\n this.setState({\n activeSection: index,\n });\n };\n this.handleSubmit = (e) => {\n // Prevent page reload which is the default behavior after\n // a form submit event.\n e.preventDefault();\n if (this.props.canSubmit) {\n this.props.handleSubmit(e);\n }\n };\n this.state = { activeSection: 0 };\n }\n render() {\n const { submitting, error, formSections, dispatch } = this.props;\n if (submitting) {\n return React.createElement(Loading, { size: \"large\" });\n }\n const { activeSection } = this.state;\n let formError = null;\n if (error && typeof error === \"string\") {\n formError = (React.createElement(\"div\", { className: \"form-error\" },\n React.createElement(Icon, { className: \"icon-error\", icon: \"exclamation-circle\" }),\n error));\n }\n return (React.createElement(Form, { onSubmit: this.handleSubmit, className: \"collapsable-form\" },\n formError,\n _.map(formSections, (sectionConfig, index) => {\n return (React.createElement(FormSection, { name: sectionConfig.name, component: Section, key: sectionConfig.name, fields: sectionConfig.renderFields(dispatch), title: sectionConfig.title, description: sectionConfig.description, active: activeSection === index, handleToggle: () => this.handleSectionChange(index), sectionName: sectionConfig.name, index: index + 1, getFieldValues: sectionConfig.getFieldValues, error: !formError &&\n error &&\n typeof error !== \"string\" &&\n error.section === sectionConfig.name\n ? error.error\n : undefined }));\n }),\n React.createElement(\"button\", { type: \"submit\", className: \"hidden-submit-button\", tabIndex: -1 })));\n }\n}\n","import { Icon } from \"@single-js/common/components/icon/icon\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport \"./text-input.scss\";\n/**\n * @deprecated Please use the one in components/input.tsx instead.\n * This one will be eventually removed with redux-form\n */\nexport class TextInput extends React.PureComponent {\n render() {\n const { className, small, meta, ...rest } = this.props;\n let classes = classnames({\n \"components-text-input\": true,\n small,\n ...meta,\n }, className);\n if (this.props.type === \"textarea\") {\n // Textareas and text inputs share the same style and interactions,\n // so we render both of them with the same component.\n return (React.createElement(\"div\", { className: classes },\n React.createElement(\"textarea\", { ...rest, ...this.props.input, id: this.props.input.name })));\n }\n else {\n let icon;\n if (this.props.type === \"text\" && this.props.icon) {\n icon = React.createElement(Icon, { className: \"icon\", ...this.props.icon, size: \"sm\" });\n classes = classnames(classes, \"with-icon\");\n }\n return (React.createElement(\"div\", { className: classes },\n icon,\n React.createElement(\"input\", { ...rest, ...this.props.input, type: this.props.type, id: this.props.input.name })));\n }\n }\n}\nTextInput.defaultProps = {\n meta: {},\n};\n","import { Checkbox } from \"@single-js/common/components/form/checkbox\";\nimport { Icon } from \"@single-js/common/components/icon/icon\";\nimport { RadioButton } from \"@single-js/common/components/radio-button/radio-button\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { logError } from \"util/logging\";\nimport { TextInput } from \"view/common/text-input\";\nimport \"./form-element.scss\";\nexport default class FormElement extends React.Component {\n render() {\n const { type, className, label, message, input, meta, meta: { error, ...metaBools }, ...rest } = this.props;\n // We are specifically overriding the onBlur handler such that it calls\n // this.props.onBlur with *no* event argument. The reason is that\n // Redux-Form incorrectly updates the value of the field onBlur.\n // This is incorrect since in certain cases like autocompletion the\n // browser can fire multiple event-handlers in a single frame. When this\n // happens, the onBlur handle will see the stale input value rather than\n // the new, updated value.\n //\n // Discussion: https://github.com/erikras/redux-form/issues/2768\n // Test we are depending on:\n // https://github.com/erikras/redux-form/blob/38d58d9c9040d86efd3e09b079e7b3109c688f15/src/__tests__/reducer.blur.spec.js#L70\n const fixedInput = {\n ...input,\n onBlur: () => {\n // @ts-ignore\n input.onBlur();\n },\n };\n const classes = classnames({\n \"components-form-element\": true,\n ...metaBools,\n }, className);\n let inputEl;\n if (typeof type === \"string\") {\n if (type === \"textarea\") {\n inputEl = (React.createElement(TextInput, { type: \"textarea\", input: fixedInput, meta: meta, ...rest }));\n }\n else if (type === \"password\") {\n inputEl = (React.createElement(TextInput, { type: \"password\", input: fixedInput, meta: meta, ...rest }));\n }\n else if (type === \"text\") {\n inputEl = (React.createElement(TextInput, { type: \"text\", input: fixedInput, meta: meta, ...rest }));\n }\n else if (type === \"checkbox\") {\n inputEl = React.createElement(Checkbox, { inputProps: { ...fixedInput, ...rest } });\n }\n else if (type === \"radio\") {\n const { checked, value, name, ...restInput } = fixedInput;\n inputEl = (React.createElement(RadioButton, { label: label, inputProps: {\n meta,\n name,\n value,\n checked: Boolean(checked),\n ...rest,\n ...restInput,\n } }));\n }\n else {\n logError(new Error(`Unexpected FormElement type - ${type}`));\n }\n }\n else {\n const CustomInput = type;\n inputEl = React.createElement(CustomInput, { input: fixedInput, meta: meta, ...rest });\n }\n let messageEl;\n if (error && meta.touched) {\n messageEl = (React.createElement(\"div\", { className: \"message-wrapper\" },\n React.createElement(Icon, { icon: \"exclamation-triangle\" }),\n \" \",\n error));\n }\n else if (message) {\n messageEl = React.createElement(\"div\", { className: \"message-wrapper\", children: message });\n }\n let inner;\n if (type === \"checkbox\") {\n inner = (React.createElement(\"div\", { className: \"checkbox-wrapper\" },\n inputEl,\n React.createElement(\"div\", { className: \"content-wrapper\" },\n label && (React.createElement(\"label\", { className: \"checkbox-label\", htmlFor: input.name, children: label })),\n React.createElement(\"div\", { className: \"message-wrapper\" }, messageEl))));\n }\n else if (type === \"radio\") {\n // no label because our RadioButton already has one\n inner = (React.createElement(\"div\", { className: \"checkbox-wrapper\" },\n inputEl,\n React.createElement(\"div\", { className: \"content-wrapper\" }, messageEl)));\n }\n else {\n inner = (React.createElement(React.Fragment, null,\n label && (React.createElement(\"div\", { className: \"label-wrapper\" },\n React.createElement(\"label\", { htmlFor: input.name, children: label }))),\n inputEl,\n messageEl));\n }\n return React.createElement(\"div\", { className: classes }, inner);\n }\n}\n","import { Select } from \"@single-js/common/components/form/select\";\nimport * as React from \"react\";\nexport class FormSelect extends React.Component {\n constructor() {\n super(...arguments);\n this.handleChange = (evt) => {\n this.props.input.onChange(evt.target.value);\n };\n }\n render() {\n const { children, input, ...rest } = this.props;\n return (React.createElement(Select, { inputProps: {\n required: true,\n onChange: this.handleChange,\n value: input.value,\n onBlur: input.onBlur,\n ...rest,\n } }, children));\n }\n}\n","import { combineValidators, maxLengthFieldValidator, regexFieldValidator, requiredFieldValidator, } from \"@single-js/common/util/form\";\nimport { LONG_EM_DASH } from \"@single-js/common/util/symbols\";\nimport { capitalize } from \"humanize-plus\";\nimport _ from \"lodash\";\nimport * as React from \"react\";\nimport { Field, formValueSelector, getFormMeta, getFormSyncErrors, reduxForm, SubmissionError, } from \"redux-form\";\nimport * as analytics from \"util/segment\";\nimport CollapsableForm from \"view/common/collapsable-form\";\nimport FormElement from \"view/common/form-element\";\nimport { FormSelect } from \"view/common/form-select\";\nimport { addCluster } from \"worker/api/clusters\";\nexport const ADD_NEW_CLUSTER_FORM_NAME = \"ADD_NEW_CLUSTER_FORM_NAME\";\nconst selector = formValueSelector(ADD_NEW_CLUSTER_FORM_NAME);\nconst errorSelector = getFormSyncErrors(ADD_NEW_CLUSTER_FORM_NAME);\nconst metaSelector = getFormMeta(ADD_NEW_CLUSTER_FORM_NAME);\nconst validatePortField = combineValidators(requiredFieldValidator, regexFieldValidator(/^\\d+$/, \"Ports can only contain digits\"));\nconst validateClusterNameField = combineValidators(requiredFieldValidator, maxLengthFieldValidator(40));\nexport const validateClusterDescriptionField = combineValidators(requiredFieldValidator, maxLengthFieldValidator(100));\nconst trackAddNewClusterBlur = analytics.trackBlurEvent(\"add-new-cluster\");\nconst handleBlur = (_event, _newValue, _value, name) => {\n // TODO - PLAT-3610 - send success/error according form validations\n trackAddNewClusterBlur(name);\n};\nconst LocateSection = () => {\n return (React.createElement(React.Fragment, null,\n React.createElement(Field, { name: \"hostname\", component: FormElement, label: \"Hostname\", placeholder: \"Enter the hostname\", type: \"text\", onBlur: handleBlur, autoFocus: true }),\n React.createElement(Field, { name: \"port\", label: \"Port\", placeholder: \"Enter the port\", type: \"text\", onBlur: handleBlur, component: FormElement })));\n};\nconst CredentialsSection = () => {\n return (React.createElement(React.Fragment, null,\n React.createElement(Field, { name: \"username\", label: \"Username\", placeholder: \"Enter your username\", type: \"text\", component: FormElement, onBlur: handleBlur, autoFocus: true }),\n React.createElement(Field, { name: \"password\", label: \"Password\", placeholder: \"Enter your password\", type: \"password\", onBlur: handleBlur, component: FormElement })));\n};\nconst ProfileSection = () => {\n return (React.createElement(React.Fragment, null,\n React.createElement(Field, { name: \"profile\", label: \"Type\", component: FormElement, type: FormSelect, onBlur: handleBlur, autoFocus: true },\n React.createElement(\"option\", { disabled: true, value: \"\" }, \"Select Environment Type\"),\n React.createElement(\"option\", { value: \"DEVELOPMENT\" }, \"Development\"),\n React.createElement(\"option\", { value: \"STAGING\" }, \"Staging\"),\n React.createElement(\"option\", { value: \"PRODUCTION\" }, \"Production\")),\n React.createElement(Field, { name: \"clusterName\", label: \"Cluster Name\", type: \"text\", onBlur: handleBlur, placeholder: \"Enter the cluster name\", component: FormElement }),\n React.createElement(Field, { name: \"description\", label: \"Description\", type: \"text\", onBlur: handleBlur, placeholder: \"Descriptions should be less than 100 characters\", component: FormElement })));\n};\nconst renderFieldValue = (error, value, touched) => {\n if (error && touched) {\n return React.createElement(\"span\", { className: \"error\" }, error);\n }\n else {\n return React.createElement(\"span\", null, value || LONG_EM_DASH);\n }\n};\nconst setFieldError = (errors, field, error) => {\n if (error) {\n _.set(errors, field, error);\n }\n};\n// DISCLAIMER\n// Currently duplicated from \"util/handle-mysql-error\". We should only\n// think about refactoring/cleaning this when we have more use cases for\n// this so that we don't over-abstract too early.\nconst handleFormConnectErrors = (code, message) => {\n switch (code) {\n case \"PROTOCOL_CONNECTION_LOST\":\n throw new SubmissionError({\n _error: {\n section: \"locate\",\n error: \"We are unable to connect to your cluster. Please verify that your cluster is online and accessible and try again.\",\n },\n });\n case \"ER_ACCESS_DENIED_ERROR\":\n throw new SubmissionError({\n _error: {\n section: \"credentials\",\n error: \"The credentials are incorrect. Please verify them and try again.\",\n },\n });\n default:\n throw new SubmissionError({\n _error: `An error occurred: ${message}`,\n });\n }\n};\nconst validateForm = (values) => {\n const errors = {};\n if (values.locate) {\n setFieldError(errors, [\"locate\", \"hostname\"], requiredFieldValidator(values.locate.hostname));\n setFieldError(errors, [\"locate\", \"port\"], validatePortField(values.locate.port));\n }\n if (values.credentials) {\n setFieldError(errors, [\"credentials\", \"username\"], requiredFieldValidator(values.credentials.username));\n }\n if (values.profile) {\n setFieldError(errors, [\"profile\", \"clusterName\"], validateClusterNameField(values.profile.clusterName));\n setFieldError(errors, [\"profile\", \"profile\"], requiredFieldValidator(values.profile.profile));\n setFieldError(errors, [\"profile\", \"description\"], validateClusterDescriptionField(values.profile.description));\n }\n return errors;\n};\nconst initialValues = {\n locate: {\n hostname: \"\",\n port: \"\",\n },\n credentials: {\n username: \"\",\n password: \"\",\n },\n profile: {\n clusterName: \"\",\n profile: undefined,\n description: \"\",\n },\n};\nconst formSections = [\n {\n name: \"locate\",\n title: \"Locate Cluster\",\n description: \"The hostname and port of the Master Aggregator\",\n renderFields: LocateSection,\n getFieldValues: (state, sectionName) => {\n const fieldErrors = _.get(errorSelector(state), sectionName) || {};\n const fieldMetas = _.get(metaSelector(state), sectionName) || {};\n return [\n {\n name: \"hostname\",\n label: \"Hostname\",\n value: renderFieldValue(fieldErrors[\"hostname\"], selector(state, `${sectionName}.hostname`), fieldMetas.hostname\n ? fieldMetas.hostname.touched\n : false),\n },\n {\n name: \"port\",\n label: \"Port\",\n value: renderFieldValue(fieldErrors[\"port\"], selector(state, `${sectionName}.port`), fieldMetas.port ? fieldMetas.port.touched : false),\n },\n ];\n },\n },\n {\n name: \"credentials\",\n title: \"Enter Credentials\",\n description: \"Enter your username and password to verify your access.\",\n renderFields: CredentialsSection,\n getFieldValues: (state, sectionName) => {\n const fieldErrors = _.get(errorSelector(state), sectionName) || {};\n const fieldMetas = _.get(metaSelector(state), sectionName) || {};\n return [\n {\n name: \"username\",\n label: \"Username\",\n value: renderFieldValue(fieldErrors[\"username\"], selector(state, `${sectionName}.username`), fieldMetas.username\n ? fieldMetas.username.touched\n : false),\n },\n {\n name: \"password\",\n label: \"Password\",\n value: \"•••••\",\n },\n ];\n },\n },\n {\n name: \"profile\",\n title: \"Create Cluster Profile\",\n description: \"Create and store profile of the cluster for your team.\",\n renderFields: ProfileSection,\n getFieldValues: (state, sectionName) => {\n const fieldErrors = _.get(errorSelector(state), sectionName) || {};\n const fieldMetas = _.get(metaSelector(state), sectionName) || {};\n let profileValue = selector(state, `${sectionName}.profile`);\n if (profileValue) {\n profileValue = capitalize(profileValue, true);\n }\n return [\n {\n name: \"profile\",\n label: \"Profile\",\n value: renderFieldValue(fieldErrors[\"profile\"], profileValue, fieldMetas.profile ? fieldMetas.profile.touched : false),\n },\n {\n name: \"clusterName\",\n label: \"Cluster Name\",\n value: renderFieldValue(fieldErrors[\"clusterName\"], selector(state, `${sectionName}.clusterName`), fieldMetas.clusterName\n ? fieldMetas.clusterName.touched\n : false),\n },\n {\n name: \"description\",\n label: \"Description\",\n value: renderFieldValue(fieldErrors[\"description\"], selector(state, `${sectionName}.description`), fieldMetas.description\n ? fieldMetas.description.touched\n : false),\n },\n ];\n },\n },\n];\nconst Form = reduxForm({\n form: ADD_NEW_CLUSTER_FORM_NAME,\n initialValues,\n // We implement a form-level validation as recommended here:\n // https://github.com/erikras/redux-form/issues/2451, for forms\n // that have hidden fields.\n validate: (values) => {\n return validateForm(values);\n },\n destroyOnUnmount: false,\n persistentSubmitErrors: true,\n onSubmit(values, dispatch, props) {\n const profile = values.profile.profile;\n if (!profile) {\n throw new Error(\"Expected profile to be defined.\");\n }\n const newClusterRequestObj = {\n hostname: values.locate.hostname.trim(),\n port: Number(values.locate.port),\n websocket: false,\n websocketSSL: false,\n kerberosAutoLogin: false,\n username: values.credentials.username.trim(),\n password: values.credentials.password,\n name: values.profile.clusterName.trim(),\n profile,\n description: values.profile.description.trim(),\n };\n return Promise.resolve(dispatch(addCluster(newClusterRequestObj))).then((action) => {\n if (action.type === \"CONNECT\") {\n if (action.error) {\n handleFormConnectErrors(action.payload.code, action.payload.message);\n }\n else {\n const { config } = action.payload.primaryConnection;\n if (!config) {\n throw new Error(\"Got non-error connect action with no config\");\n }\n if (props.destroy) {\n props.destroy();\n }\n return { clusterId: config.clusterId };\n }\n }\n else if (action.type === \"CLUSTERS_ADD_ERROR\") {\n handleFormConnectErrors(action.payload.code, action.payload.message);\n }\n throw new Error(\"Only the CONNECT and the CLUSTERS_ADD_ERROR actions are expected here.\");\n });\n },\n})(CollapsableForm);\n// We export a wrapper around the Form component (which is a decorated\n// CollapsableForm instance defined above) with formSections set.\n// We leave the rest of the props to the client of this form, in order to\n// maintain a proper separation of concerns between the form and the page\n// that renders the form.\nexport function AddNewClusterForm(props) {\n return React.createElement(Form, { ...props, formSections: formSections });\n}\n","import { Button } from \"@single-js/common/components/button/button\";\nimport { FullScreen } from \"@single-js/common/components/fullscreen/fullscreen\";\nimport _ from \"lodash\";\nimport * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { destroy, getFormError, getFormSyncErrors, isSubmitting, submit, } from \"redux-form\";\nimport { ADD_NEW_CLUSTER_FORM_NAME, AddNewClusterForm, } from \"view/forms/add-new-cluster\";\nimport \"./add-new-cluster.scss\";\nconst syncErrorsSelector = getFormSyncErrors(ADD_NEW_CLUSTER_FORM_NAME);\nconst submitErrorsSelector = getFormError(ADD_NEW_CLUSTER_FORM_NAME);\nconst submittingSelector = isSubmitting(ADD_NEW_CLUSTER_FORM_NAME);\nclass AddNewClusterPage extends React.Component {\n constructor(props) {\n super(props);\n this.$fullscreen = React.createRef();\n this.handleSubmit = () => {\n const action = submit(ADD_NEW_CLUSTER_FORM_NAME);\n this.setState({ shouldScrollTop: true });\n this.props.dispatch({\n type: action.type,\n error: action.error || false,\n payload: action.payload,\n meta: action.meta,\n });\n };\n this.handleCancel = () => {\n // Destroy the form such that no data is saved when the user returns to the\n // form.\n const action = destroy(ADD_NEW_CLUSTER_FORM_NAME);\n this.props.dispatch({\n type: action.type,\n error: action.error || false,\n payload: action.payload,\n meta: action.meta,\n });\n this.props.onCancel();\n };\n this.state = {\n shouldScrollTop: false,\n };\n }\n static getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.formErrors && prevState.shouldScrollTop) {\n return { shouldScrollTop: false };\n }\n return null;\n }\n componentDidUpdate() {\n if (this.props.formErrors && this.state.shouldScrollTop) {\n if (this.$fullscreen.current) {\n this.$fullscreen.current.scrollToTop();\n }\n }\n }\n render() {\n const { dispatch, onSubmitSuccess, canSubmit, submitting } = this.props;\n return (React.createElement(FullScreen, { ref: this.$fullscreen, actions: React.createElement(React.Fragment, null,\n React.createElement(Button, { large: true, onClick: this.handleCancel, tabIndex: -1, disabled: submitting }, \"Cancel\"),\n React.createElement(Button, { large: true, disabled: !canSubmit, primary: true, onClick: this.handleSubmit }, \"Submit\")) },\n React.createElement(\"div\", { className: \"add-new-cluster-page\" },\n React.createElement(\"div\", { className: \"header\" },\n React.createElement(\"h1\", null, \"Connect to a cluster\"),\n React.createElement(\"h2\", { className: \"description\" },\n React.createElement(\"div\", null, \"Connect to a SingleStore DB cluster to start using SingleStore Studio.\"),\n React.createElement(\"div\", null, \"If you have connected to a cluster previously, you will find it in the dropdown menu.\"))),\n React.createElement(\"div\", { className: \"form-wrapper\" },\n React.createElement(AddNewClusterForm, { canSubmit: canSubmit, onSubmitSuccess: (result) => {\n onSubmitSuccess(result.clusterId);\n }, dispatch: dispatch })))));\n }\n}\nexport default connect((s) => ({\n formErrors: submitErrorsSelector(s),\n submitting: submittingSelector(s),\n canSubmit: _.isEmpty(syncErrorsSelector(s)) && !submittingSelector(s),\n}))(AddNewClusterPage);\n","import { Alert } from \"@single-js/common/components/alert/alert\";\nimport { Button } from \"@single-js/common/components/button/button\";\nimport { Form } from \"@single-js/common/components/form/form\";\nimport { IconTip } from \"@single-js/common/components/icon/icon-tip\";\nimport { Loading } from \"@single-js/common/components/loading/loading\";\nimport { initConnection } from \"@single-js/common/core/sql/connection/worker-connection\";\nimport { requiredFieldValidator } from \"@single-js/common/util/form\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { Field, reduxForm, SubmissionError, } from \"redux-form\";\nimport { getErrorMessage } from \"util/handle-mysql-error\";\nimport FormElement from \"view/common/form-element\";\nimport { backend } from \"worker/net/backend\";\nimport \"./connect-to-cluster.scss\";\nclass ConnectToClusterForm extends React.Component {\n render() {\n const { submitting, handleSubmit, error, managedService, cluster, initialError, samlEnabled, } = this.props;\n let formError;\n const errorMessage = error || initialError;\n if (errorMessage) {\n formError = React.createElement(\"div\", { className: \"form-error\" }, errorMessage);\n }\n // We are extremely careful to render the loading spinner\n // **on top** of the actual form content (using CSS absolute\n // positioning) so as not to unmount the actual redux form\n // fields or the form. If we unmount the fields or the form,\n // then the form is unregistered from the Redux state and\n // we lose its state.\n const formContentClasses = classnames(\"form-content\", { submitting });\n let passwordField;\n if (!cluster.kerberosAutoLogin && !samlEnabled) {\n passwordField = (React.createElement(Field, { name: \"password\", label: \"Password\", placeholder: \"Enter your password\", type: \"password\", component: FormElement }));\n }\n let submitLabel;\n if (samlEnabled) {\n submitLabel = \"Sign In with SAML\";\n }\n else {\n submitLabel = \"Submit\";\n }\n let usernameLabel;\n if (samlEnabled) {\n usernameLabel = (React.createElement(React.Fragment, null,\n \"Username\",\n React.createElement(IconTip, { iconProps: {\n leftMargin: true,\n } }, \"This is your MemSQL user name. This will redirect you to your SAML identity provider where you will sign in with your SAML user name\")));\n }\n else {\n usernameLabel = \"Username\";\n }\n return (React.createElement(Form, { onSubmit: handleSubmit, className: \"connect-to-cluster-form\" },\n managedService && (React.createElement(Alert, { className: \"form-message\", message: \"The database login credentials are not the same as your Portal login credentials. You can reset this password in the cluster's details page.\", status: \"info\" })),\n React.createElement(\"div\", { className: formContentClasses },\n submitting && (React.createElement(Loading, { className: \"form-loading\", size: \"large\" })),\n React.createElement(\"div\", { className: \"form-controls\" },\n React.createElement(Field, { name: \"username\", label: usernameLabel, placeholder: \"Enter your username\", type: \"text\", component: FormElement, validate: requiredFieldValidator, autoFocus: true }),\n passwordField,\n formError,\n React.createElement(Button, { primary: true, large: true, fullWidth: true, className: \"submit-btn\", onClick: handleSubmit }, submitLabel)),\n React.createElement(\"button\", { type: \"submit\", className: \"hidden-submit-button\", tabIndex: -1 }))));\n }\n}\nexport default reduxForm({\n onSubmit(values, dispatch, props) {\n const { cluster, samlEnabled } = props;\n const { username, password } = values;\n if (!username) {\n throw new Error(\"Expected username to be defined as the form validators should ensure that.\");\n }\n if (samlEnabled) {\n backend.redirectSamlLogin(cluster.id, username);\n }\n else {\n return Promise.resolve(dispatch(initConnection({\n clusterId: cluster.id,\n user: username,\n password,\n kind: \"CONNECT_CONFIG\",\n hostname: cluster.hostname,\n port: cluster.port,\n websocket: cluster.websocket,\n websocketSSL: cluster.websocketSSL,\n kerberosAutoLogin: cluster.kerberosAutoLogin,\n monitoring: cluster.monitoring,\n }))).then((action) => {\n if (action.error) {\n throw new SubmissionError({\n _error: getErrorMessage(action.payload.code, action.payload.message),\n });\n }\n else {\n return action;\n }\n });\n }\n },\n})(ConnectToClusterForm);\n","import { Button } from \"@single-js/common/components/button/button\";\nimport { Loading } from \"@single-js/common/components/loading/loading\";\nimport { Modal } from \"@single-js/common/components/modal/modal\";\nimport { SimpleModalBody } from \"@single-js/common/components/modal/simple-modal-body\";\nimport { formatClusterProfile } from \"data/models\";\nimport * as React from \"react\";\nimport { Field, reduxForm, SubmissionError, } from \"redux-form\";\nimport FormElement from \"view/common/form-element\";\nimport { deleteCluster } from \"worker/api/clusters\";\nimport \"./delete-cluster.scss\";\nclass DeleteClusterForm extends React.Component {\n render() {\n const { submitting, onClose, handleSubmit, error, clusterProfile, } = this.props;\n let formError;\n if (error) {\n formError = React.createElement(\"div\", { className: \"form-error\" }, error);\n }\n let inner;\n if (submitting) {\n inner = React.createElement(Loading, { size: \"large\" });\n }\n else {\n inner = (React.createElement(React.Fragment, null,\n formError,\n \"Are you sure you want to remove this cluster from your clusters list?\",\n React.createElement(Field, { name: \"agreement\", id: \"agreement\", type: \"checkbox\", component: FormElement, className: \"agreement-field\", label: React.createElement(React.Fragment, null,\n \"Please confirm that you really want to disconnect this\",\n \" \",\n React.createElement(\"span\", { className: \"cluster-profile\" }, formatClusterProfile(clusterProfile)),\n \" \",\n \"cluster from SingleStore Studio.\") })));\n }\n return (React.createElement(Modal, { active: true, onClose: onClose, innerContentPadding: true, actions: React.createElement(React.Fragment, null,\n React.createElement(Button, { large: true, onClick: onClose }, \"Cancel\"),\n React.createElement(Button, { primary: true, large: true, onClick: handleSubmit }, \"Remove\")) },\n React.createElement(\"div\", { className: \"delete-cluster-form\" },\n React.createElement(SimpleModalBody, { title: \"Confirm Cluster Removal\", description: inner }))));\n }\n}\nexport default reduxForm({\n onSubmit(_values, dispatch, props) {\n const { clusterId } = props;\n return Promise.resolve(dispatch(deleteCluster(clusterId))).then((action) => {\n if (action.error) {\n throw new SubmissionError({\n _error: action.payload,\n });\n }\n else {\n return action;\n }\n });\n },\n validate(values) {\n const errors = {\n agreement: \"\",\n };\n if (!values.agreement) {\n errors.agreement = \"This field is required\";\n }\n return errors;\n },\n})(DeleteClusterForm);\n","import { Button, } from \"@single-js/common/components/button/button\";\nimport { withFeedbackModal, } from \"@single-js/common/components/feedback-modal/with-feedback-modal\";\nimport { Icon } from \"@single-js/common/components/icon/icon\";\nimport { Loading } from \"@single-js/common/components/loading/loading\";\nimport Key from \"@single-js/common/util/key\";\nimport classnames from \"classnames\";\nimport { selectRoute } from \"data/selectors\";\nimport { selectClusters, selectClustersError } from \"data/selectors/clusters\";\nimport _ from \"lodash\";\nimport * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { withRouter } from \"react-router5\";\nimport { compose } from \"redux\";\nimport { isCreateClusterPageAvailable } from \"router/util\";\nimport * as analytics from \"util/segment\";\nimport ClusterProfileIcon from \"view/cluster/profile-icon\";\nimport InternalLink from \"view/common/internal-link\";\nimport { ExternalLink } from \"view/common/overrides/external-link\";\nimport ConnectToClusterForm from \"view/forms/connect-to-cluster\";\nimport DeleteClusterForm from \"view/forms/delete-cluster\";\nimport { getClusters } from \"worker/api/clusters\";\nimport \"./clusters-list.scss\";\nconst CLUSTERS_LIST_ITEM_CLASS = \"clusters-list-cluster\";\n// The ClustersListItem component is used in the ClustersList page (/connect) as\n// well as in the ConnectToCluster page (/connect/). This is why we\n// export this component. When expanded, it renders a ConnectToCluster form\n// inside it and when unexpanded, it simply renders some information about the\n// cluster prop. The reason we reuse this component is to make it easier to keep\n// the styling exactly the same between the 2 pages.\nclass BaseClustersListItem extends React.Component {\n constructor() {\n super(...arguments);\n // When people click ENTER on a Cluster List Item, it should run\n // the `onClick` handler for it (basically expand that Cluster Entry).\n this.handleKeyPress = (evt) => {\n // We want to prevent ENTER clicks that were bubbled up to the div\n // to expand this ClustersListItem.\n if (evt.currentTarget.className === CLUSTERS_LIST_ITEM_CLASS &&\n evt.charCode === Key.ENTER &&\n this.props.onClick) {\n this.props.onClick();\n }\n };\n // When the user tries to go back to the clusters list, we check if\n // window.ROOT_REDIRECT is set, in which case we take the user to\n // window.ROOT_REDIRECT. Otherwise, we just navigate to the \"connect\" route.\n this.handleClickBackToClustersList = () => {\n if (window.ROOT_REDIRECT) {\n window.location.replace(window.ROOT_REDIRECT);\n }\n else {\n this.props.router.navigate(\"connect\");\n }\n };\n this.handleClickDeleteCluster = (evt) => {\n const { openDeleteClusterModal } = this.props;\n // We stop this event from bubbling up because we don't want this to\n // trigger the event attached to the parent of this button (this\n // component) - which navigates the user to the \"connect\" page. We only\n // want the modal to open, and not route the user to another page.\n evt.stopPropagation();\n openDeleteClusterModal && openDeleteClusterModal();\n };\n }\n render() {\n const { cluster, expanded, onClick: handleClick, onSubmitSuccess, allowClusterMutations, managedService, route, } = this.props;\n const classes = classnames(CLUSTERS_LIST_ITEM_CLASS, { expanded });\n let tabIndex;\n if (expanded) {\n tabIndex = -1;\n }\n else {\n tabIndex = 0;\n }\n let hostname;\n if (!window.MANAGED_SERVICE) {\n hostname = (React.createElement(\"div\", { className: \"cluster-hostname\" }, cluster.hostname));\n }\n return (React.createElement(\"div\", { className: classes, onClick: handleClick, onKeyPress: this.handleKeyPress, tabIndex: tabIndex, role: \"button\" },\n React.createElement(ClusterProfileIcon, { className: \"cluster-icon\", profile: cluster.profile, size: \"2x\" }),\n React.createElement(\"div\", { className: \"cluster-info\" },\n React.createElement(\"div\", { className: \"cluster-header\" },\n React.createElement(\"div\", { className: \"cluster-text\" },\n React.createElement(\"div\", { className: \"cluster-name\" }, cluster.name),\n hostname,\n React.createElement(\"div\", { className: \"cluster-description\" }, cluster.description ||\n \"This cluster has no description.\")),\n allowClusterMutations && (React.createElement(\"div\", { className: \"cluster-actions\" },\n React.createElement(Button, { className: \"delete-cluster-icon\", ghost: true, title: \"Delete Cluster\", icon: {\n icon: \"trash-alt\",\n iconType: \"regular\",\n }, onClick: this.handleClickDeleteCluster })))),\n expanded && (React.createElement(React.Fragment, null,\n React.createElement(ConnectToClusterForm, { initialError: route.params.initialError, initialValues: {\n username: cluster.defaultUser || \"\",\n password: \"\",\n }, form: `ConnectToClusterForm_${cluster.id}`, cluster: cluster, onSubmitSuccess: (result, dispatch, props) => {\n onSubmitSuccess(props.cluster.id);\n }, managedService: managedService, samlEnabled: cluster.samlEnabled }),\n React.createElement(\"a\", { className: \"back-to-clusters-list\", onMouseDown: this.handleClickBackToClustersList },\n React.createElement(Icon, { icon: \"angle-left\" }),\n \" Connect to a different cluster\"))))));\n }\n}\nexport const ClustersListItem = connect((s) => ({\n allowClusterMutations: s.clusters.allowClusterMutations,\n managedService: s.clusters.managedService,\n route: selectRoute(s),\n}))(withRouter(BaseClustersListItem));\nclass BaseClustersList extends React.Component {\n constructor(props) {\n super(props);\n this.handleClickCluster = (clusterId) => {\n this.props.router.navigate(\"connect.cluster\", {\n clusterId,\n });\n analytics.track(\"click-cluster\", { category: \"connect\" });\n };\n this.handleOpenFeedbackModal = () => {\n const { changeFeedbackModalStatus } = this.props;\n changeFeedbackModalStatus(\"OPEN\");\n analytics.track(\"click-feedback\", {\n category: \"clusters-list\",\n });\n };\n this.handleOpenDeleteClusterModal = (clusterId) => {\n this.setState({\n currentDeleteClusterId: clusterId,\n });\n };\n this.handleCloseDeleteClusterModal = () => {\n this.setState({\n currentDeleteClusterId: undefined,\n });\n };\n this.renderAddCreateButton = (routerInfo, title, description) => {\n return (React.createElement(InternalLink, { className: \"add-new-cluster-btn\", routeInfo: routerInfo, underlineOnHover: false },\n React.createElement(\"div\", { className: \"icon-wrapper\" },\n React.createElement(Icon, { icon: \"plus\", size: \"2x\" })),\n React.createElement(\"div\", { className: \"add-text\" },\n React.createElement(\"div\", { className: \"title\" }, title),\n React.createElement(\"div\", { className: \"description\" }, description))));\n };\n this.state = {\n currentDeleteClusterId: undefined,\n };\n }\n componentDidMount() {\n this.props.dispatch(getClusters());\n }\n render() {\n const { clusters, error: errorMsg, onSubmitSuccess, allowClusterMutations, disableAddNewClusterUI, } = this.props;\n const { currentDeleteClusterId } = this.state;\n const currentCluster = _.find(clusters, { id: currentDeleteClusterId });\n const clusterProfile = currentCluster\n ? currentCluster.profile\n : undefined;\n if (errorMsg) {\n return React.createElement(\"div\", { className: \"error-msg\" }, errorMsg);\n }\n else if (clusters === undefined) {\n return React.createElement(Loading, { size: \"large\" });\n }\n else {\n let addNewClusterButton = null;\n // We render the add new cluster button if cluster mutations are allowed and if\n // we are rendering the entire clusters list.\n if (allowClusterMutations && !disableAddNewClusterUI) {\n if (isCreateClusterPageAvailable) {\n addNewClusterButton = this.renderAddCreateButton({ name: \"create-cluster\" }, \"Add or Create Cluster\", \"Add an existing cluster or create a new cluster\");\n }\n else {\n addNewClusterButton = this.renderAddCreateButton({ name: \"connect.new\" }, \"Add New Cluster\", \"Add new cluster to SingleStore Studio\");\n }\n }\n const inner = (React.createElement(React.Fragment, null,\n addNewClusterButton,\n React.createElement(\"div\", { className: \"clusters-list\" }, _.map(clusters, (cluster) => (React.createElement(ClustersListItem, { onSubmitSuccess: onSubmitSuccess, key: cluster.id, cluster: cluster, expanded: false, onClick: () => this.handleClickCluster(cluster.id), openDeleteClusterModal: () => {\n this.handleOpenDeleteClusterModal(cluster.id);\n } }))))));\n return (React.createElement(React.Fragment, null,\n React.createElement(\"div\", { className: \"clusters-list-page\" },\n React.createElement(\"div\", { className: \"clusters-list-main\" },\n React.createElement(\"div\", { className: \"header\" },\n React.createElement(\"h2\", null,\n React.createElement(\"div\", null,\n \"Studio makes it easy to monitor all of your SingleStore DB clusters in one place.\",\n \" \",\n React.createElement(ExternalLink, { name: \"about-studio\", category: \"connect\" }, \"Learn more about Studio\"),\n \" \",\n \"or\",\n \" \",\n React.createElement(\"a\", { tabIndex: 0, role: \"button\", onClick: this.handleOpenFeedbackModal }, \"send feedback\"),\n \".\"))),\n inner),\n React.createElement(\"div\", { className: \"clusters-list-footer\" },\n \"\\u00A9 SingleStore, Inc. \\u2022 Studio Version\",\n \" \",\n STUDIO_VERSION)),\n currentDeleteClusterId && (React.createElement(DeleteClusterForm, { form: `DeleteClusterForm_${currentDeleteClusterId}`, clusterId: currentDeleteClusterId, clusterProfile: clusterProfile, onClose: this.handleCloseDeleteClusterModal, onSubmitSuccess: this.handleCloseDeleteClusterModal }))));\n }\n }\n}\n// Redux `connect`-ing generic components is not currently possible/easy to do\n// in a clean way so we leverage a type assertion.\nexport const ClustersList = compose(withRouter, withFeedbackModal, connect((s) => ({\n clusters: selectClusters(s),\n error: selectClustersError(s),\n allowClusterMutations: s.clusters.allowClusterMutations,\n disableAddNewClusterUI: s.clusters.disableAddNewClusterUI,\n})))(BaseClustersList);\n","import { Loading } from \"@single-js/common/components/loading/loading\";\nimport { decodeClusterJwt } from \"data/models\";\nimport { selectClusters, selectClustersError } from \"data/selectors/clusters\";\nimport _ from \"lodash\";\nimport * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { withRouter } from \"react-router5\";\nimport { ClustersListItem } from \"view/connect/clusters-list\";\nimport { getClusters } from \"worker/api/clusters\";\nimport \"./connect-to-cluster.scss\";\nclass ConnectToClusterPage extends React.Component {\n constructor() {\n super(...arguments);\n this.renderErrorMsg = (errorMsg) => (React.createElement(\"div\", { className: \"error-msg\" }, errorMsg));\n }\n componentDidMount() {\n this.props.dispatch(getClusters());\n }\n render() {\n const { clusters, error: errorMsg, clusterId, onSubmitSuccess, } = this.props;\n // If the cluster ID is a cluster JWT, then we are dealing with a JWT\n // connection.\n const jwtCluster = decodeClusterJwt(clusterId);\n if (jwtCluster) {\n return (React.createElement(ClustersListItem, { onSubmitSuccess: onSubmitSuccess, cluster: jwtCluster, expanded: true }));\n }\n let inner = null;\n if (errorMsg) {\n inner = this.renderErrorMsg(errorMsg);\n }\n else if (!clusters) {\n inner = React.createElement(Loading, { size: \"large\" });\n }\n else {\n const cluster = _.find(clusters, (cluster) => cluster.id === clusterId);\n if (!cluster) {\n inner = this.renderErrorMsg(`No cluster with ID \"${clusterId}\" found.`);\n }\n else {\n // The reason we pass an `onMouseDown` to the InternalLink component is\n // to bypass a potential form blur event that happens when the link is\n // clicked and the connect to cluster form is focused.\n inner = (React.createElement(React.Fragment, null,\n React.createElement(ClustersListItem, { onSubmitSuccess: onSubmitSuccess, cluster: cluster, expanded: true })));\n }\n }\n return React.createElement(\"div\", { className: \"connect-to-cluster-page\" }, inner);\n }\n}\nexport default connect((s) => ({\n clusters: selectClusters(s),\n error: selectClustersError(s),\n}))(withRouter(ConnectToClusterPage));\n","import { FullScreen } from \"@single-js/common/components/fullscreen/fullscreen\";\nimport BANNER_LOGO from \"assets/images/banner-logo.svg\";\nimport * as React from \"react\";\nimport InternalLink from \"view/common/internal-link\";\nimport \"./wrapper.scss\";\n// This component is wrapped around some of the /connect pages, namely the\n// clusters list page and the connect-to-cluster page.\nexport default function ConnectWrapper({ children }) {\n const logo = React.createElement(\"img\", { src: BANNER_LOGO, alt: \"SingleStore Studio\" });\n // When `window.ROOT_REDIRECT` is defined, the top banner logo points to\n // that instead of the home page (which doesn't exist).\n let logoWrapper;\n if (window.ROOT_REDIRECT) {\n logoWrapper = React.createElement(\"a\", { href: window.ROOT_REDIRECT }, logo);\n }\n else {\n logoWrapper = (React.createElement(InternalLink, { routeInfo: { name: \"connect\" }, category: \"connect\" }, logo));\n }\n return (React.createElement(FullScreen, { className: \"connect-wrapper\", fullWidth: true },\n React.createElement(\"div\", { className: \"banner\" }, logoWrapper),\n React.createElement(\"div\", { className: \"children-container\" }, children)));\n}\n","import { initConnection, } from \"@single-js/common/core/sql/actions\";\nimport { selectClusters, selectRoute } from \"data/selectors\";\nimport _ from \"lodash\";\nimport * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { withRouter } from \"react-router5\";\nimport { compose } from \"redux\";\nimport { endsWithSegment } from \"router5-helpers\";\nimport * as analytics from \"util/segment\";\nimport Sentry from \"util/sentry\";\nimport { readStudioConfig } from \"util/studio-config\";\nimport SAMLAssert from \"view/api/saml-assert\";\nimport AddNewClusterPage from \"view/connect/add-new-cluster\";\nimport { ClustersList } from \"view/connect/clusters-list\";\nimport ConnectToCluster from \"view/connect/connect-to-cluster\";\nimport ConnectWrapper from \"view/connect/wrapper\";\nclass ConnectController extends React.Component {\n constructor() {\n super(...arguments);\n this.state = {\n triedAutoConnection: false,\n };\n // To be executed after a successful connection to a cluster or the successful\n // creation of a cluster.\n this.handleConnect = (clusterId) => {\n const { router, clusters, route: { params: { redirect }, }, } = this.props;\n if (clusters) {\n const cluster = _.find(clusters, { id: clusterId });\n if (cluster) {\n Sentry.setClusterHostname(cluster.hostname);\n Sentry.setClusterPort(cluster.port);\n }\n }\n if (redirect) {\n const redirectInfo = JSON.parse(redirect);\n if (redirectInfo && redirectInfo.name && redirectInfo.params) {\n router.navigate(redirectInfo.name, redirectInfo.params);\n return;\n }\n }\n router.navigate(\"cluster.dashboard\", { clusterId });\n };\n this.handleAddClusterCancel = () => {\n const { router } = this.props;\n router.navigate(\"connect\");\n analytics.trackInternalLinkClick(\"connect\");\n };\n }\n componentDidUpdate() {\n const { dispatch, route: { params: { clusterId, redirect }, }, clusters, } = this.props;\n const { triedAutoConnection } = this.state;\n const config = readStudioConfig();\n const clusterConfig = config.clusters[clusterId];\n const cluster = _.find(clusters, (cluster) => cluster.id === clusterId);\n let autoLogin = false;\n if (clusterConfig.autoLogin) {\n autoLogin = redirect || clusterConfig.autoLogin.kerberosAutoLogin;\n }\n // We try to auto-connect to clusters for which we have a saved\n // pair in localStorage. However, we only try\n // once and we only try if the user has the configuration\n // kerberosAutoLogin on local storage or `redirect` in their URL params\n // which means they're trying to load some ClusterController page and\n // not the actual Connect Page.\n if (clusterId && !triedAutoConnection && autoLogin) {\n // Check if there are auto-login credentials in the studio config.\n // If there are, use them to try to auto-connect, and ignore any\n // errors.\n if (clusterConfig.autoLogin && cluster && !cluster.samlEnabled) {\n const { username, password } = clusterConfig.autoLogin;\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({\n triedAutoConnection: true,\n }, () => {\n Promise.resolve(dispatch(initConnection({\n kind: \"CONNECT_CONFIG\",\n clusterId,\n user: username,\n password,\n hostname: cluster.hostname,\n port: cluster.port,\n websocket: cluster.websocket,\n websocketSSL: cluster.websocketSSL,\n kerberosAutoLogin: cluster.kerberosAutoLogin,\n monitoring: cluster.monitoring,\n }))).then((a) => {\n if (!a.error) {\n this.handleConnect(clusterId);\n }\n });\n });\n }\n }\n }\n render() {\n const { route, route: { params: { clusterId }, }, allowClusterMutations, } = this.props;\n const testRoute = endsWithSegment(route);\n let page = null;\n // Creating a new cluster is only valid if allowClusterMutations is set\n // to true.\n if (testRoute(\"new\") && allowClusterMutations) {\n return (React.createElement(AddNewClusterPage, { onSubmitSuccess: this.handleConnect, onCancel: this.handleAddClusterCancel }));\n }\n else if (testRoute(\"cluster\")) {\n page = (React.createElement(ConnectToCluster, { clusterId: clusterId, onSubmitSuccess: this.handleConnect }));\n }\n else if (testRoute(\"connect\")) {\n page = React.createElement(ClustersList, { onSubmitSuccess: this.handleConnect });\n }\n else if (testRoute(\"saml-assert\")) {\n page = React.createElement(SAMLAssert, { onSubmitSuccess: this.handleConnect });\n }\n else {\n page = (React.createElement(\"div\", null,\n React.createElement(\"h1\", null, \"404 not found\")));\n }\n return React.createElement(ConnectWrapper, null, page);\n }\n}\nexport default compose(withRouter, connect((s) => {\n return {\n allowClusterMutations: s.clusters.allowClusterMutations,\n route: selectRoute(s),\n clusters: selectClusters(s),\n };\n}))(ConnectController);\n","import loadable from \"@loadable/component\";\nimport { ErrorBoundary } from \"@single-js/common/components/error-boundary/error-boundary\";\nimport { FullscreenLoading } from \"@single-js/common/components/fullscreen/fullscreen-loading\";\nimport { webPing } from \"data/actions\";\nimport React, { Suspense } from \"react\";\nimport { connect } from \"react-redux\";\nimport { startsWithSegment } from \"router5-helpers\";\nimport ConnectController from \"view/controllers/connect\";\nimport { proxyPing, proxyPingStop } from \"worker/api/proxy\";\n// Lazily imported due to bundle size\nconst ClusterController = loadable(() => import(\n/* webpackChunkName: \"cluster-controller\", webpackPrefetch: true */ \"view/controllers/cluster\"), {\n fallback: React.createElement(FullscreenLoading, null),\n});\n// Lazily imported due to bundle size\nconst CreateCluster = loadable(() => import(\n/* webpackChunkName: \"create-cluster\"*/ \"view/create-cluster/create-cluster\"), {\n fallback: React.createElement(FullscreenLoading, null),\n});\nimport { selectRoute } from \"data/selectors/routes\";\nconst WEB_PING_INTERVAL = 600000; //10min;\nclass RouterController extends React.Component {\n componentDidMount() {\n this.props.dispatch(proxyPing());\n this.props.dispatch(webPing());\n this.webPingIntervalId = window.setInterval(() => this.props.dispatch(webPing()), WEB_PING_INTERVAL);\n }\n componentWillUnmount() {\n this.props.dispatch(proxyPingStop());\n window.clearInterval(this.webPingIntervalId);\n }\n render() {\n const { route } = this.props;\n const testRoute = startsWithSegment(route);\n let controller;\n if (testRoute(\"connect\") || testRoute(\"api.saml-assert\")) {\n controller = React.createElement(ConnectController, null);\n }\n else if (testRoute(\"cluster\")) {\n controller = React.createElement(ClusterController, null);\n }\n else if (testRoute(\"create-cluster\")) {\n controller = React.createElement(CreateCluster, null);\n }\n else {\n controller = (React.createElement(\"div\", null,\n React.createElement(\"h1\", null, \"404 not found\")));\n }\n return (React.createElement(ErrorBoundary, { name: \"studio-root\", generalErrorProps: {\n errorHeader: \"An error occurred, please refresh the page and try again.\",\n error: \"If the error persists, please contact the support team.\",\n } },\n React.createElement(Suspense, { fallback: React.createElement(FullscreenLoading, null) }, controller)));\n }\n}\nexport default connect((s) => ({\n route: selectRoute(s),\n}))(RouterController);\n","/** PURE_IMPORTS_START tslib,_util_subscribeToResult,_OuterSubscriber,_InnerSubscriber,_map,_observable_from PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { map } from './map';\nimport { from } from '../observable/from';\nexport function mergeMap(project, resultSelector, concurrent) {\n if (concurrent === void 0) {\n concurrent = Number.POSITIVE_INFINITY;\n }\n if (typeof resultSelector === 'function') {\n return function (source) { return source.pipe(mergeMap(function (a, i) { return from(project(a, i)).pipe(map(function (b, ii) { return resultSelector(a, b, i, ii); })); }, concurrent)); };\n }\n else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return function (source) { return source.lift(new MergeMapOperator(project, concurrent)); };\n}\nvar MergeMapOperator = /*@__PURE__*/ (function () {\n function MergeMapOperator(project, concurrent) {\n if (concurrent === void 0) {\n concurrent = Number.POSITIVE_INFINITY;\n }\n this.project = project;\n this.concurrent = concurrent;\n }\n MergeMapOperator.prototype.call = function (observer, source) {\n return source.subscribe(new MergeMapSubscriber(observer, this.project, this.concurrent));\n };\n return MergeMapOperator;\n}());\nexport { MergeMapOperator };\nvar MergeMapSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(MergeMapSubscriber, _super);\n function MergeMapSubscriber(destination, project, concurrent) {\n if (concurrent === void 0) {\n concurrent = Number.POSITIVE_INFINITY;\n }\n var _this = _super.call(this, destination) || this;\n _this.project = project;\n _this.concurrent = concurrent;\n _this.hasCompleted = false;\n _this.buffer = [];\n _this.active = 0;\n _this.index = 0;\n return _this;\n }\n MergeMapSubscriber.prototype._next = function (value) {\n if (this.active < this.concurrent) {\n this._tryNext(value);\n }\n else {\n this.buffer.push(value);\n }\n };\n MergeMapSubscriber.prototype._tryNext = function (value) {\n var result;\n var index = this.index++;\n try {\n result = this.project(value, index);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.active++;\n this._innerSub(result, value, index);\n };\n MergeMapSubscriber.prototype._innerSub = function (ish, value, index) {\n var innerSubscriber = new InnerSubscriber(this, undefined, undefined);\n var destination = this.destination;\n destination.add(innerSubscriber);\n subscribeToResult(this, ish, value, index, innerSubscriber);\n };\n MergeMapSubscriber.prototype._complete = function () {\n this.hasCompleted = true;\n if (this.active === 0 && this.buffer.length === 0) {\n this.destination.complete();\n }\n this.unsubscribe();\n };\n MergeMapSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.destination.next(innerValue);\n };\n MergeMapSubscriber.prototype.notifyComplete = function (innerSub) {\n var buffer = this.buffer;\n this.remove(innerSub);\n this.active--;\n if (buffer.length > 0) {\n this._next(buffer.shift());\n }\n else if (this.active === 0 && this.hasCompleted) {\n this.destination.complete();\n }\n };\n return MergeMapSubscriber;\n}(OuterSubscriber));\nexport { MergeMapSubscriber };\n//# sourceMappingURL=mergeMap.js.map\n","/** PURE_IMPORTS_START _mergeMap,_util_identity PURE_IMPORTS_END */\nimport { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nexport function mergeAll(concurrent) {\n if (concurrent === void 0) {\n concurrent = Number.POSITIVE_INFINITY;\n }\n return mergeMap(identity, concurrent);\n}\n//# sourceMappingURL=mergeAll.js.map\n","var parent = require('../../es/array/flat-map');\n\nmodule.exports = parent;\n","require('../../modules/es.array.flat-map');\nrequire('../../modules/es.array.unscopables.flat-map');\nvar entryUnbind = require('../../internals/entry-unbind');\n\nmodule.exports = entryUnbind('Array', 'flatMap');\n","'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar aFunction = require('../internals/a-function');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flatMap` method\n// https://github.com/tc39/proposal-flatMap\n$({ target: 'Array', proto: true }, {\n flatMap: function flatMap(callbackfn /* , thisArg */) {\n var O = toObject(this);\n var sourceLen = toLength(O.length);\n var A;\n aFunction(callbackfn);\n A = arraySpeciesCreate(O, 0);\n A.length = flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n return A;\n }\n});\n","'use strict';\nvar isArray = require('../internals/is-array');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\n\n// `FlattenIntoArray` abstract operation\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? bind(mapper, thisArg, 3) : false;\n var element;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n if (depth > 0 && isArray(element)) {\n targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;\n } else {\n if (targetIndex >= 0x1FFFFFFFFFFFFF) throw TypeError('Exceed the acceptable array length');\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n};\n\nmodule.exports = flattenIntoArray;\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.github.io/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n","var NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n // eslint-disable-next-line no-undef\n && !Symbol.sham\n // eslint-disable-next-line no-undef\n && typeof Symbol.iterator == 'symbol';\n","// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\naddToUnscopables('flatMap');\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n /* global ActiveXObject */\n activeXDocument = document.domain && new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.github.io/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\n\nvar call = Function.call;\n\nmodule.exports = function (CONSTRUCTOR, METHOD, length) {\n return bind(call, global[CONSTRUCTOR].prototype[METHOD], length);\n};\n","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nmodule.exports = _isNativeFunction;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\n\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n module.exports = _construct = Reflect.construct;\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n } else {\n module.exports = _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n }\n\n return _construct.apply(null, arguments);\n}\n\nmodule.exports = _construct;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nmodule.exports = _isNativeReflectConstruct;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var SqlString = exports;\n\nvar ID_GLOBAL_REGEXP = /`/g;\nvar QUAL_GLOBAL_REGEXP = /\\./g;\nvar CHARS_GLOBAL_REGEXP = /[\\0\\b\\t\\n\\r\\x1a\\\"\\'\\\\]/g; // eslint-disable-line no-control-regex\nvar CHARS_ESCAPE_MAP = {\n '\\0' : '\\\\0',\n '\\b' : '\\\\b',\n '\\t' : '\\\\t',\n '\\n' : '\\\\n',\n '\\r' : '\\\\r',\n '\\x1a' : '\\\\Z',\n '\"' : '\\\\\"',\n '\\'' : '\\\\\\'',\n '\\\\' : '\\\\\\\\'\n};\n\nSqlString.escapeId = function escapeId(val, forbidQualified) {\n if (Array.isArray(val)) {\n var sql = '';\n\n for (var i = 0; i < val.length; i++) {\n sql += (i === 0 ? '' : ', ') + SqlString.escapeId(val[i], forbidQualified);\n }\n\n return sql;\n } else if (forbidQualified) {\n return '`' + String(val).replace(ID_GLOBAL_REGEXP, '``') + '`';\n } else {\n return '`' + String(val).replace(ID_GLOBAL_REGEXP, '``').replace(QUAL_GLOBAL_REGEXP, '`.`') + '`';\n }\n};\n\nSqlString.escape = function escape(val, stringifyObjects, timeZone) {\n if (val === undefined || val === null) {\n return 'NULL';\n }\n\n switch (typeof val) {\n case 'boolean': return (val) ? 'true' : 'false';\n case 'number': return val + '';\n case 'object':\n if (val instanceof Date) {\n return SqlString.dateToString(val, timeZone || 'local');\n } else if (Array.isArray(val)) {\n return SqlString.arrayToList(val, timeZone);\n } else if (Buffer.isBuffer(val)) {\n return SqlString.bufferToString(val);\n } else if (typeof val.toSqlString === 'function') {\n return String(val.toSqlString());\n } else if (stringifyObjects) {\n return escapeString(val.toString());\n } else {\n return SqlString.objectToValues(val, timeZone);\n }\n default: return escapeString(val);\n }\n};\n\nSqlString.arrayToList = function arrayToList(array, timeZone) {\n var sql = '';\n\n for (var i = 0; i < array.length; i++) {\n var val = array[i];\n\n if (Array.isArray(val)) {\n sql += (i === 0 ? '' : ', ') + '(' + SqlString.arrayToList(val, timeZone) + ')';\n } else {\n sql += (i === 0 ? '' : ', ') + SqlString.escape(val, true, timeZone);\n }\n }\n\n return sql;\n};\n\nSqlString.format = function format(sql, values, stringifyObjects, timeZone) {\n if (values == null) {\n return sql;\n }\n\n if (!Array.isArray(values)) {\n values = [values];\n }\n\n var chunkIndex = 0;\n var placeholdersRegex = /\\?+/g;\n var result = '';\n var valuesIndex = 0;\n var match;\n\n while (valuesIndex < values.length && (match = placeholdersRegex.exec(sql))) {\n var len = match[0].length;\n\n if (len > 2) {\n continue;\n }\n\n var value = len === 2\n ? SqlString.escapeId(values[valuesIndex])\n : SqlString.escape(values[valuesIndex], stringifyObjects, timeZone);\n\n result += sql.slice(chunkIndex, match.index) + value;\n chunkIndex = placeholdersRegex.lastIndex;\n valuesIndex++;\n }\n\n if (chunkIndex === 0) {\n // Nothing was replaced\n return sql;\n }\n\n if (chunkIndex < sql.length) {\n return result + sql.slice(chunkIndex);\n }\n\n return result;\n};\n\nSqlString.dateToString = function dateToString(date, timeZone) {\n var dt = new Date(date);\n\n if (isNaN(dt.getTime())) {\n return 'NULL';\n }\n\n var year;\n var month;\n var day;\n var hour;\n var minute;\n var second;\n var millisecond;\n\n if (timeZone === 'local') {\n year = dt.getFullYear();\n month = dt.getMonth() + 1;\n day = dt.getDate();\n hour = dt.getHours();\n minute = dt.getMinutes();\n second = dt.getSeconds();\n millisecond = dt.getMilliseconds();\n } else {\n var tz = convertTimezone(timeZone);\n\n if (tz !== false && tz !== 0) {\n dt.setTime(dt.getTime() + (tz * 60000));\n }\n\n year = dt.getUTCFullYear();\n month = dt.getUTCMonth() + 1;\n day = dt.getUTCDate();\n hour = dt.getUTCHours();\n minute = dt.getUTCMinutes();\n second = dt.getUTCSeconds();\n millisecond = dt.getUTCMilliseconds();\n }\n\n // YYYY-MM-DD HH:mm:ss.mmm\n var str = zeroPad(year, 4) + '-' + zeroPad(month, 2) + '-' + zeroPad(day, 2) + ' ' +\n zeroPad(hour, 2) + ':' + zeroPad(minute, 2) + ':' + zeroPad(second, 2) + '.' +\n zeroPad(millisecond, 3);\n\n return escapeString(str);\n};\n\nSqlString.bufferToString = function bufferToString(buffer) {\n return 'X' + escapeString(buffer.toString('hex'));\n};\n\nSqlString.objectToValues = function objectToValues(object, timeZone) {\n var sql = '';\n\n for (var key in object) {\n var val = object[key];\n\n if (typeof val === 'function') {\n continue;\n }\n\n sql += (sql.length === 0 ? '' : ', ') + SqlString.escapeId(key) + ' = ' + SqlString.escape(val, true, timeZone);\n }\n\n return sql;\n};\n\nSqlString.raw = function raw(sql) {\n if (typeof sql !== 'string') {\n throw new TypeError('argument sql must be a string');\n }\n\n return {\n toSqlString: function toSqlString() { return sql; }\n };\n};\n\nfunction escapeString(val) {\n var chunkIndex = CHARS_GLOBAL_REGEXP.lastIndex = 0;\n var escapedVal = '';\n var match;\n\n while ((match = CHARS_GLOBAL_REGEXP.exec(val))) {\n escapedVal += val.slice(chunkIndex, match.index) + CHARS_ESCAPE_MAP[match[0]];\n chunkIndex = CHARS_GLOBAL_REGEXP.lastIndex;\n }\n\n if (chunkIndex === 0) {\n // Nothing was escaped\n return \"'\" + val + \"'\";\n }\n\n if (chunkIndex < val.length) {\n return \"'\" + escapedVal + val.slice(chunkIndex) + \"'\";\n }\n\n return \"'\" + escapedVal + \"'\";\n}\n\nfunction zeroPad(number, length) {\n number = number.toString();\n while (number.length < length) {\n number = '0' + number;\n }\n\n return number;\n}\n\nfunction convertTimezone(tz) {\n if (tz === 'Z') {\n return 0;\n }\n\n var m = tz.match(/([\\+\\-\\s])(\\d\\d):?(\\d\\d)?/);\n if (m) {\n return (m[1] === '-' ? -1 : 1) * (parseInt(m[2], 10) + ((m[3] ? parseInt(m[3], 10) : 0) / 60)) * 60;\n }\n return false;\n}\n","'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\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n 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 =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\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 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 parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","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 * 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","let MAX_PACKET_LENGTH = Math.pow(2, 24) - 1;\nlet MUL_32BIT = Math.pow(2, 32);\nlet PacketHeader = require(\"./PacketHeader\");\nlet BigNumber = require(\"../../../vendor/bignumber.js/bignumber\").default;\nlet BufferList = require(\"./BufferList\");\nlet Buffer = require(\"buffer\").Buffer;\n\nlet NonLoggableError = require(\"../../../util/logging\").NonLoggableError;\n\nmodule.exports = Parser;\nfunction Parser(options) {\n options = options || {};\n\n this._supportBigNumbers =\n options.config && options.config.supportBigNumbers;\n this._buffer = new Buffer(0);\n this._nextBuffers = new BufferList();\n this._longPacketBuffers = new BufferList();\n this._offset = 0;\n this._packetEnd = null;\n this._packetHeader = null;\n this._packetOffset = null;\n this._onError =\n options.onError ||\n function (err) {\n throw err;\n };\n this._onPacket = options.onPacket || function () {};\n this._nextPacketNumber = 0;\n this._encoding = \"utf-8\";\n this._paused = false;\n}\n\nParser.prototype.write = function write(chunk) {\n this._nextBuffers.push(chunk);\n\n while (!this._paused) {\n if (!this._packetHeader) {\n if (!this._combineNextBuffers(4)) {\n break;\n }\n\n this._packetHeader = new PacketHeader(\n this.parseUnsignedNumber(3),\n this.parseUnsignedNumber(1)\n );\n\n if (this._packetHeader.number !== this._nextPacketNumber) {\n let err = new NonLoggableError(\n \"Packets out of order. Got: \" +\n this._packetHeader.number +\n \" \" +\n \"Expected: \" +\n this._nextPacketNumber\n );\n\n err.code = \"PROTOCOL_PACKETS_OUT_OF_ORDER\";\n err.fatal = true;\n\n this._onError(err);\n }\n\n this.incrementPacketNumber();\n }\n\n if (!this._combineNextBuffers(this._packetHeader.length)) {\n break;\n }\n\n this._packetEnd = this._offset + this._packetHeader.length;\n this._packetOffset = this._offset;\n\n if (this._packetHeader.length === MAX_PACKET_LENGTH) {\n this._longPacketBuffers.push(\n this._buffer.slice(this._packetOffset, this._packetEnd)\n );\n\n this._advanceToNextPacket();\n continue;\n }\n\n this._combineLongPacketBuffers();\n\n // Try...finally to ensure exception safety. Unfortunately this is costing\n // us up to ~10% performance in some benchmarks.\n let hadException = true;\n try {\n this._onPacket(this._packetHeader);\n hadException = false;\n } catch (err) {\n if (\n !err ||\n typeof err.code !== \"string\" ||\n err.code.substr(0, 7) !== \"PARSER_\"\n ) {\n throw err; // Rethrow non-MySQL errors\n }\n\n // Pass down parser errors\n this._onError(err);\n hadException = false;\n } finally {\n this._advanceToNextPacket();\n\n // If we had an exception, the parser while loop will be broken out\n // of after the finally block. So we need to make sure to re-enter it\n // to continue parsing any bytes that may already have been received.\n if (hadException) {\n process.nextTick(this.write.bind(this));\n }\n }\n }\n};\n\nParser.prototype.append = function append(chunk) {\n if (!chunk || chunk.length === 0) {\n return;\n }\n\n // Calculate slice ranges\n let sliceEnd = this._buffer.length;\n let sliceStart =\n this._packetOffset === null ? this._offset : this._packetOffset;\n let sliceLength = sliceEnd - sliceStart;\n\n // Get chunk data\n let buffer = null;\n let chunks = !(chunk instanceof Array || Array.isArray(chunk))\n ? [chunk]\n : chunk;\n let length = 0;\n let offset = 0;\n\n for (let i = 0; i < chunks.length; i++) {\n length += chunks[i].length;\n }\n\n if (sliceLength !== 0) {\n // Create a new Buffer\n buffer = new Buffer(sliceLength + length);\n offset = 0;\n\n // Copy data slice\n offset += this._buffer.copy(buffer, 0, sliceStart, sliceEnd);\n\n // Copy chunks\n for (let i = 0; i < chunks.length; i++) {\n offset += chunks[i].copy(buffer, offset);\n }\n } else if (chunks.length > 1) {\n // Create a new Buffer\n buffer = new Buffer(length);\n offset = 0;\n\n // Copy chunks\n for (let i = 0; i < chunks.length; i++) {\n offset += chunks[i].copy(buffer, offset);\n }\n } else {\n // Buffer is the only chunk\n buffer = chunks[0];\n }\n\n // Adjust data-tracking pointers\n this._buffer = buffer;\n this._offset = this._offset - sliceStart;\n this._packetEnd =\n this._packetEnd !== null ? this._packetEnd - sliceStart : null;\n this._packetOffset =\n this._packetOffset !== null ? this._packetOffset - sliceStart : null;\n};\n\nParser.prototype.pause = function () {\n this._paused = true;\n};\n\nParser.prototype.resume = function () {\n this._paused = false;\n\n // nextTick() to avoid entering write() multiple times within the same stack\n // which would cause problems as write manipulates the state of the object.\n process.nextTick(this.write.bind(this));\n};\n\nParser.prototype.peak = function () {\n return this._buffer[this._offset];\n};\n\nParser.prototype.parseUnsignedNumber = function parseUnsignedNumber(bytes) {\n if (bytes === 1) {\n return this._buffer[this._offset++];\n }\n\n let buffer = this._buffer;\n let offset = this._offset + bytes - 1;\n let value = 0;\n\n if (bytes > 4) {\n let err = new NonLoggableError(\n \"parseUnsignedNumber: Supports only up to 4 bytes\"\n );\n err.offset = this._offset - this._packetOffset - 1;\n err.code = \"PARSER_UNSIGNED_TOO_LONG\";\n throw err;\n }\n\n while (offset >= this._offset) {\n value = ((value << 8) | buffer[offset]) >>> 0;\n offset--;\n }\n\n this._offset += bytes;\n\n return value;\n};\n\nParser.prototype.parseLengthCodedString = function () {\n let length = this.parseLengthCodedNumber();\n\n if (length === null) {\n return null;\n }\n\n return this.parseString(length);\n};\n\nParser.prototype.parseLengthCodedBuffer = function () {\n let length = this.parseLengthCodedNumber();\n\n if (length === null) {\n return null;\n }\n\n return this.parseBuffer(length);\n};\n\nParser.prototype.parseLengthCodedNumber = function parseLengthCodedNumber() {\n if (this._offset >= this._buffer.length) {\n let err = new NonLoggableError(\"Parser: read past end\");\n err.offset = this._offset - this._packetOffset;\n err.code = \"PARSER_READ_PAST_END\";\n throw err;\n }\n\n let bits = this._buffer[this._offset++];\n\n if (bits <= 250) {\n return bits;\n }\n\n switch (bits) {\n case 251:\n return null;\n\n case 252:\n return this.parseUnsignedNumber(2);\n\n case 253:\n return this.parseUnsignedNumber(3);\n\n case 254:\n break;\n\n default: {\n let err = new NonLoggableError(\n \"Unexpected first byte\" +\n (bits ? \": 0x\" + bits.toString(16) : \"\")\n );\n err.offset = this._offset - this._packetOffset - 1;\n err.code = \"PARSER_BAD_LENGTH_BYTE\";\n throw err;\n }\n }\n\n let low = this.parseUnsignedNumber(4);\n let high = this.parseUnsignedNumber(4);\n let value;\n\n if (high >>> 21) {\n value = new BigNumber(low)\n .plus(new BigNumber(MUL_32BIT).times(high))\n .toString();\n\n if (this._supportBigNumbers) {\n return value;\n }\n\n let err = new NonLoggableError(\n \"parseLengthCodedNumber: JS precision range exceeded, \" +\n 'number is >= 53 bit: \"' +\n value +\n '\"'\n );\n err.offset = this._offset - this._packetOffset - 8;\n err.code = \"PARSER_JS_PRECISION_RANGE_EXCEEDED\";\n throw err;\n }\n\n value = low + MUL_32BIT * high;\n\n return value;\n};\n\nParser.prototype.parseFiller = function (length) {\n return this.parseBuffer(length);\n};\n\nParser.prototype.parseNullTerminatedBuffer = function () {\n let end = this._nullByteOffset();\n let value = this._buffer.slice(this._offset, end);\n this._offset = end + 1;\n\n return value;\n};\n\nParser.prototype.parseNullTerminatedString = function () {\n let end = this._nullByteOffset();\n let value = this._buffer.toString(this._encoding, this._offset, end);\n this._offset = end + 1;\n\n return value;\n};\n\nParser.prototype._nullByteOffset = function () {\n let offset = this._offset;\n\n while (this._buffer[offset] !== 0x00) {\n offset++;\n\n if (offset >= this._buffer.length) {\n let err = new NonLoggableError(\n \"Offset of null terminated string not found.\"\n );\n err.offset = this._offset - this._packetOffset;\n err.code = \"PARSER_MISSING_NULL_BYTE\";\n throw err;\n }\n }\n\n return offset;\n};\n\nParser.prototype.parsePacketTerminatedBuffer =\n function parsePacketTerminatedBuffer() {\n var length = this._packetEnd - this._offset;\n return this.parseBuffer(length);\n };\n\nParser.prototype.parsePacketTerminatedString = function () {\n let length = this._packetEnd - this._offset;\n return this.parseString(length);\n};\n\nParser.prototype.parseBuffer = function (length) {\n let response = new Buffer(length);\n this._buffer.copy(response, 0, this._offset, this._offset + length);\n\n this._offset += length;\n return response;\n};\n\nParser.prototype.parseString = function (length) {\n let offset = this._offset;\n let end = offset + length;\n let value = this._buffer.toString(this._encoding, offset, end);\n\n this._offset = end;\n return value;\n};\n\nParser.prototype.parseGeometryValue = function () {\n let buffer = this.parseLengthCodedBuffer();\n let offset = 4;\n\n if (buffer === null || !buffer.length) {\n return null;\n }\n\n function parseGeometry() {\n let result = null;\n let byteOrder = buffer.readUInt8(offset);\n offset += 1;\n let wkbType = byteOrder\n ? buffer.readUInt32LE(offset)\n : buffer.readUInt32BE(offset);\n offset += 4;\n switch (wkbType) {\n case 1: {\n // WKBPoint\n let x = byteOrder\n ? buffer.readDoubleLE(offset)\n : buffer.readDoubleBE(offset);\n offset += 8;\n let y = byteOrder\n ? buffer.readDoubleLE(offset)\n : buffer.readDoubleBE(offset);\n offset += 8;\n result = { x, y };\n break;\n }\n\n case 2: {\n // WKBLineString\n let numPoints = byteOrder\n ? buffer.readUInt32LE(offset)\n : buffer.readUInt32BE(offset);\n offset += 4;\n result = [];\n for (let i = numPoints; i > 0; i--) {\n let x = byteOrder\n ? buffer.readDoubleLE(offset)\n : buffer.readDoubleBE(offset);\n offset += 8;\n let y = byteOrder\n ? buffer.readDoubleLE(offset)\n : buffer.readDoubleBE(offset);\n offset += 8;\n result.push({ x, y });\n }\n break;\n }\n\n case 3: {\n // WKBPolygon\n let numRings = byteOrder\n ? buffer.readUInt32LE(offset)\n : buffer.readUInt32BE(offset);\n offset += 4;\n result = [];\n for (let i = numRings; i > 0; i--) {\n let numPoints = byteOrder\n ? buffer.readUInt32LE(offset)\n : buffer.readUInt32BE(offset);\n offset += 4;\n let line = [];\n for (let j = numPoints; j > 0; j--) {\n let x = byteOrder\n ? buffer.readDoubleLE(offset)\n : buffer.readDoubleBE(offset);\n offset += 8;\n let y = byteOrder\n ? buffer.readDoubleLE(offset)\n : buffer.readDoubleBE(offset);\n offset += 8;\n line.push({ x, y });\n }\n result.push(line);\n }\n break;\n }\n\n case 4: // WKBMultiPoint\n case 5: // WKBMultiLineString\n case 6: // WKBMultiPolygon\n case 7: {\n // WKBGeometryCollection\n let num = byteOrder\n ? buffer.readUInt32LE(offset)\n : buffer.readUInt32BE(offset);\n offset += 4;\n let result = [];\n for (let i = num; i > 0; i--) {\n result.push(parseGeometry());\n }\n break;\n }\n }\n return result;\n }\n return parseGeometry();\n};\n\nParser.prototype.reachedPacketEnd = function () {\n return this._offset === this._packetEnd;\n};\n\nParser.prototype.incrementPacketNumber = function () {\n let currentPacketNumber = this._nextPacketNumber;\n this._nextPacketNumber = (this._nextPacketNumber + 1) % 256;\n\n return currentPacketNumber;\n};\n\nParser.prototype.resetPacketNumber = function () {\n this._nextPacketNumber = 0;\n};\n\nParser.prototype.packetLength = function packetLength() {\n if (!this._packetHeader) {\n return null;\n }\n\n return this._packetHeader.length + this._longPacketBuffers.size;\n};\n\nParser.prototype._combineNextBuffers = function _combineNextBuffers(bytes) {\n let length = this._buffer.length - this._offset;\n\n if (length >= bytes) {\n return true;\n }\n\n if (length + this._nextBuffers.size < bytes) {\n return false;\n }\n\n let buffers = [];\n let bytesNeeded = bytes - length;\n\n while (bytesNeeded > 0) {\n let buffer = this._nextBuffers.shift();\n buffers.push(buffer);\n bytesNeeded -= buffer.length;\n }\n\n this.append(buffers);\n return true;\n};\n\nParser.prototype._combineLongPacketBuffers =\n function _combineLongPacketBuffers() {\n if (!this._longPacketBuffers.size) {\n return;\n }\n\n // Calculate bytes\n let remainingBytes = this._buffer.length - this._offset;\n let trailingPacketBytes = this._buffer.length - this._packetEnd;\n\n // Create buffer\n let buf = null;\n let buffer = new Buffer(remainingBytes + this._longPacketBuffers.size);\n let offset = 0;\n\n // Copy long buffers\n while ((buf = this._longPacketBuffers.shift())) {\n offset += buf.copy(buffer, offset);\n }\n\n // Copy remaining bytes\n this._buffer.copy(buffer, offset, this._offset);\n\n this._buffer = buffer;\n this._offset = 0;\n this._packetEnd = this._buffer.length - trailingPacketBytes;\n this._packetOffset = 0;\n };\n\nParser.prototype._advanceToNextPacket = function () {\n this._offset = this._packetEnd;\n this._packetHeader = null;\n this._packetEnd = null;\n this._packetOffset = null;\n};\n","module.exports = PacketHeader;\nfunction PacketHeader(length, number) {\n this.length = length;\n this.number = number;\n}\n","module.exports = BufferList;\nfunction BufferList() {\n this.bufs = [];\n this.size = 0;\n}\n\nBufferList.prototype.shift = function shift() {\n let buf = this.bufs.shift();\n\n if (buf) {\n this.size -= buf.length;\n }\n\n return buf;\n};\n\nBufferList.prototype.push = function push(buf) {\n if (!buf || !buf.length) {\n return;\n }\n\n this.bufs.push(buf);\n this.size += buf.length;\n};\n","exports.ChangeUser = require(\"./ChangeUser\");\nexports.Handshake = require(\"./Handshake\");\nexports.Ping = require(\"./Ping\");\nexports.Query = require(\"./Query\");\nexports.Quit = require(\"./Quit\");\nexports.Sequence = require(\"./Sequence\");\nexports.Statistics = require(\"./Statistics\");\n","let Sequence = require(\"./Sequence\").default;\nlet inherits = require(\"inherits\");\nlet Packets = require(\"../packets\");\nlet Auth = require(\"../Auth\");\n\nmodule.exports = ChangeUser;\ninherits(ChangeUser, Sequence);\nfunction ChangeUser(options, callback) {\n Sequence.call(this, options, callback);\n\n this._user = options.user;\n this._password = options.password;\n this._database = options.database;\n this._charsetNumber = options.charsetNumber;\n this._currentConfig = options.currentConfig;\n}\n\nChangeUser.prototype._id = \"ChangeUser\";\n\nChangeUser.prototype.start = function (handshakeInitializationPacket) {\n let scrambleBuff = handshakeInitializationPacket.scrambleBuff();\n scrambleBuff = Auth.token(this._password, scrambleBuff);\n\n let packet = new Packets.ComChangeUserPacket({\n user: this._user,\n scrambleBuff,\n database: this._database,\n charsetNumber: this._charsetNumber,\n });\n\n this._currentConfig.user = this._user;\n this._currentConfig.password = this._password;\n this._currentConfig.database = this._database;\n this._currentConfig.charsetNumber = this._charsetNumber;\n\n this.emit(\"packet\", packet);\n};\n\nChangeUser.prototype[\"ErrorPacket\"] = function (packet) {\n let err = this._packetToError(packet);\n err.fatal = true;\n this.end(err);\n};\n","module.exports = AuthSwitchRequestPacket;\nfunction AuthSwitchRequestPacket(options) {\n options = options || {};\n\n this.status = 0xfe;\n this.authMethodName = options.authMethodName;\n this.authMethodData = options.authMethodData;\n}\n\nAuthSwitchRequestPacket.prototype._id = \"AuthSwitchRequestPacket\";\n\nAuthSwitchRequestPacket.prototype.parse = function parse(parser) {\n this.status = parser.parseUnsignedNumber(1);\n this.authMethodName = parser.parseNullTerminatedString();\n this.authMethodData = parser.parsePacketTerminatedBuffer();\n};\n\nAuthSwitchRequestPacket.prototype.write = function write(writer) {\n writer.writeUnsignedNumber(1, this.status);\n writer.writeNullTerminatedString(this.authMethodName);\n writer.writeBuffer(this.authMethodData);\n};\n","module.exports = AuthSwitchResponsePacket;\nfunction AuthSwitchResponsePacket(options) {\n options = options || {};\n\n this.data = options.data;\n}\n\nAuthSwitchResponsePacket.prototype._id = \"AuthSwitchResponsePacket\";\n\nAuthSwitchResponsePacket.prototype.parse = function parse(parser) {\n this.data = parser.parsePacketTerminatedBuffer();\n};\n\nAuthSwitchResponsePacket.prototype.write = function write(writer) {\n writer.writeBuffer(this.data);\n};\n","let Buffer = require(\"buffer\").Buffer;\n\nmodule.exports = ClientAuthenticationPacket;\nfunction ClientAuthenticationPacket(options) {\n options = options || {};\n\n this.clientFlags = options.clientFlags;\n this.maxPacketSize = options.maxPacketSize;\n this.charsetNumber = options.charsetNumber;\n this.filler = undefined;\n this.user = options.user;\n this.scrambleBuff = options.scrambleBuff;\n this.database = options.database;\n this.protocol41 = options.protocol41;\n}\n\nClientAuthenticationPacket.prototype._id = \"ClientAuthenticationPacket\";\n\nClientAuthenticationPacket.prototype.parse = function (parser) {\n if (this.protocol41) {\n this.clientFlags = parser.parseUnsignedNumber(4);\n this.maxPacketSize = parser.parseUnsignedNumber(4);\n this.charsetNumber = parser.parseUnsignedNumber(1);\n this.filler = parser.parseFiller(23);\n this.user = parser.parseNullTerminatedString();\n this.scrambleBuff = parser.parseLengthCodedBuffer();\n this.database = parser.parseNullTerminatedString();\n } else {\n this.clientFlags = parser.parseUnsignedNumber(2);\n this.maxPacketSize = parser.parseUnsignedNumber(3);\n this.user = parser.parseNullTerminatedString();\n this.scrambleBuff = parser.parseBuffer(8);\n this.database = parser.parseLengthCodedBuffer();\n }\n};\n\nClientAuthenticationPacket.prototype.write = function (writer) {\n if (this.protocol41) {\n writer.writeUnsignedNumber(4, this.clientFlags);\n writer.writeUnsignedNumber(4, this.maxPacketSize);\n writer.writeUnsignedNumber(1, this.charsetNumber);\n writer.writeFiller(23);\n writer.writeNullTerminatedString(this.user);\n writer.writeLengthCodedBuffer(this.scrambleBuff);\n writer.writeNullTerminatedString(this.database);\n } else {\n writer.writeUnsignedNumber(2, this.clientFlags);\n writer.writeUnsignedNumber(3, this.maxPacketSize);\n writer.writeNullTerminatedString(this.user);\n writer.writeBuffer(this.scrambleBuff);\n if (this.database && this.database.length) {\n writer.writeFiller(1);\n writer.writeBuffer(new Buffer(this.database));\n }\n }\n};\n","module.exports = ComChangeUserPacket;\nfunction ComChangeUserPacket(options) {\n options = options || {};\n\n this.command = 0x11;\n this.user = options.user;\n this.scrambleBuff = options.scrambleBuff;\n this.database = options.database;\n this.charsetNumber = options.charsetNumber;\n}\n\nComChangeUserPacket.prototype._id = \"ComChangeUserPacket\";\n\nComChangeUserPacket.prototype.parse = function (parser) {\n this.command = parser.parseUnsignedNumber(1);\n this.user = parser.parseNullTerminatedString();\n this.scrambleBuff = parser.parseLengthCodedBuffer();\n this.database = parser.parseNullTerminatedString();\n this.charsetNumber = parser.parseUnsignedNumber(1);\n};\n\nComChangeUserPacket.prototype.write = function (writer) {\n writer.writeUnsignedNumber(1, this.command);\n writer.writeNullTerminatedString(this.user);\n writer.writeLengthCodedBuffer(this.scrambleBuff);\n writer.writeNullTerminatedString(this.database);\n writer.writeUnsignedNumber(2, this.charsetNumber);\n};\n","module.exports = ComPingPacket;\nfunction ComPingPacket() {\n this.command = 0x0e;\n}\n\nComPingPacket.prototype._id = \"ComPingPacket\";\n\nComPingPacket.prototype.write = function (writer) {\n writer.writeUnsignedNumber(1, this.command);\n};\n\nComPingPacket.prototype.parse = function (parser) {\n this.command = parser.parseUnsignedNumber(1);\n};\n","module.exports = ComQueryPacket;\nfunction ComQueryPacket(sql) {\n this.command = 0x03;\n this.sql = sql;\n}\n\nComQueryPacket.prototype._id = \"ComQueryPacket\";\n\nComQueryPacket.prototype.write = function (writer) {\n writer.writeUnsignedNumber(1, this.command);\n writer.writeString(this.sql);\n};\n\nComQueryPacket.prototype.parse = function (parser) {\n this.command = parser.parseUnsignedNumber(1);\n this.sql = parser.parsePacketTerminatedString();\n};\n","module.exports = ComQuitPacket;\nfunction ComQuitPacket() {\n this.command = 0x01;\n}\n\nComQuitPacket.prototype._id = \"ComQuitPacket\";\n\nComQuitPacket.prototype.parse = function parse(parser) {\n this.command = parser.parseUnsignedNumber(1);\n};\n\nComQuitPacket.prototype.write = function write(writer) {\n writer.writeUnsignedNumber(1, this.command);\n};\n","module.exports = ComStatisticsPacket;\nfunction ComStatisticsPacket() {\n this.command = 0x09;\n}\n\nComStatisticsPacket.prototype._id = \"ComStatisticsPacket\";\n\nComStatisticsPacket.prototype.write = function (writer) {\n writer.writeUnsignedNumber(1, this.command);\n};\n\nComStatisticsPacket.prototype.parse = function (parser) {\n this.command = parser.parseUnsignedNumber(1);\n};\n","module.exports = EmptyPacket;\nfunction EmptyPacket() {}\n\nEmptyPacket.prototype._id = \"EmptyPacket\";\n\nEmptyPacket.prototype.write = function write() {};\n","module.exports = EofPacket;\nfunction EofPacket(options) {\n options = options || {};\n\n this.fieldCount = undefined;\n this.warningCount = options.warningCount;\n this.serverStatus = options.serverStatus;\n this.protocol41 = options.protocol41;\n}\n\nEofPacket.prototype._id = \"EofPacket\";\n\nEofPacket.prototype.parse = function (parser) {\n this.fieldCount = parser.parseUnsignedNumber(1);\n if (this.protocol41) {\n this.warningCount = parser.parseUnsignedNumber(2);\n this.serverStatus = parser.parseUnsignedNumber(2);\n }\n};\n\nEofPacket.prototype.write = function (writer) {\n writer.writeUnsignedNumber(1, 0xfe);\n if (this.protocol41) {\n writer.writeUnsignedNumber(2, this.warningCount);\n writer.writeUnsignedNumber(2, this.serverStatus);\n }\n};\n","module.exports = ErrorPacket;\nfunction ErrorPacket(options) {\n options = options || {};\n\n this.fieldCount = options.fieldCount;\n this.errno = options.errno;\n this.sqlStateMarker = options.sqlStateMarker;\n this.sqlState = options.sqlState;\n this.message = options.message;\n}\n\nErrorPacket.prototype._id = \"ErrorPacket\";\n\nErrorPacket.prototype.parse = function (parser) {\n this.fieldCount = parser.parseUnsignedNumber(1);\n this.errno = parser.parseUnsignedNumber(2);\n\n // sqlStateMarker ('#' = 0x23) indicates error packet format\n if (parser.peak() === 0x23) {\n this.sqlStateMarker = parser.parseString(1);\n this.sqlState = parser.parseString(5);\n }\n\n this.message = parser.parsePacketTerminatedString();\n};\n\nErrorPacket.prototype.write = function (writer) {\n writer.writeUnsignedNumber(1, 0xff);\n writer.writeUnsignedNumber(2, this.errno);\n\n if (this.sqlStateMarker) {\n writer.writeString(this.sqlStateMarker);\n writer.writeString(this.sqlState);\n }\n\n writer.writeString(this.message);\n};\n","module.exports = FieldPacket;\nfunction FieldPacket(options) {\n options = options || {};\n\n this.catalog = options.catalog;\n this.db = options.db;\n this.table = options.table;\n this.orgTable = options.orgTable;\n this.name = options.name;\n this.orgName = options.orgName;\n this.charsetNr = options.charsetNr;\n this.length = options.length;\n this.type = options.type;\n this.flags = options.flags;\n this.decimals = options.decimals;\n this.default = options.default;\n this.zeroFill = options.zeroFill;\n this.protocol41 = options.protocol41;\n}\n\nFieldPacket.prototype._id = \"FieldPacket\";\n\nFieldPacket.prototype.parse = function (parser) {\n if (this.protocol41) {\n this.catalog = parser.parseLengthCodedString();\n this.db = parser.parseLengthCodedString();\n this.table = parser.parseLengthCodedString();\n this.orgTable = parser.parseLengthCodedString();\n this.name = parser.parseLengthCodedString();\n this.orgName = parser.parseLengthCodedString();\n\n if (parser.parseLengthCodedNumber() !== 0x0c) {\n let err = new TypeError(\"Received invalid field length\");\n err.code = \"PARSER_INVALID_FIELD_LENGTH\";\n throw err;\n }\n\n this.charsetNr = parser.parseUnsignedNumber(2);\n this.length = parser.parseUnsignedNumber(4);\n this.type = parser.parseUnsignedNumber(1);\n this.flags = parser.parseUnsignedNumber(2);\n this.decimals = parser.parseUnsignedNumber(1);\n\n let filler = parser.parseBuffer(2);\n if (filler[0] !== 0x0 || filler[1] !== 0x0) {\n let err = new TypeError(\"Received invalid filler\");\n err.code = \"PARSER_INVALID_FILLER\";\n throw err;\n }\n\n // parsed flags\n this.zeroFill = this.flags & 0x0040 ? true : false;\n\n if (parser.reachedPacketEnd()) {\n return;\n }\n\n this.default = parser.parseLengthCodedString();\n } else {\n this.table = parser.parseLengthCodedString();\n this.name = parser.parseLengthCodedString();\n this.length = parser.parseUnsignedNumber(parser.parseUnsignedNumber(1));\n this.type = parser.parseUnsignedNumber(parser.parseUnsignedNumber(1));\n }\n};\n\nFieldPacket.prototype.write = function (writer) {\n if (this.protocol41) {\n writer.writeLengthCodedString(this.catalog);\n writer.writeLengthCodedString(this.db);\n writer.writeLengthCodedString(this.table);\n writer.writeLengthCodedString(this.orgTable);\n writer.writeLengthCodedString(this.name);\n writer.writeLengthCodedString(this.orgName);\n\n writer.writeLengthCodedNumber(0x0c);\n writer.writeUnsignedNumber(2, this.charsetNr || 0);\n writer.writeUnsignedNumber(4, this.length || 0);\n writer.writeUnsignedNumber(1, this.type || 0);\n writer.writeUnsignedNumber(2, this.flags || 0);\n writer.writeUnsignedNumber(1, this.decimals || 0);\n writer.writeFiller(2);\n\n if (this.default !== undefined) {\n writer.writeLengthCodedString(this.default);\n }\n } else {\n writer.writeLengthCodedString(this.table);\n writer.writeLengthCodedString(this.name);\n writer.writeUnsignedNumber(1, 0x01);\n writer.writeUnsignedNumber(1, this.length);\n writer.writeUnsignedNumber(1, 0x01);\n writer.writeUnsignedNumber(1, this.type);\n }\n};\n","let Client = require(\"../constants/client\");\nlet Buffer = require(\"buffer\").Buffer;\n\nmodule.exports = HandshakeInitializationPacket;\nfunction HandshakeInitializationPacket(options) {\n options = options || {};\n\n this.protocolVersion = options.protocolVersion;\n this.serverVersion = options.serverVersion;\n this.threadId = options.threadId;\n this.scrambleBuff1 = options.scrambleBuff1;\n this.filler1 = options.filler1;\n this.serverCapabilities1 = options.serverCapabilities1;\n this.serverLanguage = options.serverLanguage;\n this.serverStatus = options.serverStatus;\n this.serverCapabilities2 = options.serverCapabilities2;\n this.scrambleLength = options.scrambleLength;\n this.filler2 = options.filler2;\n this.scrambleBuff2 = options.scrambleBuff2;\n this.filler3 = options.filler3;\n this.pluginData = options.pluginData;\n this.protocol41 = options.protocol41;\n\n if (this.protocol41) {\n // force set the bit in serverCapabilities1\n this.serverCapabilities1 |= Client.CLIENT_PROTOCOL_41;\n }\n}\n\nHandshakeInitializationPacket.prototype._id = \"HandshakeInitializationPacket\";\n\nHandshakeInitializationPacket.prototype.parse = function (parser) {\n this.protocolVersion = parser.parseUnsignedNumber(1);\n this.serverVersion = parser.parseNullTerminatedString();\n this.threadId = parser.parseUnsignedNumber(4);\n this.scrambleBuff1 = parser.parseBuffer(8);\n this.filler1 = parser.parseFiller(1);\n this.serverCapabilities1 = parser.parseUnsignedNumber(2);\n this.serverLanguage = parser.parseUnsignedNumber(1);\n this.serverStatus = parser.parseUnsignedNumber(2);\n\n this.protocol41 = (this.serverCapabilities1 & (1 << 9)) > 0;\n\n if (this.protocol41) {\n this.serverCapabilities2 = parser.parseUnsignedNumber(2);\n this.scrambleLength = parser.parseUnsignedNumber(1);\n this.filler2 = parser.parseFiller(10);\n // scrambleBuff2 should be 0x00 terminated, but sphinx does not do this\n // so we assume scrambleBuff2 to be 12 byte and treat the next byte as a\n // filler byte.\n this.scrambleBuff2 = parser.parseBuffer(12);\n this.filler3 = parser.parseFiller(1);\n } else {\n this.filler2 = parser.parseFiller(13);\n }\n\n if (parser.reachedPacketEnd()) {\n return;\n }\n\n // According to the docs this should be 0x00 terminated, but MariaDB does\n // not do this, so we assume this string to be packet terminated.\n this.pluginData = parser.parsePacketTerminatedString();\n\n // However, if there is a trailing '\\0', strip it\n let lastChar = this.pluginData.length - 1;\n if (this.pluginData[lastChar] === \"\\0\") {\n this.pluginData = this.pluginData.substr(0, lastChar);\n }\n};\n\nHandshakeInitializationPacket.prototype.write = function (writer) {\n writer.writeUnsignedNumber(1, this.protocolVersion);\n writer.writeNullTerminatedString(this.serverVersion);\n writer.writeUnsignedNumber(4, this.threadId);\n writer.writeBuffer(this.scrambleBuff1);\n writer.writeFiller(1);\n writer.writeUnsignedNumber(2, this.serverCapabilities1);\n writer.writeUnsignedNumber(1, this.serverLanguage);\n writer.writeUnsignedNumber(2, this.serverStatus);\n if (this.protocol41) {\n writer.writeUnsignedNumber(2, this.serverCapabilities2);\n writer.writeUnsignedNumber(1, this.scrambleLength);\n writer.writeFiller(10);\n }\n writer.writeNullTerminatedBuffer(this.scrambleBuff2);\n\n if (this.pluginData !== undefined) {\n writer.writeNullTerminatedString(this.pluginData);\n }\n};\n\nHandshakeInitializationPacket.prototype.scrambleBuff = function () {\n let buffer = new Buffer(\n this.scrambleBuff1.length +\n (typeof this.scrambleBuff2 !== \"undefined\"\n ? this.scrambleBuff2.length\n : 0)\n );\n\n this.scrambleBuff1.copy(buffer);\n if (typeof this.scrambleBuff2 !== \"undefined\") {\n this.scrambleBuff2.copy(buffer, this.scrambleBuff1.length);\n }\n\n return buffer;\n};\n","module.exports = LocalDataFilePacket;\n\n/**\n * Create a new LocalDataFilePacket\n * @constructor\n * @param {Buffer} data The data contents of the packet\n * @public\n */\nfunction LocalDataFilePacket(data) {\n this.data = data;\n}\n\nLocalDataFilePacket.prototype._id = \"LocalDataFilePacket\";\n\nLocalDataFilePacket.prototype.write = function (writer) {\n writer.writeBuffer(this.data);\n};\n","module.exports = OkPacket;\nfunction OkPacket(options) {\n options = options || {};\n\n this.fieldCount = undefined;\n this.affectedRows = undefined;\n this.insertId = undefined;\n this.serverStatus = undefined;\n this.warningCount = undefined;\n this.message = undefined;\n this.protocol41 = options.protocol41;\n}\n\nOkPacket.prototype._id = \"OkPacket\";\n\nOkPacket.prototype.parse = function (parser) {\n this.fieldCount = parser.parseUnsignedNumber(1);\n this.affectedRows = parser.parseLengthCodedNumber();\n this.insertId = parser.parseLengthCodedNumber();\n if (this.protocol41) {\n this.serverStatus = parser.parseUnsignedNumber(2);\n this.warningCount = parser.parseUnsignedNumber(2);\n }\n this.message = parser.parsePacketTerminatedString();\n this.changedRows = 0;\n\n let m = this.message.match(/\\schanged:\\s*(\\d+)/i);\n\n if (m !== null) {\n this.changedRows = parseInt(m[1], 10);\n }\n};\n\nOkPacket.prototype.write = function (writer) {\n writer.writeUnsignedNumber(1, 0x00);\n writer.writeLengthCodedNumber(this.affectedRows || 0);\n writer.writeLengthCodedNumber(this.insertId || 0);\n if (this.protocol41) {\n writer.writeUnsignedNumber(2, this.serverStatus || 0);\n writer.writeUnsignedNumber(2, this.warningCount || 0);\n }\n writer.writeString(this.message);\n};\n","module.exports = OldPasswordPacket;\nfunction OldPasswordPacket(options) {\n options = options || {};\n\n this.scrambleBuff = options.scrambleBuff;\n}\n\nOldPasswordPacket.prototype._id = \"OldPasswordPacket\";\n\nOldPasswordPacket.prototype.parse = function (parser) {\n this.scrambleBuff = parser.parseNullTerminatedBuffer();\n};\n\nOldPasswordPacket.prototype.write = function (writer) {\n writer.writeBuffer(this.scrambleBuff);\n writer.writeFiller(1);\n};\n","module.exports = ResultSetHeaderPacket;\nfunction ResultSetHeaderPacket(options) {\n options = options || {};\n\n this.fieldCount = options.fieldCount;\n this.extra = options.extra;\n}\n\nResultSetHeaderPacket.prototype._id = \"ResultSetHeaderPacket\";\n\nResultSetHeaderPacket.prototype.parse = function (parser) {\n this.fieldCount = parser.parseLengthCodedNumber();\n\n if (parser.reachedPacketEnd()) {\n return;\n }\n\n this.extra =\n this.fieldCount === null\n ? parser.parsePacketTerminatedString()\n : parser.parseLengthCodedNumber();\n};\n\nResultSetHeaderPacket.prototype.write = function (writer) {\n writer.writeLengthCodedNumber(this.fieldCount);\n\n if (this.extra !== undefined) {\n writer.writeLengthCodedNumber(this.extra);\n }\n};\n","const BigNumber = require(\"../../../../vendor/bignumber.js/bignumber\").default;\n\nlet Types = require(\"../constants/types\");\nlet Charsets = require(\"../constants/charsets\");\nlet Field = require(\"./Field\");\nlet IEEE_754_BINARY_64_PRECISION = Math.pow(2, 53);\n\nmodule.exports = RowDataPacket;\nfunction RowDataPacket() {}\n\nObject.defineProperty(RowDataPacket.prototype, \"parse\", {\n configurable: true,\n enumerable: false,\n value: parse,\n});\n\nObject.defineProperty(RowDataPacket.prototype, \"_typeCast\", {\n configurable: true,\n enumerable: false,\n value: typeCast,\n});\n\nObject.defineProperty(RowDataPacket.prototype, \"_id\", {\n configurable: true,\n enumerable: false,\n value: \"RowDataPacket\",\n});\n\nfunction parse(parser, fieldPackets, typeCast, nestTables, connection) {\n let self = this;\n let next = function () {\n return self._typeCast(\n fieldPacket,\n parser,\n connection.config.timezone,\n connection.config.supportBigNumbers,\n connection.config.bigNumberStrings,\n connection.config.dateStrings\n );\n };\n\n for (let i = 0; i < fieldPackets.length; i++) {\n let fieldPacket = fieldPackets[i];\n let value;\n\n if (typeof typeCast === \"function\") {\n value = typeCast.apply(connection, [\n new Field({ packet: fieldPacket, parser }),\n next,\n ]);\n } else {\n value = typeCast\n ? this._typeCast(\n fieldPacket,\n parser,\n connection.config.timezone,\n connection.config.supportBigNumbers,\n connection.config.bigNumberStrings,\n connection.config.dateStrings\n )\n : fieldPacket.charsetNr === Charsets.BINARY\n ? parser.parseLengthCodedBuffer()\n : parser.parseLengthCodedString();\n }\n\n if (typeof nestTables === \"string\" && nestTables.length) {\n this[fieldPacket.table + nestTables + fieldPacket.name] = value;\n } else if (nestTables) {\n this[fieldPacket.table] = this[fieldPacket.table] || {};\n this[fieldPacket.table][fieldPacket.name] = value;\n } else {\n this[fieldPacket.name] = value;\n }\n }\n}\n\nfunction typeCast(\n field,\n parser,\n timeZone,\n supportBigNumbers,\n bigNumberStrings,\n dateStrings\n) {\n let numberString;\n\n switch (field.type) {\n case Types.TIMESTAMP:\n case Types.TIMESTAMP2:\n case Types.DATE:\n case Types.DATETIME:\n case Types.DATETIME2:\n case Types.NEWDATE: {\n let dateString = parser.parseLengthCodedString();\n\n if (typeMatch(field.type, dateStrings)) {\n return dateString;\n }\n\n if (dateString === null) {\n return null;\n }\n\n let originalString = dateString;\n if (field.type === Types.DATE) {\n dateString += \" 00:00:00\";\n }\n\n if (timeZone !== \"local\") {\n dateString += \" \" + timeZone;\n }\n\n let dt = new Date(dateString);\n if (isNaN(dt.getTime())) {\n return originalString;\n }\n\n return dt;\n }\n\n case Types.TINY:\n case Types.SHORT:\n case Types.LONG:\n case Types.INT24:\n case Types.YEAR:\n case Types.FLOAT:\n case Types.DOUBLE: {\n numberString = parser.parseLengthCodedString();\n return numberString === null ||\n (field.zeroFill && numberString[0] === \"0\")\n ? numberString\n : Number(numberString);\n }\n\n case Types.NEWDECIMAL:\n case Types.LONGLONG: {\n numberString = parser.parseLengthCodedString();\n return numberString === null ||\n (field.zeroFill && numberString[0] === \"0\")\n ? numberString\n : supportBigNumbers &&\n (bigNumberStrings ||\n Number(numberString) >= IEEE_754_BINARY_64_PRECISION ||\n Number(numberString) <= -IEEE_754_BINARY_64_PRECISION)\n ? new BigNumber(numberString)\n : Number(numberString);\n }\n\n case Types.BIT: {\n return parser.parseLengthCodedBuffer();\n }\n\n case Types.STRING:\n case Types.let_STRING:\n case Types.TINY_BLOB:\n case Types.MEDIUM_BLOB:\n case Types.LONG_BLOB:\n case Types.BLOB: {\n return field.charsetNr === Charsets.BINARY\n ? parser.parseLengthCodedBuffer()\n : parser.parseLengthCodedString();\n }\n\n case Types.GEOMETRY: {\n return parser.parseGeometryValue();\n }\n\n default: {\n return parser.parseLengthCodedString();\n }\n }\n}\n\nfunction typeMatch(type, list) {\n if (Array.isArray(list)) {\n for (let i = 0; i < list.length; i++) {\n if (Types[list[i]] === type) {\n return true;\n }\n }\n return false;\n } else {\n return Boolean(list);\n }\n}\n","// http://dev.mysql.com/doc/internals/en/ssl.html\n// http://dev.mysql.com/doc/internals/en/connection-phase-packets.html#packet-Protocol::SSLRequest\n\nlet ClientConstants = require(\"../constants/client\");\n\nmodule.exports = SSLRequestPacket;\n\nfunction SSLRequestPacket(options) {\n options = options || {};\n this.clientFlags = options.clientFlags | ClientConstants.CLIENT_SSL;\n this.maxPacketSize = options.maxPacketSize;\n this.charsetNumber = options.charsetNumber;\n}\n\nSSLRequestPacket.prototype._id = \"SSLRequestPacket\";\n\nSSLRequestPacket.prototype.parse = function (parser) {\n // TODO: check SSLRequest packet v41 vs pre v41\n this.clientFlags = parser.parseUnsignedNumber(4);\n this.maxPacketSize = parser.parseUnsignedNumber(4);\n this.charsetNumber = parser.parseUnsignedNumber(1);\n};\n\nSSLRequestPacket.prototype.write = function (writer) {\n writer.writeUnsignedNumber(4, this.clientFlags);\n writer.writeUnsignedNumber(4, this.maxPacketSize);\n writer.writeUnsignedNumber(1, this.charsetNumber);\n writer.writeFiller(23);\n};\n","module.exports = StatisticsPacket;\nfunction StatisticsPacket() {\n this.message = undefined;\n}\n\nStatisticsPacket.prototype._id = \"StatisticsPacket\";\n\nStatisticsPacket.prototype.parse = function (parser) {\n this.message = parser.parsePacketTerminatedString();\n\n let items = this.message.split(/\\s\\s/);\n for (let i = 0; i < items.length; i++) {\n let m = items[i].match(/^(.+):\\s+(.+)$/);\n if (m !== null) {\n this[m[1].toLowerCase().replace(/\\s/g, \"_\")] = Number(m[2]);\n }\n }\n};\n\nStatisticsPacket.prototype.write = function (writer) {\n writer.writeString(this.message);\n};\n","module.exports = UseOldPasswordPacket;\nfunction UseOldPasswordPacket(options) {\n options = options || {};\n\n this.firstByte = options.firstByte || 0xfe;\n}\n\nUseOldPasswordPacket.prototype._id = \"UseOldPasswordPacket\";\n\nUseOldPasswordPacket.prototype.parse = function (parser) {\n this.firstByte = parser.parseUnsignedNumber(1);\n};\n\nUseOldPasswordPacket.prototype.write = function (writer) {\n writer.writeUnsignedNumber(1, this.firstByte);\n};\n","'use strict'\n\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes')\nexports.createHash = exports.Hash = require('create-hash')\nexports.createHmac = exports.Hmac = require('create-hmac')\n\nvar algos = require('browserify-sign/algos')\nvar algoKeys = Object.keys(algos)\nvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys)\nexports.getHashes = function () {\n return hashes\n}\n\nvar p = require('pbkdf2')\nexports.pbkdf2 = p.pbkdf2\nexports.pbkdf2Sync = p.pbkdf2Sync\n\nvar aes = require('browserify-cipher')\n\nexports.Cipher = aes.Cipher\nexports.createCipher = aes.createCipher\nexports.Cipheriv = aes.Cipheriv\nexports.createCipheriv = aes.createCipheriv\nexports.Decipher = aes.Decipher\nexports.createDecipher = aes.createDecipher\nexports.Decipheriv = aes.Decipheriv\nexports.createDecipheriv = aes.createDecipheriv\nexports.getCiphers = aes.getCiphers\nexports.listCiphers = aes.listCiphers\n\nvar dh = require('diffie-hellman')\n\nexports.DiffieHellmanGroup = dh.DiffieHellmanGroup\nexports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup\nexports.getDiffieHellman = dh.getDiffieHellman\nexports.createDiffieHellman = dh.createDiffieHellman\nexports.DiffieHellman = dh.DiffieHellman\n\nvar sign = require('browserify-sign')\n\nexports.createSign = sign.createSign\nexports.Sign = sign.Sign\nexports.createVerify = sign.createVerify\nexports.Verify = sign.Verify\n\nexports.createECDH = require('create-ecdh')\n\nvar publicEncrypt = require('public-encrypt')\n\nexports.publicEncrypt = publicEncrypt.publicEncrypt\nexports.privateEncrypt = publicEncrypt.privateEncrypt\nexports.publicDecrypt = publicEncrypt.publicDecrypt\nexports.privateDecrypt = publicEncrypt.privateDecrypt\n\n// the least I can do is make error messages for the rest of the node.js/crypto api.\n// ;[\n// 'createCredentials'\n// ].forEach(function (name) {\n// exports[name] = function () {\n// throw new Error([\n// 'sorry, ' + name + ' is not implemented yet',\n// 'we accept pull requests',\n// 'https://github.com/crypto-browserify/crypto-browserify'\n// ].join('\\n'))\n// }\n// })\n\nvar rf = require('randomfill')\n\nexports.randomFill = rf.randomFill\nexports.randomFillSync = rf.randomFillSync\n\nexports.createCredentials = function () {\n throw new Error([\n 'sorry, createCredentials is not implemented yet',\n 'we accept pull requests',\n 'https://github.com/crypto-browserify/crypto-browserify'\n ].join('\\n'))\n}\n\nexports.constants = {\n 'DH_CHECK_P_NOT_SAFE_PRIME': 2,\n 'DH_CHECK_P_NOT_PRIME': 1,\n 'DH_UNABLE_TO_CHECK_GENERATOR': 4,\n 'DH_NOT_SUITABLE_GENERATOR': 8,\n 'NPN_ENABLED': 1,\n 'ALPN_ENABLED': 1,\n 'RSA_PKCS1_PADDING': 1,\n 'RSA_SSLV23_PADDING': 2,\n 'RSA_NO_PADDING': 3,\n 'RSA_PKCS1_OAEP_PADDING': 4,\n 'RSA_X931_PADDING': 5,\n 'RSA_PKCS1_PSS_PADDING': 6,\n 'POINT_CONVERSION_COMPRESSED': 2,\n 'POINT_CONVERSION_UNCOMPRESSED': 4,\n 'POINT_CONVERSION_HYBRID': 6\n}\n","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();","'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// 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 permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n","var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = require('safe-buffer').Buffer;\nvar util = require('util');\n\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\n\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n BufferList.prototype.push = function push(v) {\n var entry = { data: v, next: null };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n };\n\n BufferList.prototype.unshift = function unshift(v) {\n var entry = { data: v, next: this.head };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n };\n\n BufferList.prototype.shift = function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n };\n\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\n\n BufferList.prototype.join = function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }return ret;\n };\n\n BufferList.prototype.concat = function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n if (this.length === 1) return this.head.data;\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n };\n\n return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n module.exports.prototype[util.inspect.custom] = function () {\n var obj = util.inspect({ length: this.length });\n return this.constructor.name + ' ' + obj;\n };\n}","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a